Descripción de las notificaciones de tokens
Al llamar a la API GetWebIdentityToken, AWS Security Token Service devuelve un token web JSON (JWT) firmado que contiene un conjunto de notificaciones que representan la identidad de la entidad principal de IAM. Estos tokens cumplen con el RFC 7519
El JWT incluye notificaciones estándar de OpenID Connect (OIDC), como el tema (“sub”), la audiencia (“aud”) y el emisor (“iss”), para facilitar la interoperabilidad entre diferentes servicios externos. AWS STS rellena el token con notificaciones específicas de las identidades de AWS (como el ID de cuenta de AWS y las etiquetas de la entidad principal) y con notificaciones de contexto de la sesión (como los ARN de las instancias de EC2), cuando procede. Para agregar notificaciones personalizadas al token, debe transferirlas como etiquetas de solicitud a la API GetWebIdentityToken. Las notificaciones específicas de identidades de AWS, las notificaciones de contexto de sesión y las notificaciones personalizadas se anidan en el espacio de nombres “https://sts.amazonaws.com/” del token.
Consulte el ejemplo de token que aparece a continuación para ver una lista de las notificaciones incluidas en el token. Tenga en cuenta que es posible que todas estas notificaciones no estén presentes en un token al mismo tiempo.
{ "iss": "https://abc123-def456-ghi789-jkl012.tokens.sts.global.api.aws", "aud": "https://api.example.com", "sub": "arn:aws:iam::123456789012:role/DataProcessingRole", "iat": 1700000000, "exp": 1700000900, "jti": "xyz123-def456-ghi789-jkl012", "https://sts.amazonaws.com/": { "aws_account": "123456789012", "source_region": "us-east-1", "org_id": "o-abc1234567", "ou_path": "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/", "principal_tags": { "environment": "production", "team": "data-engineering", "cost-center": "engineering" }, "lambda_source_function_arn": "arn:aws:lambda:us-east-1:123456789012:function:process-data", "request_tags": { "job-id": "job-2024-001", "priority": "high", "data-classification": "sensitive" } } }
Notificaciones estándar
Las notificaciones estándar de OIDC presentes en los tokens facilitan la interoperabilidad con una amplia gama de servicios externos. Estas notificaciones se pueden validar utilizando la mayoría de las bibliotecas de JWT.
| Reclamación | Nombre | Descripción | Ejemplo de valor |
|---|---|---|---|
| iss | Emisor | URL del emisor específico de su cuenta. Los servicios externos validan esta notificación para asegurarse de que coincida con su emisor de confianza. | https://abc123-def456-ghi789-jkl012.tokens.sts.global.api.aws |
| aud | Público | Destinatario previsto del token especificado en la solicitud GetWebIdentityToken. | https://api.example.com |
| sub | Asunto | ARN de la entidad principal de IAM que solicitó el token. | arn:aws:iam::123456789012:role/DataProcessingRole |
| iat | Hora de emisión | Valor de NumericDate que identifica la hora en la que se emitió el JWT. | 1700000000 |
| exp | Expiration | Valor de NumericDate que identifica la hora de vencimiento a partir de la cual NO SE DEBE aceptar el JWT para su procesamiento. | 1700000900 |
| jti | ID del JWT | Identificador único de esta instancia de token. | xyz123-def456-ghi789-jkl012 |
Notificaciones personalizadas
Además de las notificaciones estándar de OIDC, AWS STS agrega notificaciones sobre la identidad y el contexto de la sesión, cuando corresponde. Para agregar sus propias notificaciones al token, debe transferirlas como etiquetas de solicitud. Las notificaciones personalizadas se anidan en el espacio de nombres https://sts.amazonaws.com/.
Notificaciones de identidades de AWS
Estas notificaciones proporcionan información detallada sobre su cuenta de AWS, la estructura de la organización y la entidad principal de IAM.
| Reclamación | Descripción | Se asigna a la clave de condición | Ejemplo de valor |
|---|---|---|---|
| aws_account | Su ID de cuenta de AWS | aws:PrincipalAccount | 123456789012 |
| source_region | Región de AWS en la que se solicitó el token. | aws:RequestedRegion | us-east-1 |
| org_id | ID de su instancia de AWS Organizations (si su cuenta forma parte de una organización). | aws:PrincipalOrgID | o-abc1234567 |
| ou_path | Ruta de su unidad organizativa (si corresponde). | aws:PrincipalOrgPaths | o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/ |
| principal_tags | Etiquetas adjuntas a la entidad principal de IAM o la sesión del rol asumido. Cuando se solicita un token en el que la entidad principal de IAM solicitante tiene tanto etiquetas de entidad principal como etiquetas de sesión, las etiquetas de sesión estarán presentes en el JWT. | aws:PrincipalTag/<clave-etiqueta> | {"environment": "production", "team": "data-engineering", "cost-center":"engineering"} |
Notificaciones de contexto de sesión
Estas notificaciones proporcionan información sobre el entorno de computación y la sesión en los que se originó la solicitud del token. AWS AWS STS incluye automáticamente estas notificaciones cuando corresponde, en función del contexto de la sesión de la entidad principal solicitante.
| Reclamación | Descripción | Se asigna a la clave de condición | Ejemplo de valor |
|---|---|---|---|
| original_session_exp | Cuándo vencerán las credenciales de la sesión de rol original (para los roles asumidos). | N/A | 2024-01-15T10:00:00Z |
| federated_provider | Nombre del proveedor de identidades de las sesiones federadas. | aws:FederatedProvider | arn:aws:iam::111122223333:oidc-provider/your_oidc_provider |
| identity_store_user_id | ID del usuario de IAM Identity Center. | identitystore:UserId | user-abc123def456 |
| identity_store_arn | ARN del almacén de identidades de IAM Identity Center. | identitystore:IdentityStoreArn | arn:aws:identitystore::123456789012:identitystore/d-abc1234567 |
| ec2_source_instance_arn | ARN de la instancia de EC2 solicitante. | ec2:SourceInstanceArn | arn:aws:ec2:us-east-1:123456789012:instance/i-abc123def456 |
| ec2_instance_source_vpc | ID de la VPC donde se entregaron las credenciales del rol de EC2. | aws:Ec2InstanceSourceVpc | vpc-abc123def456 |
| ec2_instance_source_private_ipv4 | Dirección IPv4 privada de la instancia de EC2. | aws:Ec2InstanceSourcePrivateIPv4 | 10.0.1.25 |
| ec2_role_delivery | Versión del servicio de metadatos de instancia. | ec2:RoleDelivery | 2 |
| source_identity | Identidad de origen establecida por la entidad principal. | aws:SourceIdentity | admin-user |
| lambda_source_function_arn | ARN de la función de Lambda que hace la llamada. | lambda:SourceFunctionArn | arn:aws:lambda:us-east-1:123456789012:function:my-function |
| glue_credential_issuing_service | Identificador del servicio AWS Glue para trabajos de Glue. | glue:CredentialIssuingService | glue.amazonaws.com |
Solicitud de etiquetas
Para agregar notificaciones personalizadas a los tokens, debe especificar etiquetas en la solicitud de la API GetWebIdentityToken. Estas notificaciones aparecen en el campo request_tags del token y le permiten transmitir información específica que los servicios externos pueden usar para tomar decisiones de autorización detalladas. Puede especificar hasta 50 etiquetas por solicitud.
Ejemplo de solicitud:
response = sts_client.get_web_identity_token( Audience=['https://api.example.com'], SigningAlgorithm='ES384' Tags=[ {'Key': 'team', 'Value': 'data-engineering'}, {'Key': 'cost-center', 'Value': 'analytics'}, {'Key': 'environment', 'Value': 'production'} ] )
Notificaciones resultantes en el token:
{ "request_tags": { "team": "data-engineering", "cost-center": "analytics", "environment": "production" } }