LoginSignup
7
6

More than 1 year has passed since last update.

AWS Organizationを使った環境別アカウントの作成とスイッチロールの導入

Posted at

AWS Organizationを使ったアカウントの整備とスイッチロールの導入

したいこと

  • 一つのAWSアカウントに本番環境や検証環境のサービスを同居させたくない
    • 本番環境、ステージング環境、検証環境等を完全に分離させたい
  • 検証環境は開発エンジニアがEC2等インスタンスを作成、削除を許容したいが本番環境はインフラエンジニアだけ許可などの制御がしたい
  • 環境ごとにIAM発行する手間をなくしたい
    • スイッチロールを使用しIAM1つだけで済むようにしたい

AWS Organizationを使い環境ごとのグループ・アカウントを作成

  • グループ・アカウントを環境ごとに作成
    • それぞれのアカウントは独立するので検証アカウント内は本番アカウント内のサービスは表示されないので間違ったサーバー変更は起き得ない

アカウントイメージ

アカウント 内容
支払いアカウント 頂点に存在、本番、開発、検証の費用をまとめて払う為だけのアカウント
本番アカウント 本番環境動作アカウント、インフラエンジニアだけ
ステージングアカウント ステージング環境動作アカウント、インフラエンジニアだけ
検証アカウント 検証環境動作アカウント、開発エンジニア、インフラエンジニア両方

スクリーンショット

screencapture-console-aws-amazon-organizations-v2-home-accounts-2021-05-15-23_29_24.png

アカウントを細分化できました
※ メアドだけ黒塗り

スイッチロール準備

今回は検証アカウント(toyscreation-sandbox)にEC2参照ロールを作成し
ログインアカウントで作成したIAMがスイッチロールでEC2参照ロールを使う

検証環境のロール作成

検証アカウント(toyscreation-sandbox)にログインしロール作成

  1. 別のAWSアカウント
  2. アカウントIDはログインアカウントを選択
  3. オプションは選択に応じて

スクリーンショット 2021-05-16 0.35.25.png

権限ポリシーはサンプルとしてEC2のみ

スクリーンショット 2021-05-16 0.37.43.png

タグ追加は今回はスキップ
ロールの作成、ロール名、ロール説明を入力

スクリーンショット 2021-05-16 0.40.18.png

ログインアカウントのスイッチロール操作

IAMポリシー作成

ロール切替のポリシーが sts:AssumeRole になるのでポリシーを追加してユーザーに付与が必要

  1. "TargetAccountID" にはスイッチ先のアカウントIDを入力
  2. "TargetAccountRoleName" はスイッチ先のロールとして作成したロール名を指定
{
    "Version": "2012-10-17",
    "Statement": 
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::<TargetAccountId>:role/<TargetAccountRoleName>"
        }
    ]
}

スクリーンショット 2021-05-16 2.25.08.png

タグの追加はスキップ
ポリシーの確認、名前、説明を入力
screencapture-console-aws-amazon-iam-home-2021-05-16-01_09_25.png

IAMユーザー追加

rootユーザーはスイッチロールの利用は出来ないのでIAMでユーザーを追加
上記で作成したポリシーをIAMユーザに付与

スクリーンショット 2021-05-16 1.36.22.png

スイッチロール設定

対象IAMでログイン
アカウントメニューにロールの切り替えが表示

スクリーンショット 2021-05-16 1.42.13.png

screencapture-signin-aws-amazon-switchrole-2021-05-16-01_25_19.png

各項目を入力
1. アカウント:スイッチ先のアカウントIDを指定
2. ロール:スイッチ先のロール名を指定
3. 表示名:表示名を任意の文字列で指定

screencapture-signin-aws-amazon-switchrole-2021-05-16-02_31_06.png

切り替え後ユーザーメニューに対象ロールが表示
スクリーンショット 2021-05-16 2.33.49.png

確認

EC2の表示は許可されているが、それ以外は許可されていない(スクショはS3)

スクリーンショット 2021-05-16 2.36.31.png

スクリーンショット 2021-05-16 2.36.13.png

まとめ

  1. 本番環境、ステージング環境、検証環境等を完全に分離させた
    1. アカウント別に環境を完全に分離出来た(ただし支払いは一本化)
    2. 各環境で必要なAWSサービスが動いているかわかりやすくなった
  2. スイッチロールを使い環境の切り替えが楽になった
    1. エンジニア別 x 環境別に権限をスイッチロールで切り替えれるようになった

いいね!と思ったら LGTM お願いします :clap::clap::clap:

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6