Claves de contexto de condición de IAM y AWS STS - AWS Identity and Access Management

Claves de contexto de condición de IAM y AWS STS

Puede utilizar el elemento Condition en una política JSON para probar el valor de las claves que se incluyen en el contexto de solicitud de todas las solicitudes de AWS. Estas claves proporcionan información sobre la propia solicitud o sobre los recursos a los que se refiere. Puede comprobar que las claves han especificado valores antes de permitir la acción solicitada por el usuario. De este modo, dispondrá de control detallado sobre cuándo las instrucciones de la política de JSON coinciden o no coinciden con una solicitud entrante. Para obtener información sobre cómo utilizar el elemento Condition en una política de JSON, consulte Elementos de política JSON de IAM: Condition.

En este tema se describen las claves definidas y proporcionadas por el servicio de IAM (con el prefijo iam:) y el servicio AWS Security Token Service (AWS STS) (con un prefijo sts:). Existen otros servicios de AWS que también proporcionan claves específicas del servicio relevantes para las acciones y los recursos definidos por dicho servicio. Para obtener más información, consulte Acciones, recursos y claves de condición para servicios de AWS. La documentación de un servicio que admite las claves de condición a menudo dispone de información adicional. Por ejemplo, para obtener información sobre las claves que puede utilizar en las políticas de recursos de Amazon S3, consulte Claves de política de Amazon S3 en la Guía del usuario de Amazon Simple Storage Service.

Claves disponibles para IAM

Puede utilizar las siguientes claves de condición en políticas que controlan el acceso a los recursos de IAM:

iam:AssociatedResourceArn

Funciona con operadores ARN.

Especifica el ARN del recurso al que se asociará este rol en el servicio de destino. El recurso generalmente pertenece al servicio al que la entidad principal pasa el rol. A veces, el recurso puede pertenecer a un tercer servicio. Por ejemplo, puede pasar un rol a Amazon EC2 Auto Scaling que utilice en una instancia de Amazon EC2. En este caso, la condición coincidiría con el ARN de la instancia de Amazon EC2.

Esta clave de condición solo se aplica a la acción PassRole de una política. No se puede utilizar para limitar cualquier otra acción.

Utilice esta clave de condición en una política para permitir que una entidad pase un rol, pero solo si ese rol está asociado con el recurso especificado. Puede utilizar caracteres comodín (*) para permitir operaciones realizadas en un tipo específico de recurso sin restringir la región o el ID de recurso. Por ejemplo, puede permitir que un usuario o rol de IAM pasen cualquier rol al servicio de Amazon EC2 para que se utilice con instancias en la región us-east-1 o us-west-1. No se permitiría al usuario o rol de IAM pasar roles a otros servicios. Además, no permite que Amazon EC2 utilice el rol con instancias de otras regiones.

