☁️
AWS SSOを使う為の基礎知識をまとめてみた
AWS SSO とは?
AWS SSO(AWS Single Sign-On) とは、AWS Organizationsと連携し複数のAWSアカウントへのシングルサインオンを実現するサービスです。
管理者はOrganizationsに属するAWSアカウントに対するアクセスと認可を統合的に管理することができます。また利用者はAWS SSOサービスによって提供されるユーザポータル経由でマネジメントコンソールにアクセスしたり、awscli v2を使ってAWS APIにアクセスすることができます。
知っておくべき概念や知識
ここでは記事を読む上で必要となるAWS SSO特有の概念・知識について整理します。
詳細についてはAWS SSOの使い方は公式ドキュメントを参照してください。
一般的な用語
シングルサインオン
一度のユーザ認証処理によって、複数のシステムが利用可能になる仕組みのこと
IDフェデレーション
シングルサインオンを実現するための方式の一つ
一つの管理ドメインを超えて他の管理ドメインのサービスにもログインできるようにする処理のこと
SAML
IDフェデレーションを実現する為のプロトコル
AWS SSOで登場する概念
アクセス権限セット
- AWS Organizationsのマネージドアカウントから、ユーザごとのアクセス権限を一括管理する仕組み
- IAM Roleのようなもので、AWS SSOでIAMポリシーを一括管理している
- アクセス権限セットに複数のIAMポリシーを割り当てる→そのアクセス権限セットをユーザ/グループとAWSアカウントに割り当てる→特定のユーザは、割り当てられたアクセス権限セットの権限で、アカウントに対してログインできる
AWS SSO ユーザポータル
- AWS SSO でマネジメントコンソールにログインする為に開発者が参照する画面
- アカウント及び認可されたアクセス権限セットの一覧が表示されている
ID ソース
AWS SSOでは、利用するユーザ/グループのIDソースを指定することができる
- ビルトインのAWS SSO Directory
- SAML 2.0 互換 ID プロバイダー (IdP)
- Active Directory
仕組み
雰囲気で理解する
- AWS SSOとOrganizationのメンバーアカウントを紐付ける
- アクセス権限セットに登録されたポリシーを元に、メンバーアカウントにIAM Roleが自動生成される
- ユーザは、この生成されたIAM Roleに基づいてSSOのコンソールからログインする
- AWS SSO > AWSアカウントから対象のAWSアカウントを選択
-
ユーザの割り当て
から対象ユーザ/グループとアクセス権限セットの組み合わせを割り当てる- 「このユーザはこのアクセス権限セットでAWS SSOを使ってアカウントにログインできるよ」
メンバーアカウントへのプロビジョニング
- アクセス権限セットをアカウントに紐付けることで、メンバーアカウントにアクセス権限セットに基づいたIAMロール(
AWSReservedSSO_XXX
)が作成される
awscli v2 との統合
> aws sso login --profile test-hogehoge
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:
料金
AWS SSO自体に料金は発生しない
Ref:https://aws.amazon.com/jp/single-sign-on/faqs/
AWS SSO のTerraformリソース
Terraformで設定する時は次に挙げるようなリソースを使います。
Resource: aws_ssoadmin_permission_set
Permission Setを作成するリソース
Resource: aws_ssoadmin_managed_policy_attachment
Permission SetにAWS管理ポリシー(Managed Policy)をアタッチする
Resource: aws_ssoadmin_account_assignment
AWSアカウント・ユーザ/グループ・Permission Setを紐付ける
Data Source: aws_identitystore_group
Azure ADなどの外部IdPによってプロビジョニングされたグループも取得できる
Data Source: aws_identitystore_user
Azure ADなどの外部IdPによってプロビジョニングされたユーザも取得できる
まとめ
AWS SSO便利なので使っていきましょう
Discussion