AWS SSOで組織内と外部AWSアカウントにシングルサインオンする

2020/9/4

AWS SSOを使用すると組織(AWS Organizationのメンバーアカウント)内AWSアカウントへのシングルサインオンを実装できる。
組織外のAWSアカウントやAWSではない外部サービスへのシングルサインオンもできる。つまりSSOを設定するとIDPとして機能する。
ここでは下図のように組織内アカウントと外部AWSアカウントへのSSOを実装する。

 

最初にOrganizationを作成する(AWSアカウントは既に作成済)。詳細は割愛するが、メンバーアカウントを1つ招待した。

 

次にマスターアカウントでSSOを作成する。SSOを有効化。

 

SSOを有効化したらIDソースを選択。

IDソースはSSOに登録したユーザでの認証やAD、外部IDプロバイダを選択できる。ここではSSOにユーザを直接登録している(実際はADでの認証などが多いと思われる)

ユーザポータルは一度しかカスタマイズできないので慎重に決める。

次にSSOの対象にするAWSアカウントを登録する。Organizationのマスターアカウントとメンバーアカウントが表示されているので、あらかじめSSOにユーザ、グループを作成したうえでユーザを割り当てる。

 

必要なアクセス権限セットを割り当てる。組織のSSO設定はこれで完了。

外部アプリケーションはアプリケーションに登録する。新規アプリケーションの追加からExternal AWS Accountを検索する。

 

選択し、設定タブの情報を確認する。SAMLメタデータのXMLをダウンロードしておく。また、SSOサインインURLをメモしておく。

 

 

属性マッピングではサインインされる側の外部AWSアカウントに登録するIDプロバイダのARNとIAMロールのARNを以下のように追加登録する。(これらはまだ作成していないので後で戻ってきて登録する)

 

アプリケーションのユーザー属性:https://aws.amazon.com/SAML/Attributes/Role

マッピング:

IDプロバイダのARN,IAMロールのARN

 

このアプリケーションを利用するユーザを割り当てる。

 

ここからはサインインされる側(外部AWSアカウント側)で作業する。IAMでIDプロバイダの画面を表示する(実際にはまだ何も登録されていない)

プロバイダの作成ではプロバイダーのタイプにSAMLを選択(OpenIDも選択可能)し、プロバイダ名を決めて、マスターアカウント側で作成したメタデータXMLをインポートする。

 

次にロールを新規に作成する。SAML2.0フェデレーションを選択し、SAMLプロバイダはさきほど作成したIDプロバイダを選択する。また、ここではプログラムとコンソールによるアクセスを許可する。

 

アクセス権限を設定して名前をつけてロールの作成を完了させる。外部AWSアカウント側の設定もこれで完了なので、マスターアカウントの設定画面に戻ってマッピングを登録する(IDPのARN,ロールのARN)

 

マスターアカウントのSSOダッシュボードに記載されているユーザポータルのURLを確認

 

確認したURLに実際にWEBブラウザで接続すると、組織内アカウントと外部AWSアカウントへのマネジメントコンソールにログインするリンクが表示される。これをクリックすると認証なしにそれぞれのコンソールにログインできる。

 

以上