AWS セキュリティ監視用アカウントからスイッチロールする設定を Organizations CloudFormation StackSets で設定

2021年4月29日

概要

やりたいこと

AWS マネジメントアカウント(旧名組織マスターアカウント)配下のアカウントに対して、特定のメンバーアカウント(セキュリティ監視用)からスイッチロールしたい。

Organizations 経由の CloudFormation StackSets (サービスマネージド型)を利用し、各メンバーアカウントへスイッチロール用の Stack を作成する。

サービスマネージド型 CloudFormation

AWS Organizations の CloudFormation StackSets をサービスマネージド型 CloudFormationと呼ぶ。
対象は組織配下のメンバーアカウントとなる。

スイッチロール

アクセスしたい AWS アカウントに専用の IAM Role を作成しておけば、アクセス元 AWS アカウントからその Role の権限でアクセスできる機能。アクセス先に IAM User を作らずにすむ。

スイッチ後は、元のユーザーアクセス権限が一時的に無効になり、そのロールに割り当てられたアクセス権限が代わりに付与される。

CloudFormation

スイッチロール用の IAM Role

Read 権限用の IAM Role を作成する。
Principal にアクセス元 AWS アカウントの IAM User の Arn を指定する。

vi switch_role.yaml
AWSTemplateFormatVersion: 2010-09-09
Description: Enable AWS Config

Resources:
  SecurityRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: !Sub security-role
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              AWS:
                - arn:aws:iam::111111111111:user/runble1
            Action:
              - sts:AssumeRole
      Path: /
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/ReadOnlyAccess

サービスマネージド型 CloudFormation

Organizations 配下の全アカウントに対して、CloudFormation StackSets からデプロイする。

StackSet 作成。

aws cloudformation create-stack-set \
--profile organizations-test-lac \
--stack-set-name switch-role-organizations \
--template-body file://switch_role.yaml \
--permission-model SERVICE_MANAGED \
--auto-deployment Enabled=true,RetainStacksOnAccountRemoval=true
--capabilities CAPABILITY_NAMED_IAM

Stack Instance を作成。IAM Role はグローバルリソースなため東京リージョンのみを指定。

aws cloudformation create-stack-instances \
--profile organizations-test-lac \
--stack-set-name switch-role-organizations \
--deployment-targets OrganizationalUnitIds="ou-xxxx-xxxxxxxx" \
--regions '["ap-northeast-1"]' \
--operation-preferences FailureToleranceCount=0,MaxConcurrentCount=1

コンソールからロールの切り替え

セキュリティ監視アカウントのコンソールにログインし、上タブより「スイッチロール」を選択。

ロールの切り替え先アカウント ID とロール名を選択。

以下のようにスイッチロールができれば OK。

参考

IAMのスイッチロールを理解したい