Criar entidades de serviço do Microsoft Entra com o SQL do Azure
Aplica-se a: Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Os recursos SQL do Azure dão suporte ao acesso programático para aplicativos que usam entidades de serviço e identidades gerenciadas do Microsoft Entra ID (anteriormente Azure Active Directory).
Suporte para as entidades de serviços (aplicativos do Microsoft Entra)
Este artigo se aplica a aplicativos registrados no Microsoft Entra ID. O uso de credenciais de aplicativo para acessar o SQL do Azure dá suporte ao princípio de segurança da Separação de Funções, permitindo que as organizações configurem o acesso preciso para cada aplicativo que se conecta a seus bancos de dados. As identidades gerenciadas, uma forma especial de entidades de serviço, são recomendadas por serem sem senha e eliminarem a necessidade de uso de credenciais gerenciadas pelo desenvolvedor.
O Microsoft Entra ID habilita ainda mais cenários avançados de autenticação, como OBO (fluxo em nome do usuário) do OAuth 2.0. O OBO permite que os aplicativos solicitem credenciais de usuário conectado, para cenários em que os próprios aplicativos não devem receber acesso ao banco de dados sem permissões delegadas.
Para obter mais informações sobre os aplicativos do Microsoft Entra, confira Objetos de aplicativo e entidade de serviço do Microsoft Entra ID e Criar uma entidade de serviço do Azure com o Azure PowerShell.
Criação de usuário do Microsoft Entra por meio de entidades de serviço
O suporte a essa funcionalidade é útil nos processos de automação de aplicativos do Microsoft Entra nos quais as entidades de serviços do Microsoft Entra são criados e mantidos no Banco de Dados SQL ou na Instância Gerenciada de SQL sem interação humana. As entidades de serviço podem ser um administrador do Microsoft Entra para o servidor lógico ou instância gerenciada do SQL, como parte de um grupo ou uma identidade autônoma. O aplicativo pode automatizar a criação de objetos do Microsoft Entra no Banco de Dados SQL ou na Instância Gerenciada de SQL, permitindo a automação completa da criação do usuário do banco de dados.
Habilitar entidades de serviço para criar usuários do Microsoft Entra
Ao usar aplicativos para acessar o SQL do Azure, a criação de usuários e logons do Microsoft Entra requer permissões que não são atribuídas a entidades de serviço ou identidades gerenciadas por padrão: a capacidade de ler usuários, grupos e aplicativos em um locatário do Microsoft Graph. Essas permissões são necessárias para que o mecanismo SQL valide a identidade especificada em CREATE LOGIN
ou CREATE USER
e extraia informações importantes, incluindo a ID do Objeto ou do Aplicativo da identidade, que é usada para criar o logon ou o usuário.
Quando um usuário do Microsoft Entra executa esses comandos, o aplicativo Microsoft do SQL do Azure usa permissões delegadas para representar o usuário conectado e consulta o Microsoft Graph usando suas permissões. Esse fluxo não é possível com entidades de serviço, porque um aplicativo não pode representar outro aplicativo. Em vez disso, o mecanismo SQL tenta usar sua identidade de servidor, que é a identidade gerenciada primária atribuída a uma instância gerenciada de SQL, servidor lógico SQL do Azure ou espaço de trabalho do Azure Synapse. A identidade do servidor deve existir e ter as permissões de consulta do Microsoft Graph ou haverá falha nas operações.
As etapas a seguir explicam como atribuir uma identidade gerenciada ao servidor e atribuir a ele as permissões do Microsoft Graph para permitir que as entidades de serviço criem usuários e logons do Microsoft Entra no banco de dados.
Atribua a identidade do servidor. A identidade do servidor pode ser uma identidade gerenciada atribuída pelo sistema ou pelo usuário. Para obter mais informações, confira Identidades gerenciadas no Microsoft Entra para o SQL do Azure.
- O comando do PowerShell a seguir cria um novo servidor lógico provisionado com uma identidade gerenciada atribuída pelo sistema:
New-AzSqlServer -ResourceGroupName <resource group> -Location <Location name> -ServerName <Server name> -ServerVersion "12.0" -SqlAdministratorCredentials (Get-Credential) -AssignIdentity
Para obter mais informações, consulte o comando new-AzSqlServer ou o comando new-AzSqlInstance para Instância Gerenciada de SQL.
- Para um servidor lógico existente, execute o seguinte comando para adicionar uma identidade gerenciada atribuída pelo sistema a ele:
Set-AzSqlServer -ResourceGroupName <resource group> -ServerName <Server name> -AssignIdentity
Para obter mais informações, consulte o comando Set-AzSqlServer ou o comando Set-AzSqlInstance para Instância Gerenciada de SQL.
- Para verificar se a identidade do servidor está atribuída ao servidor, execute o comando Get-AzSqlServer ou o comando Get-AzSqlInstance para a Instância Gerenciada de SQL.
Observação
A identidade do servidor também pode ser atribuída por meio de comandos da CLI e da API REST. Para obter mais informações, confira az sql server create, az sql server update e Servidores - REST API.
Conceda ao servidor permissões de identidade para consultar o Microsoft Graph. Isso pode ser feito de várias maneiras: adicionando a identidade à função Leitores de Diretório do Microsoft Entra, atribuindo à identidade as permissões individuais do Microsoft Graph ou adicionando a identidade a um grupo atribuível por função que tenha a função Leitores de Diretório:
Adicionar identidade de servidor a um grupo de funções atribuíveis
Em ambientes de produção, é recomendável que um administrador de locatário crie um grupo de funções atribuíveis e atribua a função Leitores de Diretório a ele. Os proprietários do grupo podem adicionar identidades de servidor ao grupo, herdando essas permissões. Isso remove a necessidade de um Administrador Global ou Administrador de Funções Privilegiadas conceder permissões a cada identidade de servidor individual, permitindo que os administradores deleguem a atribuição de permissão aos proprietários do grupo para esse cenário. Para obter mais informações, confira Função Leitores de diretório no Microsoft Entra ID para o SQL do Azure.
Atribuir permissões do Microsoft Graph à identidade gerenciada do servidor
Para atribuir as permissões individuais do Microsoft Graph à identidade do servidor, você deve ter a função Administrador Global do Microsoft Entra ou Administrador de funções com privilégios. Isso é recomendado em vez de atribuir a função Leitores de Diretório, porque há permissões incluídas na função que a identidade do servidor não precisa. A atribuição apenas de permissões de leitura individuais do Microsoft Graph limita as permissões da identidade do servidor no locatário e mantém o princípio de privilégio mínimo. Para obter instruções, confira Identidades gerenciadas no Microsoft Entra para SQL do Azure.
Adicionar identidade do servidor à função Leitores de Diretório
Para adicionar a identidade do servidor à função Leitores de Diretório, você deve ser membro da função Administrador Global do Microsoft Entra ou Administrador de Funções com Privilégios. Em ambientes de produção, essa opção não é recomendada por dois motivos: a função Leitor de Diretório fornece mais permissões do que a identidade do servidor exige e o processo de atribuição de função ainda requer aprovações de administrador para cada identidade de servidor (ao contrário do uso de grupos). Siga as instruções para a Instância Gerenciada de SQL disponíveis no artigo Set Microsoft Entra admin (SQL Managed Instance).
Solução de problemas
Durante a solução de problemas, você pode encontrar o seguinte erro:
Msg 33134, Level 16, State 1, Line 1
Principal 'test-user' could not be resolved.
Error message: 'Server identity is not configured. Please follow the steps in "Assign an Azure AD identity to your server and add Directory Reader permission to your identity" (https://aka.ms/sqlaadsetup)'
Esse erro indica que a identidade do servidor não foi criada ou não recebeu permissões do Microsoft Graph. Siga as etapas para Atribuir uma identidade ao servidor lógico e Atribuir permissão de Leitores de Diretório à identidade do servidor lógico.
Limitações
As entidades de serviço não podem se autenticar além dos limites dos locatários. A tentativa de acessar o Banco de Dados SQL ou a Instância Gerenciada de SQL usando um aplicativo Microsoft Entra criado em um locatário diferente falha.
Um módulo Az.Sql 2.9.0 ou posterior será necessário para configurar um aplicativo do Microsoft Entra na condição de administrador do Microsoft Entra para o SQL do Azure. Verifique se você atualizou para o módulo mais recente.