Biblioteca de cliente da Identidade do Azure para Python – versão 1.14.1
A biblioteca de Identidades do Azure fornece suporte de autenticação de tokens do Azure Active Directory (Azure AD) no SDK do Azure. Fornece um conjunto de TokenCredential
implementações, que podem ser utilizadas para construir clientes do SDK do Azure que suportam Azure AD autenticação de tokens.
Código fonte | Pacote (PyPI) | Pacote (Conda) | Documentação | de referência da APIAzure AD documentação
Introdução
Instalar o pacote
Instalar a Identidade do Azure com pip:
pip install azure-identity
Pré-requisitos
- Uma subscrição do Azure
- Python 3.7 ou uma versão recente do Python 3 (esta biblioteca não suporta versões de fim de vida)
Autenticar durante o desenvolvimento local
Ao depurar e executar código localmente, é normal que os programadores utilizem as suas próprias contas para autenticar chamadas para serviços do Azure. A biblioteca de Identidades do Azure suporta a autenticação através de ferramentas de programador para simplificar o desenvolvimento local.
Autenticar através do Visual Studio Code
Os programadores que utilizam o Visual Studio Code podem utilizar a extensão da Conta do Azure para se autenticarem através do editor. As aplicações que utilizam DefaultAzureCredential
ou VisualStudioCodeCredential
podem utilizar esta conta para autenticar chamadas na respetiva aplicação quando são executadas localmente.
Para autenticar no Visual Studio Code, certifique-se de que a extensão da Conta do Azure está instalada. Depois de instalado, abra a Paleta de Comandos e execute o comando Azure: Iniciar Sessão .
É um problema conhecido que VisualStudioCodeCredential
não funciona com as versões da extensão da Conta do Azure mais recentes do que a 0.9.11. Está em curso uma correção a longo prazo deste problema. Entretanto, considere autenticar através da CLI do Azure.
Autenticar através da CLI do Azure
DefaultAzureCredential
e AzureCliCredential
pode autenticar-se como o utilizador com sessão iniciada na CLI do Azure. Para iniciar sessão na CLI do Azure, execute az login
. Num sistema com um browser predefinido, a CLI do Azure iniciará o browser para autenticar um utilizador.
Quando não estiver disponível um browser predefinido, az login
utilizará o fluxo de autenticação de código do dispositivo. Este fluxo também pode ser selecionado manualmente ao executar az login --use-device-code
.
Autenticar através do Azure Developer CLI
Os programadores que codificam fora de um IDE também podem utilizar o Azure Developer CLI para autenticar. As aplicações que utilizam o DefaultAzureCredential
ou o AzureDeveloperCliCredential
podem utilizar esta conta para autenticar chamadas na respetiva aplicação quando são executadas localmente.
Para se autenticarem com a Azure Developer CLI, os utilizadores podem executar o comando azd auth login
. Para os utilizadores em execução num sistema com um browser predefinido, o Azure Developer CLI iniciará o browser para autenticar o utilizador.
Para sistemas sem um browser predefinido, o azd auth login --use-device-code
comando utilizará o fluxo de autenticação de código do dispositivo.
Conceitos-chave
Credenciais
Uma credencial é uma classe que contém ou pode obter os dados necessários para um cliente de serviço autenticar pedidos. Os clientes de serviço no SDK do Azure aceitam uma instância de credenciais quando são construídos e utilizam essa credencial para autenticar pedidos.
A biblioteca de Identidades do Azure foca-se na autenticação OAuth com Azure AD. Oferece várias classes de credenciais capazes de adquirir um token de acesso Azure AD. Veja a secção de credenciais Classes de credenciais abaixo para obter uma lista das classes de credenciais desta biblioteca.
DefaultAzureCredential
DefaultAzureCredential
é adequado para a maioria das aplicações que serão executadas no Azure porque combina credenciais de produção comuns com credenciais de desenvolvimento. DefaultAzureCredential
tenta autenticar-se através dos seguintes mecanismos, por esta ordem, parando quando um é bem-sucedido:
Nota:
DefaultAzureCredential
destina-se a simplificar a introdução à biblioteca ao processar cenários comuns com comportamentos predefinidos razoáveis. Os programadores que pretendam ter mais controlo ou cujo cenário não seja servido pelas predefinições devem utilizar outros tipos de credenciais.
- Ambiente -
DefaultAzureCredential
irá ler as informações de conta especificadas e utilizá-la para autenticar. - Identidade da Carga de Trabalho – se a aplicação for implementada no Azure Kubernetes Service com a Identidade Gerida ativada,
DefaultAzureCredential
será autenticada com a mesma. - Identidade Gerida – se a aplicação for implementada num anfitrião do Azure com a Identidade Gerida ativada,
DefaultAzureCredential
será autenticada com a mesma. - CLI do Azure – se um utilizador tiver iniciado sessão através do comando da CLI
az login
do Azure,DefaultAzureCredential
será autenticado como esse utilizador. - Azure PowerShell – se um utilizador tiver iniciado sessão através do comando de
Connect-AzAccount
Azure PowerShell,DefaultAzureCredential
será autenticado como esse utilizador. - Azure Developer CLI - Se o programador se tiver autenticado através do comando Azure Developer CLI
azd auth login
, oDefaultAzureCredential
será autenticado com essa conta. - Browser interativo – se estiver ativado,
DefaultAzureCredential
autenticará interativamente um utilizador através do browser predefinido. Este tipo de credencial está desativado por predefinição.
Nota sobre VisualStudioCodeCredential
Devido a um problema conhecido, VisualStudioCodeCredential
foi removido da DefaultAzureCredential
cadeia de tokens. Quando o problema for resolvido numa versão futura, esta alteração será revertida.
Exemplos
Os exemplos seguintes são fornecidos abaixo:
- Autenticar com DefaultAzureCredential
- Definir um fluxo de autenticação personalizado com ChainedTokenCredential
- Credenciais assíncronas
Autenticar com DefaultAzureCredential
Pode encontrar mais detalhes sobre como configurar o seu ambiente para utilizar o DefaultAzureCredential
na documentação de referência da classe.
Este exemplo demonstra a autenticação da BlobServiceClient
biblioteca azure-storage-blob com DefaultAzureCredential
.
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
default_credential = DefaultAzureCredential()
client = BlobServiceClient(account_url, credential=default_credential)
Ativar a autenticação interativa com DefaultAzureCredential
A autenticação interativa está desativada por predefinição DefaultAzureCredential
e pode ser ativada com um argumento de palavra-chave:
DefaultAzureCredential(exclude_interactive_browser_credential=False)
Quando ativada, DefaultAzureCredential
a autenticação interativa é feita através do browser predefinido do sistema quando não existem outras credenciais disponíveis.
Especifique uma identidade gerida atribuída pelo utilizador para DefaultAzureCredential
Muitos anfitriões do Azure permitem a atribuição de uma identidade gerida atribuída pelo utilizador. Para configurar DefaultAzureCredential
para autenticar uma identidade atribuída pelo utilizador, utilize o managed_identity_client_id
argumento de palavra-chave:
DefaultAzureCredential(managed_identity_client_id=client_id)
Em alternativa, defina a variável AZURE_CLIENT_ID
de ambiente para o ID de cliente da identidade.
Definir um fluxo de autenticação personalizado com ChainedTokenCredential
DefaultAzureCredential
geralmente, é a forma mais rápida de começar a desenvolver aplicações para o Azure. Para cenários mais avançados, ChainedTokenCredential liga várias instâncias de credenciais para serem experimentadas sequencialmente ao autenticar. Tentará cada credencial em cadeia por sua vez até que uma forneça um token ou não se autentique devido a um erro.
O exemplo seguinte demonstra a criação de uma credencial que tentará primeiro autenticar com a identidade gerida. A credencial reverterá para a autenticação através da CLI do Azure quando uma identidade gerida estiver indisponível. Este exemplo utiliza a EventHubProducerClient
da biblioteca de cliente 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
Esta biblioteca inclui um conjunto de APIs assíncronas. Para utilizar as credenciais assíncronas em azure.identity.aio, primeiro tem de instalar um transporte assíncrono, como aiohttp. Para obter mais informações, veja a documentação azure-core.
As credenciais assíncronas devem ser fechadas quando já não forem necessárias. Cada credencial assíncrona é um gestor 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 gerida
A autenticação de identidade gerida é suportada através do DefaultAzureCredential
ou diretamente ManagedIdentityCredential
para os seguintes serviços do Azure:
- Serviço de Aplicações do Azure e Funções do Azure
- Azure Arc
- Azure Cloud Shell
- Azure Kubernetes Service
- Azure Service Fabric
- Máquinas Virtuais do Azure
- Conjuntos de Dimensionamento do Azure Máquinas Virtuais
Exemplos
Autenticar com uma identidade gerida atribuída pelo utilizador
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 gerida 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 da nuvem
As credenciais estão predefinidas para autenticar no ponto final Azure AD para a Cloud Pública do Azure. Para aceder a recursos noutras clouds, como Azure Government ou numa nuvem privada, configure as credenciais com o authority
argumento . O AzureAuthorityHosts define as autoridades para clouds conhecidas:
from azure.identity import AzureAuthorityHosts
DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)
Se a autoridade para a sua cloud não estiver listada no AzureAuthorityHosts
, pode especificar explicitamente o RESE:
DefaultAzureCredential(authority="https://login.partner.microsoftonline.cn")
Como alternativa à especificação do authority
argumento, também pode definir a AZURE_AUTHORITY_HOST
variável de ambiente para o URL da autoridade da cloud. Esta abordagem é útil ao configurar várias credenciais para autenticar na mesma cloud:
AZURE_AUTHORITY_HOST=https://login.partner.microsoftonline.cn
Nem todas as credenciais requerem esta configuração. As credenciais que se autenticam através de uma ferramenta de desenvolvimento, como AzureCliCredential
, utilizam a configuração dessa ferramenta. Da mesma forma, aceita um authority
argumento, VisualStudioCodeCredential
mas é predefinido para a autoridade que corresponde à definição "Azure: Cloud" do VS Code.
Classes de credenciais
Autenticar aplicações alojadas no Azure
Credencial | Utilização |
---|---|
DefaultAzureCredential |
Fornece uma experiência de autenticação simplificada para começar rapidamente a desenvolver aplicações executadas no Azure. |
ChainedTokenCredential |
Permite que os utilizadores definam fluxos de autenticação personalizados compondo múltiplas credenciais. |
EnvironmentCredential |
Autentica um principal de serviço ou utilizador através de informações de credenciais especificadas em variáveis de ambiente. |
ManagedIdentityCredential |
Autentica a identidade gerida de um recurso do Azure. |
WorkloadIdentityCredential |
Suporta Azure AD identidade da carga de trabalho no Kubernetes. |
Autenticar principais de serviço
Credencial | Utilização | Referência |
---|---|---|
CertificateCredential |
Autentica um principal de serviço com um certificado. | Autenticação do principal de serviço |
ClientAssertionCredential |
Autentica um principal de serviço com uma asserção de cliente assinada. | |
ClientSecretCredential |
Autentica um principal de serviço com um segredo. | Autenticação do principal de serviço |
Autenticar utilizadores
Credencial | Utilização | Referência |
---|---|---|
AuthorizationCodeCredential |
Autentica um utilizador com um código de autorização obtido anteriormente. | Código de autenticação OAuth2 |
DeviceCodeCredential |
Autentica interativamente um utilizador em dispositivos com IU limitada. | Autenticação do código do dispositivo |
InteractiveBrowserCredential |
Autentica interativamente um utilizador com o browser de sistema predefinido. | Código de autenticação OAuth2 |
OnBehalfOfCredential |
Propaga a identidade de utilizador delegado e as permissões através da cadeia de pedidos. | Autenticação em nome de |
UsernamePasswordCredential |
Autentica um utilizador com um nome de utilizador e palavra-passe (não suporta a autenticação multifator). | Nome de utilizador + autenticação por palavra-passe |
Autenticar através de ferramentas de desenvolvimento
Credencial | Utilização | Referência |
---|---|---|
AzureCliCredential |
Autentica-se num ambiente de desenvolvimento com a CLI do Azure. | Autenticação da CLI do Azure |
AzureDeveloperCliCredential |
Autentica-se num ambiente de desenvolvimento com o Azure Developer CLI. | Referência Azure Developer CLI |
AzurePowerShellCredential |
Autentica-se num ambiente de desenvolvimento com a Azure PowerShell. | autenticação Azure PowerShell |
VisualStudioCodeCredential |
Autentica-se como o utilizador que iniciou sessão na extensão da Conta do Azure do Visual Studio Code. | 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:
Principal de serviço com segredo
Nome da variável | Valor |
---|---|
AZURE_CLIENT_ID |
ID de uma aplicação Azure AD |
AZURE_TENANT_ID |
ID do inquilino Azure AD da aplicação |
AZURE_CLIENT_SECRET |
um dos segredos do cliente da aplicação |
Principal de serviço com certificado
Nome da variável | Valor |
---|---|
AZURE_CLIENT_ID |
ID de uma aplicação Azure AD |
AZURE_TENANT_ID |
ID do inquilino Azure AD da aplicação |
AZURE_CLIENT_CERTIFICATE_PATH |
caminho para um ficheiro de certificado PEM ou PKCS12, incluindo chave privada |
AZURE_CLIENT_CERTIFICATE_PASSWORD |
palavra-passe do ficheiro de certificado, se existir |
Nome de utilizador e palavra-passe
Nome da variável | Valor |
---|---|
AZURE_CLIENT_ID |
ID de uma aplicação Azure AD |
AZURE_USERNAME |
um nome de utilizador (normalmente um endereço de e-mail) |
AZURE_PASSWORD |
palavra-passe desse utilizador |
A configuração é tentada pela ordem acima. Por exemplo, se os valores de um segredo de cliente e certificado estiverem ambos presentes, será utilizado o segredo do cliente.
Colocação em cache de tokens
A colocação em cache de tokens é uma funcionalidade fornecida pela biblioteca de Identidade do Azure que permite que as aplicações:
- Colocar tokens em cache na memória (predefinição) ou no disco (optar ativamente por participar).
- Melhorar a resiliência e o desempenho.
- Reduza o número de pedidos feitos a Azure AD para obter tokens de acesso.
A biblioteca de Identidades do Azure oferece colocação em cache dentro da memória e do disco persistente. Para obter mais detalhes, veja a documentação de colocação em cache de tokens.
Resolução de problemas
Veja o guia de resolução de problemas para obter detalhes sobre como diagnosticar vários cenários de falha.
Processamento de erros
As credenciais são geradas CredentialUnavailableError
quando não conseguem tentar a autenticação porque não têm os dados ou o estado necessários. Por exemplo, EnvironmentCredential gerará esta exceção quando estiver incompleta.
As credenciais são levantadas azure.core.exceptions.ClientAuthenticationError
quando falham na autenticação. ClientAuthenticationError
tem um message
atributo, que descreve o motivo pelo qual a autenticação falhou. Quando gerado por DefaultAzureCredential
ou ChainedTokenCredential
, a mensagem recolhe mensagens de erro de cada credencial na cadeia.
Para obter mais informações sobre como lidar com erros de Azure AD específicos, veja a documentação do código de erro Azure AD.
Registo
Esta biblioteca utiliza a biblioteca de registos padrão para registo. As credenciais registam informações básicas, incluindo sessões HTTP (URLs, cabeçalhos, etc.) ao nível da INFORMAÇÃO. Estas entradas de registo não contêm segredos de autenticação.
O registo de nível DEBUG detalhado, incluindo os corpos de pedido/resposta e os valores do cabeçalho, não está ativado por predefinição. Pode ser ativado com o logging_enable
argumento. Por exemplo:
credential = DefaultAzureCredential(logging_enable=True)
ATENÇÃO: os registos de nível de DEPURAÇÃO de credenciais contêm informações confidenciais. Estes registos têm de ser protegidos para evitar comprometer a segurança da conta.
Passos seguintes
Suporte da biblioteca de cliente
As bibliotecas de cliente e gestão listadas na página de versão do SDK do Azure que suportam Azure AD autenticação aceitam credenciais desta biblioteca. Pode saber mais sobre como utilizar estas bibliotecas na respetiva documentação, que está ligada a partir da página de lançamento.
Problemas conhecidos
Esta biblioteca não suporta Azure AD B2C.
Para obter outros problemas abertos, veja o repositório do GitHub da biblioteca.
Enviar comentários
Se encontrar erros ou tiver sugestões, abra um problema.
Contribuir
Agradecemos todas as contribuições e sugestões para este projeto. A maioria das contribuições requerem que celebre um Contrato de Licença de Contribuição (CLA) no qual se declare que tem o direito de conceder e que, na verdade, concede-nos os direitos para utilizar a sua contribuição. Para mais detalhes, visite https://cla.microsoft.com.
Quando submete um pedido Pull, um bot do CLA determina automaticamente se tem de fornecer um CLA e decorar o PR de forma adequada (por exemplo, etiqueta, comentário). Só tem de seguir as instruções fornecidas pelo bot. Só terá de o fazer uma vez em todos os repositórios com o nosso CLA.
Este projeto adotou o Microsoft Open Source Code of Conduct (Código de Conduta do Microsoft Open Source). Para obter mais informações, veja a Code of Conduct FAQ (FAQ do Código de Conduta) ou envie um e-mail para opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.