Ontem fiz essa pergunta em relação a alteração do dbo de vários bancos de dados que possuo. A mudança faz sentido, mas quero ser claro.
Existe algum bom motivo ou circunstância para que eu não deva definir o dbo de um banco de dados como [sa]?
Ontem fiz essa pergunta em relação a alteração do dbo de vários bancos de dados que possuo. A mudança faz sentido, mas quero ser claro.
Existe algum bom motivo ou circunstância para que eu não deva definir o dbo de um banco de dados como [sa]?
Tornar SA o proprietário de um banco de dados realmente simplifica e/ou resolve uma série de coisas, mas pode ter algumas implicações de segurança.
Em particular, lembre-se de que, se SA for o proprietário de um banco de dados, então
dbo = 'SA'
. Isso significa que, entre outras coisas, quaisquer procedimentos no esquema [dbo] (que é o padrão) que tenham "EXECUTE As Owner" neles, estão realmente sendo executados como SA. Isso não é tão ruim quanto parece, porque, a menos que você tenha marcado o banco de dados como TRUSTWORTHY, o SQL Server não permitirá que uma sessão ou tarefa saia do banco de dados com um principal de nível de servidor representado como esse.O que traz o próximo ponto: nunca marque esses bancos de dados como CONFIÁVEIS, a menos que você tenha realmente certeza de que é seguro. Porque qualquer pessoa com a capacidade de criar procedimentos no esquema [dbo] pode executar como SA, em todo o servidor, se desejar.
Outro problema pode surgir porque muitos produtos e aplicativos que possuem seu próprio banco de dados SQL Server geralmente especificam que o login do aplicativo deve ser o DBO do banco de dados. Obviamente, você pode resolver isso fazendo com que o login do aplicativo seja 'SA'. Esperançosamente, também é óbvio que você nunca deve fazer isso, a menos que a instância do SQL Server não seja usada para mais nada (mesmo assim, eu não recomendaria).