AWS リージョンでの AWS STS の管理
デフォルトでは、AWS Security Token Service (AWS STS) は、グローバルなサービスと使用することができ、AWS STS リクエストはすべて、https://sts.amazonaws.com
の単一エンドポイントに送信されます。AWS では、レイテンシーの低減、冗長性の構築、セッショントークンの有効性の強化のために、グローバルエンドポイントではなく、リージョンの AWS STS エンドポイントを使用することを推奨しています。
-
レイテンシーの低減 – お客様のサービスやアプリケーションに地理的に近いエンドポイントに対して AWS STS の呼び出しを実行することにより、より低いレイテンシーとより高速な応答時間で AWS STS サービスにアクセスできます。
-
冗長性の構築 – AWS STS API 呼び出しを他のリージョンに切り替えるアプリケーションにコードを追加できます。これにより、最初のリージョンが応答を停止した場合、アプリケーションは動作を続けます。この冗長性は自動的に得られるものではなく、その機能をコードに組み込む必要があります。
-
セッショントークンの有効性を向上する – リージョンの AWS STS エンドポイントからのセッショントークンはすべての AWS リージョンで有効です。グローバル STS エンドポイントからのセッショントークンは、デフォルトで有効になっている AWS リージョンでのみ有効です。アカウントで新しいリージョンを有効にする場合、リージョン別 STS エンドポイントからのセッショントークンを使用できます。グローバルエンドポイントの使用を選択した場合、グローバルエンドポイントに対する STS セッショントークンのリージョンの互換性を変更する必要があります。これにより、トークンはすべての AWS リージョンで有効になります。
グローバルエンドポイントセッショントークンの管理
ほとんどの AWS リージョンはデフォルトですべての AWS のサービスのオペレーションに有効になっています。これらのリージョンは、AWS STS で使用できるように自動的にアクティブ化されます。アジアパシフィック (香港) など一部のリージョンは、手動で有効にする必要があります。AWS リージョンの有効化と無効化の詳細については、一般的なリファレンスの 「Managing AWS Regions (AWS リージョンの管理)」 を参照してください。これらの AWS リージョンを有効にすると、AWS STS で使用できるように、自動的にアクティブ化されます。無効になっているリージョンの STS エンドポイントをアクティブ化することはできません。すべての AWS リージョンで有効なトークンには、デフォルトで有効になっているリージョンで有効なトークンを超える文字が含まれています。この設定を変更すると、一時的にトークンを保存する既存のシステムに影響する可能性があります。
この設定は、AWS Management Console、AWS CLI、または AWS API を使用して変更できます。
グローバルエンドポイント (コンソール) に対するセッショントークンの リージョンの互換性を変更するには
-
IAM 管理タスクを実行するアクセス許可があるルートユーザーまたは IAM ユーザーとしてサインインします。セッショントークンの互換性を変更するには、
iam:SetSecurityTokenServicePreferences
アクションを許可するポリシーがある必要があります。 -
[IAM コンソール
] を開きます。ナビゲーションペインで [アカウント設定] を選択します。 -
必要に応じて、[Security Token Service(STS) (セキュリティトークンサービス (STS))] セクションを展開します。[グローバルエンドポイント] の横にある最初のテーブルでは、[Region compatibility of session tokens (セッショントークンのリージョンの互換性)] 列は
Valid only in AWS Regions enabled by default
を示します。[Change] を選択します。 -
[Change region compatibility of session tokens for global endpoint (グローバルエンドポイントに対するセッショントークンのリージョンの互換性を変更する)] ダイアログボックスで、[Valid in all AWS Regions (すべての リージョンで有効)] を選択します。次に、[Save changes] (変更の保存) を選択します。
注記 すべての AWS リージョンで有効なトークンには、デフォルトで有効になっているリージョンで有効なトークンを超える文字が含まれています。この設定を変更すると、一時的にトークンを保存する既存のシステムに影響する可能性があります。
グローバルエンドポイント (AWS CLI) に対するセッショントークンの リージョンの互換性を変更するには
セッショントークンのバージョンを設定します。バージョン 1 トークンは、デフォルトで利用できる AWS リージョンでのみ有効です。これらのトークンは、アジアパシフィック (香港) など、手動で有効になっているリージョンでは動作しません。バージョン 2 のトークンはすべてのリージョンで有効です。ただし、バージョン 2 トークンにはさらに多くの文字が含まれており、一時的にトークンを保存するシステムに影響する可能性があります。
グローバルエンドポイント (AWS API) に対するセッショントークンの リージョンの互換性を変更するには
セッショントークンのバージョンを設定します。バージョン 1 トークンは、デフォルトで利用できる AWS リージョンでのみ有効です。これらのトークンは、アジアパシフィック (香港) など、手動で有効になっているリージョンでは動作しません。バージョン 2 のトークンはすべてのリージョンで有効です。ただし、バージョン 2 トークンにはさらに多くの文字が含まれており、一時的にトークンを保存するシステムに影響する可能性があります。
AWS リージョンでの AWS STS のアクティブ化と非アクティブ化
リージョンに対して STS を有効にすると、AWS STS は、AWS STS リクエストを行うアカウントのユーザーとロールに一時的な認証情報を発行できます。その後、これらの認証情報は、デフォルトで有効であるリージョン、または手動で有効にされているリージョンで使用できます。リージョンは、一時的な認証情報が生成されるアカウントでアクティブ化する必要があります。リクエストを行うときに、ユーザーが同じアカウントにサインインしたかまたは別のアカウントにサインインしたかは関係ありません。
たとえば、アカウント A 内のあるユーザーが STS リージョンのエンドポイント https://sts.us-west-2.amazonaws.com
に sts:AssumeRole
API リクエストを送信するとします。このリクエストは、アカウント B にある Developer
という名前のロール用の一時的な認証情報を求めるものです。これはアカウント B 内のエンティティの認証情報を作成するリクエストであるため、アカウント B が us-west-2
リージョンをアクティブ化する必要があります。アカウント A (または他のアカウント) のユーザーは、us-west-2
エンドポイントを呼び出して、自分のアカウントでこのリージョンがアクティブ化されているかどうかに関わらず、アカウント B の認証情報をリクエストできます。
アクティブなリージョンはそのアカウントで一時的な認証情報を使用するすべてのユーザーが利用できます。どの IAM ユーザーまたはロールがリージョンにアクセスできるかを制御するには、アクセス許可ポリシーで、aws:RequestedRegion
条件キーを使用します。
デフォルトで有効なリージョンで AWS STS をアクティブ化または非アクティブ化するには (コンソール)
-
IAM 管理タスクを実行するアクセス許可があるルートユーザーまたは IAM ユーザーとしてサインインします。
-
必要に応じて、[Security Token Service (STS)] を展開し、有効化するリージョンを見つけて、[有効化] または [無効化] をクリックします。有効にする必要があるリージョンの場合、リージョンを有効にすると STS が自動的にアクティブになります。リージョンを有効にすると、AWS STS はそのリージョンに対して常にアクティブになり、非アクティブ化することはできません。手動でリージョンを有効にする方法については、AWS 一般的なレファレンス の「AWS リージョンの管理」を参照してください。
AWS STS リージョンを使用するコードの記述
リージョンをアクティブ化すると、そのリージョンに AWS STS API 呼び出しを割り振ることができます。次の Java コードスニペットは、 (eu-west-1) リージョンにリクエストを送信するように AWSSecurityTokenService
オブジェクトを設定する方法を示しています。
EndpointConfiguration regionEndpointConfig = new EndpointConfiguration("https://sts.eu-west-1.amazonaws.com", "eu-west-1"); AWSSecurityTokenService stsRegionalClient = AWSSecurityTokenServiceClientBuilder.standard() .withCredentials(credentials) .withEndpointConfiguration(regionEndpointConfig) .build();
AWS STS では、リージョンのエンドポイントへの呼び出しを推奨します。手動でリージョンを有効にする方法については、AWS 一般的なリファレンス の「AWS リージョンの管理」を参照してください。
この例では、最初の行は regionEndpointConfig
という EndpointConfiguration
オブジェクトをインスタンス化し、エンドポイントの URL とリージョンをパラメータとして渡します。
他のすべての言語とプログラミング環境の組み合わせについては、「関連する SDK のドキュメント
リージョンとエンドポイント
次の表に、リージョンとそのエンドポイントを一覧表示します。ここには、デフォルトでアクティブ化されるものや、ユーザーがアクティブ化または非アクティブ化できるものが示されています。
リージョン名 | エンドポイント | デフォルトでアクティブ | 手動でアクティブ化/非アクティブ化 |
---|---|---|---|
--グローバル-- | st.amazonaws.com | ||
米国東部 (オハイオ) | sts.us-east-2.amazonaws.com | ||
米国東部 (バージニア北部) | sts.us-east-1.amazonaws.com | ||
米国西部 (北カリフォルニア) | sts.us-west-1.amazonaws.com | ||
米国西部 (オレゴン) | sts.us-west-2.amazonaws.com | ||
アフリカ (ケープタウン) | sts.af-south-1.amazonaws.com | ||
アジアパシフィック (香港) | sts.ap-east-1.amazonaws.com | ||
アジアパシフィック (ジャカルタ) | sts.ap-southeast-3.amazonaws.com | ||
アジアパシフィック (ムンバイ) | sts.ap-south-1.amazonaws.com | ||
アジアパシフィック (大阪) | sts.ap-northeast-3.amazonaws.com | ||
アジアパシフィック (ソウル) | sts.ap-northeast-2.amazonaws.com | ||
アジアパシフィック (シンガポール) | sts.ap-southeast-1.amazonaws.com | ||
アジアパシフィック (シドニー) | sts.ap-southeast-2.amazonaws.com | ||
アジアパシフィック (東京) | sts.ap-northeast-1.amazonaws.com | ||
カナダ (中部) | sts.ca-central-1.amazonaws.com | ||
中国 (北京) | sts.cn-north-1.amazonaws.com.cn | ||
中国 (寧夏) | sts.cn-northwest-1.amazonaws.com.cn | ||
欧州 (フランクフルト) | sts.eu-central-1.amazonaws.com | ||
欧州 (アイルランド) | sts.eu-west-1.amazonaws.com | ||
欧州 (ロンドン) | sts.eu-west-2.amazonaws.com | ||
ヨーロッパ (ミラノ) | sts.eu-south-1.amazonaws.com | ||
欧州 (パリ) | sts.eu-west-3.amazonaws.com | ||
ヨーロッパ (ストックホルム) | sts.eu-north-1.amazonaws.com | ||
中東 (バーレーン) | sts.me-south-1.amazonaws.com | ||
南米 (サンパウロ) | sts.sa-east-1.amazonaws.com |
¹リージョンで使用するには、リージョンを有効にする必要があります。これにより、STS が自動的にアクティブになります。これらのリージョンで STS を手動でアクティブ化または非アクティブ化することはできません。
²中国で AWS を使用するには、中国内の AWS に特化されたアカウントと認証情報が必要です。
AWS CloudTrail とリージョンのエンドポイント
リージョンのエンドポイント (us-east-2.amazonaws.com
など) に対する呼び出しは、リージョンのサービスへの呼び出しと同様に AWS CloudTrail のログに記録されます。グローバルエンドポイント sts.amazonaws.com
への呼び出しは、グローバルサービスへの呼び出しとして記録されます。詳細については、「AWS CloudTrail による IAM および AWS STS の API コールのログ記録」を参照してください。