Análise de reivindicações de tokens - AWS Identity and Access Management

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. Compreender a estrutura e o conteúdo desses tokens ajuda você a implementar fluxos de autenticação seguros, configurar validações de reivindicações apropriadas em serviços externos e usar com eficácia reivindicações personalizadas para um controle de acesso refinado.

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