#はじめに
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アクセスが最初無効化されている。
SSOのコンソールから有効化を行います。もちろんOrganizationsのコンソールから有効化しても大丈夫です。
「正常に有効化されました」の表示を確認。
順番に設定をしていきます。
とりあえず1→2→3の手順で対応していけば何とかなると思います。
今回はAWSアカウントへのSSOが目的なので、3は触れません。
設定画面。ほぼデフォルト問題ないと思います。
ユーザーポータルURL→これがSSOの入り口になります。後続の手順のためエディタ等にメモしておきます。(コンソールからいつでも確認はできますが)
SSO 統合アプリケーション→「メンバーアカウントで有効化」になってますね。
MFAの設定だけはしたいので、「多要素認証」の設定を選択します。
「サインイン時にMFAデバイスを登録するよう要求する」を選択します。
次にユーザー作成します。
このユーザーが、複数AWSアカウントやその他アプリケーションへサインインするための認証ユーザーになります。
諸々設定します。設定者自身がこの後ログインする予定ですし、「ユーザーと共有することができる一時的なパスワードを生成します。」でいきます。
個人利用ですし、オプション部分は今回記入しません。
ユーザー作成時に表示されるパスワードは忘れずにメモしておきます。
必須ではないですがグループ作成します。
IAMユーザーとIAMグループの関係と同じで、グループにポリシーを与えて権限管理するのが望ましいでしょうね。
先ほど控えておいたユーザーポータルURLにアクセスします。
今回作成したユーザー名と、先ほどメモしたパスワードを入力します。
その後、任意のパスワードに変更します。
せっかく認証情報がひとつになるのですから、使いまわしでない強固なパスワードを設定しましょう。
MFAデバイスの登録が求められます。
以下参考記事の「3.」以降の手順を見れば雰囲気でわかるはず。
MFAアプリはなんでもよいですが自分は「Google Authenticator」を使いました。
https://hacknote.jp/archives/44956/
ログインはできますが、SSO先の設定をしていないので「SSOを許可されたアプリないですよ」的な表示がされます。
実際にAWSアカウントやアプリにSSOするためには、[2][3]の設定をする必要があります。
繰り返しになりますが、今回はAWSアカウントへのSSOがしたいので[2]を選択します。
アクセス権限セットを作成します。
SSO許可先のAWSアカウントで、どんな権限で操作を許可するか設定します。
認証認可でいう「認可」にあたりますかね。
ここからはガイドにそっていけば大丈夫だと思います。
「職務機能ポリシー」というものをAWSの方で用意してくれているようです。
カスタムは今必要ないので、こちらにします。
組織内での役割毎にポリシーがたくさん。とても便利ですね。
私は私のアカウントにおける管理者なので、「AdministratorAccess」にします。
MFAに対応してログインすると、以下の画面が表示されます。
任意のアカウントを選択し「Management Console」を選択すると、そのアカウントのマネジメントコンソールにアクセスできました!
手順は以上です!
#料金
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