Biblioteca de clientes da Identidade do Azure para Python – versão 1.14.1
A biblioteca de identidade do Azure fornece suporte à autenticação de token do Azure Active Directory (Azure AD) no SDK do Azure. Ele fornece um conjunto de TokenCredential
implementações, que podem ser usadas para construir clientes do SDK do Azure que dão suporte à autenticação de token Azure AD.
Código-fonte | Pacote (PyPI) | Pacote (Conda) | Documentação | de referência da APIdocumentação do Azure AD
Introdução
Instalar o pacote
Instale o Azure Identity com pip:
pip install azure-identity
Pré-requisitos
- Uma assinatura do Azure
- Python 3.7 ou uma versão recente do Python 3 (essa biblioteca não dá suporte a versões de fim de vida útil)
Autenticar durante o desenvolvimento local
Ao depurar e executar o código localmente, é comum que os desenvolvedores usem suas próprias contas para autenticar chamadas aos serviços do Azure. A biblioteca de Identidade do Azure dá suporte à autenticação por meio de ferramentas de desenvolvedor para simplificar o desenvolvimento local.
Autenticar por meio de Visual Studio Code
Os desenvolvedores que usam Visual Studio Code podem usar a extensão conta do Azure para autenticar por meio do editor. Os aplicativos que usam DefaultAzureCredential
ou VisualStudioCodeCredential
podem usar essa conta para autenticar chamadas em seu aplicativo ao serem executados localmente.
Para autenticar em Visual Studio Code, verifique se a extensão conta do Azure está instalada. Depois de instalado, abra a Paleta de Comandos e execute o comando Azure: Entrar .
É um problema conhecido que VisualStudioCodeCredential
não funciona com versões de extensão da Conta do Azure mais recentes do que 0.9.11. Uma correção de longo prazo para esse problema está em andamento. Enquanto isso, considere a autenticação por meio da CLI do Azure.
Autenticar por meio da CLI do Azure
DefaultAzureCredential
e AzureCliCredential
podem se autenticar como o usuário conectado à CLI do Azure. Para entrar na CLI do Azure, execute az login
. Em um sistema com um navegador da Web padrão, a CLI do Azure iniciará o navegador para autenticar um usuário.
Quando nenhum navegador padrão estiver disponível, az login
o usará o fluxo de autenticação de código do dispositivo. Esse fluxo também pode ser selecionado manualmente executando az login --use-device-code
.
Autenticar por meio do Azure Developer CLI
Os desenvolvedores que codificam fora de um IDE também podem usar o Azure Developer CLI para autenticar. Os aplicativos que usam DefaultAzureCredential
ou AzureDeveloperCliCredential
podem usar essa conta para autenticar chamadas no aplicativo ao serem executados localmente.
Para autenticar com o Azure Developer CLI, os usuários podem executar o comando azd auth login
. Para usuários em execução em um sistema com um navegador da Web padrão, o Azure Developer CLI iniciará o navegador para autenticar o usuário.
Para sistemas sem um navegador da Web padrão, o comando azd auth login --use-device-code
usará o fluxo de autenticação de código do dispositivo.
Principais conceitos
Credenciais
Uma credencial é uma classe que contém ou pode obter os dados necessários para um cliente de serviço autenticar solicitações. Os clientes de serviço no SDK do Azure aceitam uma instância de credencial quando são construídos e usam essa credencial para autenticar solicitações.
A biblioteca de Identidade do Azure se concentra na autenticação OAuth com Azure AD. Ele oferece várias classes de credencial capazes de adquirir um token de acesso Azure AD. Consulte a seção Classes de credencial abaixo para obter uma lista das classes de credencial dessa biblioteca.
DefaultAzureCredential
DefaultAzureCredential
é apropriado para a maioria dos aplicativos que serão executados no Azure porque combina credenciais de produção comuns com credenciais de desenvolvimento. DefaultAzureCredential
tenta autenticar por meio dos seguintes mecanismos, nesta ordem, parando quando um for bem-sucedido:
Observação:
DefaultAzureCredential
destina-se a simplificar a introdução à biblioteca manipulando cenários comuns com comportamentos padrão razoáveis. Os desenvolvedores que desejam mais controle ou cujo cenário não é abordado nas configurações padrão devem usar outros tipos de credencial.
- Ambiente -
DefaultAzureCredential
lerá as informações da conta especificadas por meio de de ambiente e as usará para autenticar. - Identidade da carga de trabalho – se o aplicativo for implantado para Serviço de Kubernetes do Azure com a Identidade Gerenciada habilitada,
DefaultAzureCredential
será autenticada com ela. - Identidade Gerenciada – se o aplicativo for implantado em um host do Azure com a Identidade Gerenciada habilitada,
DefaultAzureCredential
será autenticada com ele. - CLI do Azure – se um usuário tiver se conectado por meio do comando da CLI
az login
do Azure,DefaultAzureCredential
será autenticado como esse usuário. - Azure PowerShell – se um usuário tiver se conectado por meio do comando do
Connect-AzAccount
Azure PowerShell,DefaultAzureCredential
será autenticado como esse usuário. - Azure Developer CLI – se o desenvolvedor tiver se autenticado por meio do comando Azure Developer CLI
azd auth login
, oDefaultAzureCredential
será autenticado com essa conta. - Navegador interativo – se habilitado,
DefaultAzureCredential
autenticará interativamente um usuário por meio do navegador padrão. Esse tipo de credencial está desabilitado por padrão.
Observação sobre VisualStudioCodeCredential
Devido a um problema conhecido, VisualStudioCodeCredential
foi removido da DefaultAzureCredential
cadeia de tokens. Quando o problema for resolvido em uma versão futura, essa alteração será revertida.
Exemplos
Os exemplos a seguir são fornecidos abaixo:
- Autenticar com DefaultAzureCredential
- Definir um fluxo de autenticação personalizado com ChainedTokenCredential
- Credenciais assíncronas
Autenticar com DefaultAzureCredential
Mais detalhes sobre como configurar seu ambiente para usar o DefaultAzureCredential
podem ser encontrados na documentação de referência da classe.
Este exemplo demonstra a autenticação do BlobServiceClient
da biblioteca azure-storage-blob usando DefaultAzureCredential
.
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
default_credential = DefaultAzureCredential()
client = BlobServiceClient(account_url, credential=default_credential)
Habilitar a autenticação interativa com DefaultAzureCredential
A autenticação interativa está desabilitada no DefaultAzureCredential
por padrão e pode ser habilitada com um argumento palavra-chave:
DefaultAzureCredential(exclude_interactive_browser_credential=False)
Quando habilitado, DefaultAzureCredential
volta a ser autenticado interativamente por meio do navegador da Web padrão do sistema quando nenhuma outra credencial está disponível.
Especificar uma identidade gerenciada atribuída pelo usuário para DefaultAzureCredential
Muitos hosts do Azure permitem a atribuição de uma identidade gerenciada atribuída pelo usuário. Para configurar DefaultAzureCredential
para autenticar uma identidade atribuída pelo usuário, use o managed_identity_client_id
argumento palavra-chave:
DefaultAzureCredential(managed_identity_client_id=client_id)
Como alternativa, defina a variável AZURE_CLIENT_ID
de ambiente como a ID do cliente da identidade.
Definir um fluxo de autenticação personalizado com ChainedTokenCredential
DefaultAzureCredential
geralmente é a maneira mais rápida de começar a desenvolver aplicativos para o Azure. Para cenários mais avançados, ChainedTokenCredential vincula várias instâncias de credencial a serem tentadas sequencialmente durante a autenticação. Ele tentará cada credencial encadeada, por sua vez, até que uma forneça um token ou não seja autenticada devido a um erro.
O exemplo a seguir demonstra como criar uma credencial que primeiro tentará autenticar usando a identidade gerenciada. A credencial voltará a ser autenticada por meio da CLI do Azure quando uma identidade gerenciada não estiver disponível. Este exemplo usa o EventHubProducerClient
da biblioteca de clientes azure-eventhub .
from azure.eventhub import EventHubProducerClient
from azure.identity import AzureCliCredential, ChainedTokenCredential, ManagedIdentityCredential
managed_identity = ManagedIdentityCredential()
azure_cli = AzureCliCredential()
credential_chain = ChainedTokenCredential(managed_identity, azure_cli)
client = EventHubProducerClient(namespace, eventhub_name, credential_chain)
Credenciais assíncronas
Essa biblioteca inclui um conjunto de APIs assíncronas. Para usar as credenciais assíncronas em azure.identity.aio, primeiro você deve instalar um transporte assíncrono, como aiohttp. Para obter mais informações, consulte a documentação do azure-core.
As credenciais assíncronas devem ser fechadas quando não forem mais necessárias. Cada credencial assíncrona é um gerenciador de contexto assíncrono e define um método assíncrono close
. Por exemplo:
from azure.identity.aio import DefaultAzureCredential
# call close when the credential is no longer needed
credential = DefaultAzureCredential()
...
await credential.close()
# alternatively, use the credential as an async context manager
credential = DefaultAzureCredential()
async with credential:
...
Este exemplo demonstra a autenticação assíncrona SecretClient
de azure-keyvault-secrets com uma credencial assíncrona.
from azure.identity.aio import DefaultAzureCredential
from azure.keyvault.secrets.aio import SecretClient
default_credential = DefaultAzureCredential()
client = SecretClient("https://my-vault.vault.azure.net", default_credential)
Suporte de identidade gerenciada
A autenticação de identidade gerenciada tem suporte por meio do DefaultAzureCredential
ou diretamente ManagedIdentityCredential
para os seguintes serviços do Azure:
- Serviço de Aplicativo do Azure e Azure Functions
- Azure Arc
- Azure Cloud Shell
- Serviço de Kubernetes do Azure
- Azure Service Fabric
- Máquinas Virtuais do Azure
- Conjuntos de dimensionamento de Máquinas Virtuais do Azure
Exemplos
Autenticar com uma identidade gerenciada atribuída pelo usuário
from azure.identity import ManagedIdentityCredential
from azure.keyvault.secrets import SecretClient
credential = ManagedIdentityCredential(client_id=managed_identity_client_id)
client = SecretClient("https://my-vault.vault.azure.net", credential)
Autenticar com uma identidade gerenciada atribuída pelo sistema
from azure.identity import ManagedIdentityCredential
from azure.keyvault.secrets import SecretClient
credential = ManagedIdentityCredential()
client = SecretClient("https://my-vault.vault.azure.net", credential)
Configuração de nuvem
As credenciais são padrão para autenticar no ponto de extremidade Azure AD para a Nuvem Pública do Azure. Para acessar recursos em outras nuvens, como Azure Governamental ou uma nuvem privada, configure as credenciais com o authority
argumento . O AzureAuthorityHosts define as autoridades para nuvens conhecidas:
from azure.identity import AzureAuthorityHosts
DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)
Se a autoridade para sua nuvem não estiver listada no AzureAuthorityHosts
, você poderá especificar explicitamente sua URL:
DefaultAzureCredential(authority="https://login.partner.microsoftonline.cn")
Como alternativa à especificação do authority
argumento, você também pode definir a AZURE_AUTHORITY_HOST
variável de ambiente como a URL da autoridade da nuvem. Essa abordagem é útil ao configurar várias credenciais para autenticar na mesma nuvem:
AZURE_AUTHORITY_HOST=https://login.partner.microsoftonline.cn
Nem todas as credenciais exigem essa configuração. As credenciais que se autenticam por meio de uma ferramenta de desenvolvimento, como AzureCliCredential
, usam a configuração dessa ferramenta. Da mesma forma, aceita um authority
argumento, VisualStudioCodeCredential
mas usa como padrão a autoridade que corresponde à configuração "Azure: Nuvem" do VS Code.
Classes de credencial
Autenticar aplicativos hospedados no Azure
Credencial | Uso |
---|---|
DefaultAzureCredential |
Fornece uma experiência de autenticação simplificada para iniciar rapidamente o desenvolvimento de aplicativos executados no Azure. |
ChainedTokenCredential |
Permita que os usuários definam fluxos de autenticação personalizados compondo várias credenciais. |
EnvironmentCredential |
Autentica uma entidade de serviço ou um usuário por meio de informações de credencial especificadas em variáveis de ambiente. |
ManagedIdentityCredential |
Autentica a identidade gerenciada de um recurso do Azure. |
WorkloadIdentityCredential |
Dá suporte Azure AD identidade de carga de trabalho no Kubernetes. |
Autenticar entidades de serviço
Credencial | Uso | Referência |
---|---|---|
CertificateCredential |
Autentica uma entidade de serviço usando um certificado. | Autenticação de entidade de serviço |
ClientAssertionCredential |
Autentica uma entidade de serviço usando uma declaração de cliente assinada. | |
ClientSecretCredential |
Autentica uma entidade de serviço usando um segredo. | Autenticação de entidade de serviço |
Autenticar usuários
Credencial | Uso | Referência |
---|---|---|
AuthorizationCodeCredential |
Autentica um usuário com um código de autorização obtido anteriormente. | Código de autenticação do OAuth2 |
DeviceCodeCredential |
Autentica de modo interativo um usuário em dispositivos com interface do usuário limitada. | Autenticação de código de dispositivo |
InteractiveBrowserCredential |
Autentica interativamente um usuário com o navegador padrão do sistema. | Código de autenticação do OAuth2 |
OnBehalfOfCredential |
Propaga a identidade do usuário delegado e as permissões por meio da cadeia de solicitações. | Autenticação em nome de |
UsernamePasswordCredential |
Autentica um usuário com um nome de usuário e senha (não dá suporte à autenticação multifator). | Autenticação de nome de usuário e senha |
Autenticar por meio de ferramentas de desenvolvimento
Credencial | Uso | Referência |
---|---|---|
AzureCliCredential |
Autentica em um ambiente de desenvolvimento com a CLI do Azure. | Autenticação com a CLI do Azure |
AzureDeveloperCliCredential |
Autentica em um ambiente de desenvolvimento com o Azure Developer CLI. | Referência de Azure Developer CLI |
AzurePowerShellCredential |
Autentica em um ambiente de desenvolvimento com o Azure PowerShell. | autenticação Azure PowerShell |
VisualStudioCodeCredential |
Autentica como o usuário entrou na extensão de conta do Visual Studio Code Azure. | Extensão da conta do Azure do VS Code |
Variáveis de ambiente
DefaultAzureCredential e EnvironmentCredential podem ser configurados com variáveis de ambiente. Cada tipo de autenticação requer valores para variáveis específicas:
Entidade de serviço com segredo
Nome da variável | Valor |
---|---|
AZURE_CLIENT_ID |
ID de um aplicativo do Azure AD |
AZURE_TENANT_ID |
ID do locatário do Azure AD do aplicativo |
AZURE_CLIENT_SECRET |
um dos segredos do cliente do aplicativo |
Entidade de serviço com certificado
Nome da variável | Valor |
---|---|
AZURE_CLIENT_ID |
ID de um aplicativo do Azure AD |
AZURE_TENANT_ID |
ID do locatário do Azure AD do aplicativo |
AZURE_CLIENT_CERTIFICATE_PATH |
caminho para um arquivo de certificado PEM ou PKCS12, incluindo chave privada |
AZURE_CLIENT_CERTIFICATE_PASSWORD |
senha do arquivo de certificado, se houver |
Nome de usuário e senha
Nome da variável | Valor |
---|---|
AZURE_CLIENT_ID |
ID de um aplicativo do Azure AD |
AZURE_USERNAME |
um nome de usuário (geralmente um endereço de email) |
AZURE_PASSWORD |
a senha desse usuário |
A configuração é tentada na ordem acima. Por exemplo, se os valores para um segredo do cliente e um certificado estiverem presentes, o segredo do cliente será usado.
Armazenamento de token em cache
O cache de tokens é um recurso fornecido pela biblioteca de Identidade do Azure que permite que os aplicativos:
- Cache de tokens na memória (padrão) ou em disco (aceitação).
- Melhorar a resiliência e o desempenho.
- Reduza o número de solicitações feitas a Azure AD para obter tokens de acesso.
A biblioteca de Identidade do Azure oferece cache de disco persistente e na memória. Para obter mais detalhes, consulte a documentação de cache de token.
Solução de problemas
Consulte o guia de solução de problemas para obter detalhes sobre como diagnosticar vários cenários de falha.
Tratamento de erros
As credenciais são geradas CredentialUnavailableError
quando não conseguem tentar a autenticação porque não têm dados ou estado necessários. Por exemplo, EnvironmentCredential gerará essa exceção quando estiver incompleta.
As credenciais geram azure.core.exceptions.ClientAuthenticationError
quando não conseguem se autenticar. ClientAuthenticationError
tem um message
atributo , que descreve por que a autenticação falhou. Quando gerada por DefaultAzureCredential
ou ChainedTokenCredential
, a mensagem coleta mensagens de erro de cada credencial na cadeia.
Para obter mais informações sobre como lidar com erros de Azure AD específicos, consulte a documentação do código de erro Azure AD.
Registro em log
Essa biblioteca usa a biblioteca de log padrão para registro em log. As credenciais registram informações básicas, incluindo sessões HTTP (URLs, cabeçalhos etc.) no nível do INFO. Essas entradas de log não contêm segredos de autenticação.
O log detalhado do nível de DEBUG, incluindo corpos de solicitação/resposta e valores de cabeçalho, não está habilitado por padrão. Ele pode ser habilitado com o logging_enable
argumento . Por exemplo:
credential = DefaultAzureCredential(logging_enable=True)
CUIDADO: os logs de nível DEBUG das credenciais contêm informações confidenciais. Esses logs devem ser protegidos para evitar comprometer a segurança da conta.
Próximas etapas
Suporte da biblioteca de clientes
Bibliotecas de cliente e gerenciamento listadas na página de versão do SDK do Azure que dão suporte a Azure AD autenticação aceitam credenciais dessa biblioteca. Você pode saber mais sobre como usar essas bibliotecas na documentação, que está vinculada na página de lançamento.
Problemas conhecidos
Essa biblioteca não dá suporte a Azure AD B2C.
Para outros problemas abertos, consulte o repositório GitHub da biblioteca.
Fornecer comentários
Se você encontrar bugs ou tiver sugestões, abra um problema.
Contribuição
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite https://cla.microsoft.com.
Quando você envia uma solicitação de pull, um bot do CLA determina automaticamente se você precisa fornecer um CLA e preencher a PR corretamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, confira as Perguntas frequentes sobre o código de conduta ou entre em contato com opencode@microsoft.com para enviar outras perguntas ou comentários.