Roles do SQL Server – Dbcreator


DBCREATOR

Mais um post da série SQL Server Vida e Obra   , dessa vez sobre uma role bem peculiar: dbcreator, também conhecido como filho do sa. Cuidado com essa permissão, beleza?

O que é o DBCREATOR?

A documentação oficial da Microsoft (meio datada, mas ainda vale), diz:

Members of the dbcreator fixed server role can create databases, and can alter and restore their own databases.

Em português simples traduzido no popular:

Membros da função fixa dbcreator podem criar bases de dados, e podem alterar e restaurar suas próprias bases

Bem, vamos explorar um pouco e mostrar que a role vai um pouco além do que o nome sugere (criar bases)…O que pode ser uma benção e uma maldição, dependendo do ambiente.

Aplicação

É uma conta com permissões importantíssimas. O primeiro ponto a ser observado é que um dbcreator possui permissão para criar, alterar e dropar qualquer banco, até os que não é de sua criação (sentiu o perigo?) assim como pode utilizar o comando RESTORE tanto pra banco quanto pra LOG (este porém restrito às suas bases e/ou com as permissões adequadas. Tal assunto será abordado futuramente com maiores detalhes).

Testes

Primeiramente vamos verificar as permissões que a role possui:

EXEC sp_srvrolepermission 'dbcreator'

Listando (os riscados não serão abordados neste post.):

– Add member to dbcreator (também conhecido como milagre da multiplicação)
– ALTER DATABASE
– CREATE DATABASE
– DROP DATABASE
– Extend database (Alterar o tamanho de um arquivo da base)
– RESTORE DATABASE
– RESTORE LOG
– sp_renamedb  (Procedure que renomeia o banco)

Bem, vamos começar oficialmente com os testes….

1) Criação do login

-- Criação de dois usuários

CREATE LOGIN DbaCriador WITH PASSWORD = '123', CHECK_POLICY = OFF CREATE LOGIN FilhoDoDbaCriador WITH PASSWORD = '123', CHECK_POLICY = OFF

-- DBACriador agora é Dbcreator

EXEC sp_addsrvrolemember 'DbaCriador','dbcreator'

-- Ainda logado com seu login de administrador, crie um banco qualquer

CREATE DATABASE meuBanco

Agora logue como DbaCriador no Management Studio (ou da forma que preferir, contanto que consiga se passar pelo login).

2) Rename e Drop

Perceba agora o quanto a role é potente no sentido de permissões:

-- Pode criar seu próprio banco

CREATE DATABASE BancoDoCriador

-- Pode renomear o próprio banco

EXEC SP_RENAMEDB 'BancoDoCriador','BancoDoCriadorV2'

-- Pode dropar o banco dos outros (dropando o banco criado por seu usuário maior)

DROP DATABASE meuBanco

Consegue observar o tamanho da possível encrenca? É sempre bom reforçar que, dentro de uma instância, o maior bem é o banco de dados, e sua destruição e criação são sem dúvida uma das permissões mais sagradas que um principal pode ter.

Não precisamos comentar também a habilidade de repassar a Role para outros membros, e com o poder “milagre da multiplicação” temos mais um problema: um dbcreator criando outro dbcreator!

Veja ainda logado como dbcreator:

EXEC sp_addsrvrolemember [FilhoDoDbaCriador],'DBCREATOR'

Considerações finais

Considere essa role uma das mais próximas do sa propriamente dito (assim como a security admin). Ultimamente caiu um pouco em desuso, pois, geralmente quem tem permissão de criar bases, pelo menos nos ambientes que observei, já possuem permissão de sysadmin, logo, não possuem restrição alguma. Se realmente for necessário que um principal crie bases, existe uma abordagem muito mais esperta:

GRANT CREATE ANY DATABASE TO login

Privilégio mínimo na prática.

 

, ,

2 responses to “Roles do SQL Server – Dbcreator”

Leave a Reply

Your email address will not be published. Required fields are marked *