

# AWS リージョン で AWS STS を管理する
<a name="id_credentials_temp_enable-regions"></a>

リージョンエンドポイントは、AWS Web Services の特定のリージョン内のエントリポイントの URL です。 AWS では、レイテンシーの短縮、冗長性の構築、セッショントークンの有効性の向上のために、グローバルエンドポイントではなく、リージョンの AWS Security Token Service (AWS STS) エンドポイントを使用することをお勧めします。グローバル (レガシー) AWS STS エンドポイント `https://sts.amazonaws.com` は高い可用性を備えていて、単一の AWS リージョン、米国東部 (バージニア北部）、および他のエンドポイントと同様にホストされますが、他のリージョンのエンドポイントへの自動フェイルオーバーは提供されません。
+ **レイテンシーの低減** – お客様のサービスやアプリケーションに地理的に近いエンドポイントに対して AWS STS の呼び出しを実行することにより、より低いレイテンシーとより高速な応答時間で AWS STS サービスにアクセスできます。
+ **冗長性の構築** – 予測可能な範囲に影響を封じ込めることによって、ワークロード内の障害の影響を限られた数のコンポーネントに限定できます。リージョン AWS STS エンドポイントを使用すると、コンポーネントの範囲をセッショントークンの範囲に合わせることができます。この信頼性の柱の詳細については、「AWS Well-Architected Framework」の「[障害部分を切り離してワークロードを保護する](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/use-fault-isolation-to-protect-your-workload.html)」を参照してください。
+ **セッショントークンの有効性を向上させる** – リージョンの AWS STS エンドポイントからのセッショントークンはすべての AWS リージョン で有効です。グローバル STS エンドポイントからのセッショントークンは、デフォルトで有効になっている AWS リージョン でのみ有効です。アカウントで新しいリージョンを有効にする場合、リージョン別 AWS STS エンドポイントからのセッショントークンを使用できます。グローバルエンドポイントの使用を選択した場合、グローバルエンドポイントに対する AWS STS セッショントークンのリージョンの互換性を変更する必要があります。これにより、トークンはすべての AWS リージョン で有効になります。

AWS STS リージョンのリストとエンドポイントの詳細については、「[AWS STS のリージョンとエンドポイント](id_credentials_temp_region-endpoints.md)」を参照してください。

**注記**  
回復性とパフォーマンスを向上させるために、AWS は、[デフォルトで有効](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)になっているリージョンの AWS Security Token Service (AWS STS) グローバルエンドポイント (`https://sts.amazonaws.com`) を変更しました。グローバルエンドポイントへの AWS STS リクエストは、ワークロードと同じ AWS リージョン で自動的に処理されます。これらの変更はオプトインリージョンにはデプロイされません。適切な AWS STS リージョンエンドポイントを使用することをお勧めします。詳細については、「[AWS STS グローバルエンドポイントの変更](id_credentials_temp_region-endpoints.md#reference_sts_global_endpoint_changes)」を参照してください。

**Topics**
+ [AWS リージョン での AWS STS のアクティブ化と非アクティブ化](#sts-regions-activate-deactivate)
+ [AWS STS リージョンを使用するコードの記述](#id_credentials_temp_enable-regions_writing_code)
+ [グローバルエンドポイントセッショントークンの管理](#sts-regions-manage-tokens)

## AWS リージョン での AWS STS のアクティブ化と非アクティブ化
<a name="sts-regions-activate-deactivate"></a>

リージョンに対して AWS STS エンドポイントを有効にすると、AWS STS は、AWS STS リクエストを行うアカウントのユーザーとロールに一時的な認証情報を発行できます。その後、これらの認証情報は、デフォルトで有効であるリージョン、または手動で有効にされているリージョンで使用できます。デフォルトで有効になっているリージョンでは、一時認証情報が生成されるアカウントでリージョン AWS STS エンドポイントをアクティブ化する必要があります。リクエストを行うときに、ユーザーが同じアカウントにサインインしたかまたは別のアカウントにサインインしたかは関係ありません。手動で有効化されたリージョンを使用して別の AWS アカウント のロールの一時的な認証情報をリクエストする場合、ターゲットアカウント (ロールを含むアカウント) は、AWS STS オペレーションのためにそのリージョン有効にする必要があります。これで一時的なセキュリティ認証情報が正しく生成されます。

例えば、アカウント A 内のあるユーザーが [AWS STS リージョンのエンドポイント](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_region-endpoints.html) `https://sts.ap-southeast-3.amazonaws.com` に `sts:AssumeRole` API リクエストを送信するとします。このリクエストは、アカウント B にある `Developer` という名前のロールの一時的な認証情報を求めるものです。これはアカウント B 内のエンティティの認証情報を作成するリクエストであるため、アカウント B が `ap-southeast-3` リージョンを有効にする必要があります。アカウント A (または他のアカウント) のユーザーは、`ap-southeast-3` AWS STS エンドポイントを呼び出して、自分のアカウントでこのリージョンがアクティブ化されているかどうかに関わらず、アカウント B の認証情報をリクエストできます。詳細については、「[Enable or disable AWS リージョン in your account](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)」を参照してください。

**注記**  
アクティブなリージョンはそのアカウントで一時的な認証情報を使用するすべてのユーザーが利用できます。どの IAM ユーザーまたはロールがリージョンにアクセスできるかを制御するには、アクセス許可ポリシーで、`aws:RequestedRegion` 条件キーを使用します。

**デフォルトで有効なリージョンで AWS STS をアクティブ化または非アクティブ化するには (コンソール)**

1. IAM 管理タスクを実行するアクセス許可があるルートユーザーまたはユーザーとしてサインインします。

1. [IAM コンソール](https://console.aws.amazon.com/iam/home?#home)を開き、ナビゲーションペインで [[https://console.aws.amazon.com/iam/home?#account_settings](https://console.aws.amazon.com/iam/home?#account_settings)] を選択します。

1. **[Security Token Service (STS)]** セクションの **[Endpoints]** (エンドポイント) で、設定するリージョンを見つけ、**[STS status]** (STS ステータス) 列で **[Active]** (アクティブ) または **[Inactive]** (非アクティブ) を選択します。

1. 表示されたダイアログボックスで、**[Activate]** (有効化) または **[Deactivate]** (無効化) を選択します。

有効にする必要があるリージョンの場合、リージョンを有効にすると AWS STS が自動的にアクティブになります。リージョンを有効にすると、AWS STS はそのリージョンに対して常にアクティブになり、非アクティブ化することはできません。デフォルトで無効になっているリージョンを有効にする方法については、「AWS アカウント管理 リファレンスガイド」の「[アカウントで使用できる AWS リージョン の指定](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)」を参照してください。

## AWS STS リージョンを使用するコードの記述
<a name="id_credentials_temp_enable-regions_writing_code"></a>

リージョンをアクティブ化すると、そのリージョンに AWS STS API 呼び出しを割り振ることができます。次の Java コードスニペットは、欧州 (ミラノ)(eu-south-1) リージョンにリクエストを送信するように `AWSSecurityTokenService` オブジェクトを設定する方法を示しています。

```
EndpointConfiguration regionEndpointConfig = new EndpointConfiguration("https://sts.eu-south-1.amazonaws.com", "eu-south-1");
AWSSecurityTokenService stsRegionalClient = AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(credentials)
.withEndpointConfiguration(regionEndpointConfig)
.build();
```

AWS STS では、リージョンのエンドポイントへの呼び出しを推奨します。手動でリージョンを有効にする方法については、「AWS アカウント管理 リファレンスガイド」の「[アカウントで使用できる AWS リージョン の指定](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)」を参照してください。

この例では、最初の行は `regionEndpointConfig` という `EndpointConfiguration` オブジェクトをインスタンス化し、エンドポイントの URL と AWS リージョン をパラメータとして渡します。

AWS SDK の環境変数を使用して AWS STS のリージョンエンドポイントを設定する方法については、「AWS SDK とツールリファレンスガイド」の「[AWS STS リージョンエンドポイント](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html)」を参照してください。

他のすべての言語とプログラミング環境の組み合わせについては、「[関連する SDK のドキュメント](https://aws.amazon.com/tools/)」を参照してください。

## グローバルエンドポイントセッショントークンの管理
<a name="sts-regions-manage-tokens"></a>

ほとんどの AWS リージョン はデフォルトですべての AWS のサービス のオペレーションに有効になっています。これらのリージョンは、AWS STS で使用できるように自動的にアクティブ化されます。アジアパシフィック (香港) など一部のリージョンは、手動で有効にする必要があります。AWS リージョン を有効および無効にする方法については、「AWS アカウント管理 リファレンスガイド」の「[アカウントで使用できる AWS リージョン の指定](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)」を参照してください。これらの AWS リージョンを有効にすると、AWS STS で使用できるように、自動的にアクティブ化されます。無効になっているリージョンの AWS STS エンドポイントをアクティブ化することはできません。すべての AWS リージョン で有効なセッショントークンには、デフォルトで有効になっているリージョンで有効なトークンを超える文字が含まれています。この設定を変更すると、一時的にトークンを保存する既存のシステムに影響する可能性があります。

この設定は、AWS マネジメントコンソール、AWS CLI、または AWS API を使用して変更できます。

**グローバルエンドポイント (コンソール) に対するセッショントークンの リージョンの互換性を変更するには**

1. IAM 管理タスクを実行するアクセス許可があるルートユーザーまたはユーザーとしてサインインします。セッショントークンの互換性を変更するには、`iam:SetSecurityTokenServicePreferences` アクションを許可するポリシーがある必要があります。

1. [[IAM コンソール]](https://console.aws.amazon.com/iam/home?#home) を開きます。ナビゲーションペインで **[アカウント設定]** を選択します。

1. **[Security Token Service (STS)]** セクションの **[Session Tokens from the STS endpoints]** (STS エンドポイントからのセッショントークン)。**[Global endpoint]** (グローバルエンドポイント) は `Valid only in AWS リージョン enabled by default` を示します。[**Change**] を選択します。

1. **[Change region compatibility]** (リージョンの互換性を変更) ダイアログボックスで、**[All AWS リージョン]** を選択します。次に、**変更の保存**を選択します。
**注記**  
すべての AWS リージョン で有効なセッショントークンには、デフォルトで有効になっているリージョンで有効なトークンを超える文字が含まれています。この設定を変更すると、一時的にトークンを保存する既存のシステムに影響する可能性があります。

**グローバルエンドポイント (AWS CLI) に対するセッショントークンの リージョンの互換性を変更するには**  
セッショントークンのバージョンを設定します。バージョン 1 トークンは、デフォルトで利用できる AWS リージョン でのみ有効です。これらのトークンは、アジアパシフィック (香港) など、手動で有効になっているリージョンでは動作しません。バージョン 2 のトークンはすべてのリージョンで有効です。ただし、バージョン 2 トークンにはさらに多くの文字が含まれており、一時的にトークンを保存するシステムに影響する可能性があります。
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/set-security-token-service-preferences.html](https://docs.aws.amazon.com/cli/latest/reference/iam/set-security-token-service-preferences.html)

**グローバルエンドポイント (AWS API) に対するセッショントークンの リージョンの互換性を変更するには**  
セッショントークンのバージョンを設定します。バージョン 1 トークンは、デフォルトで利用できる AWS リージョン でのみ有効です。これらのトークンは、アジアパシフィック (香港) など、手動で有効になっているリージョンでは動作しません。バージョン 2 のトークンはすべてのリージョンで有効です。ただし、バージョン 2 トークンにはさらに多くの文字が含まれており、一時的にトークンを保存するシステムに影響する可能性があります。
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetSecurityTokenServicePreferences.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetSecurityTokenServicePreferences.html) 