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: 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.

Screenshot showing Principal in Attribute source list when adding a condition.

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

  1. 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.

    Screenshot that shows Custom security attributes Get started page.

  2. 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.

    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.

  3. 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.

    Screenshot that shows the attribute sets the user can read.

    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.

Screenshot showing Principal in Attribute source list when adding a condition using Privileged Identity Management.

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.

Pasos siguientes