🐕🦺
[AWS]同一アカウント内でスイッチロールする
概要
- 同一アカウント内のスイッチロールについて
- 管理アカウントから個別アカウントにスイッチロールは対象外
- 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ロール
IAMポリシー
Discussion