{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": {"iam:PassedToService": "ec2.amazonaws.com"}, "ArnLike": { "iam:AssociatedResourceARN": [ "arn:aws:ec2:us-east-1:111122223333:instance/*", "arn:aws:ec2:us-west-1:111122223333:instance/*" ] } } }
nota

Los servicios de AWS que admiten iam:PassedToService admiten también esta clave de condición.

iam: AWSServiceName

Funciona con operadores de cadena.

Especifica el servicio de AWS al que está asociado este rol.

En este ejemplo, permite que una entidad cree un rol vinculado al servicio si el nombre del servicio es access-analyzer.amazonaws.com.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": "access-analyzer.amazonaws.com" } } }] }
iam: Certificación FIDO

Funciona con operadores de cadena.

Comprueba el nivel de certificación FIDO del dispositivo MFA al registrar una clave de seguridad FIDO. La certificación del dispositivo se obtiene del Servicio de metadatos (MDS) de FIDO Alliance. Si el estado o el nivel de certificación de su clave de seguridad FIDO cambia, no se actualizará a menos que el dispositivo no esté registrado y se haya registrado de nuevo para obtener la información de certificación actualizada.

Valores posibles de L1, L1plus, L2, L2plus, L3, L3plus

En este ejemplo, registra una clave de seguridad y recupera la certificación FIDO de nivel 1 plus para tu dispositivo.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-certification": "L1plus" } } } ] }
iam: Certificación FIDO-FIPS-140-2

Funciona con operadores de cadena.

Comprueba el nivel de certificación de validación FIPS-140-2 del dispositivo MFA al registrar una clave de seguridad FIDO. La certificación del dispositivo se obtiene del Servicio de metadatos (MDS) de FIDO Alliance. Si el estado o el nivel de certificación de su clave de seguridad FIDO cambia, no se actualizará a menos que el dispositivo no esté registrado y se haya registrado de nuevo para obtener la información de certificación actualizada.

Valores posibles de L1, L2, L3, L4

En este ejemplo, registra una clave de seguridad y recupera la certificación FIPS-140-2 de nivel 2 para su dispositivo.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-2-certification": "L2" } } } ] }
iam: Certificación FIDO-FIPS-140-3

Funciona con operadores de cadena.

Comprueba el nivel de certificación de validación FIPS-140-3 del dispositivo MFA al registrar una clave de seguridad FIDO. La certificación del dispositivo se obtiene del Servicio de metadatos (MDS) de FIDO Alliance. Si el estado o el nivel de certificación de su clave de seguridad FIDO cambia, no se actualizará a menos que el dispositivo no esté registrado y se haya registrado de nuevo para obtener la información de certificación actualizada.

Valores posibles de L1, L2, L3, L4

En este ejemplo, registra una clave de seguridad y recupera la certificación FIPS-140-3 de nivel 3 para su dispositivo.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-3-certification": "L3" } } } ] }
iam: Registrar clave de seguridad

Funciona con operadores de cadena.

Comprueba el estado actual de la activación del dispositivo MFA.

Valores posibles de Create o Activate.

En este ejemplo, registra una clave de seguridad y recupera la certificación FIPS-140-3 de nivel 1 para su dispositivo.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-3-certification": "L1" } } } ] }
iam:OrganizationsPolicyId

Funciona con operadores de cadena.

Comprueba que la política con el ID de AWS Organizations especificado coincide con la política que se utiliza en la solicitud. Para ver una política de ejemplo de IAM que utilice esta clave de condición, consulte IAM: ver la información del último acceso al servicio para una política de Organizaciones.

iam: PassedToService

Funciona con operadores de cadena.

Especifica el principal del servicio al que puede pasarse un rol. Esta clave de condición solo se aplica a la acción PassRole de una política. No se puede utilizar para limitar cualquier otra acción.

Cuando utilice esta clave de condición en una política, especifique el servicio mediante una entidad principal del servicio. El principal de un servicio es un nombre de servicio que puede especificarse en el elemento Principal de una política. El formato habitual es: SERVICE_NAME_URL.amazonaws.com.

Puede utilizar iam:PassedToService para que los usuarios solo puedan transferir roles a servicios específicos. Por ejemplo, un usuario puede crear una función de servicio que confíe en CloudWatch para escribir en su nombre datos de registro en un bucket de Amazon S3. A continuación, el usuario debe asociar una política de permisos y una política de confianza al nuevo rol de servicio. En este caso, la política de confianza debe especificar cloudwatch.amazonaws.com en el elemento Principal. Para ver una política que permita al usuario pasar el rol a CloudWatch, consulte IAM: pasar una función de IAM a un servicio de AWS específico.

Con esta clave de condición puede asegurar que los usuarios solo crearán roles de servicio para los servicios que especifique. Por ejemplo, si un usuario con la política anterior intenta crear una función de servicio para Amazon EC2, la operación fallará. El error se produce porque el usuario no tiene permiso para pasar el rol a Amazon EC2.

A veces se pasa un rol a un servicio que, a continuación, pasa el rol a otro servicio. iam:PassedToService incluye solo el servicio final que asume el rol, no el servicio intermedio que pasa el rol.

nota

Algunos servicios no admiten esta clave de condición.

iam:PermissionsBoundary

Funciona con operadores ARN.

Comprueba que la política especificada se asocia como límite de permisos por el recursos principal de IAM. Para obtener más información, consulte Límites de permisos para las entidades de IAM

iam:PolicyARN

Funciona con operadores ARN.

Comprueba el nombre de recurso de Amazon (ARN) de una política administrada en las solicitudes que impliquen una política administrada. Para obtener más información, consulte Control del acceso a políticas.

iam:ResourceTag/key-name

Funciona con operadores de cadena.

Comprueba que la etiqueta asociada al recurso de identidad (usuario o rol) coincida con el valor y el nombre de la clave especificada.

nota

IAM y AWS STS admiten tanto la clave de condición iam:ResourceTag de IAM como la clave de condición global aws:ResourceTag.

Puede agregar atributos personalizados a recursos de IAM en forma de un par de valor de clave. Para obtener más información sobre el etiquetado de recursos de IAM, consulte Etiquetado de recursos de IAM. Puede utilizar ResourceTag para controlar el acceso a los recursos de AWS, incluidos los recursos de IAM. No obstante, debido a que IAM no es compatible con etiquetas de grupos, no puede utilizar etiquetas para controlar el acceso a grupos.

En este ejemplo se muestra cómo podría crear una política basada en identidad que permita eliminar usuarios con la etiqueta status=terminated. Para utilizar esta política, sustituya el texto en cursiva del marcador de la política de ejemplo con su propia información. A continuación, siga las instrucciones en Crear una política o Editar una política.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:DeleteUser", "Resource": "*", "Condition": {"StringEquals": {"iam:ResourceTag/status": "terminated"}} }] }

Claves disponibles para las federaciones de identidades AWS de OIDC

Puede utilizar la federación de OIDC para otorgar credenciales de seguridad temporales a los usuarios autenticados a través de un proveedor de OpenID (OP) compatible con OpenID Connect a un proveedor de identidad IAM OpenID Connect (OIDC) de su cuenta de AWS. Algunos ejemplos de este tipo de proveedores incluyen Login with Amazon, Amazon Cognito, Google o Facebook. Se pueden utilizar los identificadores de identidad (id_tokens) de su propio OP de OpenID, así como los id_tokens emitidos a las cuentas de servicio de los clústeres de Amazon Elastic Kubernetes Service. En ese caso habrá claves de condición adicionales disponibles cuando se utilicen las credenciales de seguridad temporales al realizar una solicitud. Puede utilizar esas claves para crear políticas que limita el acceso de los usuarios federados a los recursos asociados a un proveedor, aplicación o usuario específico. Estas claves suelen utilizarse en la política de confianza de un rol. Defina las claves de condición utilizando el nombre del proveedor de OIDC seguido de la reclamación (:aud, :azp, :amr, :sub). En el caso de los roles utilizados por Amazon Cognito, las claves se definen usando cognito-identity.amazonaws.com seguidas de la afirmación.

amr

Funciona con operadores de cadena.

Ejemplo: cognito-identity.amazonaws.com:amr

Si utiliza Amazon Cognito para la federación de OIDC, la clave cognito-identity.amazonaws.com:amr (Authentication Methods Reference) incluye la información de inicio de sesión sobre el usuario. La clave comporta muchos valores, lo que significa que el usuario la prueba en una política utilizando operadores de definición de condición. La clave puede contener los siguientes valores:

  • Si el usuario no está autenticado, la clave contiene únicamente unauthenticated.

  • Si el usuario está autenticado, la clave contiene el valor authenticated y el nombre del proveedor de inicio de sesión utilizado en la llamada (graph.facebook.com, accounts.google.com o www.amazon.com).

A modo de ejemplo, la siguiente condición en la política de confianza de un rol de Amazon Cognito prueba si el usuario no está autenticado:

"Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-2:identity-pool-id" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } }
aud

Funciona con operadores de cadena.

Utilice la clave de condición de aud para verificar que el ID de cliente de Google o el ID del grupo de identidades de Amazon Cognito coincide con el que ha especificado en la política. Puede utilizar la clave aud con la clave sub del mismo proveedor de identidad.

Ejemplos:

  • graph.facebook.com:app_id

  • accounts.google.com:aud

  • cognito-identity.amazonaws.com:aud

El campo graph.facebook.com:app_id proporciona el contexto de público que se corresponde con el campo aud utilizado por otros proveedores de identidades.

La clave de condición accounts.google.com:aud coincide con los siguientes campos Token de ID de Google.

  • aud para los ID de cliente de Google OAuth 2.0 de su aplicación, cuando el campo azp no está configurado. Cuando se establece el campo azp, el campo aud coincide con la clave de condición accounts.google.com:oaud.

  • azp cuando se establece el campo azp. Esto puede suceder en aplicaciones híbridas donde una aplicación web y una aplicación de Android tienen un ID de cliente de Google OAuth 2.0 diferente pero comparten el mismo proyecto de API de Google.

Para obtener más información sobre los campos aud y azp de Google, consulte la Guía de OpenID Connect de la plataforma de identidad de Google.

Si escribe una política con la clave de condición accounts.google.com:aud, debe saber si la aplicación es una aplicación híbrida que establece el campo azp.

azp Campo no definido

La siguiente política de ejemplo funciona para las aplicaciones no híbridas que no establecen el campo azp. En este caso, el valor del campo aud del token de ID de Google coincide con los valores de la clave de condición accounts.google.com:aud y accounts.google.com:oaud.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": "aud-value", "accounts.google.com:oaud": "aud-value", "accounts.google.com:sub": "sub-value" } } } ] }

azp Especificación de campos

La siguiente política de ejemplo funciona para las aplicaciones híbridas que no establecen el campo azp. En este caso, el valor del campo aud del token de ID de Google solo coincide con el valor de la clave de condición accounts.google.com:oaud. El valor del campo azp coincide con el valor de la clave de condición accounts.google.com:aud.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": "azp-value", "accounts.google.com:oaud": "aud-value", "accounts.google.com:sub": "sub-value" } } } ] }
id

Funciona con operadores de cadena.

Ejemplos:

  • graph.facebook.com:id

  • www.amazon.com:app_id

  • www.amazon.com:user_id

Utilice estas claves para verificar que el ID de aplicación (o sitio) o el ID de usuario coincide con el que ha especificado en la política. Esto funciona para Facebook o Login with Amazon. Puede utilizar la clave app_id con la clave id del mismo proveedor de identidad.

oaud

Funciona con operadores de cadena.

Ejemplo: accounts.google.com:oaud

Si utiliza Google para la federación de OIDC, esta clave especifica la audiencia de Google (aud) para la que está prevista este token de ID. Debe ser uno de los ID de cliente de OAuth 2.0 de su aplicación.

sub

Funciona con operadores de cadena.

Ejemplos:

  • accounts.google.com:sub

  • cognito-identity.amazonaws.com:sub

Utilice estas claves para verificar que el ID de usuario coincide con el que ha especificado en la política. Puede utilizar la clave sub con la clave aud del mismo proveedor de identidad.

{ "Version": "2012-10-17", "Statement": [ "Condition": { "StringEquals": { "oidc.eks.us-east-1.amazonaws.com/id/111122223333:aud": "sts.amazonaws.com", "oidc.eks.us-east-1.amazonaws.com/id/111122223333:sub": "system:serviceaccount:default:assumer" } } ] }
Más información acerca de la federación OIDC

Para obtener más información sobre la federación OIDC, consulte lo siguiente:

Claves de contexto de federación de OIDC AWS multiservicios

Algunas claves de condición de federación de OIDC se pueden utilizar en políticas de confianza de roles para definir a qué pueden acceder los usuarios en otros servicios de AWS. Las siguientes son las claves de condición que se pueden utilizar en políticas de confianza de roles cuando las entidades principales federadas asumen otro rol, así como en políticas de recursos de otros servicios de AWS para autorizar el acceso a los recursos por parte de las entidades principales federadas. Si utiliza Amazon Cognito para la federación de OIDC, estas claves están disponibles cuando el usuario se autentifica.

Seleccione una clave de condición para ver la descripción.

nota

No está disponible ninguna otra clave de condición de federación basada en identidad web para su uso después de la autenticación y autorización del proveedor de identidades (IdP) externo para la operación AssumeRoleWithWebIdentity inicial.

Claves disponibles para la federación AWS STS basada en SAML

Si trabaja con federación basada en SAML utilizando AWS Security Token Service (AWS STS), puede incluir claves de condición adicionales en la política.

Políticas de confianza de roles de SAML

En la política de confianza de un rol, puede incluir las siguientes claves, que le ayudarán a determinar si el intermediario puede asumir el rol. Excepto saml:doc, todos los valores se derivan de la aserción de SAML. Todos los elementos de la lista están disponibles en el editor visual de la consola IAM al crear o editar una política con condiciones. Los elementos marcados con [] pueden tener un valor que sea una lista del tipo especificado.

saml:aud

Funciona con operadores de cadena.

Es una dirección URL de punto de enlace a la que se presentan las aserciones de SAML. El valor de esta clave proviene del campo SAML Recipient de la aserción, no del campo Audience.

saml:commonName[]

Funciona con operadores de cadena.

Se trata de un atributo commonName.

saml:cn[]

Funciona con operadores de cadena.

Es un atributo eduOrg.

saml:doc

Funciona con operadores de cadena.

Representa al principal que se utilizó para asumir el rol. El formato es ID-cuenta/nombre-fácil-de-recordar-del-proveedor, como 123456789012/SAMLProviderName. El valor ID-cuenta hace referencia a la cuenta que posee el proveedor SAML.

saml:edupersonaffiliation[]

Funciona con operadores de cadena.

Es un atributo eduPerson.

saml:edupersonassurance[]

Funciona con operadores de cadena.

Es un atributo eduPerson.

saml:edupersonentitlement[]

Funciona con operadores de cadena.

Es un atributo eduPerson.

saml:edupersonnickname[]

Funciona con operadores de cadena.

Es un atributo eduPerson.

saml:edupersonorgdn

Funciona con operadores de cadena.

Es un atributo eduPerson.

saml:edupersonorgunitdn[]

Funciona con operadores de cadena.

Es un atributo eduPerson.

saml:edupersonprimaryaffiliation

Funciona con operadores de cadena.

Es un atributo eduPerson.

saml:edupersonprimaryorgunitdn

Funciona con operadores de cadena.

Es un atributo eduPerson.

saml:edupersonprincipalname

Funciona con operadores de cadena.

Es un atributo eduPerson.

saml:edupersonscopedaffiliation[]

Funciona con operadores de cadena.

Es un atributo eduPerson.

saml:edupersontargetedid[]

Funciona con operadores de cadena.

Es un atributo eduPerson.

saml:eduorghomepageuri[]

Funciona con operadores de cadena.

Es un atributo eduOrg.

saml:eduorgidentityauthnpolicyuri[]

Funciona con operadores de cadena.

Es un atributo eduOrg.

saml:eduorglegalname[]

Funciona con operadores de cadena.

Es un atributo eduOrg.

saml:eduorgsuperioruri[]

Funciona con operadores de cadena.

Es un atributo eduOrg.

saml:eduorgwhitepagesuri[]

Funciona con operadores de cadena.

Es un atributo eduOrg.

saml:givenName[]

Funciona con operadores de cadena.

Se trata de un atributo givenName.

saml:iss

Funciona con operadores de cadena.

Se trata del emisor representado por un URN.

saml:mail[]

Funciona con operadores de cadena.

Se trata de un atributo mail.

saml:name[]

Funciona con operadores de cadena.

Se trata de un atributo name.

saml:namequalifier

Funciona con operadores de cadena.

Un valor hash basado en el nombre descriptivo del proveedor SAML. El valor es la concatenación de los siguientes valores, en orden y separados por un carácter '/':

  1. El valor de respuesta Issuer (saml:iss)

  2. El ID de la cuenta de AWS.

  3. El nombre descriptivo (la última parte del ARN) del proveedor SAML en IAM

La concatenación del ID de cuenta y del nombre fácil de recordar del proveedor SAML está disponible para las políticas de IAM como clave saml:doc. Para obtener más información, consulte Identificación única de los usuarios en la federación basada en SAML.

saml:organizationStatus[]

Funciona con operadores de cadena.

Es un atributo organizationStatus.

saml:primaryGroupSID[]

Funciona con operadores de cadena.

Se trata de un atributo primaryGroupSID.

saml:sub

Funciona con operadores de cadena.

Se trata del asunto de la demanda, que incluye un valor que identifica de forma unívoca a un usuario individual dentro de una organización (por ejemplo, _cbb88bf52c2510eabe00c1642d4643f41430fe25e3).

saml:sub_type

Funciona con operadores de cadena.

Esta clave puede tener el valor persistent, transient o ser el URI Format completo de los elementos Subject y NameID utilizados en la aserción de SAML. El valor persistent indica que el valor de saml:sub es el mismo para un usuario entre sesiones. Si el valor es transient, el usuario tendrá un valor saml:sub diferente para cada sesión. Para obtener información sobre el atributo NameID del elemento Format, consulte Configure aserciones SAML para la respuesta de autenticación.

saml:surname[]

Funciona con operadores de cadena.

Se trata de un atributo surnameuid.

saml:uid[]

Funciona con operadores de cadena.

Se trata de un atributo uid.

saml:x500UniqueIdentifier[]

Funciona con operadores de cadena.

Es un atributo x500UniqueIdentifier.

Para obtener información general sobre los atributos eduPerson y eduOrg, consulte el sitio web REFEDS Wiki. Para ver una lista de eduPerson atributos, consulte eduPerson Object Class Specification (201602).

Las claves de condición cuyo tipo es una lista pueden incluir múltiples valores. Para crear condiciones en la política para los valores de lista, puede utilizar operadores de definición (ForAllValues, ForAnyValue). Por ejemplo, a fin de permitir que todos los usuarios cuya afiliación sea “profesorado” o “personal” (pero no “estudiante”), puede utilizar una condición como la siguiente:

"Condition": { "ForAllValues:StringLike": { "saml:edupersonaffiliation":[ "faculty", "staff"] } }

Claves de contexto de federación de AWS STS basadas en SAML multiservicios

Algunas claves de condición de federación basadas en SAML se pueden utilizar en solicitudes posteriores para autorizar operaciones de AWS en otros servicios y llamadas AssumeRole. Las siguientes son las claves de condición que se pueden utilizar en políticas de confianza de roles cuando las entidades principales federadas asumen otro rol, así como en políticas de recursos de otros servicios de AWS para autorizar el acceso a los recursos por parte de las entidades principales federadas. Para obtener más información sobre el uso de estas claves, consulte Acerca de la federación basada en SAML 2.0.

Seleccione una clave de condición para ver la descripción.

nota

No está disponible ninguna otra clave de condición de federación basada en SAML para su uso después de la respuesta de autenticación del proveedor de identidades (IdP) externo inicial.

Claves disponibles para AWS STS

Puede utilizar las siguientes claves de condición en políticas de confianza de rol de IAM para los roles que se asumen utilizando operaciones de AWS Security Token Service (AWS STS).

saml:sub

Funciona con operadores de cadena.

Se trata del asunto de la demanda, que incluye un valor que identifica de forma unívoca a un usuario individual dentro de una organización (por ejemplo, _cbb88bf52c2510eabe00c1642d4643f41430fe25e3).

sts:AWSServiceName

Funciona con operadores de cadena.

Utilice esta clave para especificar un servicio donde se puede utilizar un token de portador. Cuando utilice esta clave de condición en una política, especifique el servicio mediante una entidad principal del servicio. El principal de un servicio es un nombre de servicio que puede especificarse en el elemento Principal de una política. Por ejemplo, codeartifact.amazonaws.com es la entidad principal de servicio AWS CodeArtifact.

Algunos servicios de AWS requieren que tenga permiso para obtener un token al portador del servicio AWS STS para poder acceder a sus recursos mediante programación. Por ejemplo, AWS CodeArtifact requiere que las entidades principales usen tokens portador para realizar algunas operaciones. El comando aws codeartifact get-authorization-token devuelve un token portador. A continuación, puede utilizar el token portador para realizar AWS CodeArtifact operaciones. Para obtener más información acerca de los tokens al portador, consulte Uso de tokens al portador.

Disponibilidad - Esta clave está presente en las solicitudes que reciben un token de portador. No puedes hacer una llamada directa a AWS STS para obtener un token. Cuando realiza algunas operaciones en otros servicios, el servicio solicita el token de portador en su nombre.

Puede utilizar esta clave de condición para permitir a los principales obtener un token de portador para usarlo con un servicio específico.

sts:DurationSeconds

Funciona con operadores numéricos.

Utilice esta clave para especificar la duración (en segundos) que un principal puede utilizar al obtener un token portador AWS STS.

Algunos servicios de AWS requieren que tenga permiso para obtener un token al portador del servicio AWS STS para poder acceder a sus recursos mediante programación. Por ejemplo, AWS CodeArtifact requiere que las entidades principales usen tokens portador para realizar algunas operaciones. El comando aws codeartifact get-authorization-token devuelve un token portador. A continuación, puede utilizar el token portador para realizar AWS CodeArtifact operaciones. Para obtener más información acerca de los tokens al portador, consulte Uso de tokens al portador.

Disponibilidad - Esta clave está presente en las solicitudes que reciben un token de portador. No puedes hacer una llamada directa a AWS STS para obtener un token. Cuando realiza algunas operaciones en otros servicios, el servicio solicita el token de portador en su nombre. La clave no está presente para las AWS STS operaciones assume-rol.

sts:ExternalId

Funciona con operadores de cadena.

Utilice esta clave para exigir que una entidad principal proporcione un identificador específico al asumir un rol de IAM.

Disponibilidad - Esta clave está presente en la solicitud cuando el principal proporciona un ID externo mientras asume un rol utilizando AWS CLI o API de AWS.

Un identificador único que podría ser necesario al asumir un rol en otra cuenta. Si el administrador de la cuenta a la que pertenece el rol le ha proporcionado un ID externo, entonces proporcione dicho valor en el parámetro ExternalId. Este valor puede ser cualquier cadena como, por ejemplo, una frase de contraseña o un número de cuenta. La función principal del ID externo es abordar y prevenir el problema del suplente confuso. Para obtener más información acerca del ID externo y el problema del suplente confuso, consulte Cómo utilizar un ID externo al otorgar acceso a los recursos de AWS a terceros.

El valor ExternalId debe tener 2 caracteres como mínimo y 1224 como máximo. El valor debe ser alfanumérico sin espacio en blanco. También puede incluir los símbolos siguientes: más (+), igual (=), coma (,), punto (.), arroba (@), dos puntos (:), barra inclinada (/) y guion (-).

sts:RequestContext/context-key

Funciona con operadores de cadena.

Utilice esta clave para comparar los pares clave-valor del contexto de la sesión que están integrados en la afirmación de contexto firmada por el emisor del token de confianza pasada en la solicitud con los valores-clave del contexto especificados en la política de confianza del rol.

Disponibilidad: Esta clave está presente en la solicitud cuando se proporciona una afirmación de contexto en el parámetro de la solicitud de ProvidedContexts mientras asume un rol con la operación de API de AWS STS AssumeRole.

Esta clave de contexto tiene el formato "sts:RequestContext/context-key":"context-value" en donde context-key y context-value son un par clave-valor de contexto. Cuando se integran varias claves de contexto en la afirmación de contexto firmada pasada en la solicitud, hay una clave de contexto para cada par clave-valor. Debe conceder permiso para la acción sts:SetContext en la política de confianza de roles a fin de permitir que una entidad principal establezca las claves de contexto en el token de sesión resultante.

Puede utilizar esta clave en una política de confianza de rol para aplicar un control de acceso detallado basado en el usuario o en sus atributos cuando asuman un rol. Por ejemplo, puede configurar Amazon Redshift como una aplicación del centro de identidad de IAM para acceder a los recursos de Amazon S3 en nombre de sus empleados o de sus identidades federadas.

La siguiente política de confianza de rol permite a la entidad principal de servicio de Amazon Redshift asumir un rol en la cuenta 111122223333. También otorga permiso a la entidad principal del servicio Amazon Redshift para establecer las claves de contexto en la solicitud, siempre que se establezca el valor de la identitystore:UserId clave de contexto. 1111-22-3333-44-5555 Una vez asumido el rol, la actividad aparece en los registros de AWS CloudTrail dentro del elemento de AdditionalEventData, que contienen los pares clave-valor del contexto de la sesión que estableció el proveedor del contexto en la solicitud de asumir el rol. Esto hace que sea más fácil para los administradores diferenciar entre sesiones de rol cuando un rol es utilizado por diferentes entidades principales. El proveedor de contexto especificado establece los pares clave-valor, no por AWS CloudTrail ni AWS STS. Esto le da al proveedor del contexto el control sobre el contexto que se incluye en los registros y la información de sesión de CloudTrail.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext" ], "Condition": { "ForAllValues:ArnEquals": { "sts:RequestContextProviders": [ "arn:aws:iam::aws:contextProvider/IdentityCenter" ] }, "StringEquals": { "aws:SourceAccount": "111122223333", "sts:RequestContext/identitystore:UserId": "1111-22-3333-44-5555" } } } ] }
sts:RequestContextProviders

Funciona con operadores ARN.

Utilice esta clave para comparar el ARN del proveedor de contexto de la solicitud con el ARN del proveedor de contexto especificado en la política de confianza del rol.

Disponibilidad: Esta clave está presente en la solicitud cuando se proporciona una afirmación de contexto en el parámetro de la solicitud de ProvidedContexts mientras asume un rol con la operación de API de AWS STS AssumeRole.

La siguiente condición de ejemplo comprueba que el ARN del proveedor de contexto pasado en la solicitud coincide con el ARN especificado en la condición de política de confianza del rol.

"Condition": { "ForAllValues:ArnEquals": { "sts:RequestContextProviders": [ "arn:aws:iam::aws:contextProvider/IdentityCenter" ] } }
sts:RoleSessionName

Funciona con operadores de cadena.

Utilice esta clave para comparar el nombre de sesión que especifica una entidad principal al asumir un rol con el valor especificado en la política.

Disponibilidad - Esta clave está presente en la solicitud cuando la entidad principal asume el rol mediante AWS Management Console, cualquier comando assume-role CLI o cualquier operación AWS STSde API AssumeRole.

Puede utilizar esta clave en una política de confianza de rol para exigir que los usuarios proporcionen un nombre de sesión específico cuando asuman un rol. Por ejemplo, puede requerir que los usuarios de IAM especifiquen su propio nombre de usuario como nombre de sesión. Después de que el usuario de IAM asuma el rol, la actividad aparece en los registros de AWS CloudTrail con el nombre de sesión que coincide con su nombre de usuario. Esto hace que sea más fácil para los administradores diferenciar entre sesiones de rol cuando un rol es utilizado por diferentes entidades principales.

La siguiente política de confianza de rol requiere que los usuarios de IAM de la cuenta 111122223333 proporcionen su nombre de usuario de IAM como nombre de sesión cuando asuman el rol. Este requisito se aplica utilizando lavariable de condición aws:username en la clave de condición. Esta política permite a los usuarios de IAM asumir el rol al que está asociada la política. Esta política no permite a nadie que utilice credenciales temporales asumir el rol porque la variable username solo está presente para los usuarios de IAM.

importante

Puede utilizar cualquier clave de condición de valor único como variable. No se puede utilizar una clave de condición multivalor como variable.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RoleTrustPolicyRequireUsernameForSessionName", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Condition": { "StringLike": {"sts:RoleSessionName": "${aws:username}"} } } ] }

Cuando un administrador ve el registro de AWS CloudTrail de una acción, puede comparar el nombre de la sesión con los nombres de usuario en su cuenta. En el ejemplo siguiente, el usuario denominado matjac realizó la operación utilizando el rol denominado MateoRole. El administrador puede entonces ponerse en contacto con Mateo Jackson, quien tiene el nombre del usuario matjac.

"assumedRoleUser": { "assumedRoleId": "AROACQRSTUVWRAOEXAMPLE:matjac", "arn": "arn:aws:sts::111122223333:assumed-role/MateoRole/matjac" }

Si permite el acceso entre cuentas mediante roles, los usuarios de una cuenta pueden asumir un rol en otra cuenta. El ARN del usuario de rol asumido indicado en CloudTrail incluye la cuenta donde existe el rol. No incluye la cuenta del usuario que asumió el rol. Los usuarios son únicos solo dentro de una cuenta. Por lo tanto, se recomienda utilizar este método para comprobar los registros de CloudTrail solo para los roles que asumen los usuarios en las cuentas que administra. Los usuarios pueden utilizar el mismo nombre de usuario en varias cuentas.

sts:SourceIdentity

Funciona con operadores de cadena.

Utilice esta clave para comparar la identidad de origen que especifica una entidad principal al asumir un rol con el valor especificado en la política.

Disponibilidad – Esta clave está presente en la solicitud cuando la entidad principal establece inicialmente una identidad de origen mientras asume un rol utilizando cualquier comando assume-rol CLI de AWS STS, o una operación AWS STS de API AssumeRole.

Puede utilizar esta clave en una política de confianza de rol para requerir que sus usuarios establezcan una identidad de origen específica cuando asuman un rol. Por ejemplo, puede requerir que su personal o identidades federadas especifiquen un valor para la identidad de origen. Puede configurar su proveedor de identidades (IdP) para que utilice uno de los atributos asociados a los usuarios, como un nombre de usuario o un correo electrónico como identidad de origen. A continuación, el IdP pasa la identidad de origen como un atributo en las afirmaciones que envía a AWS. El valor del atributo de identidad de origen identifica al usuario o aplicación que está asumiendo el rol.

Después de que el usuario asuma el rol, la actividad aparece en registros de AWS CloudTrail con el valor de identidad de origen que se ha establecido. Esto facilita a los administradores determinar quién o qué ha realizado acciones con un rol en AWS. Debe conceder permisos para la acción sts:SetSourceIdentity para permitir que una identidad establezca una identidad de origen.

A diferencia de sts:RoleSessionName, después de establecer la identidad de origen, el valor no se puede cambiar. Está presente en el contexto de solicitud para todas las acciones realizadas con el rol por la identidad de origen. El valor persiste en sesiones de rol posteriores cuando se utilizan las credenciales de sesión para asumir otro rol. Asumir un rol de otro se llama encadenamiento de roles.

Puede utilizar la condición de clave global aws:SourceIdentity para controlar aun más el acceso a los recursos de AWS basados en el valor de la identidad de origen en solicitudes posteriores.

La siguiente política de confianza de rol permite al usuario de IAM AdminUser asumir un rol en la cuenta 111122223333. También concede permiso a AdminUser para establecer una identidad de origen, siempre y cuando el conjunto de identidades de origen sea DiegoRamirez.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAdminUserAssumeRole", "Effect": "Allow", "Principal": {"AWS": " arn:aws:iam::111122223333:user/AdminUser"}, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": {"sts:SourceIdentity": "DiegoRamirez"} } } ] }

Para obtener más información acerca del uso de información de identidad de origen, consulte Monitorear y controlar las acciones realizadas con roles asumidos.

sts:TransitiveTagKeys

Funciona con operadores de cadena.

Utilice esta clave para comparar las claves de etiqueta de sesión transitiva de la solicitud con las especificadas en la política.

Disponibilidad - Esta clave está presente en la solicitud cuando se realiza una solicitud con credenciales de seguridad temporales. Estas incluyen credenciales creadas mediante cualquier operación assume-role o la GetFederationToken operación.

Cuando realiza una solicitud con credenciales de seguridad temporales, el contexto de solicitud incluye la clave de contexto aws:PrincipalTag. Esta clave incluye una lista de etiquetas de sesión, etiquetas de sesión transitivas y etiquetas de rol. Las etiquetas de sesión transitivas son etiquetas que persisten en todas las sesiones posteriores cuando se utilizan las credenciales de sesión para asumir otro rol. Asumir un rol de otro se llama encadenamiento de roles.

Puede utilizar esta clave de condición en una política para requerir que se establezcan etiquetas de sesión específicas como transitivas al asumir un rol o federar un usuario.