AWS Managed AD x AWS SSOでGoogle Workspaceにログインする
Tags: aws, activedirectory, google, singlesignon
Published: 2021-06-28 02:38:18

Google Workspace（旧G Suite）のアプリケーションを使いたいけど、ユーザー管理はActive Directoryで行いたいというケースもあるだろう。

言い換えると、ADを認証プロバイダー（Identity Provider、IdPとも書く）として利用し、Google Workspaceをそれと連携するカスタムSAMLアプリケーションとして登録するということになる。

ADFSをたてて連携させたり、ADのユーザーをGoogleと同期させる方法もあるようだがAWS Managed Microsoft AD（以下AWS Managed AD）を使っている場合は、少し面倒だ。前者はできると思うが、後者に関しては未確認。

<br>
そこで、AWSのシングルサインオンサービスのAWS SSOを利用すればサーバーをたてて何かしらインストールする必要なく、その辺りのフェデレーションをやってくれるので楽に連携できる。

1. AWS Managed ADを構築していて、ちゃんと機能している
2. AWS SSOを有効にさせてある（セットアップはしていなくても良い）
上記の2つのことを前提に、Google Workspaceとの連携をしてみるとする。

なお、当たり前だが、しっかりユーザーのフェデレーションを行うためにはGoogle側のユーザーとADのユーザーは同じドメイン名を利用している必要がある。組織が持っているちゃんとしたパブリックドメインを利用するということだ（.localではだめなので、ADのドメインが.localならパブリックドメインでalternative UPNを追加しておくこと）。

AWS Managed ADでは、パブリックドメインであっても.localであってもディレクトリを作成する際に検証がはしるということはないのだが、Google側はちゃんと自分が持っているドメインじゃないとカスタムドメインとして利用できないので注意。

<br>
まずはAWS SSOの画面から、認証プロバイダーを設定する。

Active DirectoryをIDのソースに指定した上で、ディレクトリの一覧から、正しいAWS Managed ADを選択する。

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7l5vwaxn20n8koxnbr9v.png)

設定が完了すると、こんな状態になっているはず。

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yp03m56qnl5inx0zdmms.png)

<br>
次に、Googleのアプリケーションを追加する。

左側ナビゲーションの「アプリケーション」を選択し、新規アプリケーションの追加からG Suiteを検索する。ここはまだ名前が更新されてなくて旧名称のG Suiteになっているのね。

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qatuzleh0yfyyrovxzjk.png)

アプリケーションの追加時に、設定画面にていくつか情報を控える必要がある。

* AWS SSO サインイン URL
* AWS SSO サインアウト URL
をコピーしておいて、

* AWS SSO 証明書
をダウンロードしておく。

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fde4nfckwbjlcfuyahlu.png)
 
他に、「アプリケーションのプロパティ」と「アプリケーションメタデータ」の設定が必要だが、

* 「アプリケーション開始 URL」：https://www.google.com/a/<自分のドメイン名>

「アプリケーション SAML メタデータファイル*」は手動でのメタデータ入力に切り替えた上で、
* 「アプリケーション ACS URL*」：https://www.google.com/a/<自分のドメイン名>/acs
* 「アプリケーション SAML 対象者*」：google.com/a/<自分のドメイン名>

にそれぞれ設定する。何を設定するかを説明してくれるGoogleのヘルプページがあるが、ここでは省くとする。

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/862bv9g9ueblwltq8xsk.png)

<br>
次に、ちょっと作業場所を変えて今度はGoogle側でSSOの設定とユーザー作成を行う。

組織の管理者としてGoogle Admin画面にログインし、セキュリティ→シングルサインオンの設定に進む。設定が2つあるが、

「SAMLアプリケーションに対するシングルサインオン（SSO）の設定」は、今回とは逆のシナリオで使うものだ。つまり、Google側が認証プロバイダーとして、AWS管理コンソール等にログインしたい場合。

「サードパーティの ID プロバイダを使用したシングル サインオン（SSO）の設定」が、今回使うものなので間違いのないように。

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j6e2f57y119ii4lazy4c.png)

見ていただければもうお分かりだと思うが、先程AWS SSO側で控えた情報をこちらにセットする。

* 「ログインページのURL」：AWS SSO サインイン URL
* 「ログアウトページのURL」：AWS SSO サインアウト URL
* 「確認用の証明書」：AWS SSOからダウンロードした証明書
* 「ドメイン固有の発行元を使用」：チェックを入れる

設定が完了したら、保存を行う。

次は、Google側のユーザーにADと同じメールアドレスのユーザーが存在していることを確認し、まだないのであれば作成しておく。

※この例では、ユーザーの自動同期（プロビジョニング）は行っていない

<br>
再度AWS SSOに戻り、アプリケーションにユーザーの割当を行う。

さきほど追加したアプリケーションの「割り当て済みユーザー」タブから、「ユーザーの割り当て」を選択し、アプリケーションを利用させたいユーザーやグループを割り当てる。

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9wbfosoq89944b8nhpqn.png)


<br>
ここまで終わったら、直接AWS SSOのポータル画面からログインしてみる。

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/36drl4tdckarm1e6hg4i.png)
 
アプリケーション一覧に、ちゃんとG Suiteがある。

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3gm4xk78dmlhxh688tga.png)

G Suiteのアイコンを選択すると、ちゃんとシングルサインオンできた。

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e0uyem1u6f7ok4073s08.png)