Elemento de la política de JSON de AWS: Principal - AWS Identity and Access Management

Elemento de la política de JSON de AWS: Principal

Utilice el elemento Principal de una política para especificar la entidad que tiene acceso permitido o denegado a un recurso. No puede utilizar el elemento Principal en una política basada en identidad de IAM. Puede utilizarlo en las políticas de confianza para los roles de IAM y en las políticas basadas en recursos. Las políticas basadas en recursos son políticas que se integran directamente en un recurso de IAM. Por ejemplo, puede integrar las políticas en un bucket de Amazon S3 o en una clave maestra de cliente (CMK) de AWS KMS.

Puede especificar cualquiera de los siguientes principios en una política:

  • Cuenta de AWS y usuario raíz

  • Usuarios de IAM

  • Usuarios federados (con la identidad web o federación de SAML)

  • Roles de IAM

  • Sesiones de rol asumible

  • Servicios de AWS

  • Usuarios anónimos (no recomendado)

Utilice el elemento Principal tal como se indica a continuación:

  • En los roles de IAM, utilice el elemento Principal en la política de confianza del rol para especificar quién puede asumir el rol. Para obtener acceso entre cuentas, debe especificar el identificador de 12 dígitos de la cuenta de confianza. Para obtener información sobre si las entidades principales de las cuentas que no se encuentran en su zona de confianza (cuenta u organización de confianza) tienen acceso para asumir sus roles, consulte ¿Qué es IAM Access Analyzer?.

    nota

    Tras crear el rol, puede cambiar la cuenta a "*" para permitir que cualquiera pueda asumir el rol. Si lo hace, le recomendamos encarecidamente que limite quién puede obtener acceso al rol a través de otros medios, como, por ejemplo, un elemento Condition que limite el acceso únicamente a determinadas direcciones IP. No deje que todo el mundo pueda obtener acceso al rol.

  • En las políticas basadas en recursos, utilice el elemento Principal para especificar las cuentas o los usuarios que estén autorizados a obtener acceso al recurso.

No utilice el elemento Principal en las políticas que asocia a usuarios o grupos de IAM. Del mismo modo, no especifique una entidad principal en la política de permisos de un rol de IAM. En esos casos, el principal es implícitamente el usuario al que la política está asociada (en el caso de los usuarios de IAM) o el usuario que asume el rol (en el caso de las políticas de acceso de roles). Cuando la política está asociada a un grupo de IAM, el principal es el usuario de IAM; del grupo que realiza la solicitud.

Especificación de una entidad principal

Especifique una entidad principal mediante el nombre de recurso de Amazon (ARN) u otro identificador de la entidad principal. No puede especificar grupos y perfiles de instancia de IAM como entidades principales.

En los ejemplos siguientes se muestran diferentes métodos para especificar entidades principales.

Cuentas de AWS específicas

Cuando se utiliza un identificador de cuenta de AWS como entidad principal en una política, se delega la autoridad a la cuenta. Todas las identidades dentro de la cuenta pueden acceder al recurso si tienen los permisos de IAM adecuados adjuntos para permitir explícitamente el acceso. Esto incluye los usuarios y los roles de IAM de la cuenta. Cuando especifique una cuenta de AWS, puede usar el ARN de la cuenta (arn:aws:iam::ID-cuenta-AWS:root) o una forma abreviada formada por el prefijo AWS: seguido del ID de la cuenta.

Por ejemplo, si el ID de cuenta es 123456789012, puede usar uno de los métodos siguientes para especificar esa cuenta en el elemento Principal:

"Principal": { "AWS": "arn:aws:iam::123456789012:root" }
"Principal": { "AWS": "123456789012" }

También puede especificar más de una cuenta de AWS como principal mediante una matriz y empleando cualquier combinación de los métodos mencionados anteriormente.

"Principal": { "AWS": [ "arn:aws:iam::123456789012:root", "999999999999" ] }

Algunos servicios de AWS admiten más opciones para especificar una cuenta principal. Por ejemplo, Amazon S3 permite especificar un ID de usuario canónico mediante el siguiente formato:

"Principal": { "CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be" }

Usuarios individuales de IAM

Puede especificar un usuario de IAM individual (o una matriz de usuarios) como principal, tal y como se muestra en los siguientes ejemplos. Cuando se especifica más de una entidad principal en el elemento, se conceden permisos a cada entidad principal. Es un OR lógico y no un AND lógico, porque está autenticado como una entidad principal a la vez.

nota

En un elemento Principal, el nombre de usuario distingue entre mayúsculas y minúsculas.

"Principal": { "AWS": "arn:aws:iam::AWS-account-ID:user/user-name" }
"Principal": { "AWS": [ "arn:aws:iam::AWS-account-ID:user/user-name-1", "arn:aws:iam::AWS-account-ID:user/UserName2" ] }

Si especifica usuarios en un elemento Principal, no puede utilizar un comodín (*) para designar a "todos los usuarios". Los principales siempre tienen que designar a un usuario o a varios usuarios específicos.

importante

