Entra IDとAWS IAM Identity Centerを連携してSSOアクセス(自動プロビジョニング)
はじめに
Entraを使ったAWSへのSSOアクセスをします。
Entra有料プランを使うことで、グループやユーザーの自動プロビジョニングを試してみようと思います。
全体的な流れは下記です。
- Entra ID P2利用開始
- 新規Azureサブスクリプション作成
- Entra ID グループおよびユーザー作成
- Entra ID エンタープライズアプリケーション(AWS IAM Identity Center)設定
- AWS IAM Identity Center自動プロビジョニング設定
- Entra ID 自動プロビジョニング設定
- Entra IDとAWS IAM Identity Center同期確認
当初は、以前AzureのEntra無料プランベースで構築したAWSへのSSOアクセスを単純にEntra P2プランにアップデートすることで、グループ管理および自動プロビジョニングを試してみようと思っていたのですが、結果的には再度SSO設定をやり直すことになってしまいました。
ただ、いろいろやった結果、MicrosoftやEntraアカウント、Azureサブスクリプションについて理解が深まったと思います(たぶんまだちゃんとは理解できていないですが)。
AWSにSSOログインするためのAzure Entra設定とAWS側設定手順については、下記記事でも紹介しています。
今にして思えば、このときに何も考えずに(知らずに)Microsoft個人アカウントで始めたことが失敗でした..。
※アカウント等の考え方について、下記ページが非常に参考になりました(先にこのページを読んでおけばよかったです...)
ちなみに過去下記のような記事も書いているのですが、このときはどちらかというとAWSとGoogleCloudの違いに着目していたこともあり(言い訳)、Azureについては全然理解できていなかったようです。
1. Entra ID P2利用開始
Microsoft Entraのプランと価格は下記のようなものがあります。
Entra価格とプランのページの「無料で試す」ボタンから利用開始が可能です。
このときAzure利用開始時と同じメールアドレスを入力したのですが、新しくアカウントを作成する必要があるといわれます。
※このとき違和感は感じつつも、あまり深く考えることなく進めていました。
「アンケートのお願い」なる画面で勤務先情報を入れる必要があります。今回はあくまで個人用アカウントなので適当に入力しておきます。
クレジットカード情報などを入力してEntra P2プランを開始することができました。
念のためEntra管理センターで情報を見ると、無事ライセンスが「Microsoft Entra ID P2」になっています。
2. 新規Azureサブスクリプション作成
同じメールアドレスでAzureもEntraも契約したので、私は当初AzureのEntraプランも自動的に移行されるものだと思っていました。
1で書いたように、Entra有料プランを契約したアカウントはもともとAzureアカウントを作成したアカウントとはディレクトリが別になってしまったので、もとのAzureアカウントのEntraはFree版のままです。
Azureサブスクリプションを新規ディレクトリに移行することもできそう(※)ですが、Entra有料プラン終了後はもとのAzureで使っていたFreeプランのディレクトリに戻す可能性もあると思うので、今回は移行はせずに新しいEntraで新規にAzureサブスクリプション作ってAWS SSOを設定しなおそうと思います。
※ https://learn.microsoft.com/ja-jp/azure/role-based-access-control/transfer-subscription
- Azureポータルにアクセス
- 先ほど作成したEntraIDとパスワードでログイン
- Azureの「開始」をクリックします
- 「Try Azure for free」をクリック
- Agreement、携帯電話認証、クレジットカード情報の入力をおこない、完了
- クイックスタート画面
3. Entra ID グループ、ユーザー作成
3-1. グループ、ユーザー作成
Entra管理センターで、SSO用のユーザーおよびグループを作成します。
- Entra管理センターの左メニューから「すべてのグループ」を開き、「新しいグループ」をクリックします
- AWS-Adminsというグループを作成するため、以下情報を入力します。
- グループの種類:セキュリティ
- グループ名:AWS-Admins
- グループの説明:AWS管理者用アクセスグループ
- 所有者:(自分のアカウントを選択)
- メンバー:(後でユーザーを追加するため、ここでは空のまま)
入力後に「作成」をクリックして、グループを作成します。
- Entra管理センターの左メニューから「すべてのユーザー」を開きます。
「新しいユーザー」をクリックし、「新しいユーザーの作成」をクリックします
- 基本情報の設定
- ユーザープリンシパル名:awstest
- 表示名:AWS Test User
- パスワード:パスワード自動生成(チェックを入れる)
- 有効なアカウント(チェックを入れる)
「次:プロパティ」をクリック
- プロパティの設定
- 名:Test
- 姓:User
- ユーザーの種類:メンバー
「次:割り当て」をクリック
- 割り当ての設定
- 「グループの追加」をクリック
- 「AWS-Admins」(先ほど作成したグループ)にチェックを入れて「選択」をクリック
- 「ロールの追加」は不要
「次:確認と作成」をクリック
- 確認と作成
- ユーザープリンシパル名もメモしておきます
- 初期パスワードをメモしておきます
※この画面を閉じると二度と初期パスワードは表示されません
- 「作成」をクリック
- グループのメンバーシップ確認
- Entra管理センターの左メニューから「すべてのグループ」を開き、「AWS-Admins」を選択
- 「ユーザー」をクリック
- 作成したユーザー(AWS Test User)が表示されていることを確認
3-2. ライセンス割り当て
- ユーザー名をクリックして詳細を確認
割り当て済みライセンスが0になっているのが気になるので確認します。
- 左メニューの「ライセンス」をクリック
ライセンス割り当ての追加、削除、および再処理は、M365 管理センター内でのみ使用できます。
と記載されています。 - 「M365管理センターに移動する」をクリック
ライセンスの割り当てができそうです。 - 「Microsoft Entra ID P2」をクリック
- AWS Test Userが表示されていないので、「ライセンスの割り当て」をクリック
- AWS Test Userを選択して、「割り当て」をクリック
無事にライセンスが割り当てされました。
3-3. 初回サインインとパスワード変更
- Chromeのシークレットウィンドウなどでhttps://portal.azure.com にアクセス
- 先ほど作成したユーザーアカウントでサインイン
- ユーザー名:awstest@{テナント名}.onmicrosoft.com
- パスワード:(保存しておいた初期パスワード)
- 初回サインイン時にパスワード変更を求められるので、新しいパスワードを設定:
- MFAの設定を要求されるので、AuthenticatorでMFAを設定
これでAWS SSOで使用するユーザーの準備が整いました。このユーザーは後ほどAWS側の設定で使用します。
4. Entra ID エンタープライズアプリケーション(AWS IAM Identity Center)設定
AWS SSOを構成するために、EntraIDにAWS用のアプリケーションを追加し、SAML認証の設定を行います。
4-1. AWS IAM Identity Centerアプリケーションの追加
- 「Microsoft Entra ID」の「エンタープライズアプリケーション」メニューを開く
- 「新しいアプリケーション」から、IAM Identity Centerで検索
4. 「AWS IAM Identity Center」を選択
5. 「作成」をクリック
4-2. シングルサインオン設定
- 作成したアプリケーション画面に遷移するので、「シングルサインオン」を選択
- メタデータを設定
こちらの記事の2-4の3の「メタデータファイルをダウンロード」をクリックしてファイルをダウンロードします。
下記の「メタデータファイルをアップロードする」->AWSのIAM Identity Centerでダウンロードしたメタデータファイルを選択して「追加」をクリックし、アップロードします。
- 設定が反映されるので「保存」をクリック
- 識別子(エンティティID):IAM Identity Center Assertion Consumer Service (ACS) の URL
- 応答URL(アサーション コンシューマー サービス URL):IAM Identity Center 発行者 URL
- サインオンURL:空欄のまま
- リレー状態:空欄のまま
- ログアウトURL:空欄のまま
「保存」をクリック(変更がない場合は×をクリック)
- 「SAML証明書」セクションの「証明書(Base64)」をダウンロードし、安全な場所に保存
- 「AWS IAM Identity Center (successor to AWS Single Sign-On) のセットアップ」セクションで以下の情報をメモしておく
- ログインURL
- Microsoft Entra識別子
※これらの情報はAWS側の設定で使用します
※「AWS IAM Identity Center (successor to AWS Single Sign-On) でシングル サインオンをTest」はAWS側を設定してから使用します
4-3. ユーザーとグループの割り当て
- エンタープライズアプリケーション-AWS IAM Identity Center (successor to AWS Single Sign-On)の左メニューで「ユーザーとグループ」メニューを開き、「ユーザーまたはグループの追加」をクリック
- ユーザーとグループの「選択されていません」の箇所をクリックし、「AWS-Admins」グループを選択して「選択」をクリック
- 「割り当て」をクリック
これでAWSのシングルサインオンにグループが割り当てられました。
5. AWS IAM Identity Center自動プロビジョニング設定
5-1. 外部IDプロバイダー設定
Azureポータルでコピーした値と証明書を使用して、IAM Identity Centerで外部IDプロバイダーを設定します。
- IAM Identity Centerの左側のメニューから「Settings」を選択
- 「アイデンティティソース」セクションで「アクション」-「アイデンティティソースを変更」をクリックします。
- 「外部IDプロバイダー」を選択して「次へ」
- IdPのメタデータを設定します。
4-2で取得した情報を入力し、SAML証明書をアップロードします
IdPサインインURL:EntraIDの「ログインURL」を入力
IdP発行者URL:EntraIDの「Entra識別子」を入力
IdP証明書:EntraIDの「SAML証明書」をアップロード
6. 確認画面になるので、「承諾」と入力して確定します。
5-2. 許可セット作成
- IAM Identity Centerコンソールの左側のメニューから「Permission sets」を選択
- 「許可セットを作成」をクリック
- 「事前定義された許可セット」を選択し、「AdministratorAccess」ポリシーを選択し、「次へ」をクリック
今回はあらかじめ用意されている許可セットを使用します。
※※本番環境では必要最小限の権限を設定することを推奨
- 「セッション期間」は一旦12時間に設定し、「次へ」をクリック
- 設定内容を確認して「作成」をクリック
5-3. SAML設定情報
- IAM Identity Centerの左側のメニューから「Settings」を選択
- 「自動プロビジョニング」をEnableにする
- 「SCIMエンドポイント」、「アクセストークン」をコピーする
6. Entra ID 自動プロビジョニング設定
- Azureポータルにログイン
- 「Microsoft Entra ID」->「エンタープライズアプリケーション」->「AWS IAM Identity Center」の左メニューから「プロビジョニング」を開く
- 「作業の開始」をクリック
- プロビジョニングモードを「自動」に設定し、5-3で取得した下記「管理者資格情報」を入力
- テナントのURL:IAM Identity Centerで取得した「SCIMエンドポイント」
- シークレットトークン:IAM Identity Centerで取得した「アクセストークン」
「テスト接続」をクリックして、エラーが出なければ問題ありません
- 「保存」をクリックします
- マッピングセクションで、グループとユーザーのプロビジョニングが有効になっていることを確認し、「プロビジョニング状態」を「オン」に変更して保存します
7. Entra IDとAWS IAM Identity Center同期確認
7-1. AWS IAM Identity Centerでのグループ、ユーザー同期確認および権限設定
- IAM Identity Centerコンソールの左側のメニューから「Groups」を選択
- Entraで作成したグループ「AWS-Admins」が作成されています。
作成者もSCIMになっているので、自動連携で作成されたことがわかります
ただし、この状態ではグループやユーザーは同期されていても実際のAWSアカウントにアクセスする権限はないので、許可セットを割り当てます。
グループ名(AWS-Admins)をクリックして、グループ詳細を開きます。 - 「AWS アカウント」タブを開き、「アカウントを割り当てる」をクリックします
- グループにアクセス権を付与したいAWSアカウントを選択し、割り当てしたい許可セットにチェックを入れて、「Assign」をクリック
- 割り当てがされると、権限付与されたAWSアカウントが表示されます
これでSSOアクセスの準備ができました。
7-2. AWSにSSOログイン
EntraユーザーでAWSにログインしてみます
- まずはAWSアクセスポータルのURLを確認するため、IAM Identity Centerの左側のメニューから「Settings」を選択し、「アイデンティティソース」のAWS access portal URLをコピーします。
- ブラウザのシークレットモードでウィンドウを開き、そこからAWS access portal URLにアクセスすると、Microsoftのサインイン画面になります。
※シークレットモードを使用せずにそのままログインしても問題ありませんが、もとのセッションは切れてしまいます
awstestユーザーでサインインします。
- ユーザー名とパスワードを入力してログインすると、MFAの設定要求が出ますので、そのままMFAの設定をします。
スマートフォンのAuthenticatorアプリでQRコードをスキャンしてコード入力して設定完了です。
下記のようにアクセスポータルが表示されます。
▽マークをクリックすると使用可能な権限が表示されますので、AdministratorAccessをクリックします
AWSアカウントにアクセスできました。
7-3. ユーザー追加時の同期確認
3-1を参考に、Entraでグループ「AWS-Admins」に別のユーザーを追加して自動同期されるか確認します
- 今回はnew-awstestというユーザーを作成
- 既存の「AWS-Admins」に追加
- IAM Identity Centerで確認します
しばらくするとユーザーが追加されて3名になっていました。
4. 新規追加したユーザーでSSOログイン
ブラウザのシークレットモードでウィンドウを開き、そこからAWS access portal URLにアクセスします。
Microsoftのサインイン画面になりますので、追加したnew-awstestユーザーでサインインします。
初期パスワードを変更していなかったので、パスワード更新画面になりました。
パスワード更新して進めると、MFAの設定要求が出ますので、先ほど同様にMFA設定をします。
無事アクセスができました。
8. まとめ
Entra IDとAWS IAM Identity Centerを連携してグループ、ユーザーの自動プロビジョニングおよびSSOアクセス設定をしました。
私自身があまりEntra IDやAzureに詳しくないこともあって、いろいろ躓いてしまいましたが、今回自分でイチから設定してみて勉強になりました。
※MicrosoftやAWSの公式ページでも設定手順が記載されています。
今回は実際の運用を見越した設定はしていませんが、せっかくなのでEntra有料プランでできることを他にも試してみようと思います。
Discussion