AWS リージョン での AWS STS の管理
デフォルトでは、AWS Security Token Service (AWS STS) は、グローバルなサービスと使用することができ、AWS STS リクエストはすべて、https://sts.amazonaws.com
の単一エンドポイントに送信されます。AWS では、レイテンシーの低減、冗長性の構築、セッショントークンの有効性の強化のために、グローバルエンドポイントではなく、リージョンの AWS STS エンドポイントを使用することを推奨しています。
-
レイテンシーの低減 – お客様のサービスやアプリケーションに地理的に近いエンドポイントに対して AWS STS の呼び出しを実行することにより、より低いレイテンシーとより高速な応答時間で AWS STS サービスにアクセスできます。
-
冗長性の構築 – 予測可能な範囲に影響を封じ込めることによって、ワークロード内の障害の影響を限られた数のコンポーネントに限定できます。リージョン AWS STS エンドポイントを使用すると、コンポーネントの範囲をセッショントークンの範囲に合わせることができます。この信頼性の柱の詳細については、「AWS Well-Architected Framework」の「障害部分を切り離してワークロードを保護する」を参照してください。
-
セッショントークンの有効性を向上させる – リージョンの AWS STS エンドポイントからのセッショントークンはすべての AWS リージョン で有効です。グローバル STS エンドポイントからのセッショントークンは、デフォルトで有効になっている AWS リージョン でのみ有効です。アカウントで新しいリージョンを有効にする場合、リージョン別 AWS STS エンドポイントからのセッショントークンを使用できます。グローバルエンドポイントの使用を選択した場合、グローバルエンドポイントに対する AWS STS セッショントークンのリージョンの互換性を変更する必要があります。これにより、トークンはすべての AWS リージョン で有効になります。
グローバルエンドポイントセッショントークンの管理
ほとんどの AWS リージョン はデフォルトですべての AWS サービス のオペレーションに有効になっています。これらのリージョンは、AWS STS で使用できるように自動的にアクティブ化されます。アジアパシフィック (香港) など一部のリージョンは、手動で有効にする必要があります。AWS リージョン を有効および無効にする方法については、「AWS Account Management リファレンスガイド」の「アカウントで使用できる AWS リージョン の指定」を参照してください。これらの AWS リージョンを有効にすると、AWS STS で使用できるように、自動的にアクティブ化されます。無効になっているリージョンの AWS STS エンドポイントをアクティブ化することはできません。すべての AWS リージョン で有効なセッショントークンには、デフォルトで有効になっているリージョンで有効なトークンを超える文字が含まれています。この設定を変更すると、一時的にトークンを保存する既存のシステムに影響する可能性があります。
この設定は、AWS Management Console、AWS CLI、または AWS API を使用して変更できます。
グローバルエンドポイント (コンソール) に対するセッショントークンの リージョンの互換性を変更するには
-
IAM 管理タスクを実行するアクセス許可があるルートユーザーまたはユーザーとしてサインインします。セッショントークンの互換性を変更するには、
iam:SetSecurityTokenServicePreferences
アクションを許可するポリシーがある必要があります。 -
[IAM コンソール]
を開きます。ナビゲーションペインで [アカウント設定] を選択します。 -
[Security Token Service (STS)] セクションの [Session Tokens from the STS endpoints] (STS エンドポイントからのセッショントークン)。[Global endpoint] (グローバルエンドポイント) は
Valid only in AWS リージョン enabled by default
を示します。[Change] を選択します。 -
[Change region compatibility] (リージョンの互換性を変更) ダイアログボックスで、[All AWS リージョン] を選択します。次に、変更の保存を選択します。
注記
すべての AWS リージョン で有効なセッショントークンには、デフォルトで有効になっているリージョンで有効なトークンを超える文字が含まれています。この設定を変更すると、一時的にトークンを保存する既存のシステムに影響する可能性があります。
グローバルエンドポイント (AWS CLI) に対するセッショントークンの リージョンの互換性を変更するには
セッショントークンのバージョンを設定します。バージョン 1 トークンは、デフォルトで利用できる AWS リージョン でのみ有効です。これらのトークンは、アジアパシフィック (香港) など、手動で有効になっているリージョンでは動作しません。バージョン 2 のトークンはすべてのリージョンで有効です。ただし、バージョン 2 トークンにはさらに多くの文字が含まれており、一時的にトークンを保存するシステムに影響する可能性があります。
グローバルエンドポイント (AWS API) に対するセッショントークンの リージョンの互換性を変更するには
セッショントークンのバージョンを設定します。バージョン 1 トークンは、デフォルトで利用できる AWS リージョン でのみ有効です。これらのトークンは、アジアパシフィック (香港) など、手動で有効になっているリージョンでは動作しません。バージョン 2 のトークンはすべてのリージョンで有効です。ただし、バージョン 2 トークンにはさらに多くの文字が含まれており、一時的にトークンを保存するシステムに影響する可能性があります。
AWS リージョン での AWS STS のアクティブ化と非アクティブ化
リージョンに対して STS を有効にすると、AWS STS は、AWS STS リクエストを行うアカウントのユーザーとロールに一時的な認証情報を発行できます。その後、これらの認証情報は、デフォルトで有効であるリージョン、または手動で有効にされているリージョンで使用できます。デフォルトで有効になっているリージョンでは、一時認証情報が生成されるアカウントでリージョン STS エンドポイントをアクティブ化する必要があります。リクエストを行うときに、ユーザーが同じアカウントにサインインしたかまたは別のアカウントにサインインしたかは関係ありません。リージョンが手動でアクティブ化される場合は、リージョンは、リクエストを行うアカウントと一時的な認証情報が生成されるアカウントの両方でアクティブ化する必要があります。
例えば、アカウント A 内のあるユーザーが AWS STS リージョンのエンドポイント https://sts.ap-east-1.amazonaws.com
に sts:AssumeRole
API リクエストを送信するとします。このリクエストは、アカウント B にある Developer
という名前のロール用の一時的な認証情報を求めるものです。これはアカウント B 内のエンティティの認証情報を作成するリクエストであるため、アカウント B が ap-east-1
リージョンをアクティブ化する必要があります。アカウント A (または他のアカウント) のユーザーは、ap-east-1
AWS STS エンドポイントを呼び出して、自分のアカウントでこのリージョンがアクティブ化されているかどうかに関わらず、アカウント B の認証情報をリクエストできます。
注記
アクティブなリージョンはそのアカウントで一時的な認証情報を使用するすべてのユーザーが利用できます。どの IAM ユーザーまたはロールがリージョンにアクセスできるかを制御するには、アクセス許可ポリシーで、aws:RequestedRegion
条件キーを使用します。
デフォルトで有効なリージョンで AWS STS をアクティブ化または非アクティブ化するには (コンソール)
-
IAM 管理タスクを実行するアクセス許可があるルートユーザーまたはユーザーとしてサインインします。
-
[Security Token Service (STS)] セクションの [Endpoints] (エンドポイント) で、設定するリージョンを見つけ、[STS status] (STS ステータス) 列で [Active] (アクティブ) または [Inactive] (非アクティブ) を選択します。
-
表示されたダイアログボックスで、[Activate] (有効化) または [Deactivate] (無効化) を選択します。
有効にする必要があるリージョンの場合、リージョンを有効にすると AWS STS が自動的にアクティブになります。リージョンを有効にすると、AWS STS はそのリージョンに対して常にアクティブになり、非アクティブ化することはできません。デフォルトで無効になっているリージョンを有効にする方法については、「AWS Account Management リファレンスガイド」の「アカウントで使用できる AWS リージョン の指定」を参照してください。
AWS STS リージョンを使用するコードの記述
リージョンをアクティブ化すると、そのリージョンに 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 Account Management リファレンスガイド」の「アカウントで使用できる AWS リージョン の指定」を参照してください。
この例では、最初の行は regionEndpointConfig
という EndpointConfiguration
オブジェクトをインスタンス化し、エンドポイントの URL と AWS リージョン をパラメータとして渡します。
AWS SDK の環境変数を使用して AWS STS のリージョンエンドポイントを設定する方法については、「AWS SDK とツールリファレンスガイド」の「AWS STS リージョンエンドポイント」を参照してください。
他のすべての言語とプログラミング環境の組み合わせについては、「関連する 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-south-2.amazonaws.com | ||
アジアパシフィック (ジャカルタ) | sts.ap-southeast-3.amazonaws.com | ||
アジアパシフィック (メルボルン) | sts.ap-southeast-4.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.ca-west-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-south-2.amazonaws.com | ||
欧州 (ストックホルム) | sts.eu-north-1.amazonaws.com | ||
欧州 (チューリッヒ) | sts.eu-central-2.amazonaws.com | ||
イスラエル (テルアビブ) | sts.il-central-1.amazonaws.com | ||
中東 (バーレーン) | sts.me-south-1.amazonaws.com | ||
中東 (アラブ首長国連邦) | sts.me-central-1.amazonaws.com | ||
南米(サンパウロ) | sts.sa-east-1.amazonaws.com |
¹リージョンで使用するには、リージョンを有効にする必要があります。これにより、AWS STS が自動的にアクティブになります。これらのリージョンで AWS STS を手動でアクティブ化または非アクティブ化することはできません。
²中国で AWS を使用するには、中国内の AWS に特化されたアカウントと認証情報が必要です。
AWS CloudTrail とリージョンのエンドポイント
リージョンのエンドポイントとグローバルエンドポイントへの呼び出しは、AWS CloudTrail の [tlsDetails
] フィールドに記録されます。us-east-2.amazonaws.com
などのリージョンのエンドポイントへの呼び出しは、CloudTrail で適切なリージョンに記録されます。グローバルエンドポイント sts.amazonaws.com
への呼び出しは、グローバルサービスへの呼び出しとして記録されます。グローバル AWS STS エンドポイントのイベントは us-east-1 に記録されます。
注記
tlsDetails
は、このフィールドをサポートするサービスに対してのみ表示できます。AWS CloudTrail ユーザーガイドの「CloudTrail で TLS の詳細をサポートするサービス」を参照してください。
詳細については、「AWS CloudTrail による IAM および AWS STS の API コールのログ記録」を参照してください。