AWSでのクロスアカウントアクセス

2020年7月29日

AWS先生は「検証環境と本番環境はアカウントを分けろ」と言う

お陰様でAWSを扱うお仕事が増えてきまして、使うアカウントが天文学的数字まで膨れ上がってきました。
今までFirefoxやChrome、Canariaなどなど、ブラウザごとにログイン情報を分けていましたが
いい加減アカウントの切り分けが面倒になってきました & ブラウザの種類が足りない(当たり前)

今どきのエンジニアとして流石にスマートじゃなさすぎるので、クロスアカウントアクセスを試してみることに。
ただ調べみると、意外と古い記事ばっかりで今とビミョーに違ったので最新情報を乗っけておきます。
皆さんの快適なAWSコンソールライフの一端を担えればと思っております。

やってみるとむっちゃ簡単で、むっちゃ便利なんで本当におすすめ!!

事前準備

以下のものが必要です。

  • 常にログインしておきたいアカウント
    • 以下、メインアカウントと呼称する
    • IAMにアクセスできる権限
  • メインアカウントに統合したいアカウント
    • 以下サブアカウントと呼称する
    • IAMにアクセスできる権限

※双方ともIAMユーザーである必要があり、 rootユーザはNGです!

作業の流れ

  1. サブアカウントで、メインアカウントからのアクセスを許可する
  2. メインアカウントで、サブアカウントへのアクセスを行う
  3. So Happy!

いざ実践

サブアカウントでのやること

1.「IAM > ロール > ロールの作成」から別のAWSアカウントを選ぶ

ロールの作成

2.アカウントIDにメインアカウントのアカウントIDを入れる

  • ログインするときに使う12桁の数字のアレ
  • オプションはお好みで
    • 基本的にはなくても行けます
アカウントIDの入力

3.メインアカウントでやりたいことに合わせて権限を与える

  • 全ての権限が必要なら、画像のように「AdministratorAccess」にチェック
権限の付与

4.タグや名前はお好みでつける

  • No Tag No Instance(AWSの格言)
  • 何が何かわからなくならないようにタグ付はしっかりしよう

5.完了

  • 赤枠の値はメモっておこう
  • 後で使います
ARNの記録

メインアカウントでやること

  • 「IAM > ポリシー > ポリシーの作成」からjsonで下記の内容のポリシーを作成
{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "さっきのメモった値の上の枠(ロールARN)の中身"
    }
}
  • さっき作ったポリシーを自分にアタッチ
  • さっき控えた下の赤枠のURLにアクセス!
  • 表示名だけをお好みでチェンジ
ロールの切り替え

完成

スクリーンショット 2019-11-06 16.22.21.png
ロールメニュー

設定が終われば、右上の自分のIAMユーザーのところからいつでもユーザーが切り替えられる様に!!
(今回は名前を伏せてますが、水色と黄色の四角いマークのところ)

ただ、残念仕様も一点あって、この設定ブラウザごとにしか記憶されないんですよね…
別のマシンやブラウザからアクセスしたいときはメインアカウントでやる部分からやればOKです。

では良きAWSライフを!