前置き
AWSには、IAM Userというユーザー管理機能があり、AWSアカウント内でユーザー管理することも可能です。
しかし、G Suiteを使っている環境において、メンバーが増えるたびに、Googleアカウントを発行したり、AWS IAMユーザーを発行したりするには、工数が発生するとともに、漏洩のリスクも増やしてしまいます。
そこで、SSOにより、GoogleアカウントにてAWSアカウントにログインできるようにしてみます。
AWSおよびGoogle(G Suite)には、これをSAML経由で簡単に実現できるようにしてくれています。
ここでの詳細な説明は割愛しますが、SAML環境は、IdP(認証をつかさどる)とSP(サービス提供)によって構成されます。
ここでは、G SuiteがIdP、AWSがSPとなります。
構成図としては、AWSドキュメントのSSO関連のいたるところでみる、以下がわかりやすいです。
なお、図では「AWS SSO Endpoint」と表記がありますが、今回の手順では、「AWS SSO」は利用しません。
より詳細なコントロールが必要な際などに、「AWS SSO」を利用することになります(最後のまとめにも記載)。
前置き2
だいたい、このサイトの手順どおりで実現できます。しかし、いくつか現在(2020/8/10)の環境では差異があるため、手順どおりに進めていく上での留意点を補足する形で、以降の手順を記載します。
https://support.google.com/a/answer/6194963?hl=en
Stepごとの補足ポイント
Before you begin
以下の手順において、表記されているようなリンクは見つけられませんでした。
しかしながら、ユーザーリスト右上の「More」に、「Manage Custom Attribute」という、両者を混ぜ合わせたようなリンクから、手順を実行できました。
3 At the top of Users list, click Manage user attributes User attributes.
4 At the top right, click Add Custom Attribute.
ちょいちょいこの手の差異はあったような気もしますが、Googleに限らず、Web UI上の表記が微妙にアップデートされ、公式の手順書と差異があることはままあります。
Step 4: Enable the Amazon Web Services app
正直、英語で読んでも日本語で読んでも、ここで書いている文が言語として難解でした: (
また、これだけではStep 5の検証をとおすのに、不十分に思えます。
検証するユーザー(Chromeを使っているならログイン中のユーザーアカウント)にて、ロールを設定しておかねばなりません(Step 6相当の準備)。
Step 2でAWS側に準備しておいたロール群(※)の出番です。
(※) 以下の2つの形式のもの。
– arn:aws:iam::ACCOUNT_NUMBER:role/SSO
– arn:aws:iam::ACCOUNT_NUMBER:saml-provider/GoogleApps
G Suiteのユーザー一覧から、検証したいユーザーのリンクを開きます。
「User Information」を開くと、「Amazon」という項目が見つけられると思います。また、この時点では、Roleは未設定の状態になっているかと思います。
このロールを編集し、Step 2で作成したロールの2つのARNを、カンマ区切りで設定します。
これで、Step 5での検証や、Google Appsから、AWSマネジメントコンソールにログインすることが可能になったかと思われます : )
まとめ
個人的には、ユーザーへのロールの設定が罠になるかと思いますが、それ以外については手順は丁寧で、SAMLやSSOについて、あまり理解していなくても表題の実現が可能かと思いますが、SSOの仕組みを自分で手を動かして動かすことで、理解が深まることもあるかと思います。
今回実施した手段は、AWSアカウントとGoogleアカウントそれぞれで設定しました。
複数のAWSアカウントを扱ったりしていったり、ユーザー数が増えて行ったりと、ビジネスが成長していく上でこの手順では厳しくなってきます。
AWS SSOなどを利用した仕組みを構築する必要があります。
また、そのあたりの記事も書けたらと思います。