

# トークンクレームについて
<a name="id_roles_providers_outbound_token_claims"></a>

[GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) API を呼び出すと、AWS Security Token Service によって、IAM プリンシパルのアイデンティティを表す一連のクレームを含む、署名付きの JSON ウェブトークン (JWT) が返されます。これらのトークンは [RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519) に準拠しています。これらのトークンの構造と内容を理解すれば、安全な認証フローを実装し、外部サービスに適切なクレーム検証を設定し、カスタムクレームを効果的に使用して、アクセスコントロールをきめ細かく行えるようになります。

JWT には、さまざまな外部サービス間の相互運用性を促す標準の OpenID Connect (OIDC) クレーム (サブジェクト (「sub」)、対象者 (「aud」)、発行者 (「iss」) など) が含まれています。AWS STS は、AWS ID に固有のクレーム (AWS アカウント ID やプリンシパルタグなど) とセッションコンテキストのクレーム (EC2 インスタンス ARN など) を必要に応じてトークンに入力します。またカスタムのクレームを [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) API にリクエストタグとして渡すことで、トークンに追加することもできます。AWS ID に固有のクレームとセッションコンテキストのクレーム、そしてカスタムクレームは、トークンの名前空間「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"
    }
  }
}
```

## 標準のクレーム
<a name="standard-claims"></a>

トークン内にある標準の OIDC クレームは、幅広い外部サービスとの相互運用性を促します。これらのクレームは、ほとんどの JWT ライブラリを使用して検証できます。


| Claim | 名前 | 説明 | 値の例 | 
| --- | --- | --- | --- | 
| iss | Issuer  | お使いのアカウントに固有の発行者 URL です。外部サービスは、このクレームを検証して信頼できる発行者と一致することを確認します。 | https://abc123–def456–ghi789–jkl012.tokens.sts.global.api.aws | 
| aud | オーディエンス | [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) リクエストで指定された、そのトークンが対象とする受取人です。 | https://api.example.com | 
| sub | 件名 | トークンをリクエストした IAM プリンシパルの ARN です。 | arn:aws:iam::123456789012:role/DataProcessingRole | 
| iat | 発行日 | JWT が発行された時刻を特定する NumericDate 値です。 | 1700000000 | 
| exp | 有効期限 | それ以降は JWT を処理してはならない有効期限を特定する NumericDate 値です。 | 1700000900 | 
| jti | JWT ID | このトークンインスタンスの一意の識別子です。 | xyz123–def456–ghi789–jkl012 | 

## カスタムのクレーム
<a name="custom-claims"></a>

AWS STS は、標準の OIDC クレームに加えて、アイデンティティとセッションコンテキストに関するクレームを必要に応じて追加します。また、ユーザー独自のクレームを、リクエストタグとして渡すことでトークンに追加することもできます。カスタムクレームは名前空間 https://sts.amazonaws.com/ の下にネストされます。

### AWS ID クレーム
<a name="aws-identity-claims"></a>

これらのクレームは、AWS アカウント、組織構造、IAM プリンシパルに関する詳細情報を提供します。


| Claim | 説明 | 条件キーへのマップ | 値の例 | 
| --- | --- | --- | --- | 
| aws\$1account | あなたの AWS アカウント ID。 | [aws:PrincipalAccount](reference_policies_condition-keys.md#condition-keys-principalaccount) | 123456789012 | 
| source\$1region | トークンがリクエストされた AWS リージョン | [aws:RequestedRegion](reference_policies_condition-keys.md#condition-keys-requestedregion) | us–east–1 | 
| org\$1id | AWS Organizations の ID (アカウントが特定の組織に含まれる場合) | [aws:PrincipalOrgID](reference_policies_condition-keys.md#condition-keys-principalorgid) | o–abc1234567 | 
| ou\$1path | 組織単位のパス (該当する場合) | [aws:PrincipalOrgPaths](reference_policies_condition-keys.md#condition-keys-principalorgpaths) | o–a1b2c3d4e5/r–ab12/ou–ab12–11111111/ou–ab12–22222222/ | 
| principal\$1tags | IAM プリンシパルまたは引き受けられたロールセッションにアタッチされたタグ。リクエスト元の IAM プリンシパルにプリンシパルタグとセッションタグの両方がある場合にトークンがリクエストされると、セッションタグは JWT に含まれます。 | [aws:PrincipalTag/<tag-key>](reference_policies_condition-keys.md#condition-keys-principaltag) | \$1"environment": "production", "team": "data–engineering", "cost–center":"engineering"\$1 | 

### セッションコンテキストクレーム
<a name="session-context-claims"></a>

これらのクレームは、トークンリクエストの送信元のコンピューティング環境とセッションに関する情報を提供します。AWS STS は、リクエストしたプリンシパルのセッションコンテキストに基づいて、これらのクレームを必要に応じて自動的に含めます。


| Claim | 説明 | 条件キーへのマップ | 値の例 | 
| --- | --- | --- | --- | 
| original\$1session\$1exp | 元のロールのセッション認証情報の有効期限 (引き受けられたロールの場合) | 該当なし | 2024–01–15T10:00:00Z | 
| federated\$1provider | フェデレーションセッションの ID プロバイダー名 | [aws:FederatedProvider](reference_policies_condition-keys.md#condition-keys-federatedprovider) | arn:aws:iam::111122223333:oidc–provider/your\$1oidc\$1provider | 
| identity\$1store\$1user\$1id | IAM アイデンティティセンターユーザー | [identitystore:UserId](reference_policies_condition-keys.md#condition-keys-identity-store-user-id) | user–abc123def456 | 
| identity\$1store\$1arn | アイデンティティセンター ID ストアの ARN | [identitystore:IdentityStoreArn](https://docs.aws.amazon.com/singlesignon/latest/userguide/condition-context-keys-sts-idc.html#condition-keys-identity-store-arn) | arn:aws:identitystore::123456789012:identitystore/d–abc1234567 | 
| ec2\$1source\$1instance\$1arn | リクエスト元の EC2 インスタンスの ARN | [ec2:SourceInstanceArn](reference_policies_condition-keys.md#condition-keys-ec2-source-instance-arn) | arn:aws:ec2:us–east–1:123456789012:instance/i–abc123def456 | 
| ec2\$1instance\$1source\$1vpc | EC2 ロールの認証情報が配信された VPC の ID | [aws:Ec2InstanceSourceVpc](reference_policies_condition-keys.md#condition-keys-ec2instancesourcevpc) | vpc–abc123def456 | 
| ec2\$1instance\$1source\$1private\$1ipv4 | EC2 インスタンスのプライベート IPv4 アドレス。 | [aws:Ec2InstanceSourcePrivateIPv4](reference_policies_condition-keys.md#condition-keys-ec2instancesourceprivateip4) | 10.0.1.25 | 
| ec2\$1role\$1delivery | インスタンスメタデータサービスのバージョン | [ec2:RoleDelivery](reference_policies_condition-keys.md#condition-keys-ec2-role-delivery) | 2 | 
| source\$1identity | プリンシパルが設定したソース ID | [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) | admin–user | 
| lambda\$1source\$1function\$1arn | 呼び出し元の Lambda 関数の ARN | [lambda:SourceFunctionArn](reference_policies_condition-keys.md#condition-keys-lambda-source-function-arn) | arn:aws:lambda:us–east–1:123456789012:function:my–function | 
| glue\$1credential\$1issuing\$1service | Glue ジョブの AWS Glue サービス識別子 | [glue:CredentialIssuingService](reference_policies_condition-keys.md#condition-keys-glue-credential-issuing) | glue.amazonaws.com | 

### リクエストタグ
<a name="request-tags"></a>

カスタムのクレームは、[GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) API リクエストでタグを指定することで、トークンに追加できます。これらのクレームはトークンの request\$1tags フィールドの下に表示され、承認の判断をきめ細かく行うための特定の情報を、外部サービスに渡すことを可能にします。リクエストごとに最大 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"
  }
}
```