
AWS IAM Identity Centerを利用したOrganizations組織外AWSアカウントへのSSOアクセス
はじめに
こんにちは!ITソリューション部インフラサービスGのイトウです。
AWS IAM Identity Center(旧AWS SSO) は、ユーザー認証とアクセス管理を簡素化するサービスです。
本ブログでは、
IAM Identity Centerの主要機能を紹介し、
Organizations外のAWSアカウントへのSSOアクセス設定方法を解説します。
AWS IAM Identity Centerの主な機能
1. 組織内の複数アカウントへのアクセス許可の一元化
AWS Organizationsで管理する組織内の複数のAWSアカウントへのアクセス管理を行えます。それぞれのユーザーがどのアカウントに対して、どの許可セットでアクセス可能なのかといった細かな設定を、管理アカウントの IAM Identity Centerの画面で一元的に管理することが可能になります。

2. 外部のID認証情報の利用
Microsoft Active DirectoryやGoogle Workspace、Okta、Onelogin などの外部IDプロバイダーと連携することで、既存の認証情報を利用してAWSアカウントにアクセスできるようにします。
外部IDプロバイダーを使用して社内システムのアクセス制御を行っている場合、IAM Identity Centerと統合することで、既存の属性ベースの認可をAWSアカウントに適用できます。

※ただし、アイデンティティを管理する場所は1箇所です。外部IdPとIAM Identity Centerの認証情報の併用はできません。
3. アプリケーションへのSSOアクセスの認証
IAM Identity Centerでアプリケーション割り当てを行うことで、SAMLを使用してアプリケーションにシングルサインオン(SSO)でアクセスできます。 ユーザーは組織のアクセスポータルにログインするだけで複数のアプリケーションにシームレスにアクセス可能です。
アプリケーションの例
AWSマネージドアプリケーション
Amazon QuickSightやAmazon Q Developer、Amazon Kendraなど
IAM Identity Centerを組織インスタンスとして有効化しているか、メンバーアカウントでアカウントインスタンスとして有効化しているかで、統合可能なマネージドアプリケーションが異なります。詳しくは以下のページをご参照ください。
AWS managed applications that you can use with IAM Identity Center
カスタマーマネージドアプリケーション
SAML 2.0をサポートするアプリケーションのカタログから選択
独自のアプリケーションをセットアップ

また、割り当ての設定対象には Organizations組織外のAWSアカウントも含まれます。
以下、Organizations組織外のAWSアカウントへのアクセス設定を実践していきます。
組織外AWSアカウントへのアクセス設定をやってみた
以下のステップバイステップ手順を参考に実施しています。
AWS IAM Identity Center (successor to AWS SSO) Integration Guide for External AWS Account
前提
Organizationsの管理アカウントにてIAM Identity Centerの管理者権限があること。
Organizations管理外のAWSアカウントのAWS IAMへの管理者権限があること。
Step 1. IAM Identity Centerでアプリケーションの割り当てを作成
管理アカウントのIAM Identity Centerから、アプリケーションの割り当てを作成します。

今回は外部アカウントを割り当てるので、「カタログからアプリケーションを選択する」を選択して、「External AWS Account」を選択します。

アクセスポータルに表示させる外部アカウントの表示名と説明を入力します。また、のちに必要になるメタデータファイルをダウンロードしておきます。IAM Identity Center側の設定はここでいったん終わりになるので「送信」を押して設定を保存します。


Step 2. 外部アカウントにてIDプロバイダとロールの作成
外部アカウントの IAMコンソールにてIDプロバイダを作成します。先ほどダウンロードしたメタデータファイルをアップロードして、IAM Identity CenterをIDプロバイダとして保存することが可能です。

さらにSAMLフェデレーションに利用するIAMロールを作成します。「ロールを作成」をクリックし、信頼されたエンティティタイプに「SAML 2.0フェデレーション」、プロバイダーに今作成したIDプロバイダを選択します。


今回はAdministrator Accessのマネージドポリシーを割り当てます。

名前と説明を入力して作成を完了します。

Step 3. IAM Identity Centerで属性のマッピング
管理アカウントのIAM Identity Centerにて属性マッピングの編集から以下の属性を追加します。



ACCOUNTIDは外部アカウントのID、SAMLPROVIDERNAMEとROLENAMEは、それぞれ Step 2で作成したIDプロバイダとロールの名前です。
Step 4. ユーザーの割り当て
アプリケーションにユーザーを割り当てます。IAM Identity Centerのユーザーもしくはグループ単位で割り当てが可能です。今回はグループを割り当てて、そのグループに属したユーザーで外部アカウントへのログイン検証を実施します。
「ユーザーとグループを割り当てる」をクリックし、割り当てるグループを選択して「割り当てる」をクリックします。

ログインしてみる
Step 4. で割り当てたグループ内のユーザーでアクセスポータルにログインします。
アプリケーションのタブを開くと外部AWSアカウントが表示されています。

リンクをクリックすると外部AWSアカウントのコンソールに遷移します。

SAMLフェデレーションのロールを用いて、アクセスが成功していることが確認できます。

ログインする際の権限を複数用意するには
今回はAdministrator Accessの権限で外部アカウントにアクセスしましたが、様々な権限を用意してユーザーごとに割り当てる権限を分けたい、という要件ももちろんあるかと思います。
異なる権限を用意するには、権限ごとに割り当てアプリケーションを作成し、外部アカウントでIDプロバイダとフェデレーション用ロールを作成して、ユーザーを割り当てる必要があります。
おわりに
AWS IAM Identity Centerは、複雑なアクセス管理を簡素化する非常に強力なツールです。本ブログで紹介した内容を参考に、自社のAWS環境での効率的な管理をぜひ実践してみてください!
執筆者プロフィール:伊藤
AWSを中心にクラウドの設計構築に携わってます。
IaCをもっと学んでいきたいです。
趣味はゲームと映画鑑賞です。
お問合せはお気軽に
SHIFTについて(コーポレートサイト)
SHIFTのサービスについて(サービスサイト)
SHIFTの導入事例
お役立ち資料はこちら
SHIFTの採用情報はこちら