AWS IAM Identity Center をマルチリージョン化する方法と注意点

記事タイトルとURLをコピーする

こんにちは!イーゴリです。

背景

AWS IAM Identity Center (旧 AWS SSO)はデフォルトでは単一リージョンで動作します。例えば、東京リージョンで障害が発生した場合、AWS アクセスポータルにアクセスできなくなり、すべての AWS アカウントへのログインが不可能になります。DR 要件がある環境では、追加リージョン(大阪など)を設定することで、東京リージョン障害時でも継続してアクセスできるようになります。

本記事では、IAM Identity Center のマルチリージョン設定手順を紹介します。

イメージ図

大阪は別の場所にあるはずですが、生成AIがどうしても・・・すみません

前提条件

  • AWS Organizations が有効化されていること
  • IAM Identity Center がプライマリリージョン(今回の記事では「東京: ap-northeast-1」になっている)で有効化されていること
  • 外部 IdP(Entra ID または Okta)と SAML / SCIM 連携が完了していること
  • Management Account にアクセスできること(IAM Identity Centerの委任管理者アカウントではなく、Management Account での作業が必要です)

作業の大まかな流れ

  1. マルチリージョン KMS キーを作成
  2. IAM Identity Center 用の KMS キーポリシーを設定
  3. 追加リージョン(大阪)の KMS レプリカキーを作成
  4. IAM Identity Center の暗号化キーを AWS 所有キーから KMS キーへ変更
  5. IAM Identity Center に追加リージョンを設定
  6. IdP(Entra ID / Okta)側に追加リージョン用 ACS URL を追加
  7. (任意)Entra ID / Okta 側に追加リージョン用ブックマークアプリを作成
  8. DR 時のフェイルオーバー手順を確認・テスト

AWS IAM Identity Center をマルチリージョン化する方法

1. マルチリージョン KMS キーの作成

IAM Identity Center のマルチリージョン対応には、マルチリージョン KMS キーが必須です。

後からシングルリージョンキーからマルチリージョンキーへの変換はできないため、ご注意ください。

2. KMS キーポリシーの設定

IAM Identity Center が KMS キーを使用できるよう、キーポリシーを設定します。

docs.aws.amazon.com

下記のポリシーを使用します。

111122223333 には Management Account の ID を、444455556666 には Delegated Administrator アカウントの ID を入力してください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowIdentityCenterAdminAccounts",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:root",
          "arn:aws:iam::444455556666:root"
        ]
      },
      "Action": "kms:*",
      "Resource": "*"
    },
    {
      "Sid": "AllowIdentityCenterAndIdentityStoreToDescribeKey",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "identitystore.amazonaws.com",
          "sso.amazonaws.com"
        ]
      },
      "Action": "kms:DescribeKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "${aws:ResourceAccount}"
        }
      }
    },
    {
      "Sid": "AllowIdentityCenterAndIdentityStoreToUseKey",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "identitystore.amazonaws.com",
          "sso.amazonaws.com"
        ]
      },
      "Action": [
        "kms:Decrypt",
        "kms:ReEncryptTo",
        "kms:ReEncryptFrom",
        "kms:GenerateDataKeyWithoutPlaintext"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "${aws:ResourceAccount}"
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": [
            "aws:sso:instance-arn",
            "aws:identitystore:identitystore-arn"
          ]
        }
      }
    },
    {
      "Sid": "AllowOrgPrincipalsViaIdentityCenterAndIdentityStore",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "kms:Decrypt",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalOrgID": "${aws:ResourceOrgID}"
        },
        "StringLike": {
          "kms:ViaService": [
            "sso.*.amazonaws.com",
            "identitystore.*.amazonaws.com"
          ]
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": [
            "aws:sso:instance-arn",
            "aws:identitystore:identitystore-arn"
          ]
        }
      }
    },
    {
      "Sid": "AllowManagedApps",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "kms:Decrypt",
      "Resource": "*",
      "Condition": {
        "Bool": {
          "aws:PrincipalIsAWSService": "true"
        },
        "StringEquals": {
          "aws:SourceOrgID": "${aws:ResourceOrgID}"
        },
        "StringLike": {
          "kms:ViaService": [
            "identitystore.*.amazonaws.com",
            "sso.*.amazonaws.com"
          ]
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": [
            "aws:sso:instance-arn",
            "aws:identitystore:identitystore-arn"
          ]
        }
      }
    }
  ]
}

3. KMS レプリカキーの作成(追加リージョン)

追加リージョン(本記事では大阪リージョン:ap-northeast-3)に、ステップ2で作成したKMSキーのレプリカを作成する必要があります。

