IAM Identity Centerを導入した後、最も重要なのは権限セット(Permission Set)の設計です。権限セットの設計が適切でなければ、過剰な権限付与によるセキュリティリスクや、権限不足による業務効率低下を招きます。本記事では、組織の要件に合った権限セットを設計するためのパターンとベストプラクティスを解説します。
権限セットの概念と構成要素
権限セットは、IAM Identity Centerにおいてユーザーに付与する権限を定義するテンプレートです。権限セットをAWSアカウントに割り当てると、対象アカウントにIAMロールが自動作成されます。
権限セットの構成要素
権限セットは、以下の要素で構成されます。
flowchart TB
subgraph PS[権限セット]
direction TB
N[権限セット名]
D[説明]
P[ポリシー]
PB[Permission Boundary<br/>オプション]
SD[セッション期間]
RA[リレーステート<br/>オプション]
subgraph "ポリシーの種類"
AMP[AWS管理ポリシー]
CMP[カスタマー管理ポリシー]
INL[インラインポリシー]
end
P --> AMP
P --> CMP
P --> INL
end| 構成要素 | 説明 | 必須/任意 |
|---|---|---|
| 権限セット名 | 一意の識別子(最大32文字) | 必須 |
| 説明 | 権限セットの用途を記述 | 任意 |
| ポリシー | 付与するIAMアクセス許可 | 必須 |
| Permission Boundary | 権限の上限を設定 | 任意 |
| セッション期間 | 認証情報の有効期間(1〜12時間) | 必須 |
| リレーステート | サインイン後のリダイレクト先URL | 任意 |
権限セットとIAMロールの関係
権限セットをアカウントに割り当てると、IAM Identity Centerは対象アカウントにIAMロールを自動作成します。このロールは、IAM Identity Center専用のロールとして管理されます。
sequenceDiagram
participant Admin as 管理者
participant IdC as IAM Identity Center
participant Acc as 対象AWSアカウント
Admin->>IdC: 権限セットを作成
Admin->>IdC: アカウントに割り当て
IdC->>Acc: IAMロールを自動作成
Note over Acc: ロール名:<br/>AWSReservedSSO_{権限セット名}_{ID}
IdC->>Acc: 信頼ポリシーを設定
IdC->>Acc: アクセス許可ポリシーをアタッチ自動作成されるロールの特徴は以下の通りです。
| 項目 | 説明 |
|---|---|
| ロール名形式 | AWSReservedSSO_{権限セット名}_{ランダムID} |
| 信頼ポリシー | IAM Identity Centerのみが引き受け可能 |
| パス | /aws-reserved/sso.amazonaws.com/ |
| 管理方法 | IAM Identity Centerからのみ変更可能 |
ポリシーの種類と使い分け
権限セットには、3種類のポリシーをアタッチできます。それぞれの特徴を理解し、適切に使い分けることが重要です。
AWS管理ポリシー
AWSが作成・管理するポリシーです。AWSサービスの更新に合わせて自動的にメンテナンスされるため、運用負荷が低いのが特徴です。
graph LR
subgraph "AWS管理ポリシーの特徴"
A[AWSが作成・管理] --> B[自動更新]
B --> C[運用負荷低]
C --> D[汎用的な用途]
end代表的なAWS管理ポリシーを以下に示します。
| ポリシー名 | 用途 | 推奨ユースケース |
|---|---|---|
| AdministratorAccess | 全サービスへのフルアクセス | 管理者 |
| PowerUserAccess | IAM以外のサービスへのフルアクセス | 上級開発者 |
| ViewOnlyAccess | ほぼすべてのリソースの読み取り | 監査担当者 |
| ReadOnlyAccess | 多くのサービスの読み取り | 閲覧専用ユーザー |
| SystemAdministrator | 運用タスク向けの権限 | システム運用者 |
| DatabaseAdministrator | データベース管理向けの権限 | DBA |
| NetworkAdministrator | ネットワーク管理向けの権限 | ネットワーク管理者 |
| SecurityAudit | セキュリティ監査向けの読み取り | セキュリティ監査 |
| Billing | 請求情報へのアクセス | 経理担当者 |
メリット
- AWSが新機能を追加すると自動で対応
- ベストプラクティスに基づいた設計
- すぐに利用可能
デメリット
- 権限が広すぎる場合がある
- 組織固有の要件に対応できない
- カスタマイズ不可
カスタマー管理ポリシー
各AWSアカウントで事前に作成したIAMポリシーを参照します。複数の権限セットで同じポリシーを再利用する場合に有効です。
flowchart TB
subgraph "権限セットでの参照"
PS1[権限セット A]
PS2[権限セット B]
end
subgraph "各アカウントのカスタマー管理ポリシー"
A1[アカウント1<br/>CustomPolicy]
A2[アカウント2<br/>CustomPolicy]
A3[アカウント3<br/>CustomPolicy]
end
PS1 -->|参照| A1
PS1 -->|参照| A2
PS2 -->|参照| A2
PS2 -->|参照| A3重要な注意点
カスタマー管理ポリシーを使用する場合、同じ名前のポリシーが各アカウントに存在する必要があります。存在しない場合、ユーザーはそのアカウントにサインインできません。
| 要件 | 説明 |
|---|---|
| ポリシー名の一致 | すべての対象アカウントで同一名称が必要 |
| 事前作成 | 権限セット割り当て前にポリシーを作成 |
| 一貫性維持 | ポリシー内容を各アカウントで同期 |
メリット
- 組織固有の要件に対応可能
- 複数の権限セットでの再利用
- アカウントごとの微調整が可能
デメリット
- 各アカウントでの事前作成が必要
- アカウント間での一貫性維持が必要
- 管理オーバーヘッドが増加
インラインポリシー
権限セット内に直接JSONポリシーを記述します。その権限セット専用のカスタム権限を定義する場合に使用します。
メリット
- 権限セットと一体で管理
- 各アカウントでの事前準備不要
- きめ細かな制御が可能
デメリット
- 他の権限セットとの再利用不可
- 権限セットのサイズ制限(10,240文字)に影響
ポリシーの組み合わせパターン
実際の運用では、複数のポリシータイプを組み合わせて使用します。
flowchart TB
subgraph "推奨パターン"
P1[パターン1: 標準権限<br/>AWS管理ポリシーのみ]
P2[パターン2: 拡張権限<br/>AWS管理ポリシー + インライン制限]
P3[パターン3: カスタム権限<br/>カスタマー管理 + インライン補完]
end| パターン | 構成 | ユースケース |
|---|---|---|
| 標準権限 | AWS管理ポリシーのみ | 一般的な職務の権限 |
| 制限付き標準 | AWS管理ポリシー + インラインDeny | 特定操作を制限したい場合 |
| カスタム権限 | インラインポリシーのみ | 完全にカスタムした権限 |
| ハイブリッド | AWS管理 + カスタマー管理 + インライン | 複雑な要件への対応 |
セッション期間の設計
セッション期間は、ユーザーがAWSアカウントにアクセスできる時間を定義します。セキュリティと利便性のバランスを考慮して設定します。
セッション期間の考慮事項
graph LR
subgraph "セッション期間のトレードオフ"
S[短いセッション] -->|高| SEC[セキュリティ]
S -->|低| CONV[利便性]
L[長いセッション] -->|低| SEC2[セキュリティ]
L -->|高| CONV2[利便性]
end| 期間 | 推奨ユースケース | セキュリティ | 利便性 |
|---|---|---|---|
| 1時間 | 特権アクセス、本番環境での操作 | 最高 | 低 |
| 2時間 | セキュリティ要件が高い環境 | 高 | やや低 |
| 4時間 | 一般的な開発作業 | 中 | 中 |
| 8時間 | 長時間の運用作業、通常の業務 | やや低 | 高 |
| 12時間 | 長期ジョブの監視、夜間対応 | 低 | 最高 |
職務別のセッション期間設計
職務の性質に応じて、適切なセッション期間を設定します。
| 職務 | 推奨期間 | 理由 |
|---|---|---|
| 管理者 | 1〜2時間 | 特権操作のリスク軽減 |
| 開発者 | 4〜8時間 | 開発作業の継続性確保 |
| 運用者 | 8時間 | シフト勤務への対応 |
| 閲覧専用 | 8〜12時間 | リスクが低い操作 |
| 監査担当 | 4時間 | 定期的な再認証の確保 |
職務別権限セットの設計パターン
組織の職務に応じた権限セットの設計パターンを紹介します。
設計アプローチ
権限セットの設計では、以下のアプローチを推奨します。
flowchart TB
A[職務の特定] --> B[必要なAWSサービスの洗い出し]
B --> C[操作レベルの決定<br/>読み取り/書き込み/管理]
C --> D[リソース範囲の決定]
D --> E[条件の検討]
E --> F[最適なポリシー選択]
F --> G[テストと検証]パターン1: 管理者向け権限セット
クラウド管理者向けの権限セットです。全サービスへのフルアクセスを付与しますが、重要な操作にはガードレールを設けます。
権限セット名: CloudAdministrator
構成:
- AWS管理ポリシー:
AdministratorAccess - セッション期間: 1時間
設計のポイント:
- セッション期間を短く設定し、長時間の特権維持を防止
- 必要に応じてPermission Boundaryで組織的な制限を適用
- 監査ログの確実な取得を確保
パターン2: 開発者向け権限セット
開発チーム向けの権限セットです。開発に必要なサービスへのアクセスを許可し、IAM操作や本番環境への影響を制限します。
権限セット名: Developer
構成:
- AWS管理ポリシー:
PowerUserAccess - インラインポリシー: 本番リソースへのアクセス制限
- セッション期間: 4時間
インラインポリシーの例を示します。本番環境タグが付いたリソースへの書き込み操作を制限します。
|
|
パターン3: 運用者向け権限セット
インフラ運用チーム向けの権限セットです。監視、ログ分析、インシデント対応に必要な権限を付与します。
権限セット名: Operations
構成:
- AWS管理ポリシー:
SystemAdministrator - インラインポリシー: 追加の運用権限
- セッション期間: 8時間
インラインポリシーで追加する権限の例を示します。
|
|
パターン4: 閲覧専用権限セット
監査担当者やステークホルダー向けの権限セットです。リソースの参照のみを許可します。
権限セット名: ReadOnlyAccess
構成:
- AWS管理ポリシー:
ViewOnlyAccess - セッション期間: 8時間
設計のポイント:
ReadOnlyAccessとViewOnlyAccessの違いを理解して選択ViewOnlyAccessはより広範なサービスの読み取りをサポート- センシティブなデータへのアクセスが必要な場合は追加制限を検討
パターン5: セキュリティ監査向け権限セット
セキュリティチーム向けの権限セットです。セキュリティ関連のリソースとログへのアクセスを許可します。
権限セット名: SecurityAuditor
構成:
- AWS管理ポリシー:
SecurityAudit - インラインポリシー: 追加の監査権限
- セッション期間: 4時間
|
|
パターン6: 請求閲覧権限セット
経理担当者向けの権限セットです。請求情報とコスト分析へのアクセスのみを許可します。
権限セット名: BillingViewer
構成:
- AWS管理ポリシー:
Billing - AWS管理ポリシー:
AWSBillingReadOnlyAccess - セッション期間: 8時間
権限セット設計マトリックス
組織全体での権限セット設計を整理するマトリックスを作成します。
| 権限セット | 対象アカウント | 対象グループ | ポリシー構成 | セッション期間 |
|---|---|---|---|---|
| CloudAdministrator | 全アカウント | CloudAdmins | AdministratorAccess | 1時間 |
| Developer | 開発アカウント | Developers | PowerUserAccess + カスタム | 4時間 |
| DeveloperReadOnly | 本番アカウント | Developers | ViewOnlyAccess | 4時間 |
| Operations | 本番/ステージング | Operations | SystemAdministrator + カスタム | 8時間 |
| ReadOnlyAccess | 全アカウント | Stakeholders | ViewOnlyAccess | 8時間 |
| SecurityAuditor | 全アカウント | SecurityTeam | SecurityAudit + カスタム | 4時間 |
| BillingViewer | 管理アカウント | Finance | Billing | 8時間 |
Permission Boundaryとの組み合わせ
権限セットにPermission Boundaryを設定することで、権限の上限を組織的に制御できます。
Permission Boundaryの適用シナリオ
flowchart TB
subgraph "Permission Boundaryなし"
PS1[権限セット<br/>PowerUserAccess] --> R1[有効な権限<br/>IAM以外すべて許可]
end
subgraph "Permission Boundaryあり"
PS2[権限セット<br/>PowerUserAccess]
PB[Permission Boundary<br/>特定サービスのみ]
PS2 --> INT[交差]
PB --> INT
INT --> R2[有効な権限<br/>共通部分のみ]
endPermission Boundaryポリシーの例
開発者が特定のサービスのみを使用できるよう制限するPermission Boundaryの例です。
|
|
権限セットへのPermission Boundary適用手順
- 各対象アカウントにPermission Boundaryポリシーを作成
- IAM Identity Centerで権限セットを編集
- 「Permission Boundary」セクションでカスタマー管理ポリシーを指定
- ポリシー名が各アカウントで一致していることを確認
- 変更を保存
属性ベースのアクセス制御(ABAC)の活用
IAM Identity Centerでは、ユーザー属性を利用したABAC(Attribute Based Access Control)を実装できます。
ABACの概念
flowchart LR
subgraph "ABAC"
UA[ユーザー属性<br/>Department: Engineering<br/>Project: Alpha]
RA[リソースタグ<br/>Department: Engineering<br/>Project: Alpha]
UA --> MATCH{属性一致?}
RA --> MATCH
MATCH -->|Yes| ALLOW[アクセス許可]
MATCH -->|No| DENY[アクセス拒否]
endIAM Identity Centerでの属性の設定
IAM Identity Centerでは、ユーザーに属性を割り当て、それをセッションタグとしてAWSアカウントに渡すことができます。
利用可能な属性ソース:
- Identity Center ディレクトリのユーザー属性
- 外部IdPから受け取るSAML属性
- SCIMでプロビジョニングされた属性
ABACを活用した権限セットの例
プロジェクトタグに基づいてアクセスを制御するインラインポリシーの例です。
|
|
ABACのメリット
| メリット | 説明 |
|---|---|
| スケーラビリティ | 新しいリソースに自動的にポリシーが適用 |
| 管理の簡素化 | リソースごとのポリシー更新が不要 |
| 柔軟性 | 属性の組み合わせで多様なアクセス制御 |
| 監査の容易さ | 属性に基づく明確なアクセス理由 |
権限セットの運用ベストプラクティス
権限セットを効果的に運用するためのベストプラクティスを紹介します。
命名規則の統一
権限セットの命名規則を統一することで、管理性と可読性が向上します。
| 命名パターン | 例 | 用途 |
|---|---|---|
| 職務ベース | Developer, Operations |
職務に紐づく権限 |
| 環境ベース | ProductionAdmin, DevFullAccess |
環境に応じた権限 |
| チームベース | TeamAlpha-Developer |
チーム固有の権限 |
| 複合 | Production-Operations-ReadWrite |
環境+職務+操作レベル |
最小権限の原則の適用
flowchart TB
A[広い権限で開始] --> B[CloudTrailでアクセス分析]
B --> C[IAM Access Analyzerで<br/>未使用権限を特定]
C --> D[不要な権限を削除]
D --> E[テストで検証]
E --> F[最小権限の達成]
F --> B実装のステップ:
- 初期は業務遂行に必要と思われる権限を付与
- CloudTrailとIAM Access Analyzerで実際の使用状況を分析
- 30〜90日間のデータを収集
- 未使用の権限を特定して削除
- 定期的にレビューを繰り返す
変更管理プロセス
権限セットの変更は、適切な承認プロセスを経て実施します。
| ステップ | 実施者 | 内容 |
|---|---|---|
| 1. 変更申請 | 申請者 | 変更理由と影響範囲を記載 |
| 2. レビュー | セキュリティチーム | セキュリティリスクの評価 |
| 3. 承認 | 管理者 | 変更の承認 |
| 4. 実装 | IAM管理者 | 権限セットの変更 |
| 5. テスト | QA/申請者 | 動作確認 |
| 6. 監視 | 運用チーム | 異常なアクセスの監視 |
定期的な棚卸しと監査
権限セットと割り当ての定期的な監査を実施します。
監査項目チェックリスト:
| 監査項目 | 確認内容 | 推奨頻度 |
|---|---|---|
| 権限セットの使用状況 | 未使用の権限セットがないか | 四半期 |
| 割り当ての妥当性 | 不要な割り当てがないか | 月次 |
| ポリシーの適切性 | 過剰な権限がないか | 四半期 |
| Permission Boundary | 適切に設定されているか | 四半期 |
| セッション期間 | セキュリティ要件に合致しているか | 半期 |
ドキュメント化
権限セットの設計意図と用途をドキュメント化します。
ドキュメントに含める内容:
- 権限セット名と説明
- 対象ユーザー/グループ
- 付与される権限の概要
- 制限事項と注意点
- 承認者と作成日
- 変更履歴
トラブルシューティング
権限セットに関する一般的な問題と解決方法を紹介します。
権限が不足している場合
| 症状 | 原因 | 解決方法 |
|---|---|---|
| 特定のAPIコールが失敗 | ポリシーに権限がない | 必要な権限をインラインポリシーに追加 |
| 特定リソースにアクセス不可 | リソースベースの制限 | リソースポリシーを確認 |
| すべての操作が失敗 | Permission Boundaryの制限 | Permission Boundaryを確認 |
カスタマー管理ポリシーのエラー
flowchart TD
A[サインインエラー] --> B{エラーメッセージを確認}
B -->|ポリシーが見つからない| C[対象アカウントに<br/>ポリシーを作成]
B -->|権限不足| D[ポリシーの内容を確認]
C --> E[ポリシー名が<br/>完全一致しているか確認]
E --> F[権限セットを<br/>再プロビジョニング]プロビジョニングの失敗
権限セットのプロビジョニングが失敗する場合の確認項目です。
| 確認項目 | 対処方法 |
|---|---|
| アカウントへのアクセス権限 | IAM Identity Centerの管理アカウントからのアクセスを確認 |
| カスタマー管理ポリシーの存在 | 対象アカウントでポリシーを作成 |
| Permission Boundaryポリシーの存在 | 対象アカウントでポリシーを作成 |
| サービスリンクロールの存在 | AWSServiceRoleForSSOが存在するか確認 |
まとめ
本記事では、IAM Identity Centerの権限セット設計とベストプラクティスについて解説しました。
- 権限セットはポリシー、セッション期間、Permission Boundaryで構成されます
- AWS管理ポリシー、カスタマー管理ポリシー、インラインポリシーを適切に使い分けます
- セッション期間はセキュリティと利便性のバランスを考慮して設定します
- 職務別の権限セット設計パターンを参考に、組織に適した構成を設計します
- Permission Boundaryで権限の上限を組織的に制御できます
- ABACを活用することで、スケーラブルなアクセス制御を実現できます
- 定期的な監査と最小権限の原則の適用が重要です
次回の記事では、IAM Identity Centerと外部IdP(Azure AD/Okta)の連携について解説します。