AWS Organizationsによるマルチアカウント環境を構築した後、次に設定したのがAWS IAM Identity Centerです。
以前はAWSへログインするためにIAM Userを作成することが一般的でしたが、現在AWSでは、人がAWSへログインする場合はIAM Identity Centerの利用を推奨しています。
今回は、IAM Identity Centerを導入した理由と、実際の設定内容についてまとめます。
IAM Identity Centerとは
IAM Identity Center(旧 AWS Single Sign-On)は、複数のAWSアカウントやAWSアプリケーションへの認証・認可を一元管理するサービスです。
従来のように各AWSアカウントへIAM Userを作成する必要はなく、
- 一度ログインするだけで複数アカウントへアクセスできる
- ユーザー管理を一元化できる
- 権限管理を簡素化できる
というメリットがあります。
AWS Organizationsと組み合わせることで、マルチアカウント環境の運用が大幅に容易になります。
参考:
なぜIAM UserではなくIdentity Centerなのか
以前は、このような構成が一般的でした。
AWS Account
├── IAM User(開発者A)
├── IAM User(開発者B)
├── IAM User(管理者)
└── IAM User(監査)
しかし、この方法では
- アカウントごとにIAM Userを作成する必要がある
- パスワードやMFAを個別管理する必要がある
- 人の異動や退職時の対応が煩雑になる
といった課題があります。
Identity Centerを利用すると、ユーザー情報は一元管理され、各AWSアカウントには必要な権限だけを割り当てる運用になります。
IAM Identity Center
│
├── User
├── Group
└── Permission Set
│
▼
AWS Account
AWS Well-Architected Frameworkでも、人によるアクセスにはフェデレーション認証を利用し、長期認証情報(IAM Userのアクセスキーなど)をできる限り利用しないことが推奨されています。
参考:
今回の構成
今回は次のようなシンプルな構成にしました。
グループ
Administrators
Developers
ReadOnly
Administrators
AWS環境全体を管理するメンバーです。
現在は
- 自分
- (今後)共同代表
を所属させる予定です。
Developers
アプリケーションやインフラ開発を行うメンバー向けです。
今回はまだ利用していませんが、開発メンバーが増えた際に使用します。
将来的には
- PowerUserAccess
- カスタムPermission Set
などを割り当てる予定です。
ReadOnly
閲覧専用グループです。
監査やレビュー、外部アドバイザー向けとして利用します。
今回は技術メンターにReadOnly権限を付与することを想定しています。
Permission Setとは
IAM Identity Centerでは、直接IAMポリシーをユーザーへ付与するのではなく、Permission Setという単位で権限を管理します。
Permission Setは、各AWSアカウントへ適用される権限テンプレートのようなものです。
今回はAWS管理ポリシーを利用し、次の2種類を作成しました。
AdministratorAccess
ReadOnlyAccess
AWS管理ポリシーを利用することで、AWSが提供する標準的な権限セットをそのまま利用できます。
参考:
グループへ権限を付与する理由
IAM Identity Centerでは、ユーザーへ直接Permission Setを割り当てることもできます。
しかし今回は、
Administrators
│
▼
AdministratorAccess
│
▼
Dev Account
という形で、グループ単位で管理しています。
この構成には次のメリットがあります。
- メンバー追加時はグループへ入れるだけ
- 権限変更が容易
- 権限管理の属人化を防げる
- AWSの推奨運用に沿っている
将来的に人数が増えても、運用方法を変える必要がありません。
AWS Access Portal
Identity Centerを有効化すると、AWS Access Portalが作成されます。
URLは次のような形式です。
https://d-xxxxxxxxxx.awsapps.com/start
ユーザーはこのポータルへログインし、自分に割り当てられたAWSアカウントを選択して利用します。
例えば、
Dev
AdministratorAccess
が表示されていれば、クリックするだけでDevアカウントへサインインできます。
これにより、アカウントごとにログインURLや認証情報を管理する必要がなくなります。
今後の予定
Identity Centerの設定が完了したら、次は開発環境の自動化を進めます。
- AWS CLIのSSO設定
- TerraformによるInfrastructure as Code
- GitHub ActionsとOIDCの連携
- IAM RoleによるCI/CD実行
- CloudTrail・Security Hubの構築
Identity Centerを起点にすることで、人の認証とCI/CDの認証を分離した、安全で運用しやすいAWS環境を構築していく予定です。
まとめ
IAM Identity Centerは、AWS Organizationsを利用する環境では事実上の標準となる認証基盤です。
今回の構成では、
- ユーザーはIAM Identity Centerで一元管理
- 権限はPermission Setで管理
- 権限付与はグループ単位で実施
- AWS Access Portalから各AWSアカウントへサインイン
という構成を採用しました。
このような設計にすることで、開発メンバーの追加や権限変更にも柔軟に対応でき、AWSが推奨するセキュリティベストプラクティスにも沿った運用が可能になります。



