非 AWS Organizations 環境の AWS アカウントに Entra ID ユーザーでアクセスする

2024.02.12

Microsoft Entra ID (旧 Azure AD) から 非 AWS Organizations 環境の AWS アカウントにアクセスする設定を試してみました。AWS IAM Identity Center を利用できない環境でも設定できます。

構成イメージ図です。AWS アカウント側に IAM ID プロバイダを作成して Entra ID と SAML で連携します。

Entra ID から AWS アカウントにアクセスするときは、関連付けられている IAM ロールから選択してアクセスします。

以前にも同じ内容のブログがありましたが、Azure AD から Entra ID に変わっていることもあり、改めて試してみました。結論としては、一部の画面に違いがあるものの手順としては同じでした。

設定

Microsoft Entra ID から AWS アカウントにアクセスする設定手順は次の Microsoft ドキュメントに記載されています。この手順をベースに設定してみました。

チュートリアル: Microsoft Entra SSO と AWS Single-Account Access の統合 - Microsoft Entra ID | Microsoft Learn


本ブログにおける設定の流れは次の通りです。

  1. Entra ID でエンタープライズアプリケーションを作成
  2. AWS で ID プロバイダ・IAM ロールを作成
  3. AWS で IAM ユーザー(アクセスキー)を作成
  4. Entra ID でプロビジョニングを設定
  5. Entra ID でユーザーと AWS IAM ロールを関連付け


Entra ID でエンタープライズアプリケーションを作成

Entra ID の設定は Azure 上でもできますが、今回は Entra 管理センター から設定してみます。

始めに、エンタープライズアプリケーションを作成します。

ギャラリーから「AWS Single-Account Access」を選択します。

任意の名前をつけて「作成」を実行します。

作成したエンタープライズアプリケーションの「シングルサインオン」の設定から「SAML」を選択します。

この時点でテストをするか問われることgありますが、まだ設定できていないため後で実施することにしています。

次に、「基本的な SAML 構成」を編集します。「識別子」と「応答 URL の追加」に下記の URL を入力します(今回の場合は始めから入力されていたので、そのまま利用しました)。入力後は「保管」を忘れずにクリックします。

https://signin.aws.amazon.com/saml

SAML 構成の設定後に「フェデレーション メタデータ XML」をダウンロードします。このメタデータを AWS 側の設定で利用します。

エンタープライズアプリケーションの設定はまだ終わっていませんが、SAML 連携の設定をするために先に AWS 側の設定に移ります。


AWS で ID プロバイダ・IAM ロールを作成

Entra ID 側でダウンロードしたメタデータを利用して AWS 側で ID プロバイダを設定し、Entra ID ユーザーが利用できる IAM ロールの設定まで実施します。

AWS IAM サービスから ID プロバイダを作成します。

「SAML」を選択して「プロバイダ名」を入力し、先程ダウンロードした Entra ID エンタープライズアプリケーションのフェデレーションメタデータをアップロードします。その後、「プロバイダを追加」を実行します。

作成した ID プロバイダを選択して「ロールの割り当て」から関連付ける IAM ロールを新しく作成します(既存のロールを関連付けることもできます)。

IAM ロールの設定では信頼されたエンティティとして「SAML 2.0 フェデレーション」を選択し、今回は「プログラムと AWS マネジメントコンソールへのアクセスを許可する」を選択します。

今回は次の 2 種類のロールを作成してみました。

項目 IAM ロール 1 IAM ロール 2
IAM ロール名 administrator-access-role read-only-role
許可ポリシー AdministratorAccess (AWS 管理ポリシー) ReadOnlyAccess (AWS 管理ポリシー)


信頼ポリシーの設定は自動で次の通り設定されていました。作成した ID プロバイダmicrosoft-entra-idが信頼されていることが分かります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::111122223333:saml-provider/microsoft-entra-id"
            },
            "Action": "sts:AssumeRoleWithSAML",
            "Condition": {
                "StringEquals": {
                    "SAML:aud": "https://signin.aws.amazon.com/saml"
                }
            }
        }
    ]
}


AWS で IAM ユーザー(アクセスキー)を作成

