Descripción de las asignaciones de roles de Azure
Las asignaciones de roles permiten conceder a una entidad de seguridad (como un usuario, un grupo, una identidad administrada o una entidad de servicio) acceso a un recurso de Azure concreto. En este artículo se describen los detalles de las asignaciones de roles.
Asignación de roles
El acceso a los recursos de Azure se concede mediante la creación de una asignación de roles y se revoca al quitar una asignación de roles.
Una asignación de roles tiene varios componentes, entre los que se incluyen:
- La entidad de seguridad o quién tiene asignado el rol.
- El rol que tienen asignado.
- El ámbito en el que se asigna el rol.
- El nombre de la asignación de roles y una descripción que le ayuda a explicar por qué se ha asignado el rol.
Por ejemplo, puede usar Azure RBAC para asignar roles como:
- El usuario Sally tiene acceso de propietario a la cuenta de almacenamiento contoso123 en el grupo de recursos ContosoStorage.
- Todos los usuarios del grupo Administradores de la nube de Microsoft Entra ID tienen acceso de lector a todos los recursos del grupo de recursos ContosoStorage.
- La identidad administrada asociada a una aplicación puede reiniciar las máquinas virtuales dentro de la suscripción de Contoso.
Este es un ejemplo de las propiedades de una asignación de roles cuando se muestran mediante Azure PowerShell:
{
"RoleAssignmentName": "00000000-0000-0000-0000-000000000000",
"RoleAssignmentId": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
"Scope": "/subscriptions/11111111-1111-1111-1111-111111111111",
"DisplayName": "User Name",
"SignInName": "user@contoso.com",
"RoleDefinitionName": "Contributor",
"RoleDefinitionId": "b24988ac-6180-42a0-ab88-20f7382dd24c",
"ObjectId": "22222222-2222-2222-2222-222222222222",
"ObjectType": "User",
"CanDelegate": false,
"Description": null,
"ConditionVersion": null,
"Condition": null
}
Este es un ejemplo de las propiedades de una asignación de roles cuando se muestran mediante la CLI de Azure o la API REST:
{
"canDelegate": null,
"condition": null,
"conditionVersion": null,
"description": null,
"id": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
"name": "00000000-0000-0000-0000-000000000000",
"principalId": "22222222-2222-2222-2222-222222222222",
"principalName": "user@contoso.com",
"principalType": "User",
"roleDefinitionId": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
"roleDefinitionName": "Contributor",
"scope": "/subscriptions/11111111-1111-1111-1111-111111111111",
"type": "Microsoft.Authorization/roleAssignments"
}
En la tabla siguiente se describe el significado de las propiedades de la asignación de roles.
Propiedad | Descripción |
---|---|
RoleAssignmentName name |
Nombre de la asignación de roles, que es un identificador único global (GUID). |
RoleAssignmentId id |
Identificador único de la asignación de roles, que incluye el nombre. |
Scope scope |
Identificador de recursos de Azure al que se limita la asignación de roles. |
RoleDefinitionId roleDefinitionId |
Identificador único del rol. |
RoleDefinitionName roleDefinitionName |
Nombre del rol. |
ObjectId principalId |
Identificador de objeto de Microsoft Entra de la entidad de seguridad que tiene asignado el rol. |
ObjectType principalType |
Tipo de objeto de Microsoft Entra que representa la entidad de seguridad. Los valores válidos son User , Group y ServicePrincipal . |
DisplayName |
Para las asignaciones de roles de los usuarios, el nombre para mostrar del usuario. |
SignInName principalName |
El nombre principal de usuario (UPN) o el nombre de la aplicación asociada a la entidad de servicio. |
Description description |
Descripción de la asignación de roles. |
Condition condition |
Instrucción de condición compilada mediante una o varias acciones de definición de roles y atributos. |
ConditionVersion conditionVersion |
Número de versión de una condición. El valor predeterminado es 2.0 y es la única versión admitida. |
CanDelegate canDelegate |
Sin implementar. |
Ámbito
Al crear una asignación de roles, debe especificar el ámbito en el que se aplica. El ámbito representa el recurso o el conjunto de recursos a los que la entidad de seguridad puede acceder. Puede limitar una asignación de roles a un único recurso, un grupo de recursos, una suscripción o un grupo de administración.
Sugerencia
Use el ámbito más pequeño que necesita para cumplir sus requisitos.
Por ejemplo, si necesita conceder a una identidad administrada acceso a una única cuenta de almacenamiento, un procedimiento recomendado de seguridad consiste en crear la asignación de roles en el ámbito de la cuenta de almacenamiento, no en el del grupo de recursos ni el de la suscripción.
Para obtener más información sobre el ámbito, vea Comprensión del ámbito.
Rol que se asigna
Una asignación de roles está asociada a una definición de roles. La definición de roles especifica los permisos que la entidad de seguridad debe tener dentro del ámbito de la asignación de roles.
Puede asignar una definición de rol integrada o una definición de rol personalizada. Al crear una asignación de roles, algunas herramientas requieren que use el identificador de definición de roles, mientras que otras le permiten proporcionar el nombre del rol.
Para más información sobre las definiciones de roles, consulte Descripción de definiciones de roles.
Principal
Las entidades de seguridad incluyen usuarios, grupos de seguridad, identidades administradas, identidades de carga de trabajo y entidades de servicio. Las entidades de seguridad se crean y administran en el inquilino de Microsoft Entra. Puede asignar un rol a cualquier entidad de seguridad. Use el identificador de objeto de Microsoft Entra ID para identificar la entidad de seguridad a la que quiere asignar el rol.
Al crear una asignación de roles mediante Azure PowerShell, la CLI de Azure, Bicep u otra tecnología de infraestructura como código (IaC), especifique el tipo de entidad de seguridad. Los tipos principales incluyen User, Group y ServicePrincipal. Es importante especificar el tipo de entidad de seguridad correcto. De lo contrario, es posible que reciba errores de implementación intermitentes, especialmente cuando trabaja con entidades de servicio e identidades administradas.
Nombre
El nombre del recurso de una asignación de roles debe ser un identificador único global (GUID).
Los nombres de recursos de asignación de roles deben ser únicos dentro del inquilino de Microsoft Entra, incluso si el ámbito de la asignación de roles es más reducido.
Sugerencia
Al crear una asignación de roles mediante Azure Portal, Azure PowerShell o la CLI de Azure, el proceso de creación le asigna automáticamente un nombre único a la asignación de roles.
Si crea una asignación de roles mediante Bicep u otra tecnología de infraestructura como código (IaC), debe planear cuidadosamente cómo nombrar las asignaciones de roles. Para obtener más información, consulte Creación de recursos de RBAC de Azure mediante Bicep.
Comportamiento de la eliminación de recursos
Al eliminar un usuario, un grupo, una entidad de servicio o una identidad administrada de Microsoft Entra ID, se recomienda eliminar también cualquier asignación de roles, ya que no se eliminan automáticamente. Las asignaciones de roles que hacen referencia a un identificador de entidad de seguridad eliminado no son válidas.
Si intenta reutilizar el nombre de una asignación de roles para otra asignación, se producirá un error en la implementación. Es más probable que se produzca este problema cuando se usa Bicep o una plantilla de Azure Resource Manager (plantilla de ARM) para implementar las asignaciones de roles, ya que tiene que establecer explícitamente el nombre de la asignación de roles al usar estas herramientas. Para solucionar este comportamiento, debe eliminar la asignación de roles anterior antes de volver a crearla o asegurarse de que usa un nombre único al implementar una nueva asignación de roles.
Descripción
Puede agregar una descripción de texto a una asignación de roles. Aunque las descripciones son opcionales, se recomienda agregarlas a las asignaciones de roles. Proporcione una breve justificación de por qué la entidad de seguridad necesita el rol asignado. Cuando alguien audita las asignaciones de roles, las descripciones pueden ayudar a comprender por qué se han creado y si siguen siendo aplicables.
Condiciones
Algunos roles admiten condiciones de asignación de roles basadas en atributos en el contexto de acciones específicas. Una condición de asignación de roles es una comprobación adicional que puede agregar opcionalmente a la asignación de roles para proporcionar un control de acceso más preciso.
Por ejemplo, puede agregar una condición que requiera que un objeto tenga una etiqueta específica para leerlo.
Normalmente, se crean condiciones con un editor de condiciones visuales, pero este es el aspecto de una condición de ejemplo en el código:
((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEqualsIgnoreCase 'Cascade'))
La condición anterior permite a los usuarios leer blobs con una clave de etiqueta de índice de blob de Project y un valor de Cascade.
Para más información sobre las condiciones, consulte ¿Qué es el control de acceso basado en atributos de Azure (Azure ABAC)?