Autenticar em seu workspace usando uma entidade de serviço
Às vezes, não é adequado usar a autenticação interativa ou autenticar como uma conta de usuário. Esses casos podem surgir quando você quer enviar trabalhos de um serviço Web, de outra função de trabalho ou de um sistema automatizado. Uma opção é configurar uma identidade gerenciada, outra opção é usar uma Entidade de Serviço, que será explicado neste artigo.
Pré-requisito: criar uma entidade de serviço e um segredo do aplicativo
Para autenticar como uma entidade de serviço, você deve primeiro criar uma entidade de serviço.
Para criar uma entidade de serviço, atribua acesso e gere uma credencial:
Criar um aplicativo do Azure AD:
Observação
Não é preciso definir um URI de redirecionamento.
- Depois de criadas, anote a ID do aplicativo (cliente) e a ID do diretório (locatário).
Crie uma credencial para entrar como o aplicativo:
- Nas configurações do aplicativo, escolha Certificados e segredos.
- Em Segredos do cliente, escolha Criar novo segredo.
- Informe uma descrição e uma duração e escolha Adicionar.
- Copie o valor do segredo para um local seguro imediatamente. Você não conseguirá vê-lo novamente!
Dê permissões à sua entidade de serviço para acessar seu workspace:
- Abra o Portal do Azure.
- Na barra de pesquisa, insira o nome do grupo de recursos no qual você criou o workspace. Selecione o grupo de recursos quando ele surgir nos resultados.
- No menu do grupo de recursos, escolha Controle de acesso (IAM).
- Escolha Adicionar atribuição de função.
- Procure e escolha a entidade de serviço.
- Atribua a função Colaborador ou Proprietário.
Observação
Para criar uma atribuição de função no grupo de recursos ou espaço de trabalho, você precisa ser um proprietário ou administrador de acesso de usuário no escopo da atribuição de função. Se você não tiver permissões para criar a entidade de serviço em sua assinatura, será necessário solicitar permissão do proprietário ou administrador da assinatura do Azure.
Se você tiver permissões somente em nível de workspace ou grupo de recursos, pode tentar criar a entidade de serviço na função de Colaborador usando:
az ad sp create-for-rbac --role Contributor --scopes /subscriptions/<SUBSCRIPTION-ID>
Autenticar como a entidade de serviço
Opção 1: usando variáveis de ambiente: a credencial padrão usada na criação do objeto Workspace
é a DefaultAzureCredential, que tentará vários tipos de autenticação.
O primeiro é o EnvironmentCredential e, com isso, você passa as credenciais da Entidade de Serviço por meio das seguintes variáveis de ambiente:
- AZURE_TENANT_ID: a ID do locatário da entidade de serviço. É também chamada de ID de 'diretório' dessa entidade.
- AZURE_CLIENT_ID: a ID do cliente da entidade de serviço.
- AZURE_CLIENT_SECRET: um dos segredos do cliente da entidade de serviço.
Opção 2: usando a ClientSecretCredential: passe uma ClientSecretCredential durante a instanciação do objeto Workspace
ou defina a propriedade credentials
.
from azure.identity import ClientSecretCredential
tenant_id = os.environ["AZURE_TENANT_ID"]
client_id = os.environ["AZURE_CLIENT_ID"]
client_secret = os.environ["AZURE_CLIENT_SECRET"]
credential = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
workspace.credentials = credential
Observação
O método workspace.login()
foi preterido e não é mais necessário. Na primeira vez que houver uma chamada para o serviço, uma autenticação será tentada usando as credenciais passadas no construtor Workspace
ou em sua propriedade credentials
. Se nenhuma credencial tiver sido passada, vários métodos de autenticação serão tentados pelo DefaultAzureCredential.