🐕‍🦺

[AWS]同一アカウント内でスイッチロールする

2025/02/04に公開

概要

  • 同一アカウント内のスイッチロールについて
  • 管理アカウントから個別アカウントにスイッチロールは対象外
  • AWSアカウント戦略は対象外

IAMユーザー

AWSコンソールから操作してsandbox-userを作成する。

  • 「AWS マネジメントコンソールへのユーザーアクセスを提供する - オプション」にチェックを入れる

  • ポリシーやグループは設定なし

IAMロール

AWS 管理ポリシーを付与した読み取り専用ロールを作成する。

  • ReadOnlyAccess

信頼ポリシーは作成したユーザーでsts:AssumeRoleを許可するようにする。
この際IAMユーザーが無い場合はエラーとなるので注意。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::[AccountID]:user/sandbox-user"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
CloudFormationテンプレート
SandboxRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: sandbox-role
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              AWS:
                - !Sub arn:aws:iam::${AWS::AccountId}:user/sandbox-user
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/ReadOnlyAccess

IAMグループ

IAMユーザーを所属させるグループを作成する。
CloudFormationで作成している場合ユーザーがグループに所属していないため、AWSコンソールから所属させる。

CloudFormationテンプレート
SandboxGroup:
    Type: AWS::IAM::Group
    Properties:
      GroupName: sandbox-group
      Path: /

IAMポリシー

後述のIAMグループに追加するポリシーを作成する。
作成したロールへのsts:AssumeRole権限を付与する。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::[AccountID]:role/sandbox-role",
            "Effect": "Allow"
        }
    ]
}
CloudFormationテンプレート
SandboxPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      ManagedPolicyName: sandbox-policy
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Action: sts:AssumeRole
            Resource: !Sub arn:aws:iam::${AWS::AccountId}:role/sandbox-role
      Groups: 
        - !Ref SandboxGroup

スイッチロール

作成したユーザーでAWSコンソールにログインし、ロールの切り替えが可能か確認する。

参考

IAMロール

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html

https://dev.classmethod.jp/articles/how-to-trust-iam-users-that-can-switch-role/

IAMポリシー

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html

Discussion