Identidades gerenciadas em Microsoft Entra para SQL do Azure

Aplica-se a:Banco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Microsoft Entra ID (formerly Azure Active Directory) dá suporte a dois tipos de identidades gerenciadas: SMI (identidade gerenciada) atribuída pelo sistema e UMI (identidade gerenciada atribuída pelo usuário). Para obter mais informações, confira Tipos de identidade gerenciada.

Um SMI é atribuído automaticamente a Instância Gerenciada de SQL do Azure quando ele é criado. Ao usar Microsoft Entra autenticação com o Banco de Dados SQL do Azure, você deve atribuir um SMI quando entidades de serviço do Azure criarem usuários do Microsoft Entra no Banco de Dados SQL.

Anteriormente, você só podia atribuir um SMI à identidade do servidor Instância Gerenciada de SQL do Azure ou do Banco de Dados SQL. Agora, você pode atribuir uma UMI a Instância Gerenciada de SQL ou banco de dados SQL como a identidade da instância ou do servidor.

Além de usar uma UMI e uma SMI como a instância ou a identidade do servidor, você pode usá-las para acessar o banco de dados usando a opção sql cadeia de conexão Authentication=Active Directory Managed Identity. Você precisa criar um usuário SQL com base na 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 o SqlClient.

Para recuperar a SQL ou as UMIs atuais da instância gerenciada de SQL do Azure ou do Banco de Dados SQL do Azure, consulte Obter ou definir uma identidade gerenciada para um servidor lógico ou uma instância gerenciada mais adiante neste artigo.

Benefícios do uso de identidades gerenciadas atribuídas pelo usuário

O uso de uma UMI como uma identidade de servidor oferece vários benefícios:

  • Os usuários têm a flexibilidade de criar e manter as próprias UMIs para um locatário. Você pode usar UMIs como identidades de servidor para SQL do Azure. Você gerencia uma UMI por conta própria, enquanto o sistema define e atribui exclusivamente um SMI por servidor.

  • No passado, você precisava da função Microsoft Entra ID Leitores de Diretório 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, usuários que estão preocupados em conceder permissões de alto nível, como a função de Leitores de Diretório para SMI ou UMI, podem optar por conceder permissões de nível inferior, permitindo que a identidade do servidor ou da instância acesse o Microsoft Graph.

    Para obter mais informações sobre como fornecer permissões de Leitores de Diretório e a respectiva função, confira Função de Leitores de Diretório no Microsoft Entra ID para o SQL do Azure.

  • Os usuários podem escolher uma UMI específica para ser a identidade do servidor ou da instância em todos os bancos de dados ou instâncias gerenciadas no locatário. Ou eles podem ter várias UMIs atribuídas a diferentes servidores ou instâncias.

    Você pode usar UMIs em servidores diferentes para representar recursos diferentes. Por exemplo, uma UMI pode fornecer Transparente Data Encryption (TDE) em um servidor, e uma UMI pode oferecer autenticação do Microsoft Entra em outro servidor.

  • Você precisa de uma UMI para criar um servidor logical em Azure configurado com TDE com CMKs (chaves gerenciadas pelo cliente). 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 você exclui um servidor lógico ou uma instância, o sistema também exclui o SMI. As UMIs não são excluídos com o servidor.

Observação

Você deve habilitar a identidade da instância (SMI ou UMI) para permitir o suporte à autenticação do Microsoft Entra na Instância Gerenciada de SQL. Para o Banco de Dados SQL, a habilitação da identidade do servidor é opcional e necessária somente se um principal de serviço Microsoft Entra (aplicativo do Microsoft Entra) supervisionar a criação e o gerenciamento de usuários, grupos ou aplicativos Microsoft Entra no servidor. Para obter mais informações, consulte Entidades de serviço do Microsoft Entra com o SQL do Azure.

Criar uma identidade gerenciada atribuída ao usuário

Para obter informações sobre como criar uma UMI, confira Gerenciar identidades gerenciadas atribuídas pelo usuário.

Permissões

Depois de criar a UMI, você deve conceder algumas permissões para permitir que a UMI leia do Microsoft Graph como identidade do servidor. Conceda as permissões a seguir ou conceda à UMI a função de Leitores de Diretório.

