【AWS】AWS SSOで複数の私用AWSアカウントへのサインインが超簡単になった話

#はじめに
Organizationsの組織で、「管理アカウントで〇〇して、メンバーアカウントで△△して～」ということを毎回ログインしなおしたり、別ブラウザでログインしたりしてました。
「AWS SSOを使って悩みを解決できそう」ということを知りました。
実際に試してみたので、やったことや私見等、雑に書き残しておきます。

何か気になる部分や不明な点があればコメントください！

#AWS SSOって？
AWSアカウントやその他クラウドアプリケーション(SAML2.0対応)へのサインインを一元的に行えるサービス。
追加費用はかからない。（！？）
既存のIdPと連携してSSOすることも可能。
AWS SSO自身がIdPとしての機能を果たすことも可能。
外部IdPとの連携をせず、AWS SSOだけで完結させれば、SSOするにあたっての費用は1円もかからない。

#やったこと
「スクリーンショットとかは一旦いいわ」という人のために「どんなことをやったのか」「できたのか」だけ先にまとめておきます。
##前提事項
・筆者の私用AWSアカウントで、Organizationsを利用して複数アカウントを作成していた。
・持っているのは管理アカウント、メンバーアカウントA、メンバーアカウントB の3つ。
　→いちいちそれぞれにログインするのめんどくさい！と思っていた。

##やったこと
・AWS SSOを設定して、全てのAWSアカウントにひとつの認証ユーザーでログインできるようにした。
・せっかく認証ユーザーを絞れたので、認証にMFAを設定しセキュリティを固めた。

#実施手順
やった流れを確認していきます。

まず管理アカウントのOrganizationsから設定画面を確認
最初はSSOアクセスが最初無効化されている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/c80b3cb6-310d-a1c8-8353-e3b79c0680fc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/e28f5b7e-5718-ec24-398c-daea59b4f8b0.png)

SSOのコンソールから有効化を行います。もちろんOrganizationsのコンソールから有効化しても大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/585281b7-1b45-b794-c7e6-61e4ae9948a6.png)

「正常に有効化されました」の表示を確認。
順番に設定をしていきます。
とりあえず1→2→3の手順で対応していけば何とかなると思います。
今回はAWSアカウントへのSSOが目的なので、3は触れません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/d1ddcdce-fe23-e2c7-c388-eff65b369ed6.png)

設定画面。ほぼデフォルト問題ないと思います。
ユーザーポータルURL→これがSSOの入り口になります。後続の手順のためエディタ等にメモしておきます。（コンソールからいつでも確認はできますが）
SSO 統合アプリケーション→「メンバーアカウントで有効化」になってますね。
MFAの設定だけはしたいので、「多要素認証」の設定を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/85073e57-283a-f542-df73-67f1a51bb630.png)


「サインイン時にMFAデバイスを登録するよう要求する」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/f2d7f2da-91f9-3717-3f1f-7ef6cf803570.png)

次にユーザー作成します。
このユーザーが、複数AWSアカウントやその他アプリケーションへサインインするための認証ユーザーになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/b6f06569-655e-9033-4da2-84f6657fe1a9.png)

諸々設定します。設定者自身がこの後ログインする予定ですし、「ユーザーと共有することができる一時的なパスワードを生成します。」でいきます。
個人利用ですし、オプション部分は今回記入しません。
ユーザー作成時に表示されるパスワードは忘れずにメモしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/cceef046-3d3a-dfa0-c709-fa7bb8a708be.png)

必須ではないですがグループ作成します。
IAMユーザーとIAMグループの関係と同じで、グループにポリシーを与えて権限管理するのが望ましいでしょうね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/c270d6bd-7f17-4ca0-0535-e2a505f43629.png)

先ほど控えておいたユーザーポータルURLにアクセスします。
今回作成したユーザー名と、先ほどメモしたパスワードを入力します。
その後、任意のパスワードに変更します。
せっかく認証情報がひとつになるのですから、使いまわしでない強固なパスワードを設定しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/2d939d94-17d7-4a97-8e41-090544339368.png)

MFAデバイスの登録が求められます。
以下参考記事の「3.」以降の手順を見れば雰囲気でわかるはず。
MFAアプリはなんでもよいですが自分は「Google Authenticator」を使いました。
https://hacknote.jp/archives/44956/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/3c8ec00d-0e93-8440-f193-932672467a2a.png)