docs.aws.amazon.com マルチリージョンキーを使用する場合は、一貫した認可を確保するために、すべてのレプリカで同じポリシーを使用する必要があります。

KMS コンソールで作成したキー(alias/idc-multi-region-key)をクリックします。

[リージョンごと] タブをクリックし、[新しいレプリカキーを作成] をクリックします。

レプリケート先リージョン:[アジアパシフィック(大阪)ap-northeast-3] を選択します。

[次へ] → [次へ] → [レプリカキーを作成] をクリックします。

注意: 大阪リージョンのレプリカキーにも、東京と同じキーポリシーを設定してください。KMS はリージョン間でキーポリシーを自動同期しません。

docs.aws.amazon.com AWS KMS は、マルチリージョン KMS キーのリージョン間で KMS キーポリシーを同期しません。KMS キーポリシーを KMS キーリージョン間で同期させるには、各リージョンに変更を個別に適用する必要があります。

4. IAM Identity Center に KMS キーを設定

注意:AWS 所有キーからカスタマー管理 KMS キーへ変更する前に、組織内で使用中のすべての AWS マネージドアプリケーションがカスタマー管理 KMS キーに対応しているか確認してください。例:Amazon Monitron など、一部のアプリケーションは非対応です。

docs.aws.amazon.com

マルチリージョン対応のため、IAM Identity CenterのAWS所有キーからKMS キーに変えます。

IAM Identity Center コンソールを開き、[設定] をクリックします。

[管理] タブをクリックし、[暗号化の管理]をクリックします。

[別のAWS KMSキーを選択する]を選択し、ステップ 1 で作成したキーを選択し、[保存] をクリックします。

注意:下記のようなエラーが発生した場合は、ポリシー内容をご確認ください。

IAM Identity Center にて AWS 所有キーから KMS キーへ変更した場合、[IAM Identity Center]画面にプライマリリージョンが表示されます。

5. 追加リージョンを IAM Identity Center に追加

注意①:追加リージョンへのデプロイをサポートしていないAWS マネージドアプリケーションは、追加リージョンでは使用できません(例:Amazon CodeCatalyst、Amazon DataZone、Amazon OpenSearch Service など)。 下記のURLにある「追加リージョンへのデプロイをサポート」列でご確認ください。

docs.aws.amazon.com

注意②:1つの IAM Identity Center インスタンスに追加できるリージョン数はデフォルトで最大 3 リージョンです(引き上げ可)。

docs.aws.amazon.com

IAM Identity Center コンソールを開き、[設定] をクリックします。

[管理] タブをクリックします。

[リージョンを追加] をクリックします。

[アジアパシフィック(大阪)] を選択し、[リージョンを追加] をクリックします。

注意:下記画面の通り、対象の追加リージョンが表示されない場合は、更新ボタンを押してください。更新後も表示されない場合は、ステップ3をご確認ください。KMSキーのレプリカ作成漏れ、またはレプリカ側ポリシーの修正漏れの可能性があります。

対象リージョンが追加されていることを確認します。ステータス「追加中」が消えるまで待機してください。

注意:IAM Identity Center の構成規模によっては、同期に時間がかかる場合があります。

レプリケーション完了後、追加リージョンを選択し、[ACS の URLを表示]をクリックします。

下記の4つのアクセスポータルURLが利用可能となるため、追加リージョン側のURLをコピーします。

プライマリリージョンのACS URLのみが表示される場合は、同期が完了していない可能性があるため、しばらく待機してください。

6. IdP 側の設定

ステップ5で取得したACS URLをIdP側のSAMLに追加する必要があります。この記事ではEntra ID及びOktaの手順を提供します。

注意:本記事では Entra ID および Okta の手順を紹介します。Google Workspace など、複数の ACS URL をサポートしていない IdP の場合、東京リージョン障害時に大阪リージョンの ACS URL へ手動で切り替える必要があります。

docs.aws.amazon.com 一部の外部 ID プロバイダー (IdPs) は、IAM Identity Center アプリケーションで複数のアサーションコンシューマーサービス (ACS) URLs をサポートしていません。

6.1. Azure Entra ID(旧:Azure Active Directory)の場合

Entra ID ポータルを開き、[エンタープライズ アプリケーション] をクリックします。[AWS IAM Identity Center] をクリックします。

[シングル サインオン] をクリックし、[SAML] を選択します。

[基本的な SAML 構成] の [編集] をクリックします。

[応答 URL (Assertion Consumer Service URL)] の [+ URL の追加] をクリックします。

