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:
- 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 {} ;