AWS Single Sign-On(SSO)でAWSアカウントへシングルサインオン

記事タイトルとURLをコピーする

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

f:id:swx-watanabe:20200904092530p:plain

AWS SSOを有効にするをクリックします。

f:id:swx-watanabe:20200904092542p:plain

有効化されるとユーザーポータルのURL というのが自動生成されます。 AWS SSOのユーザーがログインする時にこのURLにアクセスしますが、ユーザーの作成はこれからなので、ここでは 一旦そのままにしておきます。

マネージメントコンソール > AWS Organizations > 設定

f:id:swx-watanabe:20200904092734p:plain

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となっているので変更は不要です。

f:id:swx-watanabe:20200904092921p:plain

ステップ 3: AWS アカウントへの SSO の設定

ユーザーの作成

マネージメントコンソール > AWS SSO > ユーザー > ユーザーの追加

ユーザー登録の必須項目は、「ユーザー名」「Eメールアドレス」「名」「姓」「表示名」です。

f:id:swx-watanabe:20200904093011p:plain

その他にもオプションとして「連絡方法」「職務関連情報」「住所」「設定」「additional attriibutes」の設定が可能です。

f:id:swx-watanabe:20200904093156p:plain

グループの作成

ユーザーをグループに追加という画面に遷移します。IAMと同様でグループに権限を割り当てることが推奨されているため、まずは グループの作成 をします。

アクセス権限の管理をシンプルにするために、個々のユーザーではなくグループに直接アクセスを割り当てることをお勧めします。
ユーザーアクセスを割り当てる

f:id:swx-watanabe:20200904130753p:plain

グループ名を入力し、作成します。

f:id:swx-watanabe:20200904130822p:plain

ユーザーをグループへ追加

今回はユーザーを2つのグループに追加してみました。

f:id:swx-watanabe:20200904130841p:plain

ユーザーのパスワード設定

作成したユーザーにメールが届くので、文中の Accept Invitation をクリックします。

f:id:swx-watanabe:20200904130925p:plain

パスワード設定をします。

f:id:swx-watanabe:20200904130939p:plain

ユーザーがアクティブ化されました。

f:id:swx-watanabe:20200904131004p:plain

ユーザーポータルにログイン

この時点で ユーザーポータルのURL にログイン可能になりましたが、グループへの権限が未設定なため、You do not have any applications と表示されます。

f:id:swx-watanabe:20200904131024p:plain

グループへ権限を割り当て

マネージメントコンソール > AWS SSO > AWS アカウント

AWSアカウントを選択

AWS Organizationsに属しているAWSアカウントが表示されます。 グループにアクセスを許可したいAWSアカウントを選択し、 ユーザーの割り当て をクリックします。

f:id:swx-watanabe:20200904131048p:plain

グループを選択

グループタブを開き、グループを選択し、次:アクセス権限セットをクリックします。

f:id:swx-watanabe:20200904131230p:plain

アクセス権限セットの作成・選択

アクセス権限を選択しますが、デフォルトでは存在しないため、作成する必要があります。 新しいアクセス権限セット をクリックします。

f:id:swx-watanabe:20200904131249p:plain

今回は 既存の職務機能ポリシー のPowerUserAccessを選択しました。このグループのSSOユーザーはAWSアカウントへログインすると、PowerUserAccessポリシーのついたIAM Roleが適用されます。

カスタムアクセス権限セット を作成すれば、複数のAWS管理ポリシーを含めたり、JSONで独自のポリシーを利用することも可能です。

f:id:swx-watanabe:20200904131324p:plain

f:id:swx-watanabe:20200904131336p:plain

f:id:swx-watanabe:20200904131402p:plain

これで設定完了です。

ステップ 4: 動作確認

ポータルのURLから作成したユーザーでログインすると、AWS Accountが見えるようになっています。

f:id:swx-watanabe:20200904131420p:plain

クリックすると、2つのリンクが表示されます。

  • Management console
  • Command line or programmatic access

f:id:swx-watanabe:20200904131443p:plain

AWSアカウントのマネージメントコンソールへのログイン

Management console をクリックすると、AWSアカウントにログインできました。
フェデレーションログインとなっています。

f:id:swx-watanabe:20200904131501p:plain

AWSアカウントへのAPIアクセス

programmatic access をクリックすると、下記の情報が表示されます。
こちらのアクセスキーなどを使えば、CLIやAPIでアクセスできます。

f:id:swx-watanabe:20200904131529p:plain

感想

設定が簡単

シングルサインオンというと、フェデレーション・信頼・トークン等の難しい知識が必要になることが多いですが、今回の構成ではあまり意識せず簡単に設定できました。

運用も簡単

AWSアカウントが多数ある場合、それぞれでIAMユーザー・IAMグループをメンテナンスするのは負担になります。AWS SSOを使えば、そこで一元管理できます。

例えば、担当者が退職した時はAWS SSOからユーザー削除するだけで、その担当者は全てのAWSアカウントへアクセスできなくなります。

別の例として、担当者が別の部署へ異動した場合は、AWS SSOで別のグループへ所属を替えるだけで、全てのAWSアカウントへのアクセス権限を適切なものに変更できます。

ユーザー目線では

ユーザーポータルにログインしさえすれば、自分がアクセス可能なAWSアカウントに簡単にログインできるのでわかりやすいと思います。

渡辺 信秀 (記事一覧)