Solución de problemas de las condiciones de asignación de roles de Azure
Problemas generales
Síntoma: no se aplica la condición
Causa 1
Las entidades de seguridad tienen una o varias asignaciones de roles en el mismo ámbito o en un ámbito superior.
Solución 1
Asegúrese de que las entidades de seguridad no tienen varias asignaciones de roles (con o sin condiciones) que concedan acceso a la misma acción de datos, lo que lleva a que no se apliquen las condiciones. Para obtener información sobre la lógica de evaluación, consulte Cómo determina Azure RBAC si un usuario tiene acceso a un recurso.
Causa 2
La asignación de roles tiene varias acciones que conceden un permiso y la condición no tiene como destino todas las acciones. Por ejemplo, puede crear un blob si tiene las acciones de datos /blobs/write
o /blobs/add/action
. Si la asignación de roles tiene ambas acciones de datos y solo establece una de ellas como destino en una condición, la asignación de roles concederá el permiso para crear blobs y omitirá la condición.
Solución 2
Si la asignación de roles tiene varias acciones que conceden un permiso, asegúrese de que establece como destino todas las acciones pertinentes.
Causa 3
Cuando agrega una condición a una asignación de roles, la condición puede tardar hasta cinco minutos en aplicarse. Al agregar una condición, la actualización se notifica a los proveedores de recursos (como Microsoft Storage). Estos aplican inmediatamente las actualizaciones en sus cachés locales para asegurarse de que tienen las asignaciones de roles más recientes. Este proceso se lleva a cabo en uno o dos minutos, pero puede tardar hasta cinco en completarse.
Solución 3
Espere cinco minutos y vuelva a probar la condición.
Síntoma: error que indica que la condición no es válida al agregarla
Al intentar agregar una asignación de roles con una condición, aparece un error similar al siguiente:
The given role assignment condition is invalid.
Causa 1
La propiedad conditionVersion
se establece en "1.0".
Solución 1
Establezca la propiedad conditionVersion
en "2.0".
Causa 2
La condición no tiene el formato correcto.
Solución 2
Corrija cualquier problema de sintaxis o formato de la condición. También tiene la opción de agregar la condición mediante el editor visual en Azure Portal.
Problemas en el editor visual
Síntoma: el editor de condiciones aparece al editar una condición
Ha creado una condición mediante una plantilla descrita en Delegación de la administración de asignación de roles de Azure a otros usuarios con condiciones. Al intentar editar la condición, verá el editor de condiciones avanzadas.
Cuando editó la condición previamente, lo hizo mediante la plantilla de condición.
Causa
La condición no coincide con el patrón de la plantilla.
Solución 1
Edite la condición para que coincida con uno de los siguientes patrones de plantilla.
Plantilla | Condición |
---|---|
Restringir roles | Ejemplo: Restricción de roles |
Restricción de roles y tipos de entidad de seguridad | Ejemplo: Restricción de roles y tipos de entidad de seguridad |
Restringir roles y entidades de seguridad | Ejemplo: Restricción de roles y grupos específicos |
Permitir todos excepto roles específicos | Ejemplo: Permitir la mayoría de los roles, pero no permitir que otros usuarios asignen roles |
Solución 2
Elimine la condición y vuelva a crearla mediante los pasos descritos en Delegación de la administración de asignación de roles de Azure a otros usuarios con condiciones.
Síntoma: la entidad de seguridad no aparece en el origen del atributo
Al intentar agregar una asignación de roles con una condición, la entidad de seguridad no aparece en la lista Origen del atributo.
En su lugar, verá el mensaje:
To use principal (user) attributes, you must have Microsoft Entra permissions (such as the [Attribute Assignment Administrator](../active-directory/roles/permissions-reference.md#attribute-assignment-administrator) role) and custom security attributes defined in Microsoft Entra ID.
Causa
No cumple los requisitos previos. Para usar atributos principales, debe tener lo siguiente:
- Permisos de Microsoft Entra para que el usuario que ha iniciado sesión lea al menos un conjunto de atributos.
- Atributos de seguridad personalizados definidos en Microsoft Entra ID
Solución
Abra Microsoft Entra ID>Atributos de seguridad personalizados.
Si aparece la página Comenzar, aún no tiene permisos para leer al menos un conjunto de atributos o no se han definido todavía los atributos de seguridad personalizados.
Si se han definido atributos de seguridad personalizados, asigne uno de los siguientes roles en el ámbito de inquilino o el ámbito del conjunto de atributos. Para obtener más información, consulte Administración del acceso a atributos de seguridad personalizados en Microsoft Entra ID.
- Lector de definiciones de atributos
- Lector de asignaciones de atributos
- Administrador de definiciones de atributos
- Administrador de asignaciones de atributos
Importante
De forma predeterminada, el rol Administrador global y otros roles de administrador no tienen permisos para leer, definir o asignar atributos de seguridad personalizados.
Si aún no se han definido atributos de seguridad personalizados, asigne el rol Administrador de definiciones de atributos en el ámbito del inquilino y agregue atributos de seguridad personalizados. Para obtener más información, vea Agregar o desactivar atributos de seguridad personalizados en Microsoft Entra ID.
Cuando termine, debería poder leer al menos un conjunto de atributos.
La entidad de seguridad no aparece en la lista Origen del atributo cuando agrega una asignación de roles con una condición.
Síntoma: la entidad de seguridad no aparece en el origen del atributo al usar PIM
Al intentar agregar una asignación de roles con una condición mediante Microsoft Entra Privileged Identity Management (PIM), Entidad de seguridad no aparece en la lista Origen del atributo.
Causa
Actualmente PIM no admite el uso del atributo principal en una condición de asignación de roles.
Mensajes de error en el editor visual
Síntoma: condición no reconocida
Después de usar el editor de código, cambia al editor visual y aparece un mensaje similar al siguiente:
The current expression cannot be recognized. Switch to the code editor to edit the expression or delete the expression and add a new one.
Causa
Se realizaron actualizaciones en la condición que el editor visual no puede analizar.
Solución
Corrija cualquier problema de sintaxis o formato de la condición. También tiene la opción de eliminar la condición e intentarlo de nuevo.
Síntoma: el atributo no aplica el error para la condición guardada anteriormente
Al abrir una condición guardada anteriormente en el editor visual, obtendrá el siguiente mensaje:
Attribute does not apply for the selected actions. Select a different set of actions.
Causa
En mayo de 2022, la acción Leer un blob se cambió del siguiente formato:
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
Para excluir la suboperación Blob.List
:
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
Si creó una condición con la acción Leer un blob antes de mayo de 2022, es posible que vea este mensaje de error en el editor visual.
Solución
Abra el panel Seleccionar una acción y vuelva a seleccionar la acción Leer un blob .
Síntoma: el atributo no se aplica a ningún error
Al seleccionar una o varias acciones en el editor visual con una expresión existente, se obtiene el siguiente mensaje y se quita el atributo seleccionado anteriormente:
Attribute does not apply for the selected actions. Select a different set of actions.
Causa
El atributo seleccionado anteriormente ya no se aplica a las acciones seleccionadas actualmente.
Solución 1
En la sección Agregar acción, seleccione una acción que se aplique al atributo seleccionado. Para obtener una lista de las acciones de almacenamiento que admite cada atributo de almacenamiento, consulte Acciones y atributos para las condiciones de asignación de roles de Azure en Azure Blob Storage y Acciones y atributos para las condiciones de asignación de roles de Azure para las colas de Azure.
Solución 2
En la sección xpresión de compilación, seleccione un atributo que se aplique a las acciones seleccionadas actualmente. Para obtener una lista de los atributos de almacenamiento que admite cada acción de almacenamiento, consulte Acciones y atributos para las condiciones de asignación de roles de Azure en Azure Blob Storage y Acciones y atributos para las condiciones de asignación de roles de Azure para las colas de Azure.
Síntoma: el atributo no se aplica en esta advertencia de contexto
Al realizar modificaciones en el editor de código y, a continuación, cambiar al editor visual, aparecerá el siguiente mensaje y se quita el atributo seleccionado anteriormente:
Attribute does not apply in this context. Use a different role assignment scope or remove the expression.
Causa
El atributo especificado no está disponible en el ámbito actual, como el uso de Version ID
en una cuenta de almacenamiento con el espacio de nombres jerárquico habilitado.
Solución
Si desea usar el atributo especificado actualmente, cree la condición de asignación de roles en un ámbito diferente, como el ámbito del grupo de recursos. O bien, quite la expresión y vuelva a crearla mediante las acciones seleccionadas actualmente.
Síntoma: error en el que el atributo no se reconoce
Al realizar modificaciones en el editor de código y, a continuación, cambiar al editor visual, aparecerá el siguiente mensaje y se quita el atributo seleccionado anteriormente:
Attribute is not recognized. Select a valid attribute or remove the expression.
Causa
El atributo especificado no se reconoce, posiblemente debido a un error tipográfico.
Solución
Corrija el error tipográfico en el editor de código. O quite la expresión existente y use el editor visual para seleccionar un atributo.
Síntoma: error en el que el valor del atributo no es válido
Al realizar modificaciones en el editor de código y, a continuación, cambiar al editor visual, aparecerá el siguiente mensaje y se quita el atributo seleccionado anteriormente:
Attribute value is invalid. Select another attribute or value.
Causa
El lado derecho de la expresión contiene un atributo o valor que no es válido.
Solución
Use el editor visual para seleccionar un atributo o especificar un valor.
Síntoma: error en el que no hay ninguna acción seleccionada
Al quitar todas las acciones del editor visual, obtendrá el siguiente mensaje:
No actions selected. Select one or more actions to edit expressions.
Causa
Hay una expresión existente, pero no se ha seleccionado ninguna acción como destino.
Solución
En la sección Agregar acción, agregue una o varias acciones a las que debe dirigirse la expresión.
Síntoma: error No hay opciones disponibles
Al intentar agregar una expresión, recibirá el siguiente mensaje:
No options available
Causa
Ha seleccionado como destino varias acciones y no hay ningún atributo que se aplique a todas las acciones seleccionadas actualmente.
Solución
En la sección Agregar acción, seleccione menos acciones a destino. Para establecer como destino las acciones que ha quitado, agregue varias condiciones.
Síntoma: no se encontraron identificadores de definición de roles
Al intentar agregar una expresión, recibirá el siguiente mensaje:
Cannot find built-in or custom role definitions with IDs: <role IDs>. These IDs were removed. Check that the IDs are valid and try to add again. You can also refresh the page or sign out and sign in again.
Causa
No se encontraron uno o varios identificadores de definición de roles que intentó agregar para el atributo Id. de definición de roles o no tiene el formato GUID correcto: 00000000-0000-0000-0000-000000000000
.
Solución
Use el editor de condiciones para seleccionar el rol. Si ha agregado recientemente el rol personalizado, actualice la página o cierre la sesión e inicie sesión de nuevo.
Síntoma: no se encontraron los identificadores de entidad de seguridad
Al intentar agregar una expresión, recibirá el siguiente mensaje:
Cannot find users, groups, or service principals in Azure Active Directory with principal IDs: <principal IDs>. These IDs were removed. Check that the IDs are valid and try to add again. You can also refresh the page or sign out and sign in again.
Causa
No se encontraron uno o varios identificadores de entidad de seguridad que intentó agregar para el atributo Id. de entidad de seguridad o no tiene el formato GUID correcto: 00000000-0000-0000-0000-000000000000
.
Solución
Use el editor de condiciones para seleccionar la entidad de seguridad. Si agregó recientemente la entidad de seguridad, actualice la página o cierre la sesión e inicie sesión de nuevo.
Mensajes de error en Azure PowerShell
Síntoma: error en el que el atributo del recurso no es válido
Al intentar agregar una asignación de roles con una condición mediante Azure PowerShell, aparece un error similar al siguiente:
New-AzRoleAssignment : Resource attribute
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$> is not valid.
Causa
Si la condición incluye un signo de dólar ($), debe agregarle un carácter de acento grave (`) como prefijo.
Solución
Agregue un carácter de acento grave (`) antes de cada signo de dólar. A continuación se muestra un ejemplo. Para obtener más información sobre las reglas de comillas en PowerShell, vea Acerca de las reglas de las comillas.
$condition = "((!(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`$>] StringEquals 'Cascade'))"
Síntoma: error al copiar y pegar una condición
Causa
Si usa PowerShell y copia una condición de un documento, puede incluir caracteres especiales que provocan el siguiente error. Algunos editores (como Microsoft Word) agregan caracteres de control al dar formato al texto que no se muestra.
The given role assignment condition is invalid.
Solución
Si ha copiado una condición de un editor de texto enriquecido y está seguro de que la condición es correcta, elimine todos los espacios, vuelva y, después, vuelva a agregar los espacios pertinentes. Como alternativa, use un editor de texto sin formato o un editor de código, como Visual Studio Code.
Mensajes de error en la CLI de Azure
Síntoma: error en el que el atributo del recurso no es válido
Al intentar agregar una asignación de roles con una condición mediante la CLI de Azure, aparece un error similar al siguiente:
Resource attribute Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$> is not valid.
Causa
Si la condición incluye un signo de dólar ($), debe agregarle una barra diagonal inversa (\) como prefijo.
Solución
Agregue una barra diagonal inversa (\) antes de cada signo de dólar. A continuación se muestra un ejemplo. Para más información sobre las reglas de comillas en Bash, consulte Comillas dobles.
condition="((!(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\$>] StringEquals 'Cascade'))"
Síntoma: error en el que no se reconocen los argumentos
Al intentar agregar una asignación de roles con una condición mediante la CLI de Azure, aparece un error similar al siguiente:
az: error: unrecognized arguments: --description {description} --condition {condition} --condition-version 2.0
Causa
Es probable que esté usando una versión anterior de la CLI de Azure que no admite parámetros de condición en la asignación de roles.
Solución
Actualice a la versión más reciente de la CLI de Azure (2.18 o posterior). Para más información, consulte Instalación de la CLI de Azure.
Síntoma: error al asignar una cadena de condición a una variable en Bash
Al intentar asignar una cadena de condición a una variable en Bash, aparece el mensaje bash: !: event not found
.
Causa
En Bash, si la expansión del historial está habilitada, es posible que vea el mensaje bash: !: event not found
debido al signo de exclamación (!).
Solución
Deshabilite la expansión del historial con el comando set +H
. Para volver a habilitar la expansión del historial, utilice set -H
.