from 30

30歳からwebエンジニアになったけど、思ったよりも苦しいので、その苦闘の記録をば

複数アカウントの管理を簡略化するためAWS SSOを使用する

1. 最初に

個人の学習目的のためにWebアプリケーションを作成することを決意した。 せっかくなのでマルチアカウントでの運用を試してみたいと思う。

目指すのは以下のかたちです。

  • 黒い四角形はアカウント名
  • 緑色の枠はOU

f:id:kohski:20210206230902p:plain

  • Adminアカウント
    • Organizations, SSOを設置して請求やトップレベルでの権限管理
    • もし運用が本格的に必要なら、Configの集中バケットを設置したりセキュリティ関連でも使用したい
  • Manageアカウント
    • 主にリポジトリとパイプラインを設置する
    • ここのリポジトリ * ブランチ名で各ステージへデプロイするように設定したい
  • Appsアカウント
    • ひとまずはDevとProdでランドスケープを分けたい
    • ステージングは追々作るようなら作る

マルチアカウント戦略を進めることになるが、アカウント切り替えの度にログインしていたのでは 大変煩雑なのでシングルサインオンを実践したいと思う。

実務ではOneLoginを使用しているが、

  • 今回はAWSアカウントの切り替えが手軽にできればよい(他アプリ等は不要)
  • 個人開発なのでADとかない(SSOは最近ユーザープールを内部でもてるようになった) と言う点からAWS SSOを採用することにする。

以下は具体的な手順。 開発の初期段階でこだわりすぎると大変なのでマネジメントコンソールでぽちぽち作成した。

2. Organizationsにアカウントを登録する

(1) まずはアカウントの作成

まずはOrganizationのルートになるアカウントを作成します。

AWS アカウント作成の流れ | AWS

などをご覧になられれば良いかと。

(2) アカウントの招待と承諾

続いてOrganizationsのメニューへアクセス

「アカウント」タブの「アカウントの追加」を押下して、 アカウントの作成または招待をします。

f:id:kohski:20210206232118p:plain

招待を受けた場合は、ルートユーザーのメールアドレスあてにメールが届くので、 そちらを確認してアクセプトします。

(3) 組織単位の作成と関連付け

つづいて「アカウントの整理」タブへ移動します。

「+新規組織単位」を押下し組織を作成します。

組織に未練系のアカウントは下部に表示されるので、作成済みの組織単位へひもづけます。

この時、ルートのアカウント自体にもゆくゆくSCP等で制限を加えたくなる自体を想定して、 ルートアカウントについてもRootにおくのではなく一段下げた組織に配置しました。

f:id:kohski:20210206232354p:plain

3. Single Sign Onのセットアップ

つづいて、Single Sign Onへアクセスします。

(1) ユーザーの作成

各アカウントへログインする際のユーザーを作成します。

f:id:kohski:20210206232753p:plain

(2) 権限セットの作成

また、(1) のユーザーにひもづけるアクセス権限セットを作成します。

細かく指定したい場合は、既に作成済みのIAMロールのARNをセットすることも可能ですが、

今回私は職能別の既存の権限セットを使用しました。

f:id:kohski:20210206232805p:plain

(3) アカウントにユーザーと権限を設定

(1), (2)で作成したユーザーと権限セットをアカウントにひもづけます。

こちらに表示されるアカウントはOrganizationsで招待済みのアカウントです。

f:id:kohski:20210206233111p:plain

4. 接続確認

設定画面からユーザーポータルのURLを確認

一度だけなら変更も可能

f:id:kohski:20210206233610p:plain

  1. (1) ユーザー作成の際に指定したIDとパスワードでログインすると 以下のようにSSOを設定したアカウントが表示される。

f:id:kohski:20210206233620p:plain

これでマネジメントコンソールへのアクセスが簡単にできるようになりました。

なお、それでもアカウントを切り替える度にマネジメントコンソールの画面がリロードされてしまうので

それが煩わしい場合は、こちらの記事を参考にして、Chromeのユーザー変更で対応できます。

マルチアカウントでのマネコン・CLIアクセスができるようになったので、これから Pipelineを構築していこうと思います。