次に、Entra ID のプロビジョニング設定のために、IAM ロールのリスト権限を与えるアクセスキー作成します。

冒頭で紹介した下記のページに掲載されている IAM ユーザーとポリシーを作成します。今回はユーザー名とポリシー名も下記ドキュメントと同じ名前にしました。

チュートリアル: Microsoft Entra SSO と AWS Single-Account Access の統合 - Microsoft Entra ID | Microsoft Learn


IAM ポリシーの作成です。次の設定で作成します。

項目 設定値
IAM ポリシー名 AzureAD_SSOUserRole_Policy
ポリシー 下記参照
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListRoles"
            ],
            "Resource": "*"
        }
    ]
}


IAM ユーザーの作成です。ユーザー名 AzureADRoleManagerとしています。

先ほど作成した IAM ロールのリスト権限を持つポリシーAzureAD_SSOUserRole_Policyをアタッチします。

最後に設定内容を確認して「ユーザーの作成」を実行します。

作成後に、アクセスキーを発行します。冒頭で参照しているドキュメントではコンソールアクセスを有効にしているのですが、Entra ID 側の設定ではアクセスキーとシークレットアクセスキーの入力なので、おそらくアクセスキーの発行が必要な手順と思われます。

発行理由と説明タグ値(オプション)は何を選択・入力してもよいので、次に進み、アクセスキーとシークレットアクセスキーを確認してメモします。Entra ID の設定で利用します。

以降は、Entra ID のエンタープライズアプリケーション設定に戻ります。


Entra ID でプロビジョニングを設定

先ほどメモしたアクセスキーとシークレットアクセスキーを用いてプロビジョニングの設定をします。

エンタープライズアプリケーションの設定から「プロビジョニング」を選択します。

プロビジョニングの設定画面に遷移したら「プロビジョニング」メニューからプロビジョニングモードを自動に変更して、AWS のアクセスキーとシークレットアクセスキーと入力します。

  • clientsecret : アクセスキー
  • シークレットトークン : シークレットアクセスキー

テスト接続をしてエラーがなければ「保存」を実行します。

保存後に、リロード等で再度プロビジョニングメニューを開くと「プロビジョニング状態」が表示されるためオンに変更して再度「保存」を実行します。

しばらく待つと、概要メニューから AWS の IAM ロール数を確認できます。本来は AWS 側で作成した IAM ロール 2 個のみですが、今回の環境は本ブログ以外の検証で別のロールも作成していたため、3 個の表示となっています。また、プロビジョニング間隔が 40 分であることも分かります。


Entra ID でユーザーと AWS IAM ロールを関連付け

最後に、Entra ID ユーザー/グループと AWS IAM ロールの関連付けを実施します。

エンタープライズアプリケーションのユーザーとグループメニューから「ユーザーまたはグループの追加」を実行します。

AWS へのアクセスを許可したいユーザーまたはグループを選択して、与える権限(AWS IAM ロール)を選択します。下記画像では権限はadministrator-access-roleを選択しています。なお、今回の環境は P1/P2 ライセンスがないため、グループは選択できないことからユーザーを選択しています。

同様の手順でread-only-roleも割り当てた後の画面です。1 人のユーザーに 2 個のロールを関連付けています。

以上で設定は終わりです。

アクセステスト

Entra ID ユーザーの認証情報を使って AWS のマネジメントコンソールにアクセスしてみます。

Entra ID の マイアプリポータル から作成したエンタープライズアプリケーションAWS Account Accessを選択します。

AWS 側の IAM ロールを選択する画面となるため任意のロールを選択します。

AWS マネジメントコンソールにアクセスできました。

想定通り、Entra ID ユーザーで AWS マネジメントコンソールにアクセスできました。

さいごに

Microsoft Entra ID (旧 Azure AD) から 非 AWS Organizations 環境の AWS アカウントにアクセスする設定を試してみました。

以前にも Azure AD からアクセスする設定を試してみたブロブがありましたが、Entra ID に変わったことから改めて試してみました。設定手順は変わっておらず、画面が変わっているだけであることが確認できました。

以上、このブログがどなたかのご参考になれば幸いです。