了解字符宣告 - AWS Identity and Access Management

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

了解字符宣告

當您呼叫 GetWebIdentityToken API 時, AWS Security Token Service 會傳回已簽署的 JSON Web Token (JWT),其中包含一組代表 IAM 主體身分的宣告。這些字符符合 RFC 7519。了解這些字符的結構和內容可協助您實作安全身分驗證流程、在外部服務中設定適當的宣告驗證,以及有效地使用自訂宣告進行精細存取控制。

JWT 包含標準 OpenID Connect (OIDC) 宣告,例如主體 ("sub")、對象 ("aud")、發行者 ("iss"),以促進不同外部服務的互通性。 會在適用時將 AWS 身分特定宣告 (例如 AWS 帳戶 ID 和主體標籤) 和工作階段內容宣告 (例如 EC2 執行個體 ARNs) AWS STS 填入字符。您也可以將自訂宣告做為請求標籤傳遞至 GetWebIdentityToken API,藉此將自訂宣告新增至權杖。 AWS 身分特定的宣告、工作階段內容宣告和自訂宣告會巢狀在權杖中的「https://sts.amazonaws.com/」命名空間下。

如需字符中包含的宣告清單,請參閱以下範例字符。請注意,所有這些宣告可能不會同時出現在字符中。

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

標準宣告

字符中存在的標準 OIDC 宣告可促進與各種外部服務的互通性。這些宣告可以使用大多數 JWT 程式庫進行驗證。

取得 名稱 描述 範例值
iss 發行者 您的帳戶特定發行者 URL。外部服務會驗證此宣告,以確保其符合其信任的發行者。 https://abc123-def456-ghi789-jkl012.tokens.sts.global.api.aws
aud 目標對象 GetWebIdentityToken 請求中指定字符的預期收件人。 https://api.example.com
sub 主旨 請求權杖之 IAM 主體的 ARN。 arn:aws:iam::123456789012:role/DataProcessingRole
iat 在 發行 識別發出 JWT 時間的 NumericDate 值。 1700000000
exp Expiration 識別過期時間的 NumericDate 值,在此時間之後,JWT 不得接受處理。 1700000900
jti JWT ID 此字符執行個體的唯一識別符。 xyz123-def456-ghi789-jkl012

自訂宣告

除了標準 OIDC 宣告之外, 還會在適用時 AWS STS 新增有關身分和工作階段內容的宣告。您也可以將自己的宣告做為請求標籤傳遞至權杖。自訂宣告會巢狀在 https://sts.amazonaws.com/ 命名空間下。

AWS 身分宣告

這些宣告提供有關 AWS 您的帳戶、組織結構和 IAM 主體的詳細資訊。

取得 Description 條件索引鍵的映射 範例值
aws_account AWS 您的帳戶 ID aws:PrincipalAccount 123456789012
source_region 請求字符 AWS 的區域 aws:RequestedRegion us-east-1
org_id 您的 AWS Organizations ID (如果您的帳戶是組織的一部分) aws:PrincipalOrgID o-abc1234567
ou_path 您的組織單位路徑 (如適用) aws:PrincipalOrgPaths o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/
principal_tags 連接至 IAM 主體或擔任角色工作階段的標籤。當請求的 IAM 主體同時具有委託人標籤和工作階段標籤時,請求權杖時,工作階段標籤會出現在 JWT 中。 aws:PrincipalTag/<tag-key> {"環境": "生產"、"團隊": "資料工程"、"成本中心":"工程"}

工作階段內容宣告

這些宣告提供有關字符請求發起的運算環境和工作階段的資訊。根據請求主體的工作階段內容,當適用時 AWS AWS STS , 會自動包含這些宣告。

取得 Description 條件索引鍵的映射 範例值
original_session_exp 原始角色工作階段憑證何時過期 (適用於擔任的角色) N/A 2024-01-15T10:00:00Z
federated_provider 聯合工作階段的身分提供者名稱 aws:FederatedProvider arn:aws:iam::111122223333:oidc-provider/your_oidc_provider
identity_store_user_id IAM Identity Center 使用者 ID identitystore:UserId user-abc123def456
identity_store_arn Identity Center 身分存放區的 ARN identitystore:IdentityStoreArn arn:aws:identitystore::123456789012:identitystore/d-abc1234567
ec2_source_instance_arn 請求 EC2 執行個體的 ARN ec2:SourceInstanceArn arn:aws:ec2:us-east-1:123456789012:instance/i-abc123def456
ec2_instance_source_vpc 交付 EC2 角色登入資料的 VPC ID aws:Ec2InstanceSourceVpc vpc-abc123def456
ec2_instance_source_private_ipv4 EC2 執行個體的私有 IPv4 地址 aws:Ec2InstanceSourcePrivateIPv4 10.0.1.25
ec2_role_delivery 執行個體中繼資料服務版本 ec2:RoleDelivery 2
source_identity 委託人設定的來源身分 aws:SourceIdentity admin-user
lambda_source_function_arn 呼叫 Lambda 函數的 ARN lambda:SourceFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function
glue_credential_issuing_service AWS Glue 任務的 Glue 服務識別符 glue:CredentialIssuingService glue.amazonaws.com

請求標籤

您可以在 GetWebIdentityToken API 請求中指定標籤,將自訂宣告新增至權杖。這些宣告會出現在字符的 request_tags 欄位下,可讓您傳遞外部服務可用於精細授權決策的特定資訊。每個請求最多可以指定 50 個標籤。

範例請求:

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'} ] )

權杖中產生的宣告:

{ "request_tags": { "team": "data-engineering", "cost-center": "analytics", "environment": "production" } }