Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al crear un principal de servicio, eliges el tipo de autenticación de inicio de sesión que utiliza. Hay dos tipos de autenticación disponibles para las entidades de servicio de Azure: autenticación basada en contraseña y autenticación basada en certificados.
Se recomienda usar la autenticación basada en certificados debido a las restricciones de seguridad de la autenticación basada en contraseña. La autenticación basada en certificados permite adoptar una autenticación resistente a la suplantación de identidad mediante directivas de acceso condicional, que protege mejor los recursos de Azure. Para obtener más información sobre por qué la autenticación basada en certificados es más segura, consulte Autenticación basada en certificados de Microsoft Entra.
En este paso del tutorial se explica cómo usar un certificado de entidad de servicio para acceder a un recurso de Azure.
Creación de una entidad de servicio que contenga un nuevo certificado
Para crear un certificado autofirmado para la autenticación, use el --create-cert parámetro :
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--create-cert
Salida de la consola:
{
"appId": "myServicePrincipalID",
"displayName": "myServicePrincipalName",
"fileWithCertAndPrivateKey": "certFilePath\certFileName.pem",
"password": null,
"tenant": "myOrganizationTenantID"
}
A menos que almacene el certificado en Key Vault, la salida incluye la fileWithCertAndPrivateKey clave. El valor de esta clave indica dónde se almacena el certificado generado. Copie el certificado en una ubicación segura. El certificado contiene la clave privada y el certificado público que se puede usar en az login. Si pierde acceso a la clave privada de un certificado, restablezca las credenciales de la entidad de servicio.
El contenido de un archivo PEM se puede ver con un editor de texto. Este es un ejemplo de archivo PEM:
-----BEGIN PRIVATE KEY-----
MIIEvQ...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----
Creación de una entidad de servicio mediante un certificado existente
Cree una entidad de servicio con un certificado existente mediante el parámetro --cert. Cualquier herramienta que use esta entidad de servicio debe tener acceso a la clave privada del certificado. Los certificados deben estar en un formato ASCII como PEM, CER o DER. Pase el certificado como una cadena o use el @path formato para cargar el certificado desde un archivo. Al cargar un certificado, solo se necesita el certificado público. Para lograr una seguridad óptima, no incluya la clave privada. Las -----BEGIN CERTIFICATE----- líneas y -----END CERTIFICATE----- son opcionales.
# 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
Este es un ejemplo de archivo PEM para cargar:
-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----
Uso de Azure Key Vault
El --keyvault parámetro se puede agregar para crear o recuperar certificados en Azure Key Vault. Cuando se usa el --keyvault parámetro , también se requiere el --cert parámetro . En este ejemplo, el --cert valor es el nombre del 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
Recuperación de un certificado de Azure Key Vault
Para un certificado almacenado en Azure Key Vault, recupere el certificado con su clave privada con az keyvault secret show y conviértelo en un archivo PEM. En Azure Key Vault, el nombre del secreto del certificado es el mismo que el nombre del 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
Convertir un archivo PKCS12 existente
Si ya tiene un archivo PKCS#12, puede convertirlo al formato PEM mediante OpenSSL. Si tiene una contraseña, cambie el passin argumento .
openssl pkcs12 -in fileName.p12 -clcerts -nodes -out fileName.pem -passin pass: -passout pass:
Anexar un certificado a una entidad de servicio
Utiliza el parámetro --append en az ad sp credential reset para anexar un certificado a una entidad de servicio existente. De forma predeterminada, este comando borra todas las contraseñas y claves, por lo que se usa cuidadosamente.
az ad sp credential reset --id myServicePrincipalID \
--append \
--cert @/path/to/cert.pem
Salida de la consola:
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"
}
Iniciar sesión con un principal de servicio mediante un certificado
Para iniciar sesión con un certificado, el certificado debe estar disponible localmente como un archivo PEM o DER en formato ASCII. Los archivos PKCS#12 (.p12/.pfx) no funcionan. Cuando se usa un archivo PEM, la clave privada y el certificado deben anexarse juntos dentro del archivo. No es necesario anteponer la ruta de acceso con un @ como haces con otros comandos az.
az login --service-principal --username APP_ID --certificate /path/to/cert.pem --tenant TENANT_ID
Pasos siguientes
Ahora que ha aprendido a trabajar con entidades de servicio mediante un certificado, continúe con el paso siguiente para aprender a recuperar una entidad de servicio existente.