Você deve conceder essas permissões antes de provisionar um servidor lógico ou uma instância gerenciada. Depois de conceder as permissões à UMI, elas se aplicam a todos os servidores ou instâncias criadas com a UMI atribuída como uma identidade de servidor.

Importante

Somente um Administrador de Funções Com Privilégios ou uma função superior 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 a informações de grupo Microsoft Entra.
  • Application.Read.All: permite acesso às informações sobre o principal de serviço (aplicativo) do Microsoft Entra.

Permissões para SMI

O SMI requer as mesmas permissões de aplicativo do Microsoft Graph.

Aplica-se apenas a Banco de Dados SQL do Azure: o uso de um SMI oferece a oportunidade de não provisionar explicitamente as permissões de Microsoft Graph. Os usuários do Microsoft Entra ainda podem ser criados sem a permissão de Microsoft Graph necessária usando a sintaxe T-SQL CREATE USER. Isso exigiria a sintaxe SID e TYPE, conforme descrito no artigo CREATE USER.

CREATE USER
    {
    Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH <limited_options_list> [ ,... ] ]
    | Microsoft_Entra_principal WITH <options_list> [ ,... ]
    }
 [ ; ]

<limited_options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | OBJECT_ID = 'objectid'
<options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | SID = sid
    | TYPE = { X | E }

A sintaxe acima permite a criação de usuários Microsoft Entra sem validação. Para que isso funcione, você deve fornecer o Object Id do principal do Microsoft Entra e usá-lo como SID na instrução T-SQL, conforme explicado em Criar um usuário de banco de dados independente de um principal Microsoft Entra sem validação.

A verificação de validade da ID do Objeto é responsabilidade do usuário que executa a instrução T-SQL.

Conceder permissões

O script de exemplo do PowerShell a seguir concede as permissões necessárias para uma identidade gerenciada. Esta amostra atribui permissões à identidade gerenciada atribuída pelo usuário umiservertest.

Para executar o script, você deve entrar como usuário na função de Administrador de Funções Privilegiadas ou em uma função superior.

O script concede as permissões User.Read.All, GroupMember.Read.All e Application.Read.ALL a uma identidade gerenciada para acessar 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 "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 da identidade gerenciada atribuída pelo usuário

Para verificar as permissões de uma UMI, acesse o Azure portal. No recurso Microsoft Entra ID, acesse Enterprise applications. Selecione Todos os Aplicativos para tipo de aplicativo e pesquise a UMI que você criou.

Screenshot das configurações do aplicativo empresarial no Azure portal.

Selecione a UMI e acesse as configurações de Permissões em Segurança.

Captura de tela das permissões de identidade gerenciada atribuídas pelo usuário.

Obter ou definir uma identidade gerenciada para um servidor lógico ou uma instância gerenciada de SQL

Para criar um servidor ou instância usando uma UMI, consulte os seguintes guias:

Definir um SMI

Para definir a identidade gerenciada do sistema para o servidor lógico Banco de Dados SQL do Azure no portal Azure, siga estas etapas:

  1. Acesse o recurso SQL Server ou Instância gerenciada do SQL.

  2. Em Segurança, selecione Identidade.

  3. Na identidade gerenciada atribuída pelo sistema, defina o Status como Ativado:

    Screenshot do painel de identidade do servidor lógico no portal do Azure.

  4. Selecione Salvar para salvar suas alterações.

Para definir a identidade gerenciada do sistema para Instância Gerenciada de SQL do Azure no portal Azure, siga estas etapas:

  1. Vá para o recurso da instância de SQL gerenciada.

  2. Em Segurança, selecione Identidade.

  3. Na identidade gerenciada atribuída pelo sistema, defina o Status como Ativado.

    Screenshot do painel de identidade da instância gerenciada de SQL no portal Azure.

  4. Selecione Salvar para salvar suas alterações.

Obter o SMI

O portal Azure exibe a ID de SMI (identidade gerenciada) atribuída pelo sistema no menu Properties do servidor lógico Banco de Dados SQL do Azure.

