Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao criar uma entidade de serviço, você pode escolher o tipo de autenticação de entrada usada. 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.
É recomendável usar a 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 a 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 um service principal 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 Key Vault, a saída inclui a fileWithCertAndPrivateKey chave. O valor dessa chave informa onde o certificado gerado é armazenado. Copie o certificado para um local seguro. O certificado contém a chave privada e o certificado público que pode ser usado em az login. 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 exibido com um editor de texto. Aqui está um exemplo de arquivo PEM:
-----BEGIN PRIVATE KEY-----
MIIEvQ...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----
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 certificado como uma cadeia de caracteres ou use o @path formato para carregar o certificado de um arquivo. Ao carregar um certificado, somente o certificado público é necessário. Para obter a segurança ideal, não inclua a chave privada. As linhas -----BEGIN CERTIFICATE----- e -----END CERTIFICATE----- são opcionais.
# 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 "MIICoT..."
# or provide -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- lines
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--cert "-----BEGIN CERTIFICATE-----
MIICoT...
-----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
Aqui está um exemplo de arquivo PEM para carregar:
-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----
Trabalhar com o Azure Key Vault
O --keyvault parâmetro pode ser adicionado para criar ou recuperar certificados no Azure Key Vault. Quando você usa o --keyvault parâmetro, o --cert parâmetro também é necessário. Neste exemplo, o --cert valor é o 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 Azure Key Vault, recupere o certificado com sua chave privada com az keyvault secret show e converta-o em um arquivo PEM. No Azure Key Vault, 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: -passout pass: -out cert.pem -nodes
Converter um arquivo PKCS12 existente
Se você já tiver um arquivo PKCS nº 12, poderá convertê-lo no 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: -passout pass:
Adicionar um certificado a um principal de serviço
Use o parâmetro --append em az ad sp credential reset para adicionar um certificado a um principal 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"
}
Faça login com um principal 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 arquivos PKCS nº 12 (.p12/.pfx) não funcionam. Quando você usa um arquivo PEM, a CHAVE PRIVADA e o CERTIFICADO devem ser acrescentados no arquivo. Você não precisa prefixar o caminho com um @, como é feito com outros comandos az.
az login --service-principal --username APP_ID --certificate /path/to/cert.pem --tenant TENANT_ID
Próximas etapas
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.