Dando continuidade no tópico anterior, neste, vamos finalizar o assunto que tange a criação de roles, acessos e permissões.

Vamos começar tratando sobre as duas roles que são exclusivas ao Azure SQL:

  • DBManager
  • Login Manager

Essas duas roles de banco se encontram no banco de sistema Master e são gerenciadas pelo criador do servidor no portal Azure. Essas permissões também podem ser atribuídas aos usuários ou user roles de banco e dão as seguintes permissões:

  • DBManager – o usuário consegue criar quantos bancos quiser dentro do Azure e se torna o owner do banco criado. Embora sejam dbmanager de um banco que foi criado, isso não os garante permissão em outros
  • Login manager – Aqui, dá permissão para um usuário em específico de criar logins para outros usuários que ficarão com o default_database na Master.

Como essas roles ficam armazenadas na Master, não é possível adicionar roles de outros bancos e dar permissão em grupo aqui.

Segue a sintaxe como exemplo:

Alter role dbmanager [nome_usuario]
Alter role loginmanager [nome_usuario]

PERMISSÃO E CRIAÇÃO DE SERVER ROLES

As server roles, são roles dentro das instâncias do SQL Server que dão autorizações a nível de servidor, podendo reconfigurar todo o ambiente em que o(s) banco(s) estão hospedados.

A ideia aqui, funciona basicamente igual ao user-defined database role no que diz respeito às permissões, a grande diferença é que são aplicadas a nível de instância e com isso, a cautela deve ser maior.

Não há a opção de server roles para o Azure SQL e não é possível adicionar uma database role que esteja fora do banco Master.

Veja abaixo, como criar Server Role.

APPLICATION ROLE

Independente do modelo de sistema que escolhemos, seja on-premisses ou cloud, é possível criar usuários e roles específicas para as aplicações que sustentam o negócio.

Além de serem criadas, é necessário habilitá-las via stored procedure.

NOTA: quando executamos a sp_setapprole, a conexão ao qual ela foi executada, se torna a conexão do approle, logo, as permissões passam a ser da aplicação.

A sintaxe para criação é um pouco diferente, e com suas particularidades.  

O procedimento abaixo foi feito no Azure Data Studio.

EXTRA: ORPHANED USER (TROUBLESHOOTING)

Essa situação ocorre quando um usuário associado para um login perde a referência do SID não podendo mais acessar o servidor e por consequência, o banco de dados.

Costuma ocorrer em ambientes muito grandes onde há muitos bancos e diversos membros de equipe.

Esse fato também acontece pois quando excluímos um login do SQL Server, ele não exclui o usuário vinculado, ficando este, no banco perdido e sem acesso.

NOTA: esse tipo de situação não ocorre com o Azure SQL pois não há atribuição de um usuário para um login como ocorre no On-Premisses.

Com este post, finalizo toda a questão de acesso dentro do SQL Server assim como suas permissões. Existem diversas formas de atribuir permissões dentro dos serviços mas, são variações dos comandos GRANT, DENY E REVOKE e claro, não foram abordados aqui pois se tornaria repetitivo.

Nos próximos posts, irei iniciar sobre o assunto criptografia e como manter os dados criptofrados, seja local ou na transmissão entre aplicação e banco.

Espero que tenham gostado, até a próxima!