Si el elemento Principal de una política de confianza de rol contiene un ARN que apunta a un usuario de IAM concreto, dicho ARN se transforma en el ID principal exclusivo del usuario al guardar la política. Esto es útil para reducir el riesgo de que alguien aumente sus privilegios eliminando y volviendo a crear el usuario. Normalmente este ID no se muestra en la consola, ya que también existe una transformación inversa al ARN del usuario cuando se muestra la política de confianza. Sin embargo, si elimina el usuario, la relación se desvincula. La política ya no se aplica, incluso aunque vuelva a crear el usuario. Esto se debe a que el usuario nuevo tiene un ID de principal nuevo que no coincide con el ID almacenado en la política de confianza. Cuando esto sucede, el ID de principal se muestra en la consola, ya que AWS ya no puede asignarlo a un ARN válido. El resultado final es que si elimina y vuelve a crear un usuario al que se hace referencia en un elemento Principal de la política de confianza, deberá editar el rol para sustituir por el ARN, el ID de principal que ahora es incorrecto. El ARN se transforma una vez más en el ID de principal nuevo del usuario al guardar la política.

Usuarios de identidad web federados

"Principal": { "Federated": "cognito-identity.amazonaws.com" }
"Principal": { "Federated": "www.amazon.com" }
"Principal": { "Federated": "graph.facebook.com" }
"Principal": { "Federated": "accounts.google.com" }

Usuarios de SAML federados

"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:saml-provider/provider-name" }

Roles de IAM

"Principal": { "AWS": "arn:aws:iam::AWS-account-ID:role/role-name" }
importante

Si el elemento Principal de una política de confianza de rol contiene un ARN que apunta a un rol de IAM concreto, dicho ARN se transforma en el ID principal exclusivo del rol al guardar la política. Esto es útil para reducir el riesgo de que alguien aumente sus privilegios eliminando y volviendo a crear el rol. Normalmente este ID no se muestra en la consola, ya que también existe una transformación inversa al ARN del rol cuando se muestra la política de confianza. Sin embargo, si elimina el rol, la relación se desvincula. La política dejará de aplicarse, aunque vuelva a crear el rol, ya que el ID del principal del rol nuevo ya no coincide con el ID almacenado en la política de confianza. Cuando esto sucede, el ID de principal se muestra en la consola, ya que AWS ya no puede asignarlo a un ARN válido. El resultado final es que si elimina y vuelve a crear un rol al que se hace referencia en un elemento Principal de la política de confianza, deberá editar el rol para sustituir por el ARN, el ID de principal que ahora es incorrecto. El ARN se transformará una vez más en el ID de principal nuevo del rol al guardar la política.

Sesiones específicas de rol asumido

"Principal": { "AWS": "arn:aws:sts::AWS-account-ID:assumed-role/role-name/role-session-name" }

Al especificar una sesión de rol asumido en un elemento Principal, no puede utilizar un comodín (*) para referirse a "todas las sesiones". Las entidades principales siempre deben nombrar una sesión específica.

Servicios de AWS

Los roles de IAM que puede asumir un servicio de AWS se denominan roles de servicio. Los roles de servicio deben incluir una política de confianza. Las políticas de confianza son políticas basadas en recursos que se asocian a un rol que define qué entidades principales pueden asumir el rol. Algunos roles de servicio tienen políticas de confianza predefinidas. Sin embargo, en algunos casos, debe especificar la entidad principal del servicio en la política de confianza. Una entidad principal de servicio es un identificador que se utiliza para conceder permisos a un servicio.

El identificador de un principal del servicio incluye el nombre del servicio y suele tener el siguiente formato:

service-name.amazonaws.com

El servicio define la entidad principal de servicio. Puede encontrar el principal del servicio para algunos servicios abriendo Servicios de AWS que funcionan con IAM, comprobando si el servicio tiene en la columna Rol vinculado al servicio y abriendo el vínculo para ver la documentación del rol vinculado al servicio para ese servicio. Consulte la sección Permisos de rol vinculados a servicios de ese servicio para ver el principal del servicio.

En el siguiente ejemplo, se muestra una política que puede asociarse a un rol de servicio. La política permite que dos servicios, Amazon ECS y Elastic Load Balancing asuman el rol. Los servicios pueden realizar las tareas concedidas por la política de permisos asignada al rol (no se muestra). Para especificar varios elementos principales del servicio no debe especificar dos elementos Service; solo puede tener uno. En cambio, utilice una gama de varios elementos principales del servicio como el valor de un único elemento Service.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ecs.amazonaws.com", "elasticloadbalancing.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Usuarios anónimos (públicos)

Para las políticas basadas en recursos, como las políticas de bucket de Amazon S3, un carácter comodín (*) en el elemento de la entidad principal especifica todos los usuarios o acceso público. Los siguientes elementos son equivalentes:

"Principal": "*"
"Principal" : { "AWS" : "*" }

No puede utilizar un carácter comodín para buscar coincidencias con parte de un nombre o un ARN.

Le recomendamos encarecidamente que no utilice un carácter comodín en el elemento Principal de una política de confianza de un rol, a menos que quiera restringir el acceso de otra forma, por medio de un elemento Condition en la política. De lo contrario, cualquier usuario de IAM de cualquier cuenta de su partición puede obtener acceso al rol.

Más información

Para obtener más información, consulte los siguientes temas: