Descripción de las notificaciones de tokens - AWS Identity and Access Management

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. Comprender la estructura y el contenido de estos tokens lo ayuda a implementar flujos de autenticación seguros, configurar las validaciones de notificaciones adecuadas en los servicios externos y utilizar de forma eficaz las notificaciones personalizadas para el control de acceso detallado.

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