AWSマネジメントコンソールをSSO対応させる

このエントリは イノベーター・ジャパン Advent Calendar 2016 - Adventarの3日目の記事です。

こんにちは id:hacktk です。今回はAWSアカウント運用のお話をします。

複数のAWSアカウントを切り替えるつらみ

当社は現在AWSアカウントが30ほどあり、マネジメントコンソールを使う際に毎回ログインし直したりするため、とても面倒でした。それはもう。
で、とうとう昨日カッとなって作りました。
ソースはここです。 https://github.com/innovator-japan/aws-account-manager

どうやっているのか

カスタムフェデレーションブローカーを実装します。
本来はこのドキュメントで全て事足りるのですが、あいにくPHPの参考実装がなかったため、STSのAPIドキュメントなどを読みながら作りました。

ざっくり概要をまとめると以下2点になります。

  1. ログインしたいAWSアカウントごとに、必要な権限をもったIAMユーザーが必要
  2. 社内システムにAWSへのログインボタンを設置し、それが押されたらマネジメントコンソールにログインさせる

※ 1で作るIAMユーザーは、SSO対応させるユーザーに許可する最大権限を付与しておく
f:id:hacktk:20161202152610p:plain とりあえず最大で作っています

※ 2でログインしたときのユーザーは、1で作ったユーザー ではない。(社内システムのユーザーに、一時的な権限が付与されているだけ)
登録の手間が省けて嬉しい限りです。

実装はソースを見ていただくとして、ログインしている画面を貼りますね。

まず社内システムにログイン済みの状態です。 f:id:hacktk:20161202151736p:plain

このLoginボタンを押すと、そのAWSアカウントのマネジメントコンソールにログインします。 f:id:hacktk:20161202152036p:plain

これでだいぶ楽になりました。

やっていくこと

  • G Suiteアカウントでログインできるようにする(当社は全員持っています)
  • 1つのAWSアカウントに複数のcredentialを設定できるようにする
  • ログインだけではなく使用統計やbilling情報を一覧にできるようにしたい

やっつけで作ったので、業務で使うにはまだ早そうです。

AWS Organizationsへの期待

先日、AWS Organizationsのプレビュー開始が告知されましたが、こういったことが可能なのかまだよくわかりません。
このサービスで同じことができればとても嬉しいのですが・・・

さて明日は当社のWordPressお兄さんである@gorou_178です。
wp-cliネタのようなので、あまり使っていない私は正座して読もうと思います。

それでは。