BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS】番外編:クロスアカウントアクセスを実践してみる

はじめに


こんにちは!

BFT名古屋支店・新卒のげんぬです。

AWSに触れてから早くも1カ月が経とうとしています。そろそろAWSにも慣れてきたかな?と思いつつも、日々Jsonに苦しめられています。

前回、前々回からIAMに関して着実に理解を深めていっている中で、今回はクロスアカウントアクセスを実践してみたので、はてブロでアウトプットしていきたいと思います!

前回のスイッチロールと設定方法はほぼ同じですが、動作としてはクロスアカウントアクセスとなるため、スイッチロールの番外編として書かせて頂きます。

前回、前々回のブログへは以下のURLを参照ください。

【AWS】IAM について基本からまとめてみた - BFT名古屋 TECH BLOG

【AWS】スイッチロールを実践してみる - BFT名古屋 TECH BLOG

クロスアカウントアクセスとは


クロスアカウントアクセスとは2つ以上のアカウントをそれぞれの役割(例:ユーザ管理アカウント、開発アカウント、テスト環境用アカウント等)に分けて使う場合、一時的に別のアカウントにスイッチロールし、そのアカウント内のリソースにアクセスする権限を得ることができる仕組みのことです。

検証内容


概要

今回は2つのAWSアカウント(AWSアカウントAとAWSアカウントB)を作成し、以下のような内容で検証を行いました!

①アカウントAで検証用ロール(IAMポリシー:Amazon RDS Full Access 付与)の作成

②アカウントBでポリシーを作成し、クロスアカウントアクセスを実施するIAMユーザにアタッチ

③アカウントAで作成した検証用ロールにアカウントBで作成したIAMユーザでクロスアカウントアクセスし、動作確認

2つのAWSアカウントを用意し、クロスアカウントアクセスした後にRDSを作成できることを確認します。

事前準備

検証を行う前に以下のような準備を行いました。

  • AWSアカウントを2つ(AWSアカウントAとAWSアカウントB)を作成します。

 -AWSアカウントA(AWSアカウントIDxxxx-xxxx-xxxx)

 -AWSアカウントB(AWSアカウントIDyyyy-yyyy-yyyy)

  • アカウントAで検証用ロール作成のため、IAMユーザ(IAMポリシー: Administrator Access 付与)を作成します。

  • アカウントBでクロスアカウントアクセスを実施するIAMユーザ(権限無し)を作成します。 ※この時点では作成したIAMユーザに権限はありませんが、検証手順の中で(IAM ポリシー:STS Assume Role)を付与します。

アカウントAで検証用ロール(IAMポリシー:Amazon RDS Full Access 付与)の作成


初めに、検証用ロールを作成するため以下の手順を行います。

①マネジメントコンソールにIAMユーザ(IAMポリシー:Administrator Access 付与)でログインします。

②IAMのダッシュボードへ移動し、左ペインから[ロール]をクリックし、[ロールを作成]をクリックし、以下の値を入力します。

信頼されたエンティティの選択
  •  信頼されたエンティティタイプ:AWSアカウント
  •  AWSアカウント:AWSアカウントBのID:yyyy-yyyy-yyyyを入力
許可を選択
ロールの詳細
  •  ロール名:任意(今回はtest-rds-full-roleで作成)
  •  説明:任意(今回はtest-rds-full-roleで作成)
  •  タグ:キー、値ともに任意のものをつける

③最後に[ロールを作成]をクリックします。

④「ロールが作成されました」と表示され、任意の名前を付けたロールが作成されていることを確認します。

アカウントBでポリシーを作成し、クロスアカウントアクセスを実施するIAMユーザにアタッチ


続いて、クロスアカウントアクセスを実施するIAMユーザのポリシーを以下の手順で作成していきます。

①IAMダッシュボードの左ペインから[ポリシー]をクリックし、[ポリシーを作成]をクリックします。

②[Json]をクリックし、以下の内容を入力します。

※黒塗りの部分は検証用ロールを作成したアカウントのID(今回の場合はアカウントA)が入ります。

③任意のタグを追加します。

④ポリシーの確認で以下の内容を入力します。

ポリシーの確認
  • 名前:任意(今回はsts‐users-policy)
  • 説明:任意(今回はsts‐users-policy)

⑤最後に[ポリシーの作成]をクリックします。

⑥「ポリシーが作成されました」と表示され、任意の名前を付けたポリシーが作成されていることを確認します。

また、ポリシーをスイッチロールするユーザにアタッチします。

⑦IAMダッシュボードの左ペインから[ユーザ]をクリックし、スイッチロールするユーザをクリックします。

⑧[アクセス権限の追加]をクリックし、[既存のポリシーを直接アタッチ]をクリック、先ほど作成したポリシーを選択します。

⑨[アクセス権限の追加]をクリックします。

⑩「New feature to generate a policy based on CloudTrail events.」と表示され、「Permissions policies」の直接アタッチ済みの欄に先ほどアタッチしたポリシーが表示されていることを確認します。

アカウントAで作成した検証用ロールにアカウントBで作成したIAMユーザでクロスアカウントアクセスし、動作確認


①マネジメントコンソールにIAMユーザ(アカウントBで作成したクロスアカウントアクセスを実施するIAMユーザ)でログインします。

②画面の右斜め上にある[IAMユーザ名@yyyy-yyyy-yyyy]をクリックし、[ロールの切り替え]をクリックします。

③以下の値を入力し、[ロールの切り替え]をクリックします。

  • アカウント* [アカウントAのID :xxxx-xxxx-xxxx]
  • ロール* [test-rds-full-role]
  • 表示名* [test-rds-full-role]

④画面右斜め上で[IAMユーザ名@yyyy-yyyy-yyyy]と表示されていた箇所が「test-rds-full-role」になっていることを確認します。

Amazon RSDのダッシュボードに移動し、新規でデータベースを作成します。

※今回新規でRDSを作成できることを確認しているだけとなるため、RDSの作成手順は割愛しております。

⓺以下のメッセージが表示され、データベースを作成することができました。

まとめ


今回クロスアカウントアクセスを簡単にご紹介しました!

クロスアカウントアクセスを使えば、権限の管理をより安全かつ簡単におこなうことができますね!