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アカウントへのマネジメントコンソールにログインするリンクが表示される。これをクリックすると認証なしにそれぞれのコンソールにログインできる。
以上