AWS SSO と Google Workspace を連携する

# AWS SSO と Google Workspace を連携する

## この記事の内容
AWS SSO と Google Workspace を連携する方法の記事です。

## なんで書いたか
個人的な思いとして AWS SSO がとても便利で有益だったので利用への障壁を少しでも低くできたらと思い書きました。
AWS SSO と G Suite との連携記事はよく見かけるが Google Workspace との連携の記事をあまり見かけなかったので残そうと思いました。
AWS SSO はかなり便利なサービスで、AWS アカウントを Organizations で複数管理している場合かなり運用が容易になる可能性があります。

:::note info
今回は Google Workspace との連携に関する事のみを記載しています。
外部 Idp で会社のメンバーアカウントを管理していて AWS アカウントを Organizations で複数管理している場合、かなり運用が容易になる可能性があります。
:::

## AWS SSO とは
https://aws.amazon.com/jp/single-sign-on/

AWS SSO は AWS Organizations で作成した組織に所属するアカウントを横断したユーザー管理ができるとても便利なサービスです。アカウントごとに IAM ユーザーを作成する必要がなく、管理がとても容易になります。
また、 ID ソースを外部 Idp から参照することも可能です。

## AWS SSO と Idp を連携するメリット
### 1. ログイン情報が Idp のものだけで済むようになる
Idp のログイン情報で　AWS アカウントにアクセスできるようになるので、AWS アカウント毎のログイン情報とシークレットを管理せずに済みます。

### 2. AWS アカウント毎のユーザー管理が不要になる
これは Idp との連携がなくても AWS SSO を利用するだけで恩恵が発生します。AWS SSO のユーザー管理だけで Organizations に所属する AWS アカウントへのアクセス管理が完結します。


## AWS SSO と Google Workspace の連携手順

### 1. AWS SSO を有効化する
1. まず、AWS マネージメントコンソールにログインして `SSO`サービスを検索します。
![スクリーンショット 2021-11-13 8.58.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/92e7064a-533d-3de5-57fb-1509961d240c.png)

2. `AWS SSO を有効にする` ボタンを押します。
![スクリーンショット 2021-11-13 8.58.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/f8cbc021-8aeb-e535-6ae3-3cad8fdc05cf.png)

### 2. AWS SSO の情報を表示する
1. AWS SSO を有効化するとこのような画面が表示されるので、左メニューの `設定` を選択します。
![スクリーンショット 2021-11-13 9.00.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/df9b42b0-2432-8211-987d-42c45b53e5c1.png)

2. 設定画面を開いたら、 `ID ソース`　の右にある `変更` リンクをクリック。
![スクリーンショット 2021-11-13 9.01.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/ee604069-f8ce-a2d5-6dbb-160177463835.png)

3. 画面遷移後、ラジオボタンの `外部 ID プロバイダー` を選択し、その後表示される `個々のメタデータ値を表示` をクリックします。
![スクリーンショット 2021-11-13 9.05.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/4f79fc63-0f26-67e5-f229-94e14ac51e5d.png)

4. メタデータ値が表示されたらこの画面をそのままにしておいて別のタブもしくはブラウザで Google の作業に移ります。
![スクリーンショット 2021-11-13 9.05.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/5b8cc81c-9b3a-771f-285b-22440dfa9f16.png)

### 3. Google Workspace で SAML アプリケーションを作成する
1. https://admin.google.com/ac/apps/unified に遷移します。
遷移後、 `アプリを追加` をクリックすると選択肢が表示されるので `カスタム SAML アプリの追加` を選択します。
![スクリーンショット 2021-11-13 9.08.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/191a4ac9-db46-4218-9b89-8fe8f6c9f4dd.png)

2. アプリ名を入力して、必要であればアイコン画像をアップロードして `続行`。
![スクリーンショット 2021-11-13 9.12.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/93e6b3d5-8bc3-ff60-9f27-ac1b6e8d581b.png)

3. `メタデータをダウンロード` をクリックして、SAML ファイルを保存して `続行`。
![スクリーンショット 2021-11-13 9.10.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/3fef572b-ff68-9e75-e902-d2c881e7ea29.png)

4. 以下の情報を入力します。

- ACS の URL
    - 手順 2-4 で表示されている `AWS SSO ACS URL` を入力します
