Análise de reivindicações de tokens
Quando você chama a API GetWebIdentityToken, o AWS Security Token Service retorna um JSON Web Token (JWT) assinado que contém um conjunto de reivindicações que representam a identidade da entidade principal do IAM. Esses tokens são compatíveis com a RFC 7519
O JWT inclui reivindicações padrão do OpenID Connect (OIDC), como subject (“sub”), audience (“aud”), issuer (“iss”), para facilitar a interoperabilidade entre diferentes serviços externos. O AWS STS preenche o token com reivindicações específicas de identidade da AWS (como as tags da entidade principal e do ID da conta da AWS) e reivindicações de contexto de sessão (como ARNs de instância do EC2), quando aplicável. Você também pode adicionar reivindicações personalizadas ao token transmitindo-as como tags de solicitação para a API GetWebIdentityToken. As reivindicações específicas de identidade da AWS, as reivindicações de contexto da sessão e as reivindicações personalizadas estão aninhadas no namespace “https://sts.amazonaws.com/” no token.
Consulte o exemplo de token abaixo para ver uma lista das reivindicações incluídas no token. Observe que todas essas reivindicações podem não estar presentes em um token ao mesmo tempo.
{ "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" } } }
Reivindicações padrão
As reivindicações padrão do OIDC presentes nos tokens facilitam a interoperabilidade com uma ampla gama de serviços externos. Essas reivindicações podem ser validadas usando a maioria das bibliotecas JWT.
| Reivindicar | Name (Nome) | Descrição | Valor de exemplo |
|---|---|---|---|
| iss | Emissor | URL do emissor específico da sua conta. Os serviços externos validam essa reivindicação para garantir que ela corresponda ao emissor confiável. | https://abc123-def456-ghi789-jkl012.tokens.sts.global.api.aws |
| aud | Público | O destinatário pretendido para o token especificado na solicitação GetWebIdentityToken. | https://api.example.com |
| sub | Assunto | O ARN da entidade principal do IAM que solicitou o token. | arn:aws:iam::123456789012:role/DataProcessingRole |
| iat | Emitido em | Valor NumericDate que identifica a hora em que o JWT foi emitido. | 1700000000 |
| exp | Expiração | Valor NumericDate que identifica o prazo de expiração, após o qual o JWT NÃO DEVE ser aceito para processamento. | 1700000900 |
| jti | ID do JWT | Identificador exclusivo dessa instância de token. | xyz123-def456-ghi789-jkl012 |
Reivindicações personalizadas
Além das reivindicações padrão do OIDC, o AWS STS adiciona reivindicações sobre a identidade e o contexto da sessão, quando aplicável. Você também pode adicionar suas próprias reivindicações ao token ao transmiti-las como tags de solicitação. As reivindicações personalizadas estão aninhadas no namespace https://sts.amazonaws.com/.
Reivindicações de identidade da AWS
Essas reivindicações fornecem informações detalhadas sobre sua conta da AWS, estrutura organizacional e entidade principal do IAM.
| Reivindicar | Descrição | Mapas para a chave de condição | Valor de exemplo |
|---|---|---|---|
| aws_account | O ID da sua conta da AWS | aws:PrincipalAccount | 123456789012 |
| source_region | A região da AWS em que o token foi solicitado | aws:RequestedRegion | us-east-1 |
| org_id | Seu ID do AWS Organizations (se a sua conta fizer parte de uma organização) | aws:PrincipalOrgID | o-abc1234567 |
| ou_path | O caminho da sua unidade organizacional (se aplicável) | aws:PrincipalOrgPaths | o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/ |
| principal_tags | Tags anexadas à entidade principal do IAM ou à sessão de perfil assumido. Quando um token é solicitado em que a entidade principal do IAM solicitante tem tags da entidade principal e de sessão, as tags de sessão estarão presentes no JWT. | aws:PrincipalTag/<tag-key> | {"environment": "production", "team": "data-engineering", "cost-center":"engineering"} |
Reivindicações de contexto de sessão
Essas reivindicações fornecem informações sobre o ambiente computacional e a sessão em que a solicitação de token foi originada. O AWS AWS STS inclui automaticamente essas reivindicações, quando aplicável, com base no contexto da sessão da entidade principal solicitante.
| Reivindicar | Descrição | Mapas para a chave de condição | Valor de exemplo |
|---|---|---|---|
| original_session_exp | Quando as credenciais da sessão de perfil original expirarão (para perfis assumidos) | N/D | 2024-01-15T10:00:00Z |
| federated_provider | O nome do provedor de identidade para sessões federadas | aws:FederatedProvider | arn:aws:iam::111122223333:oidc-provider/your_oidc_provider |
| identity_store_user_id | ID do usuário do Centro de Identidade do IAM | identitystore:UserId | user-abc123def456 |
| identity_store_arn | ARN do armazenamento de identidades do Centro de Identidade do IAM | identitystore:IdentityStoreArn | arn:aws:identitystore::123456789012:identitystore/d-abc1234567 |
| ec2_source_instance_arn | ARN da instância solicitante do EC2 | ec2:SourceInstanceArn | arn:aws:ec2:us-east-1:123456789012:instance/i-abc123def456 |
| ec2_instance_source_vpc | ID da VPC em que as credenciais de perfil do EC2 foram entregues | aws:Ec2InstanceSourceVpc | vpc-abc123def456 |
| ec2_instance_source_private_ipv4 | Endereço IPv4 privado da instância do EC2 | aws:Ec2InstanceSourcePrivateIPv4 | 10.0.1.25 |
| ec2_role_delivery | Versão do serviço de metadados da instância | ec2:RoleDelivery | 2 |
| source_identity | Identidade de origem definida pela entidade principal | aws:SourceIdentity | admin-user |
| lambda_source_function_arn | O ARN da função do Lambda chamadora | lambda:SourceFunctionArn | arn:aws:lambda:us-east-1:123456789012:function:my-function |
| glue_credential_issuing_service | Identificador do serviço do AWS Glue para trabalhos do Glue | glue:CredentialIssuingService | glue.amazonaws.com |
Tags da solicitação
Você pode adicionar reivindicações personalizadas aos tokens especificando tags na solicitação da API GetWebIdentityToken. Essas reivindicações aparecem no campo request_tags no token e permitem que você transmita informações específicas que os serviços externos podem usar para decisões de autorização refinadas. Você pode especificar até 50 tags por solicitação.
Exemplo de solicitação:
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'} ] )
Reivindicações resultantes no token:
{ "request_tags": { "team": "data-engineering", "cost-center": "analytics", "environment": "production" } }