追加リージョン(本記事では大阪リージョン: ap-northeast-3)の ACS URL(デュアルスタック・IPv4 専用の両方)を入力します。

[保存] をクリックします。

必要に応じて、デュアルスタック URL および IPv4 専用 URL の両方を追加してください。

6.2. Oktaの場合

docs.aws.amazon.com Okta IAM アイデンティティセンターの追加リージョンにアクセスするための設定 - オプション

  1. Okta 管理コンソールを開き、[Applications] → [Applications] をクリックします。
  2. [AWS IAM Identity Center] をクリックします。
  3. [Sign On] タブをクリックします。
  4. [Advanced Sign-on Settings] の [Other Requestable SSO URLs] の [Add another] をクリックします。
  5. 追加リージョン(大阪リージョン: ap-northeast-3)の ACS URL を貼り付けます。 リージョンごとに繰り返します。
  6. [Save] をクリックします。

7.(任意)Entra ID / Okta 等にブックマークアプリを作成

Entra ID

learn.microsoft.com

Okta

Okta (Identity Engine): https://help.okta.com/oie/en-us/content/topics/apps/apps-create-bookmark.htm

Okta (Classic Engine): https://help.okta.com/en-us/content/topics/apps/apps-create-bookmark.htm

8. 東京リージョン障害時のフェイルオーバー手順

プライマリリージョンで障害が発生した場合、ユーザーは以下の方法で追加リージョン(本記事では大阪リージョン: ap-northeast-3)からアクセスできます。

注意:追加リージョン経由で AWS アカウントへのアクセスは継続可能ですが、プライマリリージョンに接続された AWS マネージドアプリケーションへのアクセスができない場合があります。

docs.aws.amazon.com When you use an additional Region for access to AWS accounts in this setup, your users might not be able to access AWS managed applications that are connected to the primary Region. Therefore, we recommend this only as a temporary measure to maintain access to AWS accounts.

ステップ 7を実施した場合

Entra ID / Okta 等のマイアプリ画面を開きます。

AWS Access Portal - Osaka をクリックします。

大阪リージョンのアクセスポータルからログインします。

ステップ 7を実施しなかった場合

ステップ6にあったアクセスポータル URL(大阪リージョン)を入力し、アクセスします。

その他の注意点

プライマリリージョンの制限事項

プライマリリージョンは有効化後に変更できないので、ご注意ください。

docs.aws.amazon.com

追加リージョンの制限事項

追加リージョンでは以下の操作ができませんので、ご注意ください。

  • 外部IdPからのユーザー・グループ自動同期(SCIM API / Identity Store API経由)→ プライマリリージョンのみ。追加リージョンはレプリカを受信するのみ。 → プライマリのみ
  • SCIMによる自動プロビジョニングの設定 → プライマリリージョンのみ。
  • 外部IdPとのSAML SSO設定 → プライマリリージョンのみ(追加リージョンでは読み取りのみ可)。
  • ユーザー・グループ・メンバーシップの作成・更新・削除(コンソールまたはIdentity Store API経由) → 追加リージョンでは不可。
  • 権限セットの管理・アサイン → プライマリリージョンのみ。
  • Trusted Token Issuer の作成 → プライマリリージョンのみ。
  • その他すべての管理操作(リージョン管理、KMSキー管理、インスタンス管理、セッション管理など) → プライマリリージョンのみ(一部データは追加リージョンでも読み取り可)。

docs.aws.amazon.com

break-glass アクセスについて

外部 IdP 自体が障害になった場合は、追加リージョンが設定されていても AWS へのログインができなくなります。そのため、IAM Identity Center と独立した緊急用アクセス手段(break-glass)を別途ご検討ください。

docs.aws.amazon.com Even if your IAM Identity Center is replicated to additional Regions, we recommend that you set up AWS break-glass access.

docs.aws.amazon.com Emergencies or unforeseen circumstances might necessitate temporary access beyond regular permissions for day-to-day work. Having break-glass procedures helps ensure that your organization can respond effectively to crises without compromising long-term security. During emergency scenarios, like the failure of the organization's identity provider, security incidents, or unavailability of key personnel, these measures provide temporary, elevated access beyond regular permissions.

以上、御一読ありがとうございました。

本田 イーゴリ (記事一覧)

クロスインダストリー第2本部 インフラ技術課

・2026 AWS Ambassadors
・2026 Japan AWS Top Engineers (Services)
・2026 Japan All AWS Certifications Engineers
・2024 Japan AWS Top Engineers (Security)
・EC-Council CCSE
・Azure AZ-900

趣味:日本国内旅行(47都道府県制覇)・ドライブ・音楽