AWSチュートリアル1回目。
Terraformの実行に必要な各種IAMリソースを作成していきます。
なぜスイッチロールするのか?
スイッチロールを利用することで、権限を持っていないユーザーに対して一時的に権限を付与させることができます。(Linuxの sudo su
コマンドに似ているイメージ)

今回は、特定のIAMグループに所属しているIAMユーザーだけがスイッチロールできるような仕組みを作成していきます。「IAMユーザーに直接権限付与すれば?」と思うかもしれませんが、以下のようなメリットを受けたいためスイッチロールする手段を選択しました。
- IAMユーザー毎に権限を管理しなくてよくなる。
- IAMユーザーには権限を付与しないため、認証情報が流出したときの被害を多少軽減できる。
- スイッチロールは実務でもよく使われるので、慣れておくとGood!
- Terraform実行するときに追加でスイッチロールするための設定が必要。(別記事で紹介)
上述を踏まえ、
- 最低限の権限を持ったIAMユーザーを用意。
- AWS構築用の権限を持ったIAMロールを作成。
- Terraformは、2で作成したIAMロールにスイッチして実行する
という環境を作っていきます。
それではやってみましょう!
IAMグループを作成する。
「study-infra-swith-terraform-role」というIAMグループを作成していきます。
1.「グループを作成」をクリックする。

2−1.グループ名を入力する。

ユーザーの追加は別途行う予定なので、ここではスキップ。
2−2.「グループを作成」をクリックする。

3.グループの作成が完了!

IAMグループにユーザーを追加する。
「study-infra-swith-terraform-role」グループにIAMユーザーを追加します。
1.「ユーザーを追加」をクリックする。

2.ユーザーを追加する。

複数のユーザーにチェックを入れるとまとめて追加することができます。
3.ユーザー追加が完了!

IAMロールを作成する。
スイッチ先のIAMロール「study-infra-terraform-role」を作成します。
1.「ロールを作成」をクリックする。

2.信頼ポリシーを作成する。

信頼ポリシーでは、「このIAMロールにスイッチできる対象を許可する」という設定を行います。
今回は、スイッチ先のAWSアカウントIDを「アカウントID」に入力してください。
ちなみに↑の手順で、以下の信頼ポリシーが作成されます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::93XXXXXXX6:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
プリンシパル(Principal)にAWSアカウントを指定したい場合は、"AWS": "arn:aws:iam::93XXXXXXX6:root"
と指定します。
3.AdministratorAccessポリシーを付与する。

各種リソースの構築を行うので「AdministratorAccess」を付与します。
4.「次のステップ:確認」をクリックする。

5.ロールを作成する。

6.ロールの作成が完了!

IAMグループにポリシーを追加する。
「study-infra-swith-terraform-role」グループが「study-infra-terraform-role」ロールにスイッチできるようにIAMポリシーを作成します。
1.グループに対してインラインポリシーを作成する。

2.ポリシーを入力する。

入力するポリシーは以下の通り。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::93XXXXXX6:role/study-infra-terraform-role"
]
}
]
}
arn:aws:iam::93XXXXXX6:role/study-infra-terraform-role
に対して sts:AssumeRole
を許可するポリシーになっています。
3.ポリシーを作成する。

4.ポリシーの付与が完了!

スイッチロールをしてみる。
それでは、作成した各種IAMリソースを使用してスイッチロールしてみましょう。
1.「ロールの切り替え」をクリックする。
WEBコンソールの右上にある、ユーザー名をクリックすると「ロールの切り替え」が表示されます。

2.スイッチ先の情報を入力する。

項目 | 説明 |
アカウント | スイッチ先のAWSアカウントID。 |
ロール | スイッチ先のIAMロール名。 |
表示名 | Web画面上に表示する名前なので適当でOK。今回はstduy-infra。 |
3.IAMロールへのスイッチが完了!

ユーザー名が2で設定したstudy-infraに変わっていることが分かると思います。
これで「AdministratorAccess」権限を持ったIAMロールにスイッチできているので、各種リソースの構築が可能になっています。
お疲れ様でした。
これにて本記事は終了です。
コメント