組織のAWS環境が成長すると、複数のAWSアカウントを管理する必要が生じます。本記事では、AWS IAM Identity Center(旧AWS SSO)を使用して、複数のAWSアカウントへのシングルサインオン(SSO)を実現する方法を解説します。IAMユーザーを各アカウントに個別に作成する煩雑さから解放され、一元的なID管理を実現しましょう。
IAM Identity Centerとは
IAM Identity Centerは、AWSアカウントおよびクラウドアプリケーションへのシングルサインオン(SSO)アクセスを一元管理するサービスです。2022年7月にAWS Single Sign-On(AWS SSO)から名称が変更されました。
IAM Identity Centerの主要機能
IAM Identity Centerは、以下の機能を提供します。
mindmap
root((IAM Identity Center))
IDソース管理
組み込みディレクトリ
Active Directory連携
外部IdP連携(SAML/SCIM)
AWSアカウントへのアクセス
Organizations連携
権限セット管理
一時的な認証情報
アプリケーションアクセス
SAML 2.0アプリ
OAuth 2.0アプリ
カスタムアプリケーション
開発者ツール連携
AWS CLI v2
AWS SDK
AWS Console Mobile App| 機能カテゴリ | 説明 |
|---|---|
| IDソース管理 | ユーザーとグループの作成・管理、外部IdPとの連携 |
| AWSアカウントアクセス | AWS Organizations内のアカウントへのアクセス権限管理 |
| アプリケーションアクセス | SAML 2.0/OAuth 2.0対応のビジネスアプリへのSSO |
| 開発者ツール連携 | AWS CLI v2やSDKでの一時認証情報の取得 |
従来のIAMユーザー管理との違い
複数アカウント環境において、従来のIAMユーザー管理とIAM Identity Centerでは、運用負荷とセキュリティに大きな違いがあります。
flowchart TB
subgraph "従来のIAMユーザー管理"
U1[ユーザーA]
A1[アカウント1<br/>IAMユーザー]
A2[アカウント2<br/>IAMユーザー]
A3[アカウント3<br/>IAMユーザー]
U1 --> A1
U1 --> A2
U1 --> A3
end
subgraph "IAM Identity Center"
U2[ユーザーA]
IC[IAM Identity Center<br/>一元管理]
B1[アカウント1]
B2[アカウント2]
B3[アカウント3]
U2 --> IC
IC --> B1
IC --> B2
IC --> B3
end| 比較項目 | 従来のIAMユーザー | IAM Identity Center |
|---|---|---|
| ユーザー管理 | アカウントごとに個別作成 | 一元的に管理 |
| 認証情報 | 長期的(アクセスキー、パスワード) | 一時的(セッション認証情報) |
| パスワード管理 | アカウントごとに異なる | 単一のパスワードでSSO |
| MFA設定 | アカウントごとに設定 | 一度の設定で全アカウントに適用 |
| アクセス権限変更 | アカウントごとに操作 | 一括で変更可能 |
| 退職時の対応 | 全アカウントから削除 | 一箇所で無効化 |
| 料金 | 無料 | 無料 |
IAM Identity Centerを使用するメリット
IAM Identity Centerを導入することで、以下のメリットが得られます。
セキュリティの向上
ユーザーは一時的な認証情報を使用してAWSアカウントにアクセスします。長期的なアクセスキーを各アカウントに保存する必要がないため、認証情報漏洩のリスクが大幅に低減します。また、MFAを一元的に管理でき、すべてのアカウントアクセスに適用できます。
運用効率の改善
ユーザーの追加・削除・権限変更を一箇所で行えます。従業員の入社・退職時の対応が迅速になり、アカウント数が増えても管理コストは増加しません。
ユーザー体験の向上
ユーザーは単一のポータルサイトにログインするだけで、割り当てられたすべてのAWSアカウントにアクセスできます。アカウントごとに異なる認証情報を記憶する必要がありません。
コンプライアンス対応
アクセス履歴がCloudTrailに一元的に記録されます。誰がいつどのアカウントにアクセスしたかを容易に追跡でき、監査対応が効率化します。
IAM Identity Centerの前提条件
IAM Identity Centerを使用するには、以下の前提条件を満たす必要があります。
AWS Organizationsの有効化
IAM Identity Centerは、AWS Organizationsと連携して動作します。組織の管理アカウントでOrganizationsを有効化し、「すべての機能」を有効にする必要があります。
flowchart LR
subgraph "AWS Organizations"
MA[管理アカウント<br/>IAM Identity Center有効化]
subgraph "組織単位(OU)"
M1[メンバーアカウント1]
M2[メンバーアカウント2]
M3[メンバーアカウント3]
end
end
MA --> M1
MA --> M2
MA --> M3リージョンの選択
IAM Identity Centerは、有効化時に選択したリージョンにデータを保存します。一度選択したリージョンは変更できないため、慎重に選択してください。日本国内での利用が中心の場合は、東京リージョン(ap-northeast-1)を選択することを推奨します。
委任管理者の設定(オプション)
デフォルトでは、IAM Identity Centerは管理アカウントで管理します。ただし、管理アカウントの使用を最小限に抑えるベストプラクティスに従い、メンバーアカウントを委任管理者として指定することも可能です。
IAM Identity Centerのセットアップ
IAM Identity Centerをセットアップする手順を解説します。
ステップ1: IAM Identity Centerの有効化
管理アカウントのAWSマネジメントコンソールから、IAM Identity Centerを有効化します。
- AWSマネジメントコンソールにサインイン
- サービス検索で「IAM Identity Center」を検索して選択
- 「IAM Identity Centerを有効にする」をクリック
- リージョンを確認し、「有効化」をクリック
有効化が完了すると、IAM Identity Centerのダッシュボードが表示されます。
ステップ2: IDソースの設定
IAM Identity Centerでは、ユーザーとグループの管理方法として3つのオプションから選択できます。
| IDソース | 説明 | 推奨ユースケース |
|---|---|---|
| Identity Centerディレクトリ | IAM Identity Center組み込みのディレクトリ | 小規模組織、検証環境 |
| Active Directory | AWS Directory Service経由でのAD連携 | オンプレミスAD利用組織 |
| 外部IDプロバイダー | Okta、Azure AD等とのSAML/SCIM連携 | 既存IdP利用組織 |
本記事では、最もシンプルな「Identity Centerディレクトリ」を使用した手順を解説します。Identity Centerディレクトリはデフォルトで設定されているため、追加の設定は不要です。
ステップ3: ユーザーの作成
IAM Identity Centerでユーザーを作成します。
- 左メニューから「ユーザー」を選択
- 「ユーザーを追加」をクリック
- ユーザー情報を入力
入力項目は以下の通りです。
| 項目 | 説明 | 必須 |
|---|---|---|
| ユーザー名 | サインインに使用する一意の識別子 | 必須 |
| パスワード | 初期パスワードの設定方法を選択 | 必須 |
| Eメールアドレス | パスワードリセット等に使用 | 必須 |
| 名 | ユーザーの名 | 必須 |
| 姓 | ユーザーの姓 | 必須 |
| 表示名 | コンソールに表示される名前 | 任意 |
- 「次へ」をクリックしてグループへの追加を設定(後でも可能)
- 「ユーザーを追加」をクリック
ユーザーが作成されると、指定したEメールアドレスに招待メールが送信されます。ユーザーはメール内のリンクからパスワードを設定し、ポータルにアクセスできるようになります。
ステップ4: グループの作成
効率的な権限管理のために、グループを作成してユーザーを整理します。
- 左メニューから「グループ」を選択
- 「グループを作成」をクリック
- グループ名と説明を入力
- グループに追加するユーザーを選択(後でも可能)
- 「グループを作成」をクリック
推奨されるグループ構成の例を示します。
graph TB
subgraph "グループ構成例"
Admins[Administrators<br/>管理者グループ]
Devs[Developers<br/>開発者グループ]
Ops[Operations<br/>運用者グループ]
RO[ReadOnly<br/>閲覧専用グループ]
end| グループ名 | 用途 | 想定メンバー |
|---|---|---|
| Administrators | 全アカウントの管理者権限 | クラウド管理者 |
| Developers | 開発アカウントの開発者権限 | 開発チーム |
| Operations | 本番アカウントの運用権限 | 運用チーム |
| ReadOnly | 全アカウントの閲覧権限 | 監査担当者 |
権限セットの設定
権限セットは、AWSアカウントにアクセスする際にユーザーに付与される権限を定義します。
権限セットとは
権限セットは、1つ以上のIAMポリシーのコレクションです。ユーザーまたはグループをAWSアカウントに割り当てる際に、権限セットを指定します。IAM Identity Centerは、権限セットに基づいてIAMロールを各アカウントに自動作成します。
flowchart LR
PS[権限セット<br/>Permission Set]
subgraph "アカウント1"
R1[IAMロール<br/>自動作成]
end
subgraph "アカウント2"
R2[IAMロール<br/>自動作成]
end
subgraph "アカウント3"
R3[IAMロール<br/>自動作成]
end
PS --> R1
PS --> R2
PS --> R3権限セットの作成
権限セットを作成する手順を解説します。
- 左メニューから「権限セット」を選択
- 「権限セットを作成」をクリック
- 権限セットのタイプを選択
事前定義された権限セット
AWSが提供する事前定義された権限セットを使用できます。代表的なものを以下に示します。
| 権限セット名 | 説明 |
|---|---|
| AdministratorAccess | AWS全サービスへのフルアクセス |
| PowerUserAccess | IAM以外のサービスへのフルアクセス |
| ViewOnlyAccess | すべてのリソースの読み取り専用アクセス |
| ReadOnlyAccess | ほとんどのサービスの読み取り専用アクセス |
| Billing | 請求情報へのアクセス |
カスタム権限セット
組織固有の要件に合わせて、カスタム権限セットを作成することも可能です。
- 「カスタム権限セット」を選択
- 権限セット名と説明を入力
- ポリシーのアタッチ方法を選択
ポリシーのアタッチ方法は以下の3つから選択できます。
| 方法 | 説明 |
|---|---|
| AWS管理ポリシー | AWSが提供する管理ポリシーをアタッチ |
| カスタマー管理ポリシー | 各アカウントで事前に作成したポリシーを参照 |
| インラインポリシー | 権限セット内にJSONポリシーを直接記述 |
インラインポリシーの例を示します。開発者向けにEC2とS3の操作を許可し、本番環境のタグが付いたリソースへのアクセスを制限するポリシーです。
|
|
- セッション期間を設定(デフォルト1時間、最大12時間)
- 「作成」をクリック
セッション期間の考慮事項
セッション期間は、ユーザーがAWSアカウントにアクセスできる時間を定義します。セキュリティと利便性のバランスを考慮して設定してください。
| 期間 | 推奨ユースケース |
|---|---|
| 1時間 | 高セキュリティ環境、特権アクセス |
| 4時間 | 一般的な開発作業 |
| 8時間 | 長時間の運用作業 |
| 12時間 | 長期間のジョブ実行(最大値) |
AWSアカウントへのアクセス割り当て
ユーザー(またはグループ)、AWSアカウント、権限セットの3つを組み合わせて、アクセス権限を割り当てます。
アクセス割り当ての仕組み
flowchart LR
subgraph "割り当て"
UG[ユーザー/グループ]
PS[権限セット]
ACC[AWSアカウント]
end
UG --> ASSIGN[アクセス割り当て]
PS --> ASSIGN
ACC --> ASSIGN
ASSIGN --> ROLE[IAMロール自動作成]アクセスの割り当て手順
- 左メニューから「AWSアカウント」を選択
- アクセスを割り当てるアカウントを選択(複数選択可能)
- 「ユーザーまたはグループを割り当て」をクリック
- 割り当てるユーザーまたはグループを選択
- 「次へ」をクリック
- 適用する権限セットを選択
- 「送信」をクリック
割り当てが完了すると、IAM Identity Centerは選択したアカウントにIAMロールを自動作成します。ロール名は AWSReservedSSO_{権限セット名}_{ランダムID} の形式になります。
割り当ての例
以下は、組織における典型的なアクセス割り当ての例です。
| グループ | アカウント | 権限セット |
|---|---|---|
| Administrators | 管理アカウント | AdministratorAccess |
| Administrators | 本番アカウント | AdministratorAccess |
| Administrators | 開発アカウント | AdministratorAccess |
| Developers | 開発アカウント | PowerUserAccess |
| Developers | 本番アカウント | ViewOnlyAccess |
| Operations | 本番アカウント | PowerUserAccess |
| Operations | 開発アカウント | ViewOnlyAccess |
アクセスポータルの利用
ユーザーは、IAM Identity Centerが提供するアクセスポータルを通じて、割り当てられたAWSアカウントにアクセスします。
アクセスポータルURL
アクセスポータルのURLは、IAM Identity Center有効化時に自動生成されます。形式は以下の通りです。
https://{instance-id}.awsapps.com/start
このURLはカスタマイズ可能です。「設定」>「IDソース」タブから、アクセスポータルURLをカスタマイズできます。
アクセスポータルからのサインイン
- アクセスポータルURLにアクセス
- ユーザー名とパスワードを入力
- MFAが設定されている場合は、認証コードを入力
- 割り当てられたAWSアカウントの一覧が表示される
- アクセスしたいアカウントを選択
- 権限セットを選択して「Management Console」をクリック
sequenceDiagram
participant User as ユーザー
participant Portal as アクセスポータル
participant IdC as IAM Identity Center
participant Console as AWSコンソール
User->>Portal: ポータルURLにアクセス
Portal->>User: ログイン画面表示
User->>Portal: 認証情報入力
Portal->>IdC: 認証リクエスト
IdC->>Portal: 認証成功
Portal->>User: アカウント一覧表示
User->>Portal: アカウント/権限セット選択
Portal->>IdC: 一時認証情報リクエスト
IdC->>Portal: 一時認証情報発行
Portal->>Console: 認証情報でリダイレクト
Console->>User: マネジメントコンソール表示AWS CLIでのSSO利用
IAM Identity Centerを使用すると、AWS CLI v2でも一時認証情報を簡単に取得できます。
AWS CLI v2の設定
AWS CLI v2には、IAM Identity Centerとの統合機能が組み込まれています。aws configure ssoコマンドを使用して設定します。
|
|
対話形式で以下の情報を入力します。
SSO session name (Recommended): my-sso
SSO start URL [None]: https://d-1234567890.awsapps.com/start
SSO region [None]: ap-northeast-1
SSO registration scopes [sso:account:access]:
ブラウザが自動的に開き、認証を求められます。認証が完了すると、CLIに戻り続きの設定を行います。
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:
https://device.sso.ap-northeast-1.amazonaws.com/
Then enter the code: ABCD-EFGH
認証後、利用可能なアカウントと権限セットが表示されます。
There are 3 AWS accounts available to you.
> Production, production@example.com (123456789012)
Development, development@example.com (234567890123)
Staging, staging@example.com (345678901234)
アカウントと権限セットを選択すると、プロファイルの設定が完了します。
CLI default client Region [None]: ap-northeast-1
CLI default output format [None]: json
CLI profile name [PowerUserAccess-123456789012]: production
To use this profile, specify the profile name using --profile, as shown:
aws s3 ls --profile production
設定ファイルの確認
設定は ~/.aws/config ファイルに保存されます。
|
|
SSOでのログイン
設定済みのプロファイルを使用してAWS CLIを実行する際は、最初にログインが必要です。
|
|
ブラウザが開き、認証を行います。認証が完了すると、CLIコマンドが実行可能になります。
|
|
セッションの確認と更新
現在のセッション状態を確認するには、以下のコマンドを使用します。
|
|
出力例は以下の通りです。
|
|
セッションが期限切れの場合は、再度 aws sso login を実行します。
複数プロファイルの管理
複数のアカウントや権限セットを使い分ける場合は、複数のプロファイルを設定します。
|
|
同一のSSOセッションを共有することで、一度のログインで複数のプロファイルが使用可能になります。
MFAの設定
IAM Identity Centerでは、すべてのユーザーにMFAを強制することを推奨します。
MFAの設定手順
- 左メニューから「設定」を選択
- 「認証」タブを選択
- 「MFA」セクションで「設定」をクリック
MFAの設定オプション
| 設定項目 | 説明 |
|---|---|
| MFAのプロンプト | サインイン時のMFA要求タイミング |
| ユーザーが登録できるMFAタイプ | 許可するMFAデバイスの種類 |
| MFAデバイスが登録されていない場合 | 未登録時の動作 |
MFAのプロンプト設定として、以下のオプションがあります。
| オプション | 説明 |
|---|---|
| サインインごと | 毎回MFAを要求(最も安全) |
| コンテキストを考慮 | リスクベース認証 |
MFAデバイスが登録されていない場合の設定として、以下のオプションがあります。
| オプション | 説明 |
|---|---|
| サインイン時にMFAデバイスの登録を要求 | 初回サインイン時に登録を強制 |
| MFAなしでサインインをブロック | MFA未登録ユーザーはサインイン不可 |
| MFAなしでサインインを許可 | セキュリティリスクがあるため非推奨 |
推奨設定
本番環境では、以下の設定を推奨します。
- MFAのプロンプト: サインインごと
- ユーザーが登録できるMFAタイプ: すべて許可
- MFAデバイスが登録されていない場合: サインイン時にMFAデバイスの登録を要求
IAM Identity Centerの監視とログ
IAM Identity Centerの操作は、CloudTrailに記録されます。
CloudTrailでの監視
IAM Identity Centerに関連するイベントは、以下のイベント名でCloudTrailに記録されます。
| イベント名 | 説明 |
|---|---|
| Authenticate | ユーザー認証 |
| Federate | AWSアカウントへのフェデレーション |
| CreateUser | ユーザー作成 |
| DeleteUser | ユーザー削除 |
| CreatePermissionSet | 権限セット作成 |
| CreateAccountAssignment | アクセス割り当て作成 |
監査用のCloudWatch Logs Insightsクエリ
特定ユーザーのサインイン履歴を検索するクエリ例を示します。
fields @timestamp, eventName, userIdentity.userName, sourceIPAddress
| filter eventSource = 'sso.amazonaws.com'
| filter eventName = 'Authenticate'
| filter userIdentity.userName = 'target-user@example.com'
| sort @timestamp desc
| limit 100
トラブルシューティング
IAM Identity Centerの利用時によくある問題と解決方法を紹介します。
アクセスポータルにサインインできない
| 原因 | 解決方法 |
|---|---|
| パスワードが間違っている | パスワードリセットを実行 |
| ユーザーが無効化されている | 管理者がユーザーを有効化 |
| MFAデバイスの問題 | MFAデバイスをリセット |
AWSアカウントが表示されない
| 原因 | 解決方法 |
|---|---|
| アクセス割り当てがない | 管理者がアクセスを割り当て |
| アカウントがOrganizationsに参加していない | アカウントを招待して参加 |
| 権限セットのプロビジョニング失敗 | 権限セットを再プロビジョニング |
AWS CLIでエラーが発生する
| エラー | 原因 | 解決方法 |
|---|---|---|
| Token has expired | セッション期限切れ | aws sso login を再実行 |
| InvalidGrant | 認証情報の問題 | ~/.aws/sso/cache を削除して再ログイン |
| Profile not found | プロファイル設定なし | aws configure sso で設定 |
まとめ
本記事では、AWS IAM Identity Centerを使用して複数AWSアカウントへのシングルサインオンを実現する方法を解説しました。
- IAM Identity Centerは、複数AWSアカウントへのアクセスを一元管理するサービスです
- 従来のIAMユーザー管理と比較して、セキュリティと運用効率が大幅に向上します
- 権限セットによって、ユーザーに付与する権限を柔軟に定義できます
- アクセスポータルとAWS CLI v2の両方でSSOが利用可能です
- MFAを全ユーザーに適用することで、セキュリティをさらに強化できます
次回の記事では、IAM Identity Centerの権限セット設計とベストプラクティスについて、より詳細に解説します。