1
resposta

[Dúvida] Estou com duvida se minha sugestão está correta.

Como DBA da SUCOS SA, estruturei as soluções para garantir a segregação de acessos, o cumprimento de requisitos de segurança (passwords e auditoria) e a continuidade do negócio por meio de automação simples.

Aqui estão os comandos SQL e scripts necessários:

  1. Estrutura de Esquemas, Roles e Usuários
    Nesta etapa, isolamos os departamentos e utilizamos Roles para facilitar a gestão de permissões futura.

SQL

-- Criação dos esquemas
CREATE SCHEMA sucos_marketing;
CREATE SCHEMA sucos_financeiro;

-- Configuração do Marketing
CREATE ROLE 'analista_marketing';
GRANT ALL PRIVILEGES ON sucos_marketing.* TO 'analista_marketing';

CREATE USER 'gerente_marketing'@'localhost' IDENTIFIED BY 'Senha_Forte_Mkt2025!';
GRANT 'analista_marketing' TO 'gerente_marketing'@'localhost';
SET DEFAULT ROLE 'analista_marketing' TO 'gerente_marketing'@'localhost';

-- Configuração do Financeiro
CREATE ROLE 'analista_financeiro';
GRANT ALL PRIVILEGES ON sucos_financeiro.* TO 'analista_financeiro';

CREATE USER 'gerente_financeiro'@'localhost' IDENTIFIED BY 'Senha_Forte_Fin2025!';
GRANT 'analista_financeiro' TO 'gerente_financeiro'@'localhost';
SET DEFAULT ROLE 'analista_financeiro' TO 'gerente_financeiro'@'localhost';
2. Política de Senhas e Auditoria
Para atender aos requisitos de robustez, utilizaremos o plugin validate_password.

Política de Senhas:

SQL

-- Garantir que o plugin de validação esteja ativo
INSTALL COMPONENT 'file://component_validate_password';

-- Configuração da política (Exemplo: Mínimo 12 caracteres, especial, número e letras)
SET GLOBAL validate_password.policy = 'MEDIUM';
SET GLOBAL validate_password.length = 12;

-- Forçar expiração de senha a cada 90 dias para os novos gerentes
ALTER USER 'gerente_marketing'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
ALTER USER 'gerente_financeiro'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
Auditoria de Atividades: No MySQL Community, utilizamos o log de consultas gerais ou filtros específicos via MariaDB Audit Plugin (se compatível). Para o padrão MySQL Enterprise ou logs básicos:

SQL

SET GLOBAL general_log = 'ON';
SET GLOBAL log_output = 'TABLE'; -- Grava as atividades na tabela mysql.general_log
3. Automação de Backup (sucos_vendas)
Script em Bash para ser executado via Crontab. Ele gera um arquivo .sql compactado com timestamp.

Bash

#!/bin/bash
# backup_sucos.sh

USER="root"
PASSWORD="sua_senha_segura"
DATABASE="sucos_vendas"
DESTINO="/backup/mysql"
DATA=$(date +%Y-%m-%d_%H%M)

mysqldump -u$USER -p$PASSWORD $DATABASE | gzip > $DESTINO/backup_$DATABASE_$DATA.sql.gz

# Manter apenas backups dos últimos 7 dias para otimizar espaço
find $DESTINO -name "*.sql.gz" -mtime +7 -exec rm {} ;

1 resposta

Oi, Luna! Tudo bem?

O seu código está correto e atende aos requisitos propostos. A solução apresentada demonstra boa organização e entendimento dos conceitos de segurança, segregação de acessos e automação no MySQL, indo inclusive além do mínimo ao estruturar roles de forma clara e definir boas práticas de gestão de usuários. Parabéns pela organização da solução.

Como ponto de ajuste, apenas observo que o item referente ao script de monitoramento do tamanho dos esquemas em arquivo externo não aparece implementado na resposta. Mas você pode conferir em "Ver opinião do Instrutor".

Uma dica interessante para o futuro e utilizar SHOW GRANTS para validar rapidamente se as permissoes ficaram corretas apos a configuracao. Veja este exemplo:


SHOW GRANTS FOR 'gerente_marketing'@'localhost';

Esse comando exibe todas as permissões efetivas do usuário, ajudando a confirmar se a role foi aplicada corretamente.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!