Compartir a través de


Crear un principal de servicio de Azure con Azure CLI

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 tener aplicaciones que inicien sesión como un usuario con privilegios completos, Azure ofrece entidades de servicio. Un principal 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:

  • Crear un principal de servicio
  • Inicie sesión usando un principal de servicio y una contraseña
  • Inicie sesión utilizando una entidad de servicio y un certificado
  • Administración de roles de la entidad de servicio
  • Crear un recurso de Azure mediante un principal de servicio
  • Restablecer credenciales del principal de servicio

Prerrequisitos

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

Crear un principal de servicio

Use el comando az ad sp create-for-rbac de la CLI de Azure para crear una entidad de servicio. En este ejemplo no se especifica un --name parámetro, 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 sigue las convenciones de nomenclatura de recursos y planea crear más adelante un rol y un ámbito para su nueva entidad de servicio, el comando az ad sp create-for-rbac sin parámetros es una solución aceptable. Sin embargo, sin un rol y un ámbito, la nueva entidad de servicio no tiene acceso a los recursos. Simplemente existe.

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

Nota:

Si su cuenta no tiene permisos suficientes para crear una entidad de servicio, az ad sp create-for-rbac devuelve un mensaje de error que contiene el texto "Privilegios insuficientes para completar la operación". Contacte con su administrador de Microsoft Entra para crear un principal de servicio.

En un directorio de Microsoft Entra ID donde la configuración de usuario Los usuarios pueden registrar aplicaciones se ha establecido en No, debe ser miembro de uno de los siguientes roles integrados de Microsoft Entra ID (que tienen la acción: microsoft.directory/applications/createAsOwner o microsoft.directory/applications/create):

Para obtener más información sobre la configuración de usuario en Microsoft Entra ID, consulte Restringir quién puede crear aplicaciones.

Crear una entidad de servicio con rol y ámbito

Como procedimiento recomendado, asigne siempre un principal de servicio específico --role y --scopes cuando cree un principal de servicio. Siga estos pasos:

  1. Determine 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 almacenamiento de datos de blobs. 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 identificador 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
    Grupo de recursos /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Máquina virtual /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Servicio de archivos en la 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 myServicePrincipalName1 con permisos de lector para 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 --scopes parámetro acepta una lista de alcances delimitada por espacios. 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 principal de servicio también tiene permisos de lector para myVM ubicada 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 al nuevo principal de servicio, modifique los permisos mediante la administración de roles de principal de servicio.

Creación de un principal de servicio mediante variables

También puede crear un principal de servicio utilizando 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 del principal de servicio, use az ad sp list y vea Obtener un principal de servicio existente.

Advertencia

Al crear una entidad de servicio de Azure con el comando az ad sp create-for-rbac, la salida incluye credenciales que debe proteger. Asegúrese de no incluir estas credenciales en el código ni en el control de código fuente. Como alternativa, considere la posibilidad de usar identidades administradas si está disponible para evitar la necesidad de 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.