ログインはできますが、SSO先の設定をしていないので「SSOを許可されたアプリないですよ」的な表示がされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/17e9c6aa-5f86-fc99-b64f-2a6f28774604.png)

実際にAWSアカウントやアプリにSSOするためには、[2][3]の設定をする必要があります。
繰り返しになりますが、今回はAWSアカウントへのSSOがしたいので[2]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/c8841584-0495-a776-73b8-6a862a276fc8.png)

とりあえず全部の組織を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/8eab858f-0127-68a5-05b4-576c9f058a61.png)

アクセス権限セットを作成します。
SSO許可先のAWSアカウントで、どんな権限で操作を許可するか設定します。
認証認可でいう「認可」にあたりますかね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/aed5a10f-b67e-a491-dd26-4badccb5bcae.png)

ここからはガイドにそっていけば大丈夫だと思います。
「職務機能ポリシー」というものをAWSの方で用意してくれているようです。
カスタムは今必要ないので、こちらにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/6c551691-d4c5-356e-cda9-baf736be3262.png)

組織内での役割毎にポリシーがたくさん。とても便利ですね。
私は私のアカウントにおける管理者なので、「AdministratorAccess」にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/6f154119-54a9-4798-a00a-2847f374f5e4.png)

設定内容を確認して、作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/1de15d59-dc96-1d55-5157-60ce4d58bba7.png)

ユーザーポータルのURLに再度接続します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/2e035338-3e19-b679-54fe-6abe2f6bce3d.png)

MFAに対応してログインすると、以下の画面が表示されます。
任意のアカウントを選択し「Management Console」を選択すると、そのアカウントのマネジメントコンソールにアクセスできました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/c79c61d0-3868-825c-f5de-7c0c5521bdc2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254141/e2ed045b-c96a-b430-f267-3839f4e6e90d.png)

手順は以上です！

#料金
SSO使うにあたり、追加の料金かからないみたいです。
``引用：AWS SSO は追加料金なしで利用できます。
参考：https://aws.amazon.com/jp/single-sign-on/faqs/``

JAWS初心者支部のLT大会？で情シスの方が「SSO便利すぎて使わない意味が分からない」的なことを言っていたけど、今は本当にそんな気持ち。
参考：https://speakerdeck.com/sumi/zu-zhi-gaawswoshi-ishi-merutokinikao-etai-akauntotoyuzafalseguan-li
AWSとしては「EC2とかその他コンピューティング系サービスで稼ぐので大丈夫です。」という感じなのでしょうか？


#感想
率直にめちゃくちゃ便利だなと感じました。
正直、あまりマニュアルとか参照せずに「あれかなこれかな」と進めていってうまくいったので、「簡単に設定できます」と言い切ってよいと思います。
最低限IdPとSSOの関係性みたいな部分を理解できているとよいのかなという感じ。
ソリューションアーキテクトプロフェッショナルの勉強をする過程で、そのあたりの知識が多少なりともついていたのもよかったのかも。

#今後確認したいこと
・アプリケーション認証の統合
・複数アカウント接続するにしても、アカウントごとに権限を変更することは可能か？

#余談：ユーザーログインのセキュリティ強化(MFA)について
「今までMFAつけてなかったの？」という指摘もあるかもしれませんが、おっしゃる通り未設定でした。
ただ実際のところ、私用AWSアカウントの管理者ユーザーにMFA設定してる人は多くないのではないでしょうか。。
自分の身を守るためにも、強力な権限を持つIAMユーザーにはMFAをつけるべきだと思います。
ただ、ログイン先が増えて認証情報の量が増えていくほどに、以下の状態になっていくと思います。
①色んなことの試行スピードが遅くなる
②別の部分のセキュリティがゆるくなる（パスワードを全部共通かつ簡単なものにする 等）
だからこそ、SSOを使って「サインインの入り口は一つにし、その入り口のセキュリティを強化する」ことが重要ではないでしょうか。


#参考
AWS Single Sign-On Documentation
https://docs.aws.amazon.com/singlesignon/index.html

Single sign-on access
https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html

AWS Single Sign-On のよくある質問
https://aws.amazon.com/jp/single-sign-on/faqs/

組織がAWSを使い始めるときに考えたい、アカウントとユーザーの管理
https://speakerdeck.com/sumi/zu-zhi-gaawswoshi-ishi-merutokinikao-etai-akauntotoyuzafalseguan-li