Cfnを使ってスイッチロール構成を作成する!【AWS】

WSマルチアカウント運用に欠かせない「スイッチロール(スイッチアカウント)構成」を、CloudFormation(Cfn)を使って自動化する手順を紹介します。
スイッチロールとは?
→ 管理アカウント(AWS1)から別アカウント(AWS4)へIAMロールを切り替えて操作できる仕組みです。
→ マルチアカウント環境で一括管理・セキュリティ強化に便利です。
記事の目次
構成概要
- AWS1(スイッチ元):普段操作するアカウント(例:管理アカウント)
- AWS4(スイッチ先):実際に操作を行いたいアカウント(例:検証環境、請求用など)
AWS4にスイッチ用のロールを作成し、AWS1のIAMユーザーがそのロールにスイッチできるように設定します。

ステップ1:スイッチ先(AWS4)にIAMロールを作成(Cfnで)

1. CloudFormationテンプレート作成
switch-role-no-MFA.yml という名前で以下の内容を保存します。
※ の部分はAWS1のアカウントIDに置き換えてください。
AWSTemplateFormatVersion: '2010-09-09'
Description: IAM Role with AdministratorAccess for cross-account switching
Resources:
AdminRole:
Type: AWS::IAM::Role
Properties:
RoleName: switch-no-MFA-rle
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
AWS: arn:aws:iam::<your_AWS1_account>:root
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AdministratorAccess
Outputs:
RoleArn:
Description: ARN of the created IAM Role
Value: !GetAtt AdminRole.Arn
2. CloudFormationからロールをデプロイ
AWSマネジメントコンソールにログインし、Cfnダッシュボードに移動
スタックの作成>新しいリソースを使用(標準) をクリック

スタックの作成 より下記のようにテンプレートファイルのアップロードで既存の先ほど保存したCfnをアップロードし「次へ」をクリック

スタック名は一意であれば大丈夫です。今回はswitch1とします。

値はすべてデフォルトのままでOKですが、今回は失敗したらリソースはすべて削除するようにしています。
「AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。」にチェックを入れ「次へ」を選択

次の画面の「確認して作成」で必要であればタグを入力してください。
必要なければすべてデフォルトのまま「送信」をクリック

CREATE_COMPLETEと表示されるまで待機します。

3. 作成されたIAMロールのARNをコピー
IAMダッシュボードのロールから作成されていることを確認しswitch-no-MFA-rleをクリック

作成したIAMロールのARNをコピー
arn:aws:iam::AWS_account_ID:role/switch-no-MFA-rle

ステップ2:スイッチ元(AWS1)にポリシー作成

次にスイッチ元アカウントでポリシーの付与を行います
AWS1のマネコンにログインしIAMのダッシュボードに移動
左側メニューのポリシーを選択し「ポリシーの作成」をクリック

ポリシーエディタでJSONを選択し下記の内容で貼り付けます。
にはさきほどコピーしたswitch-no-MFA-rleのARNを貼り付け「次へ」をクリック
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "<YOUR_ARN>"
}
]
}

名前は任意で入力し「ポリシーの作成」をクリック

ステップ3:IAMユーザーにポリシーをアタッチ

次に作成したポリシーをユーザーなりグループなりにアタッチします
今回はswitchを行いたいIAMユーザーに直接ポリシーをアタッチします。
IAMダッシュボードへ移動し、左側メニューのユーザーを選択
今回のスイッチを行いたいユーザー名のリンクをクリック

許可を追加 をクリック

「ポリシーを直接アタッチする」よりswitch-AWS2-polにチェックを入れ「次へ」をクリック

確認で問題なければ「許可を追加」をクリック

「1 個のポリシーが追加されました」と表示されればOKです。

ステップ4:実際にロールをスイッチしてみる
先ほどアタッチしたユーザーでスイッチしてみます。
先ほど作成したユーザーでログインし右上のアカウントをクリック>ロールの切り替えを選択します。

ロールの切り替え画面でスイッチ先のアカウントIDとIAMロール名:switch-no-MFA-rleを入力し「ロールの切り替え」をクリック

無事ログインできました!

お疲れ様でした!これで CloudFormation を使ったスイッチロールの構成が完了です。手動でポチポチ作るよりも再利用しやすく、複数環境への展開にも便利です
- タグ:
- IAM