Partilhar via


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 Identityde 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:

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 umiservertestgerenciada 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.Alle Application.Read.ALL permissões para uma identidade gerenciada para acessar o User.Read.AllMicrosoft 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.

Screenshot of enterprise application settings in the Azure portal.

Selecione o UMI e vá para as configurações de permissões em Segurança.

Screenshot of user-assigned managed identity permissions.

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.

Screenshot of the Azure portal page for an Azure SQL Database logical server. In the Properties menu, the System Assigned Managed Identity is highlighted.

  • 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:

  1. Vá para o seu servidor SQL ou recurso de instância gerenciada SQL.
  2. Em Segurança, selecione a configuração Identidade .
  3. Em Identidade gerenciada atribuída ao usuário, selecione Adicionar.
  4. Selecione uma assinatura e, em seguida, para Identidade principal, selecione uma identidade gerenciada para a assinatura. Em seguida, escolha o botão Selecionar .

Azure portal screenshot of selecting a user-assigned managed identity when configuring an existing server identity.

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.