AWS IAM Identity Center で実現するシングルサインオン - マルチアカウントアクセス管理
マルチアカウント環境のシングルサインオンを実現し、権限セットで各アカウントへのアクセスレベルを制御する。外部 IdP との統合と ABAC の活用を紹介します。
IAM Identity Center の概要
IAM Identity Center (旧 AWS SSO) はマルチアカウント環境のシングルサインオンとアクセス管理を一元化するサービスです。ユーザーは AWS アクセスポータルにログインし、割り当てられた AWS アカウントとアプリケーションにワンクリックでアクセスします。アカウントごとに IAM ユーザーを作成する必要がなくなり、認証情報の散在によるセキュリティリスクを根本的に排除します。Organizations の管理アカウントまたは委任管理者アカウントから有効化し、組織内の全アカウントに対してアクセス制御を一括で適用できます。サポートするプロトコルは SAML 2.0 と OIDC で、AWS マネジメントコンソール、CLI v2、SDK、および SAML 対応のサードパーティアプリケーション (Salesforce、Slack、GitHub 等) へのフェデレーションアクセスを提供します。AWS Builder ID でサインインし、AWS アカウントとの連携を設定することでデプロイ先の管理も一元化できます。
ID ソースの選択と外部 IdP 連携
IAM Identity Center は 3 つの ID ソースをサポートします。1 つ目は Identity Center ディレクトリ (組み込み) で、小規模な組織や検証環境に適しています。2 つ目は Active Directory (AWS Managed Microsoft AD または AD Connector 経由) で、オンプレミスの AD をそのまま利用できます。3 つ目は外部 IdP で、SAML 2.0 で認証を委任し、SCIM 2.0 でユーザーとグループの自動プロビジョニングを実行します。Okta、Microsoft Entra ID (旧 Azure AD)、Google Workspace、OneLogin、Ping Identity が SCIM による自動同期に対応しており、IdP 側でユーザーの追加・削除・グループ変更を行うと、IAM Identity Center に即座に反映されます。IdP 側でユーザーを無効化すれば AWS へのアクセスも即座に遮断されるため、退職者のアカウント削除漏れによるセキュリティリスクを排除できます。
権限セットとアクセス割り当て
権限セットは IAM ポリシーのコレクションで、AdministratorAccess、ReadOnlyAccess などの AWS マネージドポリシー、カスタムポリシー (JSON 形式で直接記述)、およびカスタマーマネージドポリシーの参照を含めます。1 つの権限セットには最大 10 個のマネージドポリシーと 1 つのインラインポリシーを設定可能です。権限セットをユーザー/グループとアカウントの組み合わせに割り当てると、そのユーザーがアカウントにアクセスした際に対応する IAM ロールが自動作成されます。パーミッションバウンダリも設定でき、権限セットの上限を IAM ポリシーで制約することで最小権限原則を強制します。アクセス割り当ては権限セット × AWS アカウント × ユーザーまたはグループの 3 要素で定義し、グループベースの割り当てによりメンバーの追加・削除時にグループへの所属変更だけで権限が自動反映されます。
ABAC とセッション管理
IAM Identity Center は属性ベースのアクセス制御 (ABAC) をサポートし、ユーザー属性 (部門、役職、プロジェクト、コストセンター) に基づいてアクセス権限を動的に付与します。IdP から渡される SAML 属性を IAM セッションタグにマッピングし、リソースタグとの一致でアクセスを制御します。たとえば department=engineering のユーザーは department=engineering タグを持つ S3 バケットにのみアクセスできる、という制御をアカウント横断で適用可能です。セッション時間は権限セットごとに 1〜12 時間で設定でき、高セキュリティ環境では短いセッション (1 時間) を、開発環境では長いセッション (12 時間) を設定します。AWS アクセスポータルからワンクリックでマネジメントコンソールや CLI にアクセスでき、アカウントの切り替えが容易です。 ```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 # SSO ログイン実行 aws sso login --profile dev-admin ``` CLI v2 の sso login コマンドでブラウザベースの認証フローが起動し、認証完了後は一時的な認証情報が自動的にキャッシュされます。長期アクセスキーの管理が不要になり、セキュリティが向上します。 SSO 認証の実践的な知識を深めるには、専門書籍 (Amazon)が役立ちます。
設計のベストプラクティスと落とし穴
権限セットの設計では「職務ごとに 1 権限セット」の原則を守り、1 人のユーザーに複数の権限セットを割り当てて職務分離を実現します。たとえば開発者には DevOps 権限セット (デプロイ用) と ReadOnly 権限セット (監査用) を用意し、本番環境と開発環境で異なる権限セットを割り当てるパターンが効果的です。よくある落とし穴として、SCIM 同期の遅延があります。IdP 側のグループ変更が Identity Center に反映されるまでのラグ (通常数秒〜数分) の間、古い権限でのアクセスが残る可能性があるため、権限昇格を伴う変更では手動同期を実行すべきです。もう 1 つの注意点は委任管理者の設定です。管理アカウント以外から Identity Center を運用する場合、委任管理者アカウントを指定しますが、このアカウント自身への権限セット割り当てはできない制約があります。また、1 つの Organizations に対して有効化できる Identity Center インスタンスは 1 つのみで、リージョンも固定される点に注意が必要です。マルチリージョン構成の組織では、ホームリージョンの選定が全ユーザーのアクセスポータルのレイテンシに影響します。
Cognito との使い分けと他の認証方式
IAM Identity Center と Cognito はどちらも認証サービスですが、対象ユーザーが異なります。IAM Identity Center は従業員・開発者が AWS マネジメントコンソールや CLI にアクセスするための認証基盤であり、Cognito は Web/モバイルアプリケーションのエンドユーザー (顧客) 向けの認証・認可サービスです。Cognito はサインアップ、ソーシャルログイン、トークン管理を提供し、IAM Identity Center は AWS アカウントへのフェデレーションアクセスに特化しています。他のマルチアカウント管理手段としては、アカウントごとに IAM ユーザーを作成する方式 (認証情報が散在し運用負荷が高い)、IAM ロールのクロスアカウント AssumeRole (数十アカウント規模で管理が困難)、サードパーティ SSO 製品 (アカウント追加ごとに IdP 設定変更が必要) がありますが、IAM Identity Center は Organizations との深い連携でこれらの課題を統合的に解決します。CloudTrail との統合により、誰がいつどのアカウントにアクセスしたかの監査ログも自動記録されます。
IAM Identity Center の料金
IAM Identity Center は無料で利用できます。ユーザー数、グループ数、SSO セッション数に対する追加料金は発生しません。外部 IdP (Okta、Microsoft Entra ID、Google Workspace) との SAML/SCIM 統合も無料です。コストは Identity Center が管理する AWS アカウントやアプリケーションの利用料金に依存します。Identity Center 自体のサービスクォータとして、1 インスタンスあたりのユーザー数上限は 100,000、グループ数上限は 100,000、権限セット数上限は 2,000、1 アカウントあたりの権限セット割り当て上限は 50 です。Organizations の全アカウントで IAM Identity Center を有効化し、IAM ユーザーの直接作成を廃止することで、セキュリティと運用効率を同時に向上させます。
まとめ
IAM Identity Center はマルチアカウント環境の SSO とアクセス管理を無料で一元化するサービスです。3 つの ID ソース (組み込みディレクトリ、Active Directory、外部 IdP) から環境に適した方式を選択し、権限セットで AWS マネージドポリシーとカスタムポリシーを組み合わせたアクセス権限を定義します。ABAC でユーザー属性に基づく動的な権限付与を行い、CLI v2 の SSO プロファイルでターミナルからもシームレスに認証します。権限セットは職務単位で設計し、委任管理者の制約やリージョン固定の仕様を事前に把握した上で導入を進めることが重要です。