はじめに
本記事では、Microsoft Entra ID(旧Azure AD)がメインのID基盤である場合に、AWSとのアカウント連携を構築する手順の概要を解説します。
AWS Organizationsは利用しない方式になります。
※会社公式ではなく、2025年9月24日時点でのma333の見解となります。
本記事のゴール
ゲストユーザーのアドレスがuser@guest.comで、MyAppsから起動、Microsoft Entra ID側で認証を実施し、AWSの踏み台アカウントを通じて各アカウントにアクセスできることを目指します。
AWSの中でユーザーを発行し管理することもできますが、Microsoft Entra IDをメイン利用されている会社であれば、マルチクラウドの運用負荷が低減できるようになります。
また、各アカウントの権限をロールで分かりやすく管理することが可能です。
Microsoft Entra IDとAWSの連携構成
本構成については、以下の2記事の内容を掛け合わせています。
-
Azure ADとAWSアカウントの認証連携方法まとめ
- 「AWS アカウント 1 対 1 連携方式」
-
AWSアカウントを開発環境ごとに分離し、同じIAMユーザーを使う方法
- 「②分離する環境分のAWSアカウント + IAMユーザー管理用AWSアカウントを使うパターン」
つまり、Microsoft Entra IDとIAMユーザー管理用の踏み台AWSアカウントを1対1連携方式で接続し、そこから分離する環境分のAWSアカウントへアクセスする構成になります。
前提
- Microsoft Entra IDを利用していること
-
条件付きアクセス - 使用条件の確認
(利用規約の設定)についてはP1以上のライセンスが必要です
-
- AWSアカウント(少なくとも2つ)を持っていること
ざっくり手順
AWSアカウントとMicrosoft Entra IDの連携について、以下の順で追っていきます。
- AWSの各アカウントの設定
- Microsoft Entra IDでSSOを構成する
- AWSの踏み台アカウントの設定
- Microsoft Entra IDでユーザープロビジョニングを構成する
1. AWSの各アカウントの設定
分離する環境分のAWSアカウントを用意し、ロールを作成していきます。
- ロールを作成
- 信頼されたエンティティを選択
- 信頼されたエンティティのタイプ:
AWSアカウント
- AWSアカウント
-
☑
別のAWSアカウント - アカウントID:
AWS踏み台アカウントID
-
- 信頼されたエンティティのタイプ:
- AWSアカウントID:
IAMユーザー管理用AWSアカウントID
- 許可を追加
- 許可ポリシー:ex. 管理者なら
AdministratorAccess
等
- 許可ポリシー:ex. 管理者なら
- ロール名:ex. 管理者なら
admin
等 - 作成されたARNを控えておく
- ex.
arn:aws:iam::123456789012:role/admin
- ex.
- これを各アカウント-各ロール分繰り返します
- 詳しくはAWSアカウントを開発環境ごとに分離し、同じIAMユーザーを使う方法が参考になります
ここまでで、各アカウントのIAMロールが構築できました。
2. Microsoft Entra IDでSSOを構成する
- Azureポータルにて、
Microsoft Entra ID
>エンタープライズアプリケーション
を選択 -
新しいアプリケーション
>AWS Single-Account Access
を検索し、任意の名前を入力して、「作成」を選択- ex.
AWS-Single-Account-Access
- ex.
-
シングル サインオン
を選択し、以下の設定を行います -
SAML
を選択し、「はい」で設定を保存
ゲストユーザーを活用する場合は、追加で以下の設定が必要です。
-
シングル サインオン
>属性とクレーム
の「編集」を選択 -
一意のユーザー識別子 (名前 ID)
を選択し、「変換」を選択-
変換の管理
にて、以下の設定- 変換:
Contains()
- パラメータ1(入力):
属性
- 属性名:
user.userprincipalname
- ソースを複数値として扱います: □ (チェック入れない)
- 値:
#EXT#
- パラメータ2(出力):
属性
- 属性名:
user.mail
- 一致しない場合は出力を指定する:☑(チェック入れる)
- パラメータ3(一致しない場合は出力):
属性
- 属性名:
user.userprincipalname
- 変換:
-
追加
を選択し、保存
-
- 同様の処理を
RoleSessionName
にも設定
- 最後に
シングルサインオン
のSAML署名証明書
からフェデレーションメタデータXML
をダウンロード
詳しい手順:非Organizations環境のAWSアカウントにAzure ADのユーザーからSSOしてみた
ゲスト用の設定:Azure Guest accounts can't sign in using AWS SSO with Azure SAML
3. AWSの踏み台アカウントの設定
次に踏み台アカウントから各アカウントへアクセスできるように設定を進めていきます。
Microsoft Entra IDと連携するためのIDプロバイダの作成
- AWSマネジメントコンソールにて、
IAM
>IDプロバイダー
>プロバイダーの追加
を選択 - プロバイダーの種類:
SAML
を選択 - プロバイダー名: 任意の名前を入力
- ex.
MicrosoftEntraID
- ex.
- Microsoft Entra IDでダウンロードしていた
フェデレーションメタデータXML
をアップロード -
プロバイダーを追加
を選択し、IDプロバイダーを作成
各アカウントへAssumeRoleするためのポリシーの作成
admin, developer等の各アカウントのロールへAssumeRoleできるようにするポリシーを作成します。
adminの場合
- AWSマネジメントコンソールにて、
IAM
>ポリシー
>ポリシーの作成
を選択 - JSONタブを選択し、以下のように設定
-
Resource
に各アカウントのロールARNを指定すること
-
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"sts:AssumeRole"
],
"Effect": "Allow",
"Resource": [
"arn:aws:iam::123456789012:role/admin",
"arn:aws:iam::234567890123:role/admin",
"arn:aws:iam::345678901234:role/admin"
]
}
]
}
- ポリシー名を入力し、ポリシーを作成
- ex.
AssumeAdminRoleToAccounts
- ex.
developerも同様に作成します
ロールの作成
作成したポリシーと1:1で紐づくロールを作成します。この作業で、踏み台アカウントにログインしたユーザーが、各アカウントのロールへAssumeRoleできるようになります。
adminの場合
- AWSマネジメントコンソールにて、
IAM
>ロール
>ロールの作成
を選択 - 信頼されたエンティティ
- 信頼されたエンティティのタイプ:
SAML2.0 フェデレーション
を選択 - SAML2.0ベースのプロバイダー: 先ほど作成したIDプロバイダーを選択
- ex.
MicrosoftEntraID
- ex.
- 各種選択肢を選択し、
次へ
- 信頼されたエンティティのタイプ:
- 許可ポリシーで、先ほど作成したポリシーを選択
- ex.
AssumeAdminRoleToAccounts
- ex.
- ロール名、タグ等を入力し、作成
- ex.
MicrosoftEntraID-Admin
- ex.
developerも同様に作成します
AWS側でのプロビジョニング用IAMユーザー作成
Microsoft Entra IDからAWSへユーザーをプロビジョニングするためのIAMユーザーを作成します。
ポリシーを作成
- AWSマネジメントコンソールにて、
IAM
>ポリシー
>ポリシーの作成
を選択 - JSONタブを選択し、以下のように設定
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:ListRoles"
],
"Resource": "*"
}
]
}
- ポリシー名を入力し、ポリシーを作成
- ex.
ListRolesForProvisioning
- ex.
ユーザーを作成
- AWSマネジメントコンソールにて、
IAM
>ユーザー
>ユーザーを追加
を選択 - ユーザー名を入力
- ex.
MicrosoftEntraIdProvisioningUser
- アクセスの種類で、
プログラムによるアクセス
を選択 -
次のステップ: アクセス権限
を選択
- ex.
-
既存のポリシーを直接アタッチ
を選択し、先ほど作成したポリシーを選択- ex.
ListRolesForProvisioning
- ex.
-
次のステップ: タグ
を選択し、必要に応じてタグを追加 -
次のステップ: 確認
を選択し、内容を確認 -
ユーザーの作成
を選択 - 作成されたユーザーのアクセスキーIDとシークレットアクセスキーを控えておく
4. Microsoft Entra IDでユーザープロビジョニングを構成する
Microsoft Entra IDからAWSへユーザーをプロビジョニングする設定を行います。
プロビジョニング設定
- Azureポータルにて、
Microsoft Entra ID
>エンタープライズアプリケーション
を選択 - 先ほど作成した
AWS-Single-Account-Access
を選択 -
プロビジョニング
を選択し、作業の開始
を選択 -
プロビジョニングモード
で、自動
を選択 -
管理者資格情報
で、以下の情報を入力-
clientSecret
: 先ほど作成したIAMユーザーのアクセスキーID -
シークレットトークン
:先ほど作成したIAMユーザーのシークレットアクセスキー -
テスト接続
を選択し、成功することを確認
-
-
保存
を選択
プロビジョニング開始
-
プロビジョニング
で、プロビジョニングの開始
を選択 -
プロビジョニングの編集
で、状態
をオン
に変更し、保存
ユーザーとグループの設定
-
ユーザーとグループ
を選択し、ユーザーまたはグループの追加
を選択 - ユーザーとグループ >
選択されていません
を選択 - ユーザーとグループを選択し、
選択
を選択- ex.
aws-admin
- ex.
- ロールを選択してください >
選択されていません
を選択 - どれか1つロールを選択し、
選択
を選択- ex.
MicrosoftEntraID-Admin
- ex.
-
割り当て
を選択
ユーザーで管理してもよいですが、マルチクラウドでAzure, AWS, Google Cloud等に同一のadmin, developer等の権限を利用する場合は、グループで管理した方が運用負荷が低減できるのでおススメです
動作確認
Microsoft Entra IDのエンタープライズアプリケーション
で、AWS-Single-Account-Access
を選択し、プロパティ
を開きます。
そちらにあるユーザーのアクセスURL
にて起動し、アクセスすることが可能です。
なお、このプロパティ
にてユーザーに表示しますか
をはい
にしておくと、MyAppsのアプリ一覧に表示され、そこから起動することも可能です。
まとめ
Microsoft Entra IDとAWSのアカウント連携を構築する手順の概要を解説しました。
Microsoft Entra IDにて
- プロジェクトA管理者グループ
- プロジェクトA開発者グループ
- プロジェクトB管理者グループ
- プロジェクトB開発者グループ
等のグループを作成すれば、同一のグループにAzure, AWSのプロジェクト・ロール権限を付与しておくことで、ユーザーをそれぞれのクラウドで管理する必要がなくなります。
次回はGitHubとMicrosoft Entra IDの連携、ライセンス周りについて書いてみたいと思います!
関連記事
- Microsoft Entra IDとGoogle Cloud, AWS, GitHubのユーザー連携やってみる①:パブリッククラウドのリソース管理体系とユーザー管理体系を比較し、Microsoft Entra IDを利用したユーザー管理方法について解説しています。
- Microsoft Entra IDとGoogle Cloud, AWS, GitHubのユーザー連携やってみる②:Microsoft Entra IDとGoogle Cloudの連携方法、特にゲストユーザーについて解説しています。