Identidades gerenciadas no Microsoft Entra para Azure SQL
Aplica-se a:Banco de Dados SQL do Azure Instância Gerenciada SQLdo Azure
O Microsoft Entra ID (anteriormente Azure Ative Directory) dá suporte a dois tipos de identidades gerenciadas: identidade gerenciada atribuída pelo sistema (SMI) e identidade gerenciada atribuída pelo usuário (UMI). Para obter mais informações, consulte Tipos de identidade gerenciados.
Uma SMI é atribuída automaticamente à Instância Gerenciada SQL do Azure quando é criada. Ao usar a autenticação do Microsoft Entra com o Banco de Dados SQL do Azure, você deve atribuir um SMI quando as entidades de serviço do Azure são usadas para criar usuários do Microsoft Entra no Banco de Dados SQL.
Anteriormente, apenas uma SMI podia ser atribuída à Instância Gerenciada SQL do Azure ou à identidade do servidor do Banco de Dados SQL. Agora, um UMI pode ser atribuído à Instância Gerenciada SQL ou ao Banco de Dados SQL como a instância ou a identidade do servidor.
Além de usar um UMI e um SMI como a instância ou identidade do servidor, você pode usá-los para acessar o banco de dados usando a opção Authentication=Active Directory Managed Identity
de cadeia de conexão SQL . Você precisa criar um usuário SQL a partir da identidade gerenciada no banco de dados de destino usando a instrução CREATE USER . Para obter mais informações, consulte Usando a autenticação do Microsoft Entra com SqlClient.
Para recuperar o(s) UMI(s) ou SMI atual para instância gerenciada SQL do Azure ou Banco de Dados SQL do Azure, consulte Obter ou definir uma identidade gerenciada para um servidor lógico ou instância gerenciada mais adiante neste artigo.
Benefícios do uso de identidades gerenciadas atribuídas pelo usuário
Há vários benefícios de usar uma UMI como uma identidade de servidor:
Os usuários têm a flexibilidade de criar e manter seus próprios UMIs para um locatário. Você pode usar UMIs como identidades de servidor para o Azure SQL. Um UMI é gerenciado pelo usuário, enquanto um SMI é definido exclusivamente por servidor e atribuído pelo sistema.
No passado, você precisava da função Leitores de Diretório do Microsoft Entra ID ao usar um SMI como a identidade do servidor ou da instância. Com a introdução do acesso ao Microsoft Entra ID através do Microsoft Graph, os usuários preocupados em dar permissões de alto nível, como a função Leitores de Diretório, ao SMI ou UMI podem, alternativamente, conceder permissões de nível inferior para que a identidade do servidor ou da instância possa acessar o Microsoft Graph.
Para obter mais informações sobre como fornecer permissões de Leitores de Diretório e sua função, consulte Função de Leitores de Diretório no Microsoft Entra ID para Azure SQL.
Os usuários podem escolher uma UMI específica para ser a identidade do servidor ou da instância para todos os bancos de dados ou instâncias gerenciadas no locatário. Ou podem ter vários UMIs atribuídos a diferentes servidores ou instâncias.
UMIs podem ser usados em diferentes servidores para representar diferentes recursos. Por exemplo, um UMI pode servir criptografia de dados transparente (TDE) em um servidor e um UMI pode servir a autenticação Microsoft Entra em outro servidor.
Você precisa de um UMI para criar um servidor lógico no Azure configurado com TDE com chaves gerenciadas pelo cliente (CMKs). Para obter mais informações, consulte Criptografia de dados transparente gerenciada pelo cliente usando identidade gerenciada atribuída pelo usuário.
As UMIs são independentes de servidores lógicos ou instâncias gerenciadas. Quando um servidor lógico ou instância é excluído, o SMI também é excluído. Os UMIs não são excluídos com o servidor.
Nota
Você deve habilitar a identidade da instância (SMI ou UMI) para permitir o suporte à autenticação do Microsoft Entra na Instância Gerenciada do SQL. Para o Banco de Dados SQL, habilitar a identidade do servidor é opcional e necessário somente se uma entidade de serviço do Microsoft Entra (aplicativo Microsoft Entra) supervisionar a criação e o gerenciamento de usuários, grupos ou aplicativos do Microsoft Entra no servidor. Para obter mais informações, consulte Entidade de serviço do Microsoft Entra com Azure SQL.
Criar uma identidade gerida atribuída pelo utilizador
Para obter informações sobre como criar uma UMI, consulte Gerenciar identidades gerenciadas atribuídas pelo usuário.
Permissões
Depois que a UMI é criada, algumas permissões são necessárias para permitir que a UMI leia do Microsoft Graph como a identidade do servidor. Conceda as seguintes permissões ou dê à UMI a função de Leitores de Diretório .
Essas permissões devem ser concedidas antes de provisionar um servidor lógico ou uma instância gerenciada. Depois de conceder as permissões à UMI, elas são habilitadas para todos os servidores ou instâncias criados com a UMI atribuída como uma identidade de servidor.
Importante
Somente um Administrador Global ou Administrador de Função Privilegiada pode conceder essas permissões.
- User.Read.All: Permite o acesso às informações do usuário do Microsoft Entra.
- GroupMember.Read.All: Permite o acesso às informações do grupo Microsoft Entra.
- Application.Read.ALL: Permite o acesso às informações da entidade de serviço (aplicativo) do Microsoft Entra.
Conceder permissões
O script PowerShell de exemplo a seguir concede as permissões necessárias para uma identidade gerenciada. Este exemplo atribui permissões à identidade umiservertest
gerenciada atribuída pelo usuário.
Para executar o script, você deve entrar como um usuário com uma função de Administrador Global ou Administrador de Função Privilegiada.
O script concede o , GroupMember.Read.All
e Application.Read.ALL
permissões para uma identidade gerenciada para acessar o User.Read.All
Microsoft Graph.
# Script to assign permissions to an existing UMI
# The following required Microsoft Graph permissions will be assigned:
# User.Read.All
# GroupMember.Read.All
# Application.Read.All
Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Applications
$tenantId = "<tenantId>" # Your tenant ID
$MSIName = "<managedIdentity>"; # Name of your managed identity
# Log in as a user with the "Global Administrator" or "Privileged Role Administrator" role
Connect-MgGraph -TenantId $tenantId -Scopes "AppRoleAssignment.ReadWrite.All,Application.Read.All"
# Search for Microsoft Graph
$MSGraphSP = Get-MgServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'";
$MSGraphSP
# Sample Output
# DisplayName Id AppId SignInAudience ServicePrincipalType
# ----------- -- ----- -------------- --------------------
# Microsoft Graph 47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 AzureADMultipleOrgs Application
$MSI = Get-MgServicePrincipal -Filter "DisplayName eq '$MSIName'"
if($MSI.Count -gt 1)
{
Write-Output "More than 1 principal found with that name, please find your principal and copy its object ID. Replace the above line with the syntax $MSI = Get-MgServicePrincipal -ServicePrincipalId <your_object_id>"
Exit
}
# Get required permissions
$Permissions = @(
"User.Read.All"
"GroupMember.Read.All"
"Application.Read.All"
)
# Find app permissions within Microsoft Graph application
$MSGraphAppRoles = $MSGraphSP.AppRoles | Where-Object {($_.Value -in $Permissions)}
# Assign the managed identity app roles for each permission
foreach($AppRole in $MSGraphAppRoles)
{
$AppRoleAssignment = @{
principalId = $MSI.Id
resourceId = $MSGraphSP.Id
appRoleId = $AppRole.Id
}
New-MgServicePrincipalAppRoleAssignment `
-ServicePrincipalId $AppRoleAssignment.PrincipalId `
-BodyParameter $AppRoleAssignment -Verbose
}
Verificar permissões para identidade gerenciada atribuída pelo usuário
Para verificar as permissões de um UMI, vá para o portal do Azure. No recurso Microsoft Entra ID, vá para Aplicativos corporativos. Selecione Todos os aplicativos para o tipo de aplicativo e procure o UMI que foi criado.
Selecione o UMI e vá para as configurações de permissões em Segurança.
Obter ou definir uma identidade gerenciada para um servidor lógico ou instância gerenciada
Para criar um servidor usando um UMI, consulte o seguinte guia: Criar um servidor lógico SQL do Azure usando uma identidade gerenciada atribuída pelo usuário.
Obter o SMI para o servidor lógico do Banco de Dados SQL do Azure
O portal do Azure exibe a ID de identidade gerenciada atribuída pelo sistema (SMI) no menu Propriedades do servidor lógico do Banco de Dados SQL do Azure.
- Para recuperar o(s) UMI(s) da Instância Gerenciada SQL do Azure ou do Banco de Dados SQL do Azure, use os seguintes exemplos de PowerShell ou CLI do Azure.
- Para recuperar o SMI para Instância Gerenciada SQL do Azure, use os seguintes exemplos de PowerShell ou CLI do Azure.
Definir uma identidade gerenciada no portal do Azure
Para definir a identidade gerenciada pelo usuário para o servidor lógico do Banco de Dados SQL do Azure ou a Instância Gerenciada SQL do Azure no portal do Azure:
- Vá para o seu servidor SQL ou recurso de instância gerenciada SQL.
- Em Segurança, selecione a configuração Identidade .
- Em Identidade gerenciada atribuída ao usuário, selecione Adicionar.
- Selecione uma assinatura e, em seguida, para Identidade principal, selecione uma identidade gerenciada para a assinatura. Em seguida, escolha o botão Selecionar .
Criar ou definir uma identidade gerenciada usando a CLI do Azure
A CLI do Azure 2.26.0 (ou posterior) é necessária para executar esses comandos com um UMI.
Identidade gerenciada do Banco de Dados SQL do Azure usando a CLI do Azure
Para provisionar um novo servidor com uma identidade gerenciada atribuída pelo usuário, use o comando az sql server create .
Para obter as identidades gerenciadas para um servidor lógico, use o comando az sql server show .
Por exemplo, para recuperar as identidades gerenciadas atribuídas pelo usuário de um servidor lógico, procure o
principalId
de cada um:az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.userAssignedIdentities
Para recuperar a identidade gerenciada atribuída pelo sistema de um servidor lógico do Banco de Dados SQL do Azure:
az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
Para atualizar a configuração do servidor da UMI, use o comando az sql server update .
Identidade gerenciada da Instância Gerenciada SQL do Azure usando a CLI do Azure
Para provisionar uma nova instância gerenciada com um UMI, use o comando az sql mi create .
Para obter as identidades gerenciadas atribuídas pelo sistema e pelo usuário para instâncias gerenciadas, use o comando az sql mi show .
Por exemplo, para recuperar o(s) UMI(s) de uma instância gerenciada, procure o
principalId
de cada um:az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.userAssignedIdentities
Para recuperar o SMI de uma instância gerenciada:
az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.principalId
Para atualizar a configuração da instância gerenciada da UMI, use o comando az sql mi update .
Criar ou definir uma identidade gerenciada usando o PowerShell
Az.Sql módulo 3.4 ou posterior é necessário para usar o PowerShell com um UMI. A versão mais recente do PowerShell é recomendada ou use o Azure Cloud Shell no portal do Azure.
Identidade gerenciada do Banco de Dados SQL do Azure usando o PowerShell
Para provisionar um novo servidor com um UMI, use o comando New-AzSqlServer .
Para obter as identidades gerenciadas para um servidor lógico, use o comando Get-AzSqlServer .
Por exemplo, para recuperar o(s) UMI(s) de um servidor lógico, procure o
principalId
de cada um:$MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here" $MI.Identity.UserAssignedIdentities | ConvertTo-Json
Para recuperar o SMI de um servidor lógico do Banco de Dados SQL do Azure:
$MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here" $MI.Identity.principalId
Para atualizar a configuração do servidor da UMI, use o comando Set-AzSqlServer .
Identidade gerenciada da Instância Gerenciada SQL do Azure usando o PowerShell
Para provisionar uma nova instância gerenciada com um UMI, use o comando New-AzSqlInstance .
Para obter as identidades gerenciadas para uma instância gerenciada, use o comando Get-AzSqlInstance .
Por exemplo, para recuperar o(s) UMI(s) de uma instância gerenciada, procure o
principalId
de cada um:$MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here" $MI.Identity.UserAssignedIdentities | ConvertTo-Json
Para recuperar o SMI de uma instância gerenciada:
$MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here" $MI.Identity.principalId
Para atualizar a configuração da instância gerenciada da UMI, use o comando Set-AzSqlInstance .
Criar ou definir uma identidade gerenciada usando a API REST
Para atualizar as configurações UMI do servidor, você também pode usar o script de provisionamento da API REST usado em Criar um servidor lógico usando uma identidade gerenciada atribuída pelo usuário ou Criar uma instância gerenciada usando uma identidade gerenciada atribuída pelo usuário. Execute novamente o comando de provisionamento no guia com a propriedade de identidade gerenciada atribuída pelo usuário atualizada que você deseja atualizar.
Criar ou definir uma identidade gerenciada usando um modelo ARM
Para atualizar as configurações de UMI para o servidor, você também pode usar o modelo do Azure Resource Manager (modelo ARM) usado em Criar um servidor lógico usando uma identidade gerenciada atribuída pelo usuário ou Criar uma instância gerenciada usando uma identidade gerenciada atribuída pelo usuário. Execute novamente o comando de provisionamento no guia com a propriedade de identidade gerenciada atribuída pelo usuário atualizada que você deseja atualizar.
Nota
Não é possível alterar o administrador do servidor ou a senha, nem alterar o administrador do Microsoft Entra, executando novamente o comando de provisionamento para o modelo ARM.
Problemas conhecidos e de limitações
- Depois de criar uma instância gerenciada, a página de administração do Microsoft Entra para sua instância gerenciada no portal do Azure mostra um aviso:
Managed Instance needs permissions to access Microsoft Entra ID. Click here to grant "Read" permissions to your Managed Instance.
se você deu à UMI as permissões apropriadas discutidas anteriormente neste artigo, poderá ignorar esse aviso. - Se você usar um SMI ou UMI como a identidade do servidor ou da instância, excluir a identidade fará com que o servidor ou instância não consiga acessar o Microsoft Graph. A autenticação do Microsoft Entra e outras funções falharão. Para restaurar a funcionalidade do Microsoft Entra, atribua um novo SMI ou UMI ao servidor com as permissões apropriadas.
- Para conceder permissões para acessar o Microsoft Graph por meio de um SMI ou UMI, você precisa usar o PowerShell. Não é possível conceder essas permissões usando o portal do Azure.