クロスアカウントアクセスを体験するための、以下のチュートリアルをやってみました。
こうしたユーザー管理や権限管理系のシナリオは「管理者とユーザーの1人二役」とか、今回のようなフェデレーション系では「あっちの管理者とこっちの管理者とこっちのユーザーの1人三役」などになります。個人的には、途中で誰の役でどこの設定をしているのかわからなくなりやすく苦手です。そこで各ステップの図にして確認しながら進めてみたので、ここに残しておきたいと思います。
チュートリアルの前提条件
「チュートリアルの前提条件」に示されているチュートリアルの初期状態は、下図のような状態です。
例えば、次のようなシチュエーションだと思われます。
-
Development
AWSアカウント(開発環境)で、開発者グループとテスターグループでアプリケーションを開発してきた。 -
Production
AWSアカウント(本番環境)にアプリケーションを置くため、開発者グループに属するユーザーだけ、アカウントを越えてProduction
AWSアカウン
トのS3バケットProductionApp
にアクセスさせたい。
Step1:ロールの作成
「Step1:ロールの作成」は次のように説明されています。
まず、AWS マネジメントコンソール を使用して Production アカウント (ID 番号 999999999999) と Development アカウント (ID 番号 111111111111) との間の信頼を確立します。続いて、UpdateApp という IAM ロールを作成します。ロールの作成時に、Development アカウントを信頼されたエンティティとして定義し、信頼されたユーザーに productionapp バケットを更新する許可を与えるアクセス許可ポリシーを特定します。
下図のような状態にします。
実際に行うのは、以下の内容になります。
-
Production
AWSアカウントで、S3へのアクセスを許可するポリシーを作成する。 -
Production
AWSアカウントで、Development
AWSアカウントと信頼関係を結び、上のポリシーを適用したロールを作成する。
ステップ 2 - ロールへのアクセスを許可する
「ステップ 2 - ロールへのアクセスを許可する]」は次のように説明されています。
チュートリアルのこのステップでは、IAM グループポリシーを変更して、テスターが UpdateApp ロールへのアクセスを拒否されるようにします。このシナリオではテスターに PowerUser アクセス許可があるため、ロールの使用を明示的に拒否する必要があります。
下図のような状態にします。
実際に行うのは、以下の内容になります。
-
Development
AWSアカウントで、開発者グループにロールの切替えを許可するインラインポリシーを作成する。 -
Development
AWSアカウントで、テスターグループにロールの切替えを禁止するインラインポリシーを作成する。
ステップ 3 - ロールを切り換えてアクセスをテストする
「ステップ 3 - ロールを切り換えてアクセスをテストする」は次のように説明されています。
最後に、開発者として、UpdateApp ロールを使用して Production アカウントの productionapp バケットを更新します。AWS コンソール、AWS CLI、API を使用してロールにアクセスする方法について説明します。
下図のような状態にします。
実際に行うのは、以下の内容になります。
-
Development
AWSアカウントに開発者グループのユーザーでログインする。 - 「ロールの切替え」で
Production
AWSアカウントのUpdateApp
ロールに切り替える。 - S3バケットにアクセスできることを確認する。
以降のステップ
以降は、以下のような内容になっています。
- ロールの切り替え (AWS CLI)
- AssumeRole (AWS API) の使用
特に設定等はなく、操作方法の説明です。これで、このチュートリアルは終わりになります。