Captura de tela da página do portal do Azure de um servidor lógico do Banco de Dados SQL do Azure. No menu Propriedades, a Identidade Gerenciada Atribuída pelo Sistema está realçada.

  • Para recuperar os UMIs para Instância Gerenciada de SQL do Azure ou Banco de Dados SQL do Azure, use os exemplos do PowerShell ou do CLI do Azure posteriormente neste artigo.
  • Para recuperar o SMI para o Instância Gerenciada de SQL do Azure, use os exemplos do PowerShell ou do CLI do Azure apresentados mais adiante neste artigo.

Definir uma identidade gerenciada pelo usuário no portal do Azure

Para definir a identidade gerenciada pelo usuário para o servidor lógico Banco de Dados SQL do Azure ou Instância Gerenciada de SQL do Azure no portal Azure:

  1. Acesse o recurso SQL Server ou Instância gerenciada do SQL.
  2. Em Segurança, selecione a configuração Identidade.
  3. Em Identidade gerenciada atribuída pelo usuário, selecione Adicionar.
  4. Selecione uma assinatura e, para Identidade primária, selecione uma identidade gerenciada para a assinatura. Em seguida, escolha o botão Selecionar.

Captura de tela do portal do Azure ao selecionar uma identidade gerenciada atribuída pelo usuário ao configurar uma identidade gerenciada de servidor existente.

Criar ou definir uma identidade gerenciada usando o CLI do Azure

O CLI do Azure 2.26.0 (ou posterior) é necessário para executar esses comandos com uma UMI.

Identidade gerenciada do Banco de Dados SQL do Azure usando o 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 de 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 a principalId para cada um deles:

      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 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 de SQL do Azure usando a CLI do Azure

  • Para provisionar uma nova instância gerenciada com uma 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 as UMIs em uma instância gerenciada, procure a principalId de cada uma delas:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.userAssignedIdentities
      
    • Para recuperar a 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

O módulo Az.Sql 3.4 ou superior é necessário ao usar o PowerShell com uma UMI. A versão mais recente do PowerShell é recomendada, ou use o Azure Cloud Shell no portal do Azure.

Banco de Dados SQL do Azure com identidade gerenciada usando o PowerShell

  • Para provisionar um novo servidor com uma UMI, use o comando New-AzSqlServer.

  • Para obter as identidades gerenciadas de um servidor lógico, use o comando Get-AzSqlServer.

    • Por exemplo, para recuperar as UMIs de um servidor lógico, procure a principalId para cada um deles:

      $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 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 de SQL do Azure usando PowerShell

  • Para provisionar uma nova instância gerenciada com uma UMI, use o comando New-AzSqlInstance.

  • Para obter as identidades gerenciadas de uma instância gerenciada, use o comando Get-AzSqlInstance.

    • Por exemplo, para recuperar as UMIs de uma instância gerenciada, procure a principalId de cada uma delas:

      $MI = Get-AzSqlInstance -ResourceGroupName "resourcegroupnamehere" -Name "sql-mi-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json
      
    • Para recuperar a 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 da UMI para o servidor, você também dispõe do 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 do ARM

Para atualizar as configurações de UMI para o servidor, você também pode usar o modelo ARM (Azure Resource Manager) 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.

Observação

Você não pode alterar o administrador do servidor ou a senha ou alterar o administrador do Microsoft Entra executando novamente o comando de provisionamento para o modelo do ARM.

Limitações e problemas conhecidos

  • Depois de criar um managed instance, a página Microsoft Entra administrador para sua managed instance no portal Azure mostrará um aviso: Instância Gerenciada needs permissions to access Microsoft Entra ID. Click here to grant "Read" permissions to your Instância Gerenciada. Se você deu à UMI as permissões apropriadas discussadas anteriormente neste artigo, você pode ignorar esse aviso.
  • Se você usar um SMI ou um UMI como a identidade do servidor ou da instância, excluir a identidade torna o servidor ou a instância incapaz de acessar Microsoft Graph. A autenticação do Microsoft Entra e outras funções falham. Para restaurar Microsoft Entra funcionalidade, atribua um novo SMI ou UMI ao servidor com as permissões apropriadas.
  • Para conceder permissões para acessar Microsoft Graph por meio de um SMI ou um UMI, você precisa usar o PowerShell. Você não pode conceder essas permissões usando o portal Azure.