1つのAWSアカウントで複数のAWS環境の操作を行う

やりたいこと

複数のAWS環境にあるリソースへアクセスする際、いちいちログアウトログインするのが面倒なため、以下のような環境を作りたいと思います。

・1つのアカウントにログインしたあとにロールを切り替えることで、接続するリソースを変更する。

・ロールの切り替えをできるのは、会社(or自宅)などを想定して、IPによる制限をかける。

・ロールがない場合にはそのアカウントのリソース操作もできない状態にする。

図解すると以下の様になります。

作成手順

ほぼ今までの記事の流用になりますが。

環境Aの構築は以下記事を参考にすれば作れます。

【AWS】IAM ユーザーに IP 制限

上記記事通りに進め、AWSマネジメントコンソールへの許可はチェックを入れておきます。

これで、以下画像の状態は作れました。

次に環境Bにログインして、ロール「TEST_ROLE_B」を作ります。

同じくロールの作成より。

どのみちIP制限を入れるためあとで変更しますが、ひとまず環境Aを信頼した、Administrator権限を持ったロールを作成します。

ロールがリクエストできるユーザーを固定、またIPの制限を入れていきます。

信頼関係の編集をクリックします。

入力画面になりますので、以下のように入力。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::XXXXXXXXXXXXX:user/USER_NAME"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "xxx.xxx.xxx.xxx/32"
        }
      }
    }
  ]
}

許可するユーザー(環境Aのもの)と、リクエストを許可したいIPを入力して下さい。

これで、環境Bの準備はできました。が、Aのユーザーには、ロールを切り替える権限が無いので、Aのユーザー権限も変更してあげましょう。ロールのARNが必要になるため、コピーしておきます。

一旦ログアウトして環境Aにてログイン。IAMユーザーの変更画面を出します。

上の記事通り作っていた場合には、一つだけ固定のロールの切り替えだけ許可していたかと思いますので、こちらで2つ目を追加。

これでロールの切り替えができるようになったので、変更してみます。

ロールの変更は、下記記事にてわかりやすく書いています。

【AWS】IAM ユーザーでログイン後、ロールを切り替える

切り替えると、環境Aのアカウントで環境Bのアカウントが見ることができます。

まとめ

いろいろな都合上、アカウントを複数もつことがあるかと思いますが、その都度アカウントが切り替えるのは面倒なときがあります。

そのときには、ロールを用いてこのようにアカウントを跨いで操作を可能にできます。

しかし、1つのアカウントでアクセスするため、IP制限や認証はより強固なものにしておく必要があります。

また、違う環境で操作してしまったーなどのようなことがおこらないように、環境によってはこのようなことをせず隔離しておいたほうが良い場合もあります。

複数の環境にアクセスできるアカウントを作る場合にはしっかりとセキュリティを意識した上で、考えてから作りましょう。