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 en una política de JSON basada en recursos para especificar la entidad principal que tiene acceso permitido o denegado a un recurso.

Puede utilizar el elemento Principal en las políticas basadas en recursos. Varios servicios admiten políticas basadas en recursos, incluido IAM. El tipo de política basada en recursos de IAM es una política de confianza de roles. En los roles de IAM, utilice el elemento Principal en la política de confianza de roles 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. Consulte ¿Qué es IAM Access Analyzer? para saber si las entidades principales de las cuentas fuera de su zona de confianza (cuenta u organización de confianza) tienen acceso para asumir sus roles.

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 el 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 permita que todo el mundo pueda acceder al rol.

Otros ejemplos de recursos que admiten políticas basadas en recursos incluyen un bucket de Amazon S3 o una AWS KMS key.

No puede utilizar el elemento Principal en una política basada en identidad. Las políticas basadas en identidad son políticas de permisos que se adjuntan a identidades de IAM (usuarios, grupos o roles). En esos casos, la entidad principal queda implícita por la identidad a la que está adjunta la política.

Especificación de una entidad principal

Una entidad principal se especifica en el elemento Principal de una política basada en recursos o en claves de condición que admiten entidades principales.

Puede especificar cualquiera de las siguientes entidades principales en una política:

  • Cuenta de AWS y usuario raíz

  • Roles de IAM

  • Sesiones de rol

  • Usuarios de IAM

  • Sesiones de usuarios federados

  • Servicios de AWS

  • Todas las entidades principales

No puede identificar un grupo de usuarios como entidad principal en una política (como una política basada en recursos) porque los grupos están relacionados con los permisos, no con la autenticación, y las entidades principales las autentica IAM.

Puede especificar más de una entidad principal para cada uno de los tipos de entidad principal en las siguientes secciones mediante una matriz. Las matrices pueden tener uno o varios valores. Cuando se especifica más de una entidad principal en un elemento, se conceden permisos a cada una de ellas. Es un OR lógico y no un AND lógico, porque se autentica como una entidad principal a la vez. Si incluye más de un valor, utilice corchetes ([ y ]) y delimite con comas cada entrada de la matriz. En la siguiente política de ejemplo, se definen los permisos para la cuenta 123456789012 o la cuenta 555555555555.

"Principal" : { "AWS": [ "123456789012", "555555555555" ] }
nota

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

Entidades principales de Cuenta de AWS

