Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Serviço de Aplicativo do Azure fornece um serviço de hospedagem na Web altamente escalável e auto-corrigido no Azure. O Serviço de Aplicativo também fornece uma identidade gerenciada para seu aplicativo, que é uma solução pronta para uso 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, eliminando segredos, como credenciais em cadeias de conexão.
Este tutorial mostra como adicionar identidade gerenciada a um aplicativo .NET de exemplo que tem um back-end SQL do Azure. Depois de terminar, 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ê:
- Habilite identidades gerenciadas.
- Conceda ao Banco de Dados SQL do Azure acesso à identidade gerenciada.
- Configure o Entity Framework para usar a autenticação do Microsoft Entra com o Banco de dados SQL.
- Conecte-se ao Banco de Dados SQL do Visual Studio usando a autenticação do Microsoft Entra.
Para obter orientação sobre como usar o Banco de Dados do Azure para MySQL ou o Banco de Dados do Azure para PostgreSQL em estruturas Node.js, Python e Java, consulte Tutorial: Conectar-se a bancos de dados do Azure a partir do Serviço de Aplicativo sem segredos usando uma identidade gerenciada.
Nota
Não há suporte para ID do Microsoft Entra e identidades gerenciadas para o SQL Server local.
A autenticação do Microsoft Entra é diferente da autenticação integrada do Windows nos Serviços de Domínio (DS) do Ative Directory (AD) local. O AD DS e o Microsoft Entra ID usam protocolos de autenticação completamente diferentes. Para obter mais informações, consulte a documentação dos Serviços de Domínio Microsoft Entra.
Pré-requisitos
-
Se não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
Tenha um Serviço de Aplicação básico em Azure ASP.NET MVC ou ASP.NET Core MVC de criar-ler-atualizar-eliminar (CRUD) que utiliza o Banco de Dados SQL do Azure com autenticação SQL como o back-end. As etapas neste tutorial suportam as seguintes versões do .NET:
- .NET Framework 4.8 e versões posteriores
- .NET 6.0 e superior
Permita a conexão do cliente do seu computador com o Azure, para poder depurar a sua aplicação no ambiente de desenvolvimento. Você pode adicionar o endereço IP do cliente seguindo as etapas em Gerenciar regras de firewall 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, consulte Introdução ao Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre extensões, consulte Usar e gerenciar extensões com a CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
Conceder acesso de administrador de banco de dados a um usuário do Microsoft Entra
Habilite a autenticação do Microsoft Entra para o banco de dados SQL do Azure atribuindo um usuário do Microsoft Entra como administrador do servidor SQL do Azure. O administrador do Microsoft Entra deve ser um usuário criado, importado, sincronizado ou convidado para o Microsoft Entra ID. Esse usuário pode não ser o mesmo que o usuário da conta da Microsoft para 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 usuários permitidos do Microsoft Entra para o Banco de dados SQL, consulte Recursos e limitações do Microsoft Entra no Banco de dados SQL.
- Para obter mais informações sobre como adicionar um administrador do servidor SQL do Azure, consulte Provisionar um administrador do Microsoft Entra para seu servidor.
Execute os seguintes comandos no ambiente Bash do Azure Cloud Shell ou depois de entrar na CLI do Azure localmente.
Use
az ad user listcom odisplay-nameparâmetro,filterouupnpara obter a ID do objeto do(a) utilizador(a) do Microsoft Entra ID que deseja tornar administrador. Executeaz ad user listde forma autónoma para mostrar informações para todos os utilizadores no diretório Microsoft Entra.Por exemplo, o comando a seguir lista informações para um usuário do Microsoft Entra ID com o
display-namede Primeiro Nome Último Nome.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 servidor SQL do Azure usando
az sql server ad-admin createcom oobject-idparâmetro. No comando a seguir, substitua<server-name>pelo nome do servidor menos o sufixo.database.windows.nete<entra-id>peloidvalor da saída do comando anterioraz ad user list.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 ao sistema. Para usar uma identidade atribuída pelo usuário, consulte Tutorial: Conectar-se a bancos de dados do Azure a partir do Serviço de Aplicativo sem segredos usando uma identidade gerenciada.
Habilitar identidade gerenciada para o aplicativo
Para habilitar uma identidade gerenciada para seu aplicativo do 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>
Eis um exemplo do resultado:
{
"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 de uma identidade atribuída pelo sistema para um slot de implantação é <app-name>/slots/<slot-name>.
Você também pode adicionar a identidade a um grupo do Microsoft Entra e, em seguida, conceder acesso ao Banco de Dados SQL ao grupo do Microsoft Entra em vez de à 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 seguinte comando SQLCMD. 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 comando anterioraz ad user list.sqlcmd -S <servername>.database.windows.net -d <db-name> -U <admin-user> -G -l 30Siga as instruções para entrar.
No prompt SQL, execute os seguintes comandos 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
Nota
Os serviços de identidade gerenciados de back-end 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 obter um token pela primeira vez 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
Quaisquer alterações feitas no web.config ou appsettings.json funcionam com a identidade gerida. 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 seu aplicativo e <connection-string-name> pelo nome da sua 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 autenticação do Microsoft Entra, consulte Biblioteca de cliente do Azure Identity para .NET.
O Visual Studio para Windows está integrado com a autenticação do Microsoft Entra.
- Para habilitar o desenvolvimento e a depuração no Visual Studio, adicione o seu utilizador do Microsoft Entra no Visual Studio selecionando Arquivo>Configurações de Conta no menu do topo, e em seguida, selecione Entrar ou Adicionar.
- Para definir o usuário do Microsoft Entra para autenticação de serviço do Azure, selecioneOpções de > no menu superior e, em seguida, selecioneSeleção de Conta> de Serviço do Azure. Selecione o usuário do Microsoft Entra que você adicionou e selecione OK.
Modificar seu projeto e publicar seu aplicativo
Seu aplicativo Web baseado no banco de dados SQL do Azure usa um contexto de banco de dados para se conectar ao banco de dados. Para utilizar a autenticação do Microsoft Entra para trabalhar com a aplicação, deve atualizar o contexto da base de dados para referenciar o fornecedor SQL Server do Entity Framework, que depende do fornecedor ADO.NET moderno Microsoft.Data.SqlClient.
O provedor do Entity Framework substitui o System.Data.SqlClient provedor integrado 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 de banco de dados, mas como System.Data.SqlClient está definido de forma fixa como o provedor no Serviço de Aplicativo do Azure, deve-se estender MicrosoftSqlDbConfiguration para redirecionar as referências de System.Data.SqlClient para Microsoft.Data.SqlClient. 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 do Visual Studio, adicione o pacote NuGet Microsoft.Data.SqlClient.
Install-Package Microsoft.Data.SqlClientNo 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 do banco de dados."Server=tcp:<server-name>.database.windows.net;Authentication=Active Directory Default; Database=<database-name>;"Nota
Você pode usar a autenticação Padrão do Active Directory no seu 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 ao 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 cadeia de conexão.A
DefaultAzureCredentialclasse armazena em cache o token na memória e o recupera do ID do Microsoft Entra 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 que você configurou quando configurou seu ambiente de desenvolvimento.
Execute seu aplicativo. O aplicativo CRUD em seu navegador se conecta diretamente ao banco de dados SQL do Azure, usando a autenticação do Microsoft Entra. Essa instalação permite executar 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 a aplicação
Quando a nova página Web mostrar a sua lista de tarefas, a aplicação está a ligar-se à base de dados com a identidade gerida.
Agora você pode editar a lista de to-do.
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se achar que não vai precisar destes recursos no futuro, execute o seguinte comando no Cloud Shell para eliminar o grupo de recursos:
az group delete --name myResourceGroup
Esse comando pode levar um minuto para ser executado.
Conteúdo relacionado
- Tutorial: Usar um domínio personalizado e um certificado gerenciado para proteger seu aplicativo
- Tutorial: Conectar um aplicativo do Serviço de Aplicativo ao Banco de Dados SQL em nome do usuário conectado
- Tutorial: Conectar-se a bancos de dados do Azure a partir do Serviço de Aplicativo sem segredos usando uma identidade gerenciada
- Tutorial: Conectar-se aos serviços do Azure que não oferecem suporte a identidades gerenciadas usando o Cofre da Chave
- Tutorial: Isolar a comunicação back-end com integração de rede virtual