Autenticando aplicativos hospedados no Azure em recursos do Azure com o SDK do Azure para .NET
Quando um aplicativo é hospedado no Azure usando um serviço como o Serviço de Aplicativo do Azure, as Máquinas Virtuais do Azure ou as Instâncias de Contêiner do Azure, a abordagem recomendada para autenticar um aplicativo nos recursos do Azure é usar uma identidade gerenciada.
Uma identidade gerenciada fornece uma identidade para seu aplicativo para que ele possa se conectar a outros recursos do Azure sem a necessidade de usar uma chave secreta ou outro segredo de aplicativo. Internamente, o Azure conhece a identidade do seu aplicativo e a quais recursos ele pode se conectar. O Azure usa essas informações para obter automaticamente tokens do Microsoft Entra para o aplicativo para permitir que ele se conecte a outros recursos do Azure, tudo sem que você precise gerenciar nenhum segredo do aplicativo.
Tipos de identidade gerenciados
Existem dois tipos de identidades geridas:
- Identidades gerenciadas atribuídas ao sistema - Esse tipo de identidade gerenciada é fornecido e vinculado diretamente a um recurso do Azure. Ao habilitar a identidade gerenciada em um recurso do Azure, você obtém uma identidade gerenciada atribuída ao sistema para esse recurso. Uma identidade gerenciada atribuída ao sistema está vinculada ao ciclo de vida do recurso do Azure ao qual está associada. Quando o recurso é excluído, o Azure exclui automaticamente a identidade para você. Como tudo o que você precisa fazer é habilitar a identidade gerenciada para o recurso do Azure que hospeda seu código, esse é o tipo de identidade gerenciada mais fácil de usar.
- Identidades gerenciadas atribuídas pelo usuário - Você também pode criar uma identidade gerenciada como um recurso autônomo do Azure. Isso é usado com mais frequência quando sua solução tem várias cargas de trabalho executadas em vários recursos do Azure que precisam compartilhar a mesma identidade e as mesmas permissões. Por exemplo, se sua solução tivesse componentes executados em várias instâncias do Serviço de Aplicativo e da máquina virtual que precisassem acessar o mesmo conjunto de recursos do Azure, criar e usar uma identidade gerenciada atribuída pelo usuário nesses recursos faria sentido.
Este artigo abordará as etapas para habilitar e usar uma identidade gerenciada atribuída ao sistema para um aplicativo. Se você precisar usar uma identidade gerenciada atribuída pelo usuário, consulte o artigo Gerenciar identidades gerenciadas atribuídas pelo usuário para ver como criar uma identidade gerenciada atribuída pelo usuário.
1 - Habilite a identidade gerenciada no recurso do Azure que hospeda o aplicativo
A primeira etapa é habilitar a identidade gerenciada no recurso do Azure que hospeda seu aplicativo. Por exemplo, se você estiver hospedando um aplicativo .NET usando o Serviço de Aplicativo do Azure, precisará habilitar a identidade gerenciada para o aplicativo Web do Serviço de Aplicativo que está hospedando seu aplicativo. Se você estivesse usando uma máquina virtual para hospedar seu aplicativo, permitiria que sua VM usasse a identidade gerenciada.
Você pode habilitar a identidade gerenciada para ser usada para um recurso do Azure usando o portal do Azure ou a CLI do Azure.
2 - Atribuir funções à identidade gerenciada
Em seguida, você precisa determinar quais funções (permissões) seu aplicativo precisa e atribuir a identidade gerenciada a essas funções no Azure. Uma identidade gerenciada pode receber funções em um recurso, grupo de recursos ou escopo de assinatura. Este exemplo mostrará como atribuir funções no escopo do grupo de recursos, já que a maioria dos aplicativos agrupa todos os seus recursos do Azure em um único grupo de recursos.
3 - Implementar DefaultAzureCredential em seu aplicativo
DefaultAzureCredential
Suporta vários métodos de autenticação e determina o método de autenticação que está sendo usado em tempo de execução. Dessa forma, seu aplicativo pode usar diferentes métodos de autenticação em ambientes diferentes sem implementar código específico do ambiente.
A ordem e os locais em que DefaultAzureCredential
procura credenciais são encontrados em DefaultAzureCredential.
Para implementar DefaultAzureCredential
o , primeiro adicione os Azure.Identity
pacotes e, opcionalmente, ao Microsoft.Extensions.Azure
seu aplicativo. Você pode fazer isso usando a linha de comando ou o Gerenciador de Pacotes NuGet.
Abra um ambiente de terminal de sua escolha no diretório do projeto de aplicativo e digite o comando abaixo.
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Os serviços do Azure geralmente são acessados usando as classes de cliente correspondentes do SDK. Essas classes e seus próprios serviços personalizados devem ser registrados no arquivo para que possam ser acessados por injeção de dependência em todo o Program.cs
aplicativo. Dentro do Program.cs
, siga as etapas abaixo para configurar corretamente seu serviço e DefaultAzureCredential
.
- Inclua os
Azure.Identity
namespaces eMicrosoft.Extensions.Azure
com uma instrução using. - Registre o serviço do Azure usando métodos auxiliares relevantes.
- Passe uma instância do
DefaultAzureCredential
objeto para oUseCredential
método.
Um exemplo disso é mostrado no segmento de código a seguir.
using Microsoft.Extensions.Azure;
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddAzureClients(x =>
{
x.AddBlobServiceClient(new Uri("https://<account-name>.blob.core.windows.net"));
x.UseCredential(new DefaultAzureCredential());
});
Como alternativa, você também pode utilizar DefaultAzureCredential
em seus serviços mais diretamente sem a ajuda de métodos de registro adicionais do Azure, conforme visto abaixo.
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddSingleton<BlobServiceClient>(x =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Quando o código acima é executado em sua estação de trabalho local durante o desenvolvimento local, ele procurará nas variáveis de ambiente uma entidade de serviço de aplicativo ou no Visual Studio, VS Code, CLI do Azure ou Azure PowerShell para um conjunto de credenciais de desenvolvedor, qualquer uma das quais pode ser usada para autenticar o aplicativo nos recursos do Azure durante o desenvolvimento local.
Quando implantado no Azure, esse mesmo código também pode autenticar seu aplicativo em outros recursos do Azure. DefaultAzureCredential
Pode recuperar configurações de ambiente e configurações de identidade gerenciada para autenticar em outros serviços automaticamente.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários