Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Serviço de Aplicativo do Azure fornece um serviço de hospedagem na Web altamente escalonável e com aplicação automática de patches no Azure. O Serviço de Aplicativo também fornece uma identidade gerenciada para seu aplicativo, que é uma solução perfeita para proteger o acesso ao SQL do Azure e a outros serviços do Azure. As identidades gerenciadas no Serviço de Aplicativo tornam seu aplicativo mais seguro ao eliminar os segredos, como as credenciais nas cadeias de conexão.
Este tutorial mostra como adicionar identidade gerenciada a um aplicativo .NET de exemplo que tem um back-end do SQL do Azure. Depois de concluir, seu aplicativo poderá se conectar ao Banco de Dados SQL do Azure com segurança sem a necessidade de um nome de usuário e senha.
Neste tutorial, você:
- Habilitar identidades gerenciadas.
- Conceder ao Banco de Dados SQL do Azure acesso à identidade gerenciada.
- Configurar o Entity Framework para usar a autenticação do Microsoft Entra com o Banco de Dados SQL.
- Conectar-se ao Banco de Dados SQL do Visual Studio usando a autenticação do Microsoft Entra.
Para obter diretrizes sobre como usar o Banco de Dados MySQL do Azure ou Banco de Dados PostgreSQL do Azure (Node.js, Python e Java), confira Tutorial: conectar-se aos bancos de dados do Azure através do Serviço de Aplicativo sem segredos usando uma identidade gerenciada.
Observação
Não há suporte para o Microsoft Entra ID nem para identidades gerenciadas no SQL Server local.
A autenticação do Microsoft Entra é diferente da autenticação integrada do Windows no Active Directory Domain Services (AD DS) local. O AD DS e o Microsoft Entra ID usam protocolos de autenticação completamente diferentes. Para mais informações, consulte a documentação do Microsoft Entra Domain Services.
Pré-requisitos
-
Se você ainda não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
Tenha um aplicativo CRUD (create-read-update-delete) básico do Serviço de Aplicativo do Azure ASP.NET MVC ou ASP.NET Core MVC que usa o Banco de Dados SQL do Azure com autenticação SQL como back-end. As etapas neste tutorial são compatíveis com as versões do .NET a seguir:
- .NET Framework 4.8 e posteriores
- .NET 6.0 e posteriores
Permita a conexão do cliente do computador com o Azure, para que você possa depurar seu aplicativo em seu ambiente de desenvolvimento. Você pode adicionar o endereço IP do cliente seguindo as etapas descritas em Gerenciar regras de firewall de IP no nível do servidor usando o portal do Azure.
Entre no Azure Cloud Shell ou prepare seu ambiente para usar a CLI do Azure.
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Introdução ao Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para obter outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
Conceder acesso de administrador de banco de dados a um usuário do Microsoft Entra
Habilite a autenticação do Microsoft Entra no banco de dados do SQL do Azure, atribuindo um usuário do Microsoft Entra como o administrador do SQL Server do Azure. O administrador do Microsoft Entra deve ser um usuário que você criou, importou, sincronizou ou convidou para o Microsoft Entra ID. Esse usuário pode não ser o mesmo que o usuário da conta Microsoft da sua assinatura do Azure.
- Para obter mais informações sobre como criar um usuário do Microsoft Entra, consulte Adicionar ou excluir usuários usando o Microsoft Entra ID.
- Para obter mais informações sobre os usuários permitidos do Microsoft Entra para Banco de dados SQL, confira Recursos e limitações do Microsoft Entra no Banco de Dados SQL.
- Para obter mais informações sobre como adicionar um administrador do SQL Server do Azure, confira Provisionar um administrador do Microsoft Entra para o seu servidor.
Execute os comandos a seguir no ambiente Bash do Azure Cloud Shell ou depois de entrar na CLI do Azure localmente.
Use
az ad user listcom o parâmetrodisplay-name,filterouupnpara obter a ID do objeto para o usuário do Microsoft Entra ID que você deseja tornar administrador. Executeaz ad user listindependente para mostrar informações para todos os usuários no diretório do Microsoft Entra.Por exemplo, o comando a seguir lista informações para um usuário do Microsoft Entra ID com o
display-namede Nome Sobrenome.az ad user list --display-name "Firstname Lastname"Aqui está um exemplo de saída:
"businessPhones": [], "displayName": "Firstname Lastname", "givenName": null, "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "jobTitle": null, "mail": "firstname@contoso.com", "mobilePhone": null, "officeLocation": null, "preferredLanguage": null, "surname": null, "userPrincipalName": "firstname@contoso.com"Adicione o usuário do Microsoft Entra ID como administrador no SQL Server do Azure usando
az sql server ad-admin createcom o parâmetroobject-id. No comando a seguir, substitua<server-name>pelo nome do servidor menos o sufixo.database.windows.nete<entra-id>pelo valoridda saída do comandoaz ad user listanterior.az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id <entra-id>
Configurar a conectividade de identidade gerenciada para o aplicativo
As etapas a seguir configuram seu aplicativo para se conectar ao Banco de Dados SQL do Azure usando uma identidade gerenciada atribuída pelo sistema. Para usar uma identidade atribuída pelo usuário, confira o Tutorial: conectar-se aos bancos de dados do Azure através do Serviço de Aplicativo sem segredos usando uma identidade gerenciada.
Habilitar uma identidade gerenciada para o aplicativo
Para habilitar uma identidade gerenciada para o Aplicativo Azure, use o comando az webapp identity assign, substituindo <app-name> pelo nome do aplicativo. O nome de uma identidade atribuída pelo sistema é sempre o mesmo que o nome do aplicativo.
az webapp identity assign --resource-group myResourceGroup --name <app-name>
Veja um exemplo da saída:
{
"additionalProperties": {},
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
}
Para habilitar a identidade gerenciada para um slot de implantação, adicione --slot <slot-name> ao comando anterior e use o nome do slot em <slot-name>. O nome da identidade atribuída ao sistema é <app-name>/slots/<slot-name> em um slot de implantação.
Se quiser, você pode adicionar a identidade a um grupo do Microsoft Entra e, a seguir, conceder acesso ao Banco de Dados SQL ao grupo do Microsoft Entra, no lugar da identidade. Para conceder permissões para um grupo do Microsoft Entra, use o nome de exibição do grupo. Os comandos a seguir adicionam a identidade gerenciada de exemplo a um novo grupo chamado myAzureSQLDBAccessGroup.
$groupid=(az ad group create --display-name myAzureSQLDBAccessGroup --mail-nickname myAzureSQLDBAccessGroup --query objectId --output tsv)
$msiobjectid=(az webapp identity show --resource-group myResourceGroup --name <app-name> --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
az ad group member list -g $groupid
Conceder permissões à identidade gerenciada
Conceda à identidade as permissões mínimas de que seu aplicativo precisa.
Abra uma linha de comando do PowerShell e entre no Banco de Dados SQL usando o comando SQLCMD a seguir. Substitua
<server-name>pelo nome do servidor,<db-name>pelo nome do banco de dados e<admin-user>pelouserPrincipalNamedo usuário administrador da saída do comandoaz ad user listanterior.sqlcmd -S <servername>.database.windows.net -d <db-name> -U <admin-user> -G -l 30Siga as solicitações para entrar.
No prompt do SQL, execute os comandos a seguir para conceder ao aplicativo as permissões mínimas necessárias no banco de dados. Substitua
<identity-name>pelo nome da identidade gerenciada no Microsoft Entra ID, que é o mesmo que o nome do aplicativo.CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [<identity-name>]; ALTER ROLE db_datawriter ADD MEMBER [<identity-name>]; ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>]; GO
Observação
Os serviços de back-end da identidade gerenciada mantêm um cache de token que atualiza o token para um recurso de destino somente quando ele expira. Se você tentar modificar suas permissões do Banco de Dados SQL depois de primeiro obter um token com seu aplicativo, não obterá um novo token com permissões atualizadas até que o token armazenado em cache expire.
Remover a cadeia de conexão original
As alterações feitas em web.config ou appsettings.json funcionam com a identidade gerenciada. Você pode remover a cadeia de conexão original usada quando implantou seu aplicativo pela primeira vez. Para excluir a cadeia de conexão, execute o seguinte comando da CLI do Azure, substituindo <app-name> pelo nome do aplicativo e <connection-string-name> pelo nome da cadeia de conexão.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names <connection-string-name>
Configurar seu ambiente de desenvolvimento
Configure o ambiente de desenvolvimento escolhido e entre no Azure. Para obter mais informações sobre como configurar seu ambiente de desenvolvimento para a autenticação do Microsoft Entra, confira Biblioteca de clientes da Identidade do Azure para .NET.
O Visual Studio para Windows é integrado à autenticação do Microsoft Entra.
- Para habilitar o desenvolvimento e a depuração no Visual Studio, adicione seu usuário do Microsoft Entra no Visual Studio selecionando Arquivo>Configurações de Conta no menu superior e depois selecione Entrar ou Adicionar.
- Para configurar o usuário do Microsoft Entra para a autenticação do serviço do Azure, selecione Ferramentas>Opções no menu superior e, em seguida, selecione Autenticação do Serviço do Azure>Seleção de Conta. Selecione o usuário do Microsoft Entra que você adicionou e selecione OK.
Modificar seu projeto e publicar seu aplicativo
Seu aplicativo Web apoiado pelo Banco de Dados SQL do Azure usa um contexto de banco de dados para se conectar ao banco de dados. Para usar a autenticação do Microsoft Entra para funcionar com o aplicativo, você deve atualizar o contexto do banco de dados para se referir ao provedor do SQL Server do Entity Framework, que depende do provedor de ADO.NET Microsoft.Data.SqlClient moderno.
O provedor do Entity Framework substitui o provedor interno System.Data.SqlClient do SQL Server e inclui suporte para métodos de autenticação do Microsoft Entra ID. Para obter mais informações, consulte Microsoft.EntityFramework.SqlServer.
[DbConfigurationType(typeof(MicrosoftSqlDbConfiguration))] funciona localmente para usar Microsoft.Data.SqlClient para o contexto do banco de dados, mas como System.Data.SqlClient é codificado como o provedor no Serviço de Aplicativo do Azure, você deve estender MicrosoftSqlDbConfiguration para referências de redirecionamento System.Data.SqlClient para Microsoft.Data.SqlClient em vez disso. As etapas diferem dependendo se você tem um aplicativo ASP.NET ou ASP.NET Core.
Um aplicativo ASP.NET Core usa o Entity Framework Core por padrão.
No Console do Gerenciador de Pacotes no Visual Studio, adicione o pacote NuGet Microsoft.Data.SqlClient.
Install-Package Microsoft.Data.SqlClientEm appsettings.json, substitua o valor da cadeia de conexão pelo código a seguir, substituindo
<server-namee<database-name>pelo nome do servidor e pelo nome do banco de dados."Server=tcp:<server-name>.database.windows.net;Authentication=Active Directory Default; Database=<database-name>;"Observação
Você pode usar a autenticação Padrão do Active Directory no computador local e no Serviço de Aplicativo do Azure. O driver pode adquirir um token do Microsoft Entra ID de várias maneiras diferentes.
Se o aplicativo for implantado, o driver receberá um token da identidade gerenciada atribuída pelo sistema do aplicativo. O driver também pode se autenticar com uma identidade gerenciada atribuída pelo usuário se você incluir:
User Id=<client-id-of-user-assigned-managed-identity>;na sua cadeia de conexão.A classe
DefaultAzureCredentialarmazena em cache o token que está na memória e o recupera do Microsoft Entra ID antes da expiração. Você não precisa de nenhum código personalizado para atualizar o token.Agora você tem tudo o que precisa para se conectar ao Banco de Dados SQL do Azure ao depurar no Visual Studio. Seu código usa o usuário do Microsoft Entra configurado ao configurar seu ambiente de desenvolvimento.
Execute seu aplicativo. O aplicativo CRUD no seu navegador se conecta diretamente ao Banco de Dados SQL do Azure, usando a autenticação do Microsoft Entra. Essa configuração permite que você execute migrações de banco de dados do Visual Studio.
Publique suas alterações usando os seguintes comandos do Git:
git commit -am "configure managed identity" git push azure main
Testar o aplicativo
Quando a nova página da Web mostra a lista de tarefas pendentes, seu aplicativo se conecta ao banco de dados usando a identidade gerenciada.
Agora você pode editar a lista de tarefas pendentes.
Limpar os recursos
Nas etapas anteriores, você criou os recursos do Azure em um grupo de recursos. Se você acha que não precisará desses recursos no futuro, exclua o grupo de recursos executando o seguinte comando no Cloud Shell:
az group delete --name myResourceGroup
Esse comando pode levar alguns minutos para ser executado.
Conteúdo relacionado
- Tutorial: Usar um domínio personalizado e um certificado gerenciado para proteger seu aplicativo
- Tutorial: Como conectar um aplicativo de Serviço de Aplicativo ao Banco de Dados SQL em nome do usuário conectado
- Tutorial: conectar-se aos bancos de dados do Azure do Serviço de Aplicativo sem segredos usando uma identidade gerenciada
- Tutorial: conexão aos serviços do Azure que não dão suporte a identidades gerenciadas usando Key Vault
- Tutorial: Isolar a comunicação de back-end com a integração da Rede Virtual