Google アカウントで AWS にログインする

[Happy Elements 株式会社 カカリアスタジオ Advent Calendar 2016](http://qiita.com/advent-calendar/2016/\hekk_cacalia_studio) 2 日目の記事となります．本日の担当はインフラグループの @nagizero です．よろしくお願いします．



# はじめに

従来，弊社では AWS を利用する従業員ひとりひとりに IAM アカウントを発行していました．最初はよかったのですが，利用者が増えるにつれてアカウントの管理が煩雑になっていきました．さらに，複数の AWS を利用することになったため，管理コストも倍々となりました．

そこで，管理の手間を省くために，従業員がすでに持っている何かしらのアカウントで認証を統合することにしました．弊社では Google Apps for Work を利用していたので， Google アカウントを利用して AWS を利用できるように設定しました．

以下， Google Apps for Work のアカウントで AWS にログインできるようになるまでの手順をスクリーンショットを交えながら記載します．



# 資料

これらの記事には大変お世話になりました．この場で謝意を表します．

- [AWS 管理コンソールを社内認証と SSO 化させる #m3dev - Qiita](http://qiita.com/seratch@github/items/53b53f143d64f16486bb)
- [Google Apps for Work の SAML を使って AWS にログインする - Qiita](http://qiita.com/kazutomo/items/15d79b872a3d231fcca4)
- [Amazon Web Services (AWS) クラウド アプリケーション - Google Apps 管理者 ヘルプ](https://support.google.com/a/answer/6194963)




# 作業

AWS, Google Apps 双方の管理者権限が必要となります．

## AWS を SAML 2.0 のサービスプロバイダとして設定する

Google Apps の管理コンソールから **Security** を開きます．

![Security](https://qiita-image-store.s3.amazonaws.com/0/71014/83587be8-4d0e-03c7-2b3b-13f3151d8317.png)


**Set up single sign-on (SSO)** から **Certificate** と **IDP metadata** をダウンロードします．

![Set up SSO](https://qiita-image-store.s3.amazonaws.com/0/71014/83243939-6637-849f-400e-59cbc9c49cbe.png)


AWS の IAM コンソールから **ID プロバイダ** を選択して **プロバイダの作成**を押します．

![ID provider](https://qiita-image-store.s3.amazonaws.com/0/71014/08fd832e-8ae2-d827-bb82-199c431ae9d6.png)

プロバイダーのタイプは **SAML**, プロバイダ名は **GoogleApps**, メタデータドキュメントは先ほど Google Apps からダウンロードした **IDP metadata** を選択して次に進みます．

![プロバイダの設定](https://qiita-image-store.s3.amazonaws.com/0/71014/a0019fe8-deac-7193-11ef-8121249e282b.png)


**作成**を押して終了です．

![プロバイダー情報の検証](https://qiita-image-store.s3.amazonaws.com/0/71014/905b9bc3-dd5c-b22e-c10b-5b334723ffc8.png)

プロバイダのリストから **GoogleApps** を選択し，**プロバイダの ARN** をメモしておきます．

![ARN](https://qiita-image-store.s3.amazonaws.com/0/71014/57dac1a7-ecf5-021a-eb33-b1341a91fc13.png)


## AWS で SSO ユーザのロールを作成する

AWS の IAM コンソールから **ロール** を選択して **新しいロールの作成**を押します．

![ロール](https://qiita-image-store.s3.amazonaws.com/0/71014/6b00a359-2671-8185-da08-e3099811d144.png)


ロール名を入力して次に進みます．テストのため，読み込み権限のみを持つ **ReadOnly** ロールを作成してみます．

![ロール名の設定](https://qiita-image-store.s3.amazonaws.com/0/71014/4feb1d83-2518-4eae-d772-a5507e33e244.png)

**ID プロバイダアクセス用のロール** から **SAML プロバイダへのウェブシングルサインオン (WebSSO) アクセスを付与**を選択します．

![ロールタイプの設定](https://qiita-image-store.s3.amazonaws.com/0/71014/81a7022e-9e13-e700-43f3-6578d609ee05.png)


先ほど作成したプロバイダ **GoogleApps** を選択して次に進みます．

![プロバイダ選択](https://qiita-image-store.s3.amazonaws.com/0/71014/1b7f1112-ac9f-b07d-e955-f77b00fca007.png)

次に進みます．

![ロールの信頼の確認](https://qiita-image-store.s3.amazonaws.com/0/71014/5ac625f1-d936-e31c-658a-80402c81a671.png)

**ReadOnlyAccess** を選択して次に進みます．

![ポリシーのアタッチ](https://qiita-image-store.s3.amazonaws.com/0/71014/881e29c5-cdbf-f6e4-ad09-2994786eaaf4.png)

**ロール ARN** をメモした後，**ロールの作成**を押して終了です．

![確認](https://qiita-image-store.s3.amazonaws.com/0/71014/3ba3dd3c-0752-a44a-ff47-fa49fd1ab357.png)


## AWS で Google Apps を SAML ID プロバイダ（IdP）として選択する

Google Apps の管理コンソールから **Apps > SAML Apps** を開き， **Add a service/App to your domain** を押し， **Amazon Web Services** を選択します．

![a78ac2be-3e05-b82e-3afd-f7d78768fb0a.png](https://qiita-image-store.s3.amazonaws.com/0/71014/65788487-3705-baef-69d5-7d1890c3b8b4.png)

**NEXT** を押します．

![4bcfada3-6886-309f-c7b5-328f655a6da6.png](https://qiita-image-store.s3.amazonaws.com/0/71014/4c1aad24-51ed-69dc-3d6d-415f3f2c938b.png)

お好みでロゴをアップロードして **NEXT** を押します．

![ae2ebd4f-1f63-90c9-4866-3cbba3daa625.png](https://qiita-image-store.s3.amazonaws.com/0/71014/ebcd2984-1de7-90d0-e62e-f61e925b2661.png)


## AWS 固有のサービスプロバイダの詳細を入力する

**NEXT** を押します．

![d2957741-6df5-174a-5d93-0e296e2bcc14.png](https://qiita-image-store.s3.amazonaws.com/0/71014/78c19984-90d3-f02f-66e7-670733705548.png)

**https://aws.amazon.com/SAML/Attributes/RoleSessionName** に **Basic Information** の **Primary Email** をマッピングします．また， **https://aws.amazon.com/SAML/Attributes/Role** に **Employee Details** の **Job Title** をマッピングして **FINISH** を押します．

![42e1ec56-8c30-0214-3676-c5b899ffcc1d.png](https://qiita-image-store.s3.amazonaws.com/0/71014/58f43176-92d2-5783-c173-88076faa5351.png)


## AWS アプリに対して SSO をオンにする

Google Apps の管理コンソールから **Apps > SAML Apps > Amazon Web Services** を開き， **ON for some organizations** を押します．

![bceff693-6aad-d8bd-40a5-3c5d303d8e5a.png](https://qiita-image-store.s3.amazonaws.com/0/71014/f32a1195-3f34-b6ac-f85c-62c1b325073d.png)

対象の組織のみ **ON** にします．

![bbc7754f-5ccc-fb30-2792-8a6a17eadabb.png](https://qiita-image-store.s3.amazonaws.com/0/71014/bba80804-717e-783b-c64a-06e222680f3a.png)


## Google Apps - AWS 間の SSO を確認する

Google Apps の管理コンソールから SSO を許可したいユーザを選択し， **Account > Basic Information > Edit** を押します．

![b3886a86-1cb5-2d2b-acda-83fdbab16178.png](https://qiita-image-store.s3.amazonaws.com/0/71014/8337d9f6-708a-631d-40df-18241a472d7e.png)

何もせず **ADDITIONAL INFO** を押します．

![a907fc9b-5d63-a444-ec23-5ff575c2afe9.png](https://qiita-image-store.s3.amazonaws.com/0/71014/1c885739-6a8a-eff1-3329-80ec3a522ddf.png)

何もせず **NEXT** を押します．

![91b7551f-0cda-fb05-d9f5-08d153824abb.png](https://qiita-image-store.s3.amazonaws.com/0/71014/210d619d-3b2e-5831-582f-b63d2cd52222.png)

**Title** に **{プロバイダの ARN},{ロール ARN}** を入力して **UPDATE USER** を押します．

![7f3fa756-705f-83d6-71fa-4141c598a4d4.png](https://qiita-image-store.s3.amazonaws.com/0/71014/c17808b1-6cb9-03d0-42e2-5d3b37c8e393.png)

対象ユーザで Google Apps にログインし，メニューの最下部にある **Amazon Web Services** を押します．

![2a52ec04-3a73-9c2b-60f5-6c123b25f9da.png](https://qiita-image-store.s3.amazonaws.com/0/71014/2d7d0add-3841-ea14-de45-c49ad0cc8b25.png)

フェデレーションログインされました． **ReadOnly** ロールでユーザがログインしていることがわかります．

![ffc565e5-1673-fa8b-9b0d-ebf4d84a2ee9.png](https://qiita-image-store.s3.amazonaws.com/0/71014/ef0dd44c-e84a-ef24-03db-af9543ce1d03.png)

あとはロールに適切な権限を付与すれば OK です．



# おわりに

統合認証を利用することでアカウント管理の手間から少しだけ解放されました．このように，従業員が楽をする (快適に働けるようにする) ための環境整備を行うことも弊社インフラグループのミッションとなっています．