ユニファ開発者ブログ

ユニファ株式会社プロダクトデベロップメント本部メンバーによるブログです。

AWS Organizations でアカウント管理してみる

インフラエンジニアのすずきです。2回目!

先日弊社社長がシリコンバレーにいき”Startup World Cup 2017”に参加し戦ってまいりました。 そして見事優勝することができました。 応援してくださった皆様ありがとうございました!!

その様子を記事にて

スタートアップの“W杯”で日本代表のユニファが優勝--世界16地域が参加 - CNET Japan

新たな投資を受けたことで、さらなる事業拡大を図っていきたいところです。

その流れでと言うか、事業拡大というか新しいサービスを作る際に、 AWSを利用されてる方はサービスごとにアカウントを分けたりされるのではないかな?と思います。 でもアカウント発行ってなかなか面倒で、

  • 会社の情報入力したり
  • クレジットカードの情報を入力してもらうために会計責任の方にお願いしたり
  • クレジットカード情報入力したのに一括請求の設定の為に親アカウントに連携したり
  • etc…

手間がかかりますよね、完璧に覚えてる情報でもないですし…

そんななか2017年2月27日AWS Organizations が一般公開されました これで一括請求アカウントから、子アカウントを作成することができるようになるようです。

そしてちょうど良いタイミングで、新規アカウント発行する需要があったので、新規アカウント作成のついでにAWS Organizationsも設定してみました。 設定じゃなくてアカウント作るところだけ見たい方は、先頭を少し読んでから最後の方に飛んでもらったら良いかなと思います。

AWS Organizations の設定

子アカウントをコンソールで作れるAWS Organizationsですが、 すべての機能を有効にするとSCP(Service Control Policies)を利用できます。
SCPを利用することで、子アカウントで利用できるサービスの制限などできるようになるようです。

すべての機能を有効にするには子アカウントそれぞれで承認をする必要があります。
100件とか子アカウントある人ってクソ大変そうですね…特に調べてはないのですがコマンドラインでできたりするんでしょうか?

その為これから各アカウントのRootアカウントにログインして設定していきます。 試してないのですが、権限が与えられたIAMユーザならそれでも可能だったりするのかな?

最初に子アカウントに承認のリクエストを投げる

  • 親アカウントのrootアカウントでログイン
  • AWS コンソールの右上のメニューから「自分の組織」を選択 f:id:mominosin:20170331165514p:plain

  • AWS Organizationsの画面に切り替わるので、その後右上の方の「Settings」をクリック

    • 「Settings」画面で下の方にスクロールすると「Begin process to enable all features」あるのでクリック f:id:mominosin:20170331193519p:plain 子アカウントにAWS Organizationsのすべての機能が使えるようにするので承認してねってリクエストをなげるよって事です。
  • もう一度「Begin process to enable all features」が出て来るのでクリック
    ちなみに、一括請求のみに戻れなくなりますよーって言ってきてます。 f:id:mominosin:20170331171119p:plain

そうすると既に紐付いていた子アカウントにリクエストが送られます。 この段階だとまだ承認されていないのでポリシーの変更とかできません、全ての子アカウントで承認すると変更できるようになります。

リクエストの完了状況確認

引続き親アカウントでの作業ですが、先程の続きで「Begin process to enable all features」を押した後画面下に「View all feature request approval status」が表示されるのでクリックします。 f:id:mominosin:20170331171830p:plain

クリックすると承認状況が確認できます。 どこまで承認したかわからない場合はここへ確認しに来ましょう。 f:id:mominosin:20170331172652p:plain ✅ がついてるものは既に承認が終わっているアカウントになります、また上部の赤いラベルで後何件残ってるかとかも見れます。

子アカウントでの承認

  • 子アカウントのrootアカウントでログイン
  • 親アカウントのときと同様にコンソールの右上から「自分の組織」をクリック f:id:mominosin:20170331165514p:plain
  • 「Accept」をクリックして承認 f:id:mominosin:20170331174315p:plain 仮にもう関連付けなくていいやってアカウントなら「Leave Organization」して抜ければよいかと思います。

全ての子アカウントで承認完了したら

リクエストの完了状況確認と同様「View all feature request approval status」を確認します。

  • 親アカウントで「View all feature request approval status」を開く f:id:mominosin:20170331175227p:plain 全て✅ がついて上のラベルが緑になったかと思います。(子アカウントがない場合は最初からコレなんですけれど…)
    まだ緑になっていないようでしたら承認されてないアカウント「Remove」するか承認してきてください。

  • 「Finalize process to enable all features」をクリック
    これでAWS Organizationsのすべての機能が使えるようになりました。

SCPの有効化

  • 親アカウントにログインし「AWS Organizations」の画面に移動
  • 「Organize accounts」を選択し「root」グループの詳細を表示 f:id:mominosin:20170331185155p:plain
  • 右のリストの中ほどに「Service control policies are not enabled. Enable」とあるので 「Enable」をクリックして有効化
  • 適当なグループやアカウントみると権限所属するグループ含めて権限が確認できる f:id:mominosin:20170331190054p:plain この例では「root」の下の「monitoring」の下の「unifa-monitoring」アカウントの権限が右下に出てるのが確認できるかと思います。
    ここではデフォルトの「FullAWSAccess」のままです。

アカウントの発行

では長々と書きましたが本題のアカウント作成にうつります。これは超簡単です。

  • 親アカウントにログイン
  • 「Add accounts」をクリック f:id:mominosin:20170331191143p:plain
  • 「Creates accounts」をクリックし必要情報を入力し「Creates」をクリック f:id:mominosin:20170331191150p:plain これでアカウントの作成は完了です。

最後に

今回AWS Organizationの設定をして、アカウントの作成まで行いました。 S3しか触らなくて良いアカウントを用意したいのであれば、 S3onlyなんてOUを作り、そこにS3の権限だけ付与されたポリシーを設定してします。
あとは作成したアカウントを割り当ててやればS3だけしか使えないアカウントの完成です。

また、作成したアカウントのパスワードがわからなかったので「パスワードをお忘れですか?」で設定して利用し始めました。 f:id:mominosin:20170331191805p:plain

別段この方法で困りはしないのですが、 正しい利用方法が分かる方居たら教えていただけたらなと思います。