はじめに
IAM Identity Center は組織全体の SSO 基盤なので、そのインスタンスがある 1 リージョンに障害が起きると、権限が正しく設定されていても AWS アカウントへサインインできなくなる、という単一障害点を抱えています。
これまでもマルチリージョン化自体は可能でしたが、カスタマー管理 KMS キーの作成やリージョンの追加を個別に手動でやる必要があり、意外と腰の重い作業でした。
今回のアップデートで、新規に組織インスタンスを作成するときに、マルチリージョン構成をワンクリックで選べるようになりました。
この記事では、3 つの設定オプションの違いと、既存の組織インスタンスが今どういう構成になっているかを CLI で確認する手順をまとめます。
忙しい人のための要約
- 組織インスタンス作成時に Single-Region / Multi-Region / Custom の 3 択が選べるようになった
- Multi-Region を選ぶと、レプリケーション対応のカスタマー管理 KMS キーが自動作成され、追加リージョンへのレプリケーションまで一気に完了する(従来は個別の手動ステップだった)
- 対象は 組織インスタンスのみ(アカウントインスタンスは非対応)で、リージョンは デフォルトで有効な商用リージョン(オプトインリージョンは非対応)
- Active Directory を ID ソースにしている場合はマルチリージョン非対応。外部 IdP を使う場合は複数 ACS URL 対応が必要
- 既存の組織インスタンスも
add-regionで後からマルチリージョン化できる
アップデート概要
コンソールでデフォルト有効リージョンにて組織インスタンスを新規作成すると、Instance configuration として次の3つから選べます。
| オプション | 暗号化キー | 追加リージョン |
|---|---|---|
| Single-Region instance | AWS 所有キー(後で CMK に変更可) | なし |
| Multi-Region instance | マルチリージョン CMK を自動作成 | 1 つ自動設定 |
| Custom instance | AWS 所有キー / 新規 CMK / 既存 CMK から選択 | 個別に指定 |
Multi-Region と Custom(新規 CMK 作成時)を選ぶと、CreatedBy: IAM Identity Center タグの付いたマルチリージョン KMS キーが自動生成され、指定した追加リージョンへレプリケートされます。
これを手動でやろうとすると、
KMS キー作成 → タグ付け → レプリカキー作成 → IAM Identity Center へのリージョン追加、
という順番を自分で踏む必要があったので、地味に楽になったポイントかと思います。
何がうれしいのか
一番の恩恵は、プライマリリージョンで障害が起きても、事前に払い出し済みの権限であれば AWS アカウントへのアクセスを継続できる点です。
ワークフォースのアイデンティティ・権限セット・ユーザー/グループの割り当て・セッションなどがプライマリから追加リージョンへ自動でレプリケートされるため、フェイルオーバー的な使い方ができます。
もうひとつが、AWS マネージドアプリケーションのデプロイリージョンを選べる点です。
データレジデンシー要件やユーザーとの地理的な近さを踏まえて、アプリごとに都合の良いリージョンへデプロイし、そのリージョンにレプリケートされたアイデンティティをローカルに参照させられます。
既存インスタンスの構成を確認する
自分の組織インスタンスが今どういう構成なのか、CLI(aws sso-admin)で確認してみます。
今回は既存の本番インスタンスなので、実際にリージョンを追加する変更は行わず、読み取り専用の API だけを使います。
現状のインスタンス構成を確認する
aws sso-admin list-instances --output json
{
"Instances": [
{
"InstanceArn": "arn:aws:sso:::instance/ssoins-xxxxxxxxxxxxxxxx",
"IdentityStoreId": "d-xxxxxxxxxx",
"Status": "ACTIVE",
"PrimaryRegion": "ap-northeast-1",
"Regions": [
{
"RegionName": "ap-northeast-1",
"Status": "ACTIVE",
"IsPrimaryRegion": true
}
]
}
]
}
Regions が東京リージョン 1 件だけなので、Single-Region 構成のままだとわかります。describe-instance も見ておきます。
aws sso-admin describe-instance --instance-arn arn:aws:sso:::instance/ssoins-xxxxxxxxxxxxxxxx
{
"InstanceArn": "arn:aws:sso:::instance/ssoins-xxxxxxxxxxxxxxxx",
"IdentityStoreId": "d-xxxxxxxxxx",
"Status": "ACTIVE",
"PermissionSetsEnabled": true
}
describe-instance のレスポンスには本来 EncryptionConfigurationDetails.KeyType(AWS_OWNED_KMS_KEY / CUSTOMER_MANAGED_KEY)という暗号化キー種別を直接返すフィールドがありますが、今回の出力には乗ってこなかったため、ここでは断定を避けておきます。
マルチリージョン化する場合のコマンド
このインスタンスを後からマルチリージョン化したい場合は add-region を使います。
実行すると非同期でレプリケーションが始まり、list-regions のステータスが ADDING → ACTIVE と変化します。
aws sso-admin add-region \
--instance-arn arn:aws:sso:::instance/ssoins-xxxxxxxxxxxxxxxx \
--region-name us-west-2
このコマンドを実行する IAM プリンシパルには、IAM Identity Center 有効化に必要な権限に加えて kms:CreateKey / kms:TagResource / kms:ReplicateKey が要ります。
マルチリージョン CMK の作成とレプリカキーの作成がこのコマンドの中で走るためです。
なお、新規作成時のワンクリック体験そのもの(Instance configuration の 3 択)はコンソール限定の機能で、かつ 1 つの AWS Organizations には組織インスタンスを 1 つしか持てないため、既存インスタンスがある今回のアカウントでは新規作成フローを再現できません。
新規に組織を立ち上げる場合は、IAM Identity Center コンソールを開いたときに表示される Instance configuration の中から Multi-Region instance を選ぶだけで、上記の add-region 相当の作業が完了します。
気をつけるポイント
-
プライマリリージョンは作成後に変更できません。
list-instancesのPrimaryRegionを見て分かる通り、今のインスタンスは東京が固定です。変更したい場合はインスタンスを削除して作り直すしかないので、最初にどのリージョンを選ぶかは慎重に決めたほうがよさそうです - ID ソースによって使える/使えないが分かれます。Identity Center ディレクトリまたは外部 IdP(Okta、Microsoft Entra ID など)なら利用できますが、Active Directory を ID ソースにしている場合はマルチリージョン非対応です。外部 IdP を使う場合も、複数の ACS URL に対応した IdP でないと恩恵をフルに受けられません(Google Workspace は非対応で、代替手段が別途用意されています)