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

概要

やりたいこと

Organizations 配下のアカウントに対して、セキュリティ監視用アカウントからスイッチロールしたい。

スイッチロール

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

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

IAM ユーザーとしてサインインしているときにのみ、ロールを切り替えることができる。

CloudFormation

アカウントスイッチ用の Role

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

read 権限のみで、Principal にセキュリティ監視アカウントのユーザを指定。

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

StackSet 作成。

aws --profile organizations-test-lac cloudformation create-stack-set \
--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

IAM Role なのでリージョンは一つのみを指定。

aws --profile organizations-test-lac cloudformation create-stack-instances \
--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のスイッチロールを理解したい