Creación de una entidad de servicio de Azure con CLI de Azure

Las herramientas automatizadas que usan servicios de Azure siempre deben tener permisos restringidos para asegurarse de que los recursos de Azure son seguros. Por lo tanto, en lugar de que las aplicaciones inicien sesión como un usuario con privilegios totales, Azure ofrece las entidades de servicio. Una entidad de servicio de Azure es una identidad creada para su uso con aplicaciones, servicios hospedados y herramientas automatizadas. Esta identidad se usa para acceder a los recursos.

En este tutorial, aprenderá a:

  • Creación de una entidad de servicio
  • Inicio de sesión con una entidad de servicio y una contraseña
  • Inicio de sesión con una entidad de servicio y un certificado
  • Administración de roles de la entidad de servicio
  • Creación de un recurso de Azure mediante una entidad de servicio
  • Restablecimiento de las credenciales de la entidad de servicio

Requisitos previos

  • En una suscripción, debe tener permisos User Access Administrator o Role Based Access Control Administrator, o superior, para crear una entidad de servicio. Para obtener una lista de los roles disponibles para el control de acceso basado en rol de Azure (RBAC de Azure), vea roles integrados de Azure.

Creación de una entidad de servicio

Use el comandoaz ad sp create-for-rbac de referencia de la CLI de Azure para crear una entidad de servicio. En este ejemplo no se especifica un parámetro --name, por lo que se crea automáticamente un nombre que contiene una marca de tiempo.

az ad sp create-for-rbac

Consola de salida:

{
  "appId": "myAppId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myTentantId"
}

Si no cumple las convenciones de nomenclatura de recursos y planea crear un rol y un ámbito para la nueva entidad de servicio más adelante, el comando az ad sp create-for-rbac sin parámetros es una solución aceptable. Sin embargo, sin un rol y ámbito, la nueva entidad de servicio no tiene acceso a los recursos. Solo existe.

Al crear una entidad de servicio sin parámetros, complete también estos pasos:

Creación de una entidad de servicio con el rol y el ámbito

Como procedimiento recomendado, asigne siempre una específica--role y --scopes al crear una entidad de servicio. Siga estos pasos:

  1. Determinar el rol correcto.

    Al determinar el rol, use siempre el principio de privilegios mínimos. Por ejemplo, no conceda permisos de entidad de servicio contributor a una suscripción si la entidad de servicio solo necesita acceder a Azure Storage dentro de un grupo de recursos. Considere un rol especializado como colaborador de datos de blobs de almacenamiento. Para obtener una lista completa de los roles disponibles en Azure RBAC, consulte Roles integrados de Azure.

  2. Obtenga un valor para el parámetro scopes.

    Busque y copie el id. de recurso del recurso de Azure al que debe acceder la nueva entidad de servicio. Esta información suele encontrarse en la página Propiedades o Puntos de conexión de Azure de cada recurso. Estos son ejemplos comunes de --scopes, pero dependen del id. de recurso para un formato y un valor reales.

    Ámbito Ejemplo
    Suscripción /subscriptions/mySubscriptionID
    Grupos de recursos /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Máquina virtual /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Servicio de archivos de cuenta de almacenamiento /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
    Factoría de datos /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName

    Para obtener más ejemplos de ámbito, consulte Descripción del ámbito de Azure RBAC.

  3. Cree la entidad de servicio.

    En este ejemplo, se crea una nueva entidad de servicio denominada myServicePrincipalName1con permisos de lector a todos los recursos del grupo de recursos RG1.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName1 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1
    

    El parámetro --scopes acepta una lista delimitada por espacios de ámbitos. En este ejemplo, se crea una nueva entidad de servicio denominada myServicePrincipalName2 con permisos de lector para todos los recursos del grupo de recursos myRG1. Esta entidad de servicio también tiene permisos delector para myVM ubicado en myRG2.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName2 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM
    

Si decide que ha concedido muy pocos o demasiados permisos a su nueva entidad de servicio, modifique los permisos mediante la administración de roles de la entidad de servicio.

Creación de una entidad de servicio mediante variables

También puede crear una entidad de servicio mediante variables:

# Bash script
let "randomIdentifier=$RANDOM*$RANDOM"
servicePrincipalName="msdocs-sp-$randomIdentifier"
roleName="azureRoleName"
subscriptionID=$(az account show --query id --output tsv)
# Verify the ID of the active subscription
echo "Using subscription ID $subscriptionID"
resourceGroup="myResourceGroupName"

echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup"
az ad sp create-for-rbac --name $servicePrincipalName \
                         --role $roleName \
                         --scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup

Para obtener una lista completa de las propiedades de la entidad de servicio, use az ad sp list y vea Obtener una entidad de servicio existente.

Advertencia

Cuando se crea una entidad de servicio de Azure mediante el comando az ad sp create-for-rbac, la salida incluye las credenciales que se deben proteger. Asegúrese de no incluir estas credenciales en el código ni en el control de código fuente. Considere también la posibilidad de usar identidades administradas para evitar tener que usar credenciales.

Pasos siguientes

Ahora que ha aprendido a crear una entidad de servicio de Azure, continúe con el paso siguiente para aprender a usar entidades de servicio con autenticación basada en contraseña.