AWS SSOを使ってSingle Sign-On環境を手に入れよう!

皆さん、はじめまして。 ビットバンクでインフラを担当しているyuukiです。
趣味はバイクとお酒。ソロでキャンプツーリングがマイブームです。

----------2018-05-24-19.44.44

写真は先日走ってきた長野の山です。

ECのバックエンドシステムの運用開発を経て今年、ビットバンクにJOINしました。主にビットバンクのインフラ部分を担当しています。

ビットバンクではインフラ部分に、Amazon Web Services(以下AWS)を使用しています。
AWSをある程度利用していると煩雑になってくるのが、アカウント管理です。

AWSにはIdentity and Access Management(IAM)と呼ばれる素晴らしいアカウント管理の機能があります。
IAMユーザーを払い出し、それぞれのユーザーに必要に応じた権限を割り当てることでアカウント漏洩時のリスク管理やオペレーションミスを未然に防ぐことができます。

この便利なIAMですが、たった一つのAWSアカウントを使用している環境ならいいのですが、本場・開発・ステージング……など複数のアカウントを使用している場合どうでしょうか。
メンバーが増えるたび、一つ一つユーザーを払い出し、メンバーの移動があれば不要になったアカウントからユーザーを削除する……そう。しっかり管理するには運用負荷が高いのです。

また、各開発者もアカウントを切り替える際、毎回ログインを行なう……

コレは辛い!コレでは辛い!

少しでも「楽をする」ため、以前から色々な方法が試されてきました。

Switch Role

IAMにはSwitch Roleと呼ばれる便利な機能があります。

---------_2018-05-17_16_49_23

ロールを切り替えるユーザーアクセス権限の付与に記述がある通り、アカウント間で信頼関係を設定しておくことで、一つのアカウントにログインすれば別のアカウントのコンソールにそのままログインすることができる仕組みです。

この機能は開発者にとって非常に便利で、画像にあるようにロールの切り替えを使用することで別のアカウントにログイン可能です。
使用するアカウントが大体5個以下ならこの設定を入れておくことでアカウント間の移動が非常に楽になります。
そして何より、設定が比較的簡単です。
ただし、各アカウントにIAMユーザーができてしまうのでIAMユーザー管理の手間から開放されることはありません……

ADFS

ActiveDirectoryとIAMを連携して複数のアカウントにログインする方法もあります。
How to Establish Federated Access to Your AWS Resources by Using Active Directory User Attributesこちらで紹介されている方法を試せば構築することができます。

複数のアカウントに事前に定義した権限でログインすることが可能であり、各アカウントにIAMユーザーを作る必要もありません。
ユーザの追加と削除はActiveDirectory上で操作するだけで運用負荷も下がります。
素晴らしい仕組みです。

難点は構築が物凄く面倒なことです。以前、個人アカウントで使っていましたが恐ろしく面倒でした。

サードパーティ製品

自前で環境を用意せず、SaaSを利用する方法もあります。
OneLoginなどは情報も多く設定で困ることも少ないと思います。

ActiveDirectoryと連携して管理することもできますし、OneLoginの管理画面から管理することもできます。
サービス利用料金がかかってしまいますが、AWS以外のサービスのログインも管理することができるので使用しているサービスが多い、AWSアカウントも数が多い……といった場合はかなり良いと思います。

AWS SSO

---------_2018-05-17_17_38_02

2017年12月に満を持して登場したAWS SSOはAWSのマネージドSSOサービスです。
AWS SSOはAWS DirectoryServiceと統合して使用します。
つまり、ログインにはActiveDirectoryで設定したユーザーIDとパスワードを使用します。さらに、自前でRemote Authentication Dial In User Service(RADIUS)サーバを用意することでMFAを利用することも可能です。

---------_2018-05-17_17_39_40

各アカウント毎に指定した権限でコンソールログインが可能なだけでなく、60分で使用期限が切れる一時的なCLIのクレデンシャルキーを発行することも可能です。
神か!? 初めて触ったとき、感動しました。IAMユーザーを作ること無く一時的なクレデンシャルを簡単に払い出すことができます。
また、SAML2.0に対応したアプリケーションであれば連携させることが可能です。

こんなスゴイAWS SSOですが、残念ながらまだあまり情報がありません。
2018年5月現在、東京リージョンではまだ使用できないためでしょうか……便利なサービスなのに残念です。

また、現状MFAを利用するためにはこちらでRADIUSを用意しなければならないのでマネージドでやってもらいたいです。

AWS SSO+ MFA は資料が殆どありませんが、下記の資料が参考になります
多要素認証による Amazon WorkSpaces の利用この資料はAmazon WorkSpacesについて書いていますが、やることは同じです。
資料では前半は自前でRADIUSサーバを運用する方法を説明し、後半ではDuoを使った方法を説明しています。

検証時に両方とも試しましたが、自前でRADIUSサーバを運用するのは運用負荷が辛くなるのが見えたので止めておきました。
Duoは使いやすく良かったです。設定に関してはProxyサーバを用意する必要がありますが、公式のドキュメントが結構しっかりしているのでそんなに迷うことも無いかと思います。
良かったのですが、色々と試した結果OneLoginと連携してやっていきたいなと思い、ビットバンクではAWS SSO + OneLoginを組み合わせて使用することにしました。

----------2018-05-17-18.35.36

OneLoginとActiveDirecotyの情報を同期させることで、ActiveDirecotyでユーザーの追加削除を行えばOneLogin側を操作する必要がなくなります。

この構成ではMFA用に外部サービスを使用しているだけなので、将来AWS SSOがMFA対応した際に構成変更をすることが容易です。

また、AWS Organizationsの連結アカウントであれば、管理アカウントが増加した際も簡単に対応することができます。

バージニアリージョンでAWS SSOを動かしているため、認証時に若干の遅延はありますが許容できる範囲内だと思います。

煩雑なアカウント管理で困っている担当者の方がもしこの記事を読んでいたら、東京リージョンに無いから諦める……ではなく、思い切ってバージニアに立てて使ってしまってはどうでしょうか。

そのうち東京に来たらリージョン移行すればいいのです!

Author image
About yuuki
ふじさんのほどとおく
expand_less