本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
了解字符宣告
當您呼叫 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" } }