- エンティティ ID
    - 手順 2-4 で表示されている `AWS SSO 発行者 URL` を入力します
- 名前 ID の 形式
    - `EMAIL` を選択します
![スクリーンショット 2021-11-13 9.13.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/84f5dbb6-80df-74b4-bff5-0bac39c6fdd1.png)

5. SAML アプリケーション作成後、サービスのステータスで `オン（全てのユーザー）` を選択します。
![スクリーンショット 2021-11-13 9.13.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/796de76b-9a8f-74e3-1f49-edb0ffaac339.png)

### 4. AWS SSO に Google Workspace の SAML アプリケーションを登録する
1. 手順 2 - 4 の画面の下の方にある `Idp メタデータ` の `参照` ボタンを押して、手順 3-3 で保存した SAML メタデータファイルを選択して進んでいけば完了です。
![スクリーンショット 2021-11-13 9.14.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/6ce9fdd2-53c4-63b9-82c5-ac9fcfb53928.png)


### 4. AWS SSO ユーザーの設定
:::note info
以下の順序は必須ではありません。やりやすい順序で実施してください。
:::

1. 手順 1-1 と同じように SSO サービスを検索して SSO 画面を表示します。左側にあるメニューをそれぞれ選択して作業を勧めていきます。
![スクリーンショット 2021-11-13 10.14.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/30759d52-08e8-7341-1e10-7c8081e17c1f.png)

2. ユーザー作成
ユーザーメニューを選択して `ユーザーを追加` ボタンを押すと以下の画面が表示されます。ユーザー名の部分に Google Workspace で管理されているメールアドレスと同じものを登録します。
その他は会社やコミュニティーに必要な情報を入力して完了です。
![スクリーンショット 2021-11-13 10.16.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/17d02298-6c19-e960-f367-3c1f44e12458.png)

3. グループ作成
メニューの `グループ` を選択してグループを作成します。ここで作成したグループを Organizations 組織アカウントにアサインしてアクセス権限セットを付与することでユーザーの権限を管理します。
（ユーザー単位でも管理はできますが、グループを利用した方がユーザー個別での権限管理より容易になると思われます。お好みで利用してください。）

4. アクセス権限セット作成
  メニューの `AWS アカウント` -> `アクセス権限セット` タブを選択して作成します。 ここでは AWS 管理ポリシー もしくは　カスタムポリシーを設定できます。
  カスタムポリシーを作成する際の参考：[Identity-based policy examples for AWS SSO](https://docs.aws.amazon.com/singlesignon/latest/userguide/iam-auth-access-using-id-policies.html#policyexamplemanageaccount)

    Terraform では以下がサポートされています。
  - [aws_ssoadmin_permission_set](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssoadmin_permission_set)
  - [aws_ssoadmin_permission_set_inline_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssoadmin_permission_set_inline_policy)
![スクリーンショット 2021-11-13 10.27.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86389/5de23b1d-4b4f-b6dd-d273-f3768f4d8570.png)

5. アカウントにグループをアサイン
  メニューの `AWS アカウント` -> `AWS 組織`　タブを選択して作成したグループもしくはユーザーをアサインします。その流れでグループにアクセス権限セットを付与します。
  Terraform では以下のリソースがサポートされています。
  - [aws_ssoadmin_account_assignment](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssoadmin_account_assignment)
  - [aws_ssoadmin_managed_policy_attachment](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssoadmin_managed_policy_attachment)

6. グループにユーザーをアサイン
メニューの `グループ` を選択後、ユーザーを追加するグループを選択してユーザーを追加します。


:::note info
アカウントにグループもしくはユーザーを登録する際にアクセス権限セットを付与しますがあくまでそのアカウント内での設定で、グループもしくはユーザー自体にアクセス権限セットしているわけではありません。各アカウント毎に設定が必要になります。
:::

## 最後に
これで AWS SSO と　Google Workspace 連携が完了しました。会社やコミュニティーでメンバーを Google Workspace で管理している場合、この連携を実施することで AWS アカウント毎のユーザー管理を Google Workspace と AWS SSO の管理のみで完結することができるようになりました。
AWS のアカウントを Organizations を利用して複数管理している場合特に力を発揮してくれると思いますので、お時間がある時にぜひ一度お試しください。