Share via


Usar uma entidade de serviço do Azure com autenticação baseada em certificado

Quando cria um principal de serviço, escolhe o tipo de autenticação de início de sessão que o mesmo utiliza. Há dois tipos de autenticação disponíveis para entidades de serviço do Azure: autenticação baseada em senha e autenticação baseada em certificado.

Recomendamos o uso da autenticação baseada em certificado devido às restrições de segurança da autenticação baseada em senha. A autenticação baseada em certificado permite que você adote uma autenticação resistente a phishing usando políticas de acesso condicional, o que protege melhor os recursos do Azure. Para saber mais sobre por que a autenticação baseada em certificado é mais segura, consulte Autenticação baseada em certificado do Microsoft Entra.

Esta etapa no tutorial explica como usar um certificado de entidade de serviço para acessar um recurso do Azure.

Criar uma entidade de serviço contendo um novo certificado

Para criar um certificado autoassinado para autenticação, use o --create-cert parâmetro:

az ad sp create-for-rbac --name myServicePrincipalName \
                         --role roleName \
                         --scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
                         --create-cert

Saída do console:

{
  "appId": "myServicePrincipalID",
  "displayName": "myServicePrincipalName",
  "fileWithCertAndPrivateKey": "certFilePath\certFileName.pem",
  "password": null,
  "tenant": "myOrganizationTenantID"
}

A menos que você armazene o certificado no Cofre da Chave, a saída inclui a fileWithCertAndPrivateKey chave. O valor dessa chave informa onde o certificado gerado está armazenado. Copie o certificado para um local seguro. Se você perder o acesso à chave privada de um certificado, redefina as credenciais da entidade de serviço.

O conteúdo de um arquivo PEM pode ser visualizado com um editor de texto. Aqui está um exemplo de arquivo PEM:

Screenshot of PEM file

Criar uma entidade de serviço usando um certificado existente

Crie uma entidade de serviço com um certificado existente usando o --cert parâmetro. Qualquer ferramenta que use essa entidade de serviço deve ter acesso à chave privada do certificado. Os certificados devem estar em um formato ASCII, como PEM, CER ou DER. Passe o certi897ficate como uma cadeia de caracteres ou use o formato para carregar o @path certificado de um arquivo.

Quando você usa um arquivo PEM, o CERTIFICADO deve ser anexado à CHAVE PRIVADA dentro do arquivo.

# create a service principal with the certificate as a string
az ad sp create-for-rbac --name myServicePrincipalName \
                         --role roleName \
                         --scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
                         --cert "-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----"
# create a service principal with the certificate file location
az ad sp create-for-rbac --name myServicePrincipalName \
                         --role roleName \
                         --scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
                         --cert @/path/to/cert.pem

Trabalhar com o Azure Key Vault

O --keyvault parâmetro pode ser adicionado para criar ou recuperar certificados no Cofre de Chaves do Azure. Quando você usa o parâmetro, o --keyvault--cert parâmetro também é necessário. Neste exemplo, o valor é o --cert nome do certificado.

# Create a service principal storing the certificate in Azure Key Vault
az ad sp create-for-rbac --name myServicePrincipalName \
                         --role roleName \
                         --scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
                         --create-cert \
                         --cert myCertificateName \
                         --keyvault myVaultName
# Create a service principal using an existing certificate in Azure Key Vault
az ad sp create-for-rbac --name myServicePrincipalName \
                         --role roleName \
                         --scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
                         --cert myCertificateName \
                         --keyvault myVaultName

Recuperar um certificado do Azure Key Vault

Para um certificado armazenado no Cofre de Chaves do Azure, recupere o certificado com sua chave privada com az keyvault secret show e converta-o em um arquivo PEM. No Cofre da Chave do Azure, o nome do segredo do certificado é o mesmo que o nome do certificado.

az keyvault secret download --file /path/to/cert.pfx \
                            --vault-name VaultName \
                            --name CertName \
                            --encoding base64
openssl pkcs12 -in cert.pfx -passin pass: -out cert.pem -nodes

Converter um arquivo PKCS12 existente

Se você já tem um arquivo PKCS#12, você pode convertê-lo para o formato PEM usando OpenSSL. Se você tiver uma senha, altere o passin argumento.

openssl pkcs12 -in fileName.p12 -clcerts -nodes -out fileName.pem -passin pass:

Anexar um certificado a uma entidade de serviço

Use o parâmetro na redefinição de --append credenciais az ad sp para acrescentar um certificado a uma entidade de serviço existente. Por padrão, esse comando limpa todas as senhas e chaves, portanto, use com cuidado.

az ad sp credential reset --id myServicePrincipalID \
                          --append \
                          --cert @/path/to/cert.pem

Saída do console:

Certificate expires yyyy-mm-dd hh:mm:ss+00:00. Adjusting key credential end date to match.
The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
{
  "appId": "myServicePrincipalID",
  "password": null,
  "tenant": "myOrganizationTenantID"
}

Entrar com uma entidade de serviço usando um certificado

Para entrar com um certificado, o certificado deve estar disponível localmente como um arquivo PEM ou DER no formato ASCII. Os ficheiros PKCS#12 (.p12/.pfx) não funcionam. Quando você usa um arquivo PEM, a CHAVE PRIVADA e o CERTIFICADO devem ser anexados juntos dentro do arquivo. Você não precisa prefixar o caminho com um @ como faz com outros comandos az.

az login --service-principal \
         --username myServicePrincipalID \
         --tenant myOwnerOrganizationId \
         --password /path/to/cert

Passos Seguintes

Agora que você aprendeu a trabalhar com entidades de serviço usando um certificado, prossiga para a próxima etapa para saber como recuperar uma entidade de serviço existente.