AWS Single Sign-On(SSO)を使って、AWS Organizationsに含まれるAWSアカウントへのシングルサインオンをできるようにしてみました。
AWS Single Sign-On(SSO)とは
AWS Single Sign-On (SSO) により複数の AWS アカウントとビジネスアプリケーションへのアクセスを簡単に一元管理できるようになり、ユーザーはすべての割り当て済みアカウントとアプリケーションに 1 か所から 1 度のサインオンでアクセスできるようにします。AWS SSO では、AWS Organizations のすべてのアカウントへの SSO アクセスとユーザーアクセス権限の一元管理が簡単になります。SSO は個々のアカウントで追加セットアップをすることなく、アカウントに必要なアクセス許可を自動的に構成および保持します。一般的なジョブ機能に基づいてユーザーにアクセス権を割り当てたり、特定のセキュリティ要件を満たすようにこれらのアクセス許可をカスタマイズしたりできます。また AWS SSO には、Salesforce、Box、Office 365 など多くのビジネスアプリケーションに対する組み込み統合が含まれています。
AWS Single Sign-On
前提
AWS Single Sign-Onを利用するには以下を満たすことが条件となります。
- AWS Organizationsで All features が有効になっている
- AWS Organizationsの マスターアカウント で操作できる権限がある
今回試したこと
AWS Single Sign-On > 開始方法 を参考にし、以下を試しました。
- ステップ 1: AWS SSO を有効にする
- ステップ 2: ディレクトリを選択する
- ステップ 3: AWS アカウントへの SSO の設定
- ユーザーの作成
- グループの作成
- ユーザーをグループへ追加
- グループへ権限を割り当て
- ユーザーのパスワード設定
- ステップ 4: 動作確認
ステップ 1: AWS SSO を有効にする
AWS SSOは1つのリージョンでのみ有効にできます。 2020年9月2日のアップデートで東京リージョンも対応しました。
以下、AWS SSOの操作は全てOrganizationsマスターアカウントで行います。
マネージメントコンソール > AWS SSO
AWS SSOを有効にするをクリックします。
有効化されるとユーザーポータルのURL というのが自動生成されます。 AWS SSOのユーザーがログインする時にこのURLにアクセスしますが、ユーザーの作成はこれからなので、ここでは 一旦そのままにしておきます。
マネージメントコンソール > AWS Organizations > 設定
AWS Organizationsの画面でAWS SSOとの統合の有効化も確認できます。
ステップ 2: ディレクトリを選択する
AWS SSOでは、ユーザー情報などを登録・参照するデータベースとして、AWS SSO または Active Directory を選択できます。 今回はAWS SSOのディレクトリを選択します。 なお、Active Directoryを選択する場合は、AWS SSOを有効化したリージョンにAWS Managed Microsoft AD または AD Connectorが必要です。
マネージメントコンソール > AWS SSO > 設定
デフォルト設定でIDソース、認証、プロビジョニングが全てAWS SSOとなっているので変更は不要です。
ステップ 3: AWS アカウントへの SSO の設定
ユーザーの作成
マネージメントコンソール > AWS SSO > ユーザー > ユーザーの追加
ユーザー登録の必須項目は、「ユーザー名」「Eメールアドレス」「名」「姓」「表示名」です。
その他にもオプションとして「連絡方法」「職務関連情報」「住所」「設定」「additional attriibutes」の設定が可能です。
グループの作成
ユーザーをグループに追加という画面に遷移します。IAMと同様でグループに権限を割り当てることが推奨されているため、まずは グループの作成 をします。
アクセス権限の管理をシンプルにするために、個々のユーザーではなくグループに直接アクセスを割り当てることをお勧めします。
ユーザーアクセスを割り当てる
グループ名を入力し、作成します。
ユーザーをグループへ追加
今回はユーザーを2つのグループに追加してみました。
ユーザーのパスワード設定
作成したユーザーにメールが届くので、文中の Accept Invitation をクリックします。
パスワード設定をします。
ユーザーがアクティブ化されました。
ユーザーポータルにログイン
この時点で ユーザーポータルのURL にログイン可能になりましたが、グループへの権限が未設定なため、You do not have any applications と表示されます。
グループへ権限を割り当て
マネージメントコンソール > AWS SSO > AWS アカウント
AWSアカウントを選択
AWS Organizationsに属しているAWSアカウントが表示されます。 グループにアクセスを許可したいAWSアカウントを選択し、 ユーザーの割り当て をクリックします。
グループを選択
グループタブを開き、グループを選択し、次:アクセス権限セットをクリックします。
アクセス権限セットの作成・選択
アクセス権限を選択しますが、デフォルトでは存在しないため、作成する必要があります。 新しいアクセス権限セット をクリックします。
今回は 既存の職務機能ポリシー のPowerUserAccessを選択しました。このグループのSSOユーザーはAWSアカウントへログインすると、PowerUserAccessポリシーのついたIAM Roleが適用されます。
カスタムアクセス権限セット を作成すれば、複数のAWS管理ポリシーを含めたり、JSONで独自のポリシーを利用することも可能です。
これで設定完了です。
ステップ 4: 動作確認
ポータルのURLから作成したユーザーでログインすると、AWS Accountが見えるようになっています。
クリックすると、2つのリンクが表示されます。
- Management console
- Command line or programmatic access
AWSアカウントのマネージメントコンソールへのログイン
Management console をクリックすると、AWSアカウントにログインできました。
フェデレーションログインとなっています。
AWSアカウントへのAPIアクセス
programmatic access をクリックすると、下記の情報が表示されます。
こちらのアクセスキーなどを使えば、CLIやAPIでアクセスできます。
感想
設定が簡単
シングルサインオンというと、フェデレーション・信頼・トークン等の難しい知識が必要になることが多いですが、今回の構成ではあまり意識せず簡単に設定できました。
運用も簡単
AWSアカウントが多数ある場合、それぞれでIAMユーザー・IAMグループをメンテナンスするのは負担になります。AWS SSOを使えば、そこで一元管理できます。
例えば、担当者が退職した時はAWS SSOからユーザー削除するだけで、その担当者は全てのAWSアカウントへアクセスできなくなります。
別の例として、担当者が別の部署へ異動した場合は、AWS SSOで別のグループへ所属を替えるだけで、全てのAWSアカウントへのアクセス権限を適切なものに変更できます。
ユーザー目線では
ユーザーポータルにログインしさえすれば、自分がアクセス可能なAWSアカウントに簡単にログインできるのでわかりやすいと思います。
渡辺 信秀(記事一覧)
2017年入社 / 地味な内容を丁寧に書きたい