Puede especificar identificadores de la Cuenta de AWS en el elemento Principal de una política basada en recursos o en claves de condición que admitan entidades principales. Esto delega autoridad en la cuenta. Cuando permite el acceso a otra cuenta, un administrador de esa cuenta debe conceder acceso a una identidad (usuario o rol de IAM) en dicha cuenta. Cuando especifica una Cuenta de AWS, puede usar el ARN de la cuenta (arn:aws:iam::account-ID: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 utilizar uno de los métodos siguientes para especificar esa cuenta en el elemento Principal:

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

El ARN de la cuenta y el ID de cuenta abreviado se comportan de la misma manera. Ambos delegan permisos en la cuenta. Usar el ARN de la cuenta en el elemento Principal no limita los permisos solo al usuario raíz de la cuenta.

nota

Cuando guarda una política basada en recursos que incluye el ID de cuenta abreviado, el servicio podría convertirla en el ARN de la entidad principal. De este modo, no se modifica la funcionalidad de la política.

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

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

También puede especificar más de una Cuenta de AWS (o ID de usuario canónico) como entidad principal mediante una matriz. Por ejemplo, puede utilizar los tres métodos para especificar una entidad principal en una política de bucket.

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

Entidades principales de rol de IAM

Puede especificar ARN de entidades principales de rol de IAM en el elemento Principal de una política basada en recursos o en claves de condición que admitan entidades principales. Los roles de IAM son identidades. En IAM, las identidades son recursos a los que puede asignar permisos. Los roles confían en otra identidad autenticada para asumir ese rol. Esto incluye una entidad principal en AWS o un usuario de un proveedor de identidades (IdP) externo. Cuando una entidad principal o una identidad asume un rol, recibe credenciales de seguridad temporales con los permisos del rol asumido. Cuando utiliza esas credenciales de sesión para realizar operaciones en AWS, pasa a ser una entidad principal de sesión de rol.

Los roles de IAM son identidades que existen en IAM. Los roles confían en otra identidad autenticada, como una entidad principal en AWS o un usuario de un proveedor de identidades externo. Cuando una entidad principal o una identidad asume un rol, recibe credenciales de seguridad temporales. A continuación, puede utilizar esas credenciales como entidad principal de sesión de rol para realizar operaciones en AWS.

Cuando especifica una entidad principal de rol en una política basada en recursos, los permisos efectivos de dicha entidad están limitados por cualquier tipo de política que limite los permisos para el rol. Esto incluye políticas de sesión y límites de permisos. Para obtener más información acerca de cómo se evalúan los permisos efectivos de una sesión de rol, consulte Lógica de evaluación de políticas.

Para especificar el ARN de rol en el elemento Principal, utilice el siguiente formato:

"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 de la entidad principal exclusivo del rol al guardar la política. Esto es útil para reducir el riesgo de que alguien aumente sus privilegios al eliminar y volver a crear el rol. Normalmente este ID no se muestra en la consola, ya que IAM utiliza 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 de la entidad principal del rol nuevo ya no coincide con el ID almacenado en la política de confianza. Cuando esto ocurre, el ID de la entidad principal aparece en las políticas basadas en recursos porque 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 el ID de la entidad principal que ahora es incorrecto por el ARN correcto. El ARN se transforma una vez más en el nuevo ID de la entidad principal del rol al guardar la política.

De forma alternativa, puede especificar la entidad principal de rol como la entidad principal en una política basada en recursos o crear una política de permisos amplios que utilice la clave de condición aws:PrincipalArn. Cuando utiliza esta clave, a la entidad principal de la sesión de rol se le otorgan los permisos en función del ARN del rol asumido y no del ARN de la sesión resultante. Debido a que AWS no convierte los ARN de clave de condición en ID, los permisos concedidos al ARN del rol persisten si elimina el rol y, a continuación, crea un nuevo rol con el mismo nombre. Los permisos concedidos mediante la clave de condición aws:PrincipalArn con un comodín (*) en el elemento Principal no están limitados por los tipos de políticas basadas en identidad, tales como límites de permisos o políticas de sesión, a menos que las políticas basadas en la identidad contengan una denegación explícita.

Entidades principales de sesión de rol

Puede especificar sesiones de roles en el elemento Principal de una política basada en recursos o en claves de condición que admitan entidades principales. Cuando una entidad principal o una identidad asume un rol, recibe credenciales de seguridad temporales con los permisos del rol asumido. Cuando utiliza esas credenciales de sesión para realizar operaciones en AWS, pasa a ser una entidad principal de sesión de rol.

El formato que utilice para una entidad principal de sesión de rol depende de la operación de AWS STS que se utilizó para asumir el rol.

Además, los administradores pueden diseñar un proceso para controlar cómo se emiten las sesiones de roles. Por ejemplo, pueden proporcionar una solución con un solo clic para sus usuarios que cree un nombre de sesión predecible. Si su administrador lo hace, puede utilizar las entidades principales de sesión de rol en sus políticas o claves de condición. De lo contrario, puede especificar el ARN del rol como entidad principal en la clave de condición aws:PrincipalArn. La forma en que especifica el rol como entidad principal puede cambiar los permisos efectivos para la sesión resultante. Para obtener más información, consulte Entidades principales de rol de IAM.

Entidades principales de sesión de rol asumido

Una entidad principal de sesión de rol asumido es una entidad de sesión que resulta del uso de la operación de AWS STS AssumeRole. Para obtener más información acerca de qué entidades principales pueden asumir un rol mediante esta operación, consulte Comparación de las operaciones de la API de AWS STS.

Para especificar el ARN de sesión de rol asumido en el elemento Principal, utilice el siguiente formato:

"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 designar a una sesión específica.

Entidades principales de sesión OIDC

Una entidad principal de sesión OIDC es una entidad de sesión que resulta del uso de la operación de AWS STS AssumeRoleWithWebIdentity. Puede utilizar un proveedor de OIDC externo (IdP) para iniciar sesión y, a continuación, asumir un rol de IAM mediante esta operación. Esto aprovecha la federación de identidades y emite una sesión de rol. Para obtener más información acerca de qué entidades principales pueden asumir un rol mediante esta operación, consulte Comparación de las operaciones de la API de AWS STS.

Cuando emite un rol de un proveedor de OIDC, obtiene este tipo especial de entidad principal de sesión que incluye información sobre el proveedor OIDC.

Utilice este tipo de entidad principal en su política para permitir o denegar el acceso con base en el proveedor de identidad web de confianza. Para especificar el ARN de sesión de rol de identidad OICD en el elemento Principal de una política de confianza de rol, utilice el siguiente formato:

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

Entidades principales de sesión de SAML

Una entidad principal de sesión de SAML es una entidad de sesión que resulta del uso de la operación de AWS STS AssumeRoleWithSAML. Puede utilizar un proveedor de identidad (IdP) SAML externo para iniciar sesión y, a continuación, asumir un rol de IAM mediante esta operación. Esto aprovecha la federación de identidades y emite una sesión de rol. Para obtener más información acerca de qué entidades principales pueden asumir un rol mediante esta operación, consulte Comparación de las operaciones de la API de AWS STS.

Cuando emite un rol de un proveedor de identidad SAML, obtiene este tipo especial de entidad principal de sesión que incluye información sobre el proveedor de identidad SAML.

Utilice este tipo de entidad principal en su política para permitir o denegar el acceso con base en el proveedor de identidad SAML de confianza. Para especificar el ARN de sesión de rol de identidad SAML en el elemento Principal de una política de confianza de rol, utilice el siguiente formato:

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

Entidades principales de usuario de IAM

Puede especificar a los usuarios de IAM en el elemento Principal de una política basada en recursos o en claves de condición que admitan entidades principales.

nota

En un elemento Principal, la parte del nombre de usuario del Nombre de recurso de Amazon (ARN) 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/user-name-2" ] }

Cuando especifica usuarios en un elemento Principal, no puede utilizar un comodín (*) para designar a “todos los usuarios”. Las entidades principales siempre tienen que designar a 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, IAM transforma al ARN 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 al eliminar y volver 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 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 entidad principal nuevo que no coincide con el ID almacenado en la política de confianza. Cuando esto ocurre, el ID de la entidad principal aparece en las políticas basadas en recursos porque 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 el ID de la entidad principal que ahora es incorrecto por el ARN correcto. IAM transforma una vez más el ARN en el nuevo ID principal del usuario al guardar la política.

Entidades principales de IAM Identity Center

En IAM Identity Center, la entidad principal en una política basada en recursos debe definirse como la entidad principal de Cuenta de AWS. Para especificar el acceso, haga referencia al ARN del rol del conjunto de permisos en el bloque de condiciones. Para obtener más información, consulte Hacer referencia a los conjuntos de permisos en las políticas de recursos, Amazon EKS y AWS KMS en la Guía del usuario de IAM Identity Center.

Entidades principales de sesión de usuario federado de AWS STS

Puede especificar sesiones de usuarios federados en el elemento Principal de una política basada en recursos o en claves de condición que admitan entidades principales.

importante

AWS recomienda que utilice sesiones de usuarios federados de AWS STS solo cuando sea necesario, por ejemplo, cuando se requiere acceso de usuario raíz. En su lugar, utilice roles para delegar permisos.

Una entidad principal de usuario federado de AWS STS es una entidad de sesión que resulta del uso de la operación de AWS STS GetFederationToken. En este caso, AWS STS utiliza la federación de identidad como método para obtener tokens de acceso temporales en lugar de utilizar roles de IAM.

En AWS, los usuarios de IAM o un Usuario raíz de la cuenta de AWS pueden autenticarse mediante claves de acceso a largo plazo. Para conocer las entidades principales que pueden federarse mediante esta operación, consulte Comparación de las operaciones de la API de AWS STS.

  • Usuario federado de IAM: un usuario de IAM se federa mediante la operación GetFederationToken que da como resultado una entidad principal de sesión de usuario federado para dicho usuario de IAM.

  • Usuario raíz federado: un usuario raíz se federa mediante la operación GetFederationToken que da como resultado una entidad principal de sesión de usuario federado para dicho usuario raíz.

Cuando un usuario de IAM o usuario raíz solicita credenciales temporales de AWS STS mediante esta operación, inicia una sesión de usuario federado temporal. El ARN de esta sesión se basa en la identidad original que se federó.

Para especificar el ARN de sesión de usuario federado en el elemento Principal, utilice el siguiente formato:

"Principal": { "AWS": "arn:aws:sts::AWS-account-ID:federated-user/user-name" }

Entidad principal del servicio de AWS

Puede especificar servicios de AWS en el elemento Principal de una política basada en recursos o en claves de condición que admitan entidades principales. Una entidad principal del servicio es un identificador de un servicio.

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. La entidad principal de servicio de una política de IAM no puede ser "Service": "*".

El identificador de la entidad principal de un 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 la entidad principal del servicio para algunos servicios al abrir Servicios de AWS que funcionan con IAM, comprobar si el servicio tiene en la columna Rol vinculado al servicio y abrir el vínculo a fin de 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 la entidad 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.

"Principal": { "Service": [ "ecs.amazonaws.com", "elasticloadbalancing.amazonaws.com" ] }

Entidades principales de servicios de AWS en regiones registradas

Puede lanzar recursos en varias regiones de AWS, y debe registrarse en algunas de esas regiones. Para obtener una lista completa de las regiones en las que debe registrarse, consulte Administración de regiones de AWS en la Guía de Referencia general de AWS.

Cuando un servicio de AWS de una región registrada realiza una solicitud dentro de la misma región, el formato del nombre de la entidad principal del servicio se identifica como la versión no regionalizada del nombre de la entidad principal del servicio:

service-name.amazonaws.com

Cuando un servicio de AWS de una región registrada realiza una solicitud interregional a otra región, el formato del nombre de la entidad principal del servicio se identifica como la versión regionalizada del nombre de la entidad principal del servicio:

service-name.{region}.amazonaws.com

Por ejemplo, supongamos que tiene un tema de Amazon SNS ubicado en la región ap-southeast-1 y un bucket de Amazon S3 ubicado en la región registrada ap-east-1. Desea configurar las notificaciones del bucket de S3 para que puedan publicar mensajes en el tema de SNS. Para permitir que el servicio S3 publique mensajes en el tema de SNS, debe conceder permiso sns:Publish a la entidad principal del servicio S3 mediante la política de acceso basada en recursos del tema.

Si especifica la versión no regionalizada de la entidad principal del servicio S3, s3.amazonaws.com, en la política de acceso del tema, se producirá un error en la solicitud sns:Publish del bucket al tema. En el siguiente ejemplo, se especifica la entidad principal del servicio S3 no regionalizada en el elemento de política Principal de la política de acceso del tema de SNS.

"Principal": { "Service": "s3.amazonaws.com" }

Dado que el bucket se encuentra en una región registrada y la solicitud se realiza fuera de esa misma región, la entidad principal del servicio S3 aparece como nombre la entidad principal del servicio regionalizado, s3.ap-east-1.amazonaws.com. Debe utilizar el nombre de la entidad principal del servicio regionalizado cuando un servicio de AWS de una región registrada realice una solicitud a otra región. Una vez que se especifica el nombre de la entidad principal del servicio regionalizado, si el bucket realiza una solicitud sns:Publish al tema de SNS ubicado en otra región, la solicitud se procesará correctamente. En el siguiente ejemplo, se especifica la entidad principal del servicio S3 regionalizada en el elemento de política Principal de la política de acceso del tema de SNS.

"Principal": { "Service": "s3.ap-east-1.amazonaws.com" }

Las listas de autorizaciones basadas en políticas de recursos o entidades principales de servicios para solicitudes interregionales de una región registrada a otra región solo se procesarán correctamente si se especifica el nombre de la entidad principal del servicio regionalizado.

nota

Para las políticas de confianza de roles de IAM, se recomienda utilizar el nombre de la entidad principal del servicio no regionalizado. Los recursos de IAM son globales, de modo que se puede utilizar el mismo rol en cualquier región.

Todas las entidades principales

Puede utilizar un comodín (*) para especificar todas las entidades principales en el elemento Principal de una política basada en recursos o en claves de condición que admitan entidades principales. Los permisos de concesión de Políticas basadas en recursos y las claves de condición se emplean para limitar las condiciones de una declaración de política.

importante

Recomendamos encarecidamente que no utilice un comodín (*) en el elemento Principal de una política basada en recursos con un efecto Allow a menos que tenga la intención de conceder acceso público o anónimo. De lo contrario, especifique las entidades principales, servicios o cuentas de AWS en el elemento Principal y, a continuación, restrinja aún más el acceso en el elemento Condition. Esto es especialmente cierto para las políticas de confianza del rol de IAM, porque permiten que otras entidades principales lo sean también en su cuenta.

Para las políticas basadas en recursos, usar un comodín (*) con un efecto Allow concede acceso a todos los usuarios, incluidos los usuarios anónimos (acceso público). No se requieren otros permisos para las entidades principales de usuarios y rol de IAM dentro de su cuenta. Para las entidades principales de otras cuentas, también deben tener permisos basados en la identidad en su cuenta que les permitan acceder a su recurso. Esto se denomina acceso entre cuentas.

Para los usuarios anónimos, los siguientes elementos son equivalentes:

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

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

En el siguiente ejemplo se muestra una política basada en recursos que pueden utilizarse en lugar de Especificar NotPrincipal con Deny para denegar explícitamente todas las entidades principales excepto para los especificados en el elemento Condition.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UsePrincipalArnInsteadOfNotPrincipalWithDeny", "Effect": "Deny", "Action": "s3:*", "Principal": "*", "Resource": [ "arn:aws:s3:::BUCKETNAME/*", "arn:aws:s3:::BUCKETNAME" ], "Condition": { "ArnNotEquals": { "aws:PrincipalArn": "arn:aws:iam::444455556666:user/user-name" } } } ] }

Más información

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