IAMユーザでクロスアカウントの設定

仕事でよくAWSアカウント管理に悩まれているかと思いますが、
今度、アカウント管理ですごく便利なクロスアカウント機能をご紹介したいと思います。

クロスアカウントって何?

まず、下記2パターンの要件を考えてみましょう。

  1. 権限分離のために、現在それぞれ開発アカウントと生産アカウントを持っています。新機能リリースまたはバグ調査などで一部開発者が生産環境のS3にアクセスする必要があります。
  2. 社内開発人員が激しく変動しております。AWSアカウントの作成、作成したアカウントに権限付与など結構工夫しています。

上記の2パターンは、クロスアカウントを利用することで簡単に解決できます。
今回は上記「1.」の解決方法を例としてご紹介します。

主な手順は以下の三つがあります。

  1. 生産アカウントで他アカウントからS3へアクセス可能のロールを作成します。

  2. 開発アカウントに上記「1.」で作成したロールへアクセス可能のポリシーを付与します。

  3. 開発アカウントからロールスイッチして生産アカウントのS3へアクセスします。

    *イメージは下記の通りです。

    cross account

アクセスロールを作成

生産アカウントで他アカウントからアクセス可能のスイッチロールを作成します。

switch_role

開発アカウントへのポリシー付与

開発アカウントにスイッチロールにアクセス可能のポリシーを付与します。

assume_policy

ロールスイッチ

開発アカウントからロールスイッチして生産アカウントのS3へアクセスします。

switch01

switch02

上記のようにスイッチロール情報を入力した後に、生産アカウトのS3情報が表示できます。

prods3

そして、権限のないEC2へアクセスしようとすると、エラーが発生します。

error

終わりに

上記でクロスアカウントを利用することで簡単にアカウント間で限られた権限を付与することができました。これでアカウント管理も楽になれます。
また、最初で言及したパターン2についても、クロスアカウントの設定で簡単にできます。方法はまず、権限管理アカウントで各権限ごとにロールを作成します。そして認証専用のアカウントを作成し、人が増やしたら、IAMユーザを作成し、相当な権限ロールのAssume権限を付与します。若し人が脱出したら、認証アカウントからIAMユーザを削除すれば完了です。どうですか、皆さん自分のアカウントで試しましょう。

Last modified: 2020-03-01