Azure AD ユーザーの認証情報を使って AWS IAM Identity Center 経由で AWS アカウントにアクセスする方法を紹介します。以前にも同様のブログを書きましたが、AWS Single Sign-On 時代だったため、改めて書き直しました。手順に変わりがないか確認したい意図もありましたが、ほぼ同じ手順で設定できました。
構成と全体の流れ
構成図と設定内容を示します。
ユーザー/グループ情報の同期は SCIM による自動同期を採用しています。
設定の流れ
SAML の信頼関係の構築
AWS IAM Identity Center でアイデンティティソースの設定変更
Azure AD でエンタープライズアプリケーションの作成
Azure AD と AWS IAM Identity Center 間で SAML メタデータの交換と設定
ユーザー/グループ情報の同期設定
AWS IAM Identity Center で自動プロビジョニングの有効化
Azure AD と AWS IAM Identity Center 間の自動同期の設定
Azure AD で同期するユーザー/グループの選択
AWS アカウントへのアクセス権の設定
アクセス許可セットの作成
AWS アカウントとユーザー/グループ、アクセス権限セットの紐付け
構成図中の AWS IAM Identity Center と AWS アカウント間の SAML の信頼関係の構築は「3. AWS アカウントへのアクセス権の設定」において AWS IAM Identity Center が自動的に設定するため括弧書きとしています。
設定
AWS IAM Identity Center を有効化し、アイデンティティソースが Identity Center ディレクトリ(AWS IAM Identity Center でユーザーを管理)の状態から設定を開始します。
SAML の信頼関係の構築
AWS IAM Identity Center から設定していきます。
アイデンティティソースを Azure AD に変更するために「設定」から「アイデンティティソースの変更」を選択します。
「外部 ID プロバイダー」を指定します。「Active Derectory」ではありません。
メタデータをダウンロードします。本メタデータを後ほど、Azure AD にアップロードします。
ここから、Azure AD の手順に移ります。
始めに Azure AD の「エンタープライズアプリケーション」を選択します。
AWS IAM Identity Center との連携用に「新しいアプリケーション」を選択します。
ギャラリーを「AWS」などで検索すると「AWS IAM Identity Center (successor to AWS Single Sign-On)」が検索結果に出てくるので選択します。
任意の名前をつけて「作成」します。今回は「AWS IAM Identity Center」としました。
名前は My Apps ポータルで表示されるアプリの名前として利用されます(後から変更できます)。
次に、「シングル サインオン」を選択して、SAML の信頼関係の設定を実施していきます。
方式の選択では「SAML」を選択します。
「メタデータ ファイルをアップロードする」を選択して、先ほど AWS IAM Identity Center からダウンロードしたメタデータファイルをアップロードして「追加」します。
メタデータファイルをアップロードすると識別子が表示されるため「保存」を選択します。
設定後にシングルサインオンをテストするかどうか問われますが、まだ AWS IAM Identity Center 側にユーザー情報を同期していないため後で実施します。そのため、「いいえ、後で test します」を選択します。
続いて、属性情報のマッピングを設定します。マッピング設定では、Azure AD ユーザの属性情報を AWS IAM Identity Center ユーザーのどの属性情報にどのようにマッピングするかを定義します
プロビジョニングのマッピングメニューから「Provision Azure Active Directory Users」を選択します。
マッピング設定は、エンタープライズアプリケーションの作成時点で定義済みであるため、一から作成する必要はありません。ですが、AWS IAM Identity Center 側で必須の属性である「ユーザー名」「表示名」「姓」「名」にマッピングされる Azure AD の属性のうち、「姓」「名」は任意の設定項目となっていることから、「姓」「名」が設定されていない場合に同期エラーが発生します。その対策として、Azure AD のユーザ情報に「姓(surname)」「名(givenName)」が入力されていない場合のデフォルト値を設定しておきます。
AWS IAM Identity Center において、Azure AD から同期したユーザーに対して AWS アカウントにアクセスする権限を付与します。権限設定のイメージを把握するには次のブログが役立ちます。AWS SSO 時代のブログですが、考え方はあまり変わっていません。また、「アクセス権限セット」は現在「アクセス許可セット」と呼ばれます。
AWS マネージドポリシーとして「AdministratorAccess」を選択します。他にもポリシーを選択できます。インラインポリシーは AWS IAM Identity Center でポリシーを記載することでアクセス先のアカウントにポリシーを適用できますが、カスタマーマネージドポリシーと許可の境界(Permissions boundary)はアクセス先のアカウントにおいて事前に IAM ポリシーを作成しておき、AWS IAM Identity Center では、その IAM ポリシー名を指定することで設定します。
Azure AD の My Apps Portal からではなく、直接 AWS IAM Identity Center の AWS アクセスポータルからアクセスすることもできます。
AWS アクセスポータルの URL は環境毎に異なり、AWS IAM Identity Center の設定画面から確認できます。また、ID ストア IDの部分にグローバルで一意な文字列を指定することもできます(ただし、変更できません)。
https://<ID ストア ID>.awsapps.com/start
アクセスすると Microsoft アカウントの認証画面になります。
同期したユーザーで認証すると AWS アクセスポータルにアクセスできます。後は「Azure AD の My Apps Portal からアクセス」と同様です。
さいごに
AWS IAM Identity Center が AWS Single Sign-On だった頃に一度、同じ内容でブログを書きましたが、1 年以上経過していたため、改めて AWS IAM Identity Center と Azure AD の連携として書き直しました。AWS Single Sign-On だった頃とほとんど同じ手順でできました。