SSO とアイデンティティ管理 - AWS IAM Identity Center による一元認証
AWS IAM Identity Center (旧 AWS SSO) を使ったシングルサインオンとマルチアカウントアクセス管理を解説。外部 IdP 連携、権限セット設計、Cognito との使い分けまで紹介します。
マルチアカウント環境の認証課題と IAM Identity Center
AWS のベストプラクティスでは、ワークロードごとに AWS アカウントを分離するマルチアカウント戦略が推奨されます。しかし、アカウント数が増えるにつれ、各アカウントに IAM ユーザーを作成して管理する方式は破綻します。パスワードの管理、MFA の設定、退職者のアカウント削除など、運用負荷が線形に増加するためです。AWS IAM Identity Center (2022 年に AWS SSO から改名) は、この課題を解決するマネージドの SSO サービスです。1 つのユーザーポータルから、割り当てられた全 AWS アカウントにシングルサインオンでアクセスできます。各アカウントに IAM ユーザーを作成する必要がなく、一時的な認証情報が自動発行されるため、長期的なアクセスキーの漏洩リスクも排除されます。IAM Identity Center は AWS Organizations とネイティブに統合されており、アカウントの追加時に自動的にアクセス管理の対象になります。
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
外部 IdP 連携と ID ソースの選択
IAM Identity Center は 3 つの ID ソースをサポートします。1 つ目は Identity Center ディレクトリ (組み込み) で、小規模な組織や検証環境向けです。2 つ目は Active Directory (AWS Managed Microsoft AD または AD Connector 経由) で、オンプレミスの AD をそのまま利用できます。SCIM (System for Cross-domain Identity Management) プロトコルにより、外部 IdP のユーザー・グループ情報を IAM Identity Center に自動同期できます。IdP 側でユーザーを無効化すれば、AWS へのアクセスも即座に遮断されます。 ```bash # AWS CLI v2 での SSO ログイン設定 # ~/.aws/config に以下を追加 [profile dev-admin] sso_session = my-sso sso_account_id = 123456789012 sso_role_name = AdministratorAccess region = ap-northeast-1 [sso-session my-sso] sso_start_url = https://my-org.awsapps.com/start sso_region = ap-northeast-1 sso_registration_scopes = sso:account:access # ログイン実行 aws sso login --profile dev-admin ``` CLI v2 の sso login コマンドでブラウザベースの認証フローが起動し、認証完了後は一時的な認証情報が自動的にキャッシュされます。
権限セットとアクセス割り当て
権限セット (Permission Set) は、AWS アカウントへのアクセス時に付与される IAM ポリシーのテンプレートです。AWS マネージドポリシー (AdministratorAccess、ReadOnlyAccess、PowerUserAccess など) をそのまま使用するか、カスタムポリシーを定義できます。インラインポリシーと権限境界 (Permissions Boundary) も設定可能で、最小権限の原則に沿ったきめ細かな制御が実現します。セッション時間は 1 〜 12 時間で設定でき、デフォルトは 1 時間です。アクセス割り当ては、権限セット × AWS アカウント × ユーザーまたはグループの 3 要素の組み合わせで定義します。たとえば「開発チームグループに、dev アカウントへの PowerUserAccess と prod アカウントへの ReadOnlyAccess を割り当てる」といった設定が可能です。グループベースの割り当てにより、メンバーの追加・削除時にグループへの所属変更だけで権限が自動的に反映されます。
Cognito との使い分けとアプリケーション統合
IAM Identity Center と Cognito はどちらも認証サービスですが、対象ユーザーが異なります。IAM Identity Center は従業員・開発者が AWS マネジメントコンソールや CLI にアクセスするための認証基盤です。Cognito は Web/モバイルアプリケーションのエンドユーザー (顧客) 向けの認証・認可サービスで、サインアップ・サインイン・ソーシャルログイン・トークン管理を提供します。IAM Identity Center は AWS アカウントへのアクセス管理に加え、SAML 2.0 対応のサードパーティアプリケーション (Salesforce、Slack、GitHub など) への SSO も提供します。ユーザーポータルから割り当てられた AWS アカウントとアプリケーションの一覧が表示され、ワンクリックでアクセスできます。CloudTrail との統合により、誰がいつどのアカウントにアクセスしたかの監査ログが自動的に記録されます。IAM Identity Center 自体の利用料金は無料で、AWS Organizations の機能として提供されます。
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。
まとめ - IAM Identity Center の活用指針
AWS IAM Identity Center は、マルチアカウント環境における認証とアクセス管理を一元化するサービスです。外部 IdP との SAML/SCIM 連携で既存の ID 基盤を活用し、権限セットによるテンプレート化でアクセス管理を効率化します。一時的な認証情報の自動発行により長期アクセスキーのリスクを排除し、CLI v2 との統合で開発者体験も損ないません。マルチアカウント戦略を採用する組織では、IAM Identity Center の導入を初期段階で行うことを推奨します。無料で利用でき、Organizations との統合もシームレスなため、導入のハードルは低いです。
AWS の優位点
- AWS Organizations と統合し、数十〜数百の AWS アカウントへのアクセスを 1 つのポータルから一元管理
- 権限セット (Permission Set) で IAM ポリシーをテンプレート化し、アカウントとユーザー/グループの組み合わせで割り当て
- 一時的な認証情報を自動発行し、長期的なアクセスキーの管理が不要になるためセキュリティリスクを低減
- AWS CLI v2 の sso login コマンドでターミナルからもシームレスに認証でき、開発者体験を損なわない
- Cognito がエンドユーザー (顧客) 向けの認証サービスであるのに対し、IAM Identity Center は従業員・開発者向けの AWS アカウントアクセス管理に特化
- IAM Identity Center 自体は無料で利用可能