AWS SSO(SingleSignOn)を使って複数サービスログインを一元管理する①

# 概要
 - 本記事は[MDC Advent Calendar 2021](https://qiita.com/advent-calendar/2021/mdc)の6日目の記事です
 - 最近恒例の誕生日エントリです
 - 今回はAWSのSSOマネジメントサービス「AWS SingleSignOn」について、概要と触ってみたを書きます

## こんなことありませんか？
 - 色々なサービスを使っているとそれぞれログインID・PWを覚えないといけないので管理が面倒です
 - それを解決するのがSingleSignOn(SSO)
 - 一度ログイン処理をすると、複数のシステムを利用開始する際に都度認証を行う必要がなくなる仕組みです

## AWS SingleSignOn（SSO）って？
 - https://aws.amazon.com/jp/single-sign-on/
 - SSOを実現できるマネジメントサービスです
 - AWSマネジメントコンソールやSAML認証可能な外部サービスに対してSSOができるサービスです

## AWS SSOを使ってみる
- 以下の順番で行います

1. AWS Organizationの作成
1. AWS SSOの作成
1. AWSマネジメントコンソールのログインをAWS SSO管理にする
1. RedmineのログインをAWS SSO管理にする（次回記事で）

## 1. AWS Organizationの作成
- AWS SSOはAWS Organization単位で作成されます
- [AWS Organizations](https://console.aws.amazon.com/organizations/v2/home/)にアクセスして組織を作成しましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289060/6a816546-cdc2-641b-954e-ec41161b74ca.png)


## 2. AWS SSOの作成
- [AWS SSO](https://ap-northeast-1.console.aws.amazon.com/singlesignon/home?region=ap-northeast-1#/
)にアクセスしてAWS SSOを有効にします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289060/3b7e25e8-9ec1-3667-5b1a-2b11957d7e0f.png)
- 手順に沿ってIDソース(AWSSSOで利用するユーザデータ)を選択します

:::note
・IDソースはAWSSSO独自、ActiveDirectory(AWS MicrosoftADかADConnector)、外部IDプロバイダから選択できます。デフォルトはAWSSSO独自です。今回はこのままでいきます
・[設定]からIDソースの変更や、MFA(2段階認証)登録の有無を変更できます。ID/PW認証だけではセキュリティが懸念される場面でも問題ないですね
:::

- [ユーザ]からユーザを作成します。初期パスワードは登録メールアドレスに送信or一時パスワードを発行する方法があります

## 3. AWSマネジメントコンソールのログインをAWS SSO管理にする
- [AWSアカウント]からルートアカウントを選択して[ユーザの割り当て]を選択します
![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289060/e9e3c2c1-8257-0caa-14f6-6e6ed9e7f3f3.png)

:::note
・本来はAWSOrganizationに所属している全てのAWSルートアカウントが表示されるのですが、今回は1つしか所属していないので1つしか出ません
・Organization外のAWSルートアカウントにはログインできないのか？という懸念については以下記事でログインを実現されておりますのでご参照ください
<a href="https://qiita.com/wokamoto/items/8f078f14201b772edc15">[AWS] AWS Single Sign-On で Organizations 管理外の AWS アカウントにアクセスする</a>
:::

- ユーザにAWSルートアカウントのどの権限を割り当てるかを選択する画面になります
- [新しいアクセス権限セット]->[カスタムアクセス権限セットを作成]を選択します(別ウィンドウが開きます)
- [AWS管理ポリシーをアタッチ]を選択し、ポリシーを選択して保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289060/e7deed4b-4c95-cc4e-b34c-8355ac691bc0.png)
- 元のウィンドウに戻り更新ボタンを押すと、作成したカスタムアクセス権限セットが表示されるため、選択し完了します
![test2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289060/2425e42b-d4ef-1703-ba86-5d2152a361da.png)

## 作成したユーザでAWS SSOにログインする
- 権限の割り当てが完了したのでアクセスしてみましょう
- ダッシュボードの[ユーザーポータル]にアクセスします
![test3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289060/f2bf4a5f-f41b-b0b5-8a9b-ea29486f8c8d.png)
- ユーザ作成時に[一時的なパスワード生成]にしたため、発行したパスワードでログインします
- ユーザポータルにログインできました。ログインしたユーザが利用可能なAWSルートアカウントや外部サービスのリンクが表示されます。ユーザポータルのURLをブックマークしておけば、各サービスへのブックマークも不要ですね！
![test4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289060/9a32e779-d354-d214-3f69-9cea859c9bb9.png)
- [ManagementConsole]からAWSアカウントにアクセスしましょう
![test5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289060/ec8ae234-3a80-ac21-b464-0c9e50f04845.png)
- マネジメントコンソールにアクセスできました。

:::note
・[IAM] -> [IDプロバイダ]や[ロール]を確認すると、今回作成した設定が格納されています
・AWSSSOと管理アカウント間でSAML認証が行われており、AWSSSO経由でログインしたユーザは、作成したロールでアクセスしていることがわかります
:::
![test6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289060/239c3f4e-4b84-62db-40b8-66a2a7447ca9.png)
![test7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289060/2a22a7fd-5a18-1f24-2c4d-25ae5f3af1d8.png)



### 感想
- シングルサインオンの設定が簡単にできました
- 通常シングルサインオンのサービスを使う場合ユーザ単位などで料金が発生しますが、AWSSSOは何より無料で利用できるのが嬉しいです
- 次回はAWSSSO経由で外部サービスのログインを行います
- いつも公開日の前夜に書いているので、記事書いてる間に誕生日を迎えました。歳の始まりと終わりはQiitaで過ごしていますね…
- この1年も技術に触れていきたいですね。ありがとうございました。