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:

  • Usuario raíz y de la cuenta de AWS

  • 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 son autenticadas por 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 la 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 de una política basada en recursos 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. Una denegación explícita en cualquiera de estas políticas anulará el permiso.

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 de identidad web

Una entidad principal de sesión de identidad web es una entidad de sesión que resulta del uso de la operación de AWS STS AssumeRoleWithWebIdentity. Puede utilizar un proveedor de identidad (IdP) web 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 web, obtiene este tipo especial de entidad principal de sesión que incluye información sobre el proveedor de identidad web.

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 web 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 web 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 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 una 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 {ut} 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.

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" ] }

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 con base 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 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:

  • Bucket policy examples (Ejemplos de política de bucket) en Amazon Simple Storage Service User Guide (Guía del usuario de Amazon Simple Storage Service)

  • Example policies for Amazon SNS (Políticas de ejemplo para Amazon SNS) en Amazon Simple Notification Service Developer Guide (Guía para desarrolladores de Amazon Simple Notification Service)

  • Amazon SQS policy examples (Ejemplos de políticas de Amazon SQS) en Amazon Simple Queue Service Developer Guide (Guía para desarrolladores de Amazon Simple Queue Service)

  • Key policies (Políticas de claves) en la AWS Key Management ServiceDeveloper Guide (Guía para desarrolladores de AWS Key Management Service)

  • Account identifiers (Identificadores de la cuenta) en la AWS General Reference (Referencia general de AWS)

  • Acerca de identidades web federadas