Temos um banco de dados MySQL de produção principal com uma réplica de leitura. Este banco de dados possui alguns dados confidenciais de clientes que precisamos proteger.
Meu objetivo é fornecer acesso a uma ferramenta externa de relatórios de Business Intelligence. Tal como acontece com todas as ferramentas como esta, todos eles dizem "temos grande segurança e nunca armazenamos nada que não precisamos, etc." Eu ainda sou paranóico.
Então, o que estou pensando em criar um monte de visualizações no banco de dados de réplica (somente leitura) que deixam de fora dados confidenciais e fornecem as informações mínimas de que precisam. Depois disso, vou provisionar um novo usuário no banco de dados que só tem acesso a essas visualizações. Dessa forma, eles veem apenas os dados que eu quero fornecer a eles e já é somente leitura, então nada pode ser modificado.
Minha pergunta é: essa é uma boa maneira de fazer isso, considerando que meu banco de dados possui informações confidenciais do cliente? Em geral, esta é uma abordagem relativamente segura?
Sua abordagem parece ser boa. No entanto, não tenho certeza de qual inteligência de negócios real pode ser obtida se o relatório for feito de dados incompletos. Crie um usuário dedicado com privilégios limitados (IE Não é permitido escrever/descartar). Há sempre uma troca de segurança da informação e qualidade da informação.
Talvez seja melhor entender o que você espera alcançar com esse relatório e identificar quais informações confidenciais podem ser removidas.
Outra técnica é
GRANT
não ter acesso às colunas sensíveis. (AGRANT
pode ser aplicado a "todos" (*.*
), um banco de dados (db.*), uma tabela (db.tbl) ou uma coluna.) Pode ser necessário muitasGRANT
instruções para configurar tudo, mas você pode sentir mais seguro.E, claro, limite o acesso ao servidor físico.