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
oRole 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.
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
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:
- Registre la contraseña asignada por el sistema, ya que no puede recuperarla de nuevo. Si pierde la contraseña, restablezca mediante az ad sp credential reset tal como se explica en Restablecer credenciales de entidad de servicio.
- Establezca la asignación de roles para la nueva entidad de servicio mediante az role assignment create como se explica en Administrar roles de entidad de servicio.
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". Póngase en contacto con el administrador de Microsoft Entra para crear una entidad 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
):
- Desarrollador de aplicaciones
- Administrador de aplicaciones
- Administrador de aplicaciones en la nube
- Administrador global
- Administrador de identidades híbridas
Para obtener más información sobre la configuración de usuario en Microsoft Entra ID, consulte Restringir quién puede crear aplicaciones.
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:
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.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.
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.