Jav*_*Jav 4 amazon-web-services aws-cloudformation amazon-iam
使用 AWS,我正在构建一个定义以下内容的云形成堆栈:
MyPolicy允许使用这些资源的策略(为简单起见,未在下面转录)MyRole提交给该策略的角色堆栈将由管理员创建;一旦创建,目标是允许(从堆栈外)一些用户假设MyRole以使用多个资源。
我的问题:应该如何定义角色才能由用户承担(特定用户将被允许来自堆栈外)?
在AWS帮助页面,他们给的例子在那里"Service": [ "ec2.amazonaws.com" ],这意味着一个 ec2实例被允许承担该角色......但我不明白它是如何转化为用户,并给出关于该方案中没有例子。
以下是我使用JSON格式的堆栈定义:
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Resources" : {
"MyRole" : {
"Type": "AWS::IAM::Role",
"RoleName": "MyRole",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": [ "??" ] },
"Action": [ "sts:AssumeRole" ]
}
]
},
"ManagedPolicyArns": [ { "Fn::GetAtt" : [ "MyPolicy", "Arn" ] } ],
}
}
}
Run Code Online (Sandbox Code Playgroud)
Lau*_*ard 10
好问题!只需使用您的根用户 ARN 作为主体。这将允许您控制哪些用户可以使用 IAM 代入角色。这是一个示例(在 YAML 中为我自己的理智):
AdministratorRole:
Type: AWS::IAM::Role
Properties:
RoleName: administrator
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
AWS: !Sub arn:aws:iam::${AWS::AccountId}:root
Action: sts:AssumeRole
Condition:
Bool:
aws:MultiFactorAuthPresent: 'true'
Path: "/"
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AdministratorAccess
AssumeAdministratorRolePolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
ManagedPolicyName: "AssumeRolePolicy-Administrator"
Description: "Assume the administrative role"
PolicyDocument:
Version: "2012-10-17"
Statement:
- Sid: "AssumeAdministratorRolePolicy"
Effect: "Allow"
Action:
- "sts:AssumeRole"
Resource: !GetAtt AdministratorRole.Arn
AssumeAdministratorRoleGroup:
Type: AWS::IAM::Group
Properties:
GroupName: "AssumeRoleGroup-Administrator"
ManagedPolicyArns:
- !Ref AssumeAdministratorRolePolicy
Run Code Online (Sandbox Code Playgroud)
唯一剩下的就是将用户添加到AssumeRoleGroup-Administrator组。
奖励:我添加了一个条件,仅允许使用 MFA 登录的用户承担该角色。
此外,只需将您${AWS::AccountId}的帐户 ID换成您拥有的另一个帐户 ID,您就可以轻松地跨帐户承担角色。
| 归档时间: |
|
| 查看次数: |
2594 次 |
| 最近记录: |