我正在开发一个应用程序,并且正在为一个问题而苦苦挣扎。我的应用程序具有Lambdas和DynamoDBs服务,其中前者需要权限才能调用后者。我解决了创建Principal
等于Service: lambda.amazonaws.com
的角色的问题。
我也希望授予其他开发人员创建角色的权限,但是我找到了一种方法,允许开发人员仅创建主体是服务或联合身份的角色,并拒绝创建角色(如果是用户或帐户)。
例如,将允许该角色:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Federated: cognito-identity.amazonaws.com
Action:
- sts:AssumeRoleWithWebIdentity
Path: ...
Policies: ...
这是不允许的:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action: sts:AssumeRole
Principal:
AWS: arn:aws:iam::<accountid>:user/<username>
Path: ...
Policies: ...
我正在尝试达到此目的,因为用户可以创建具有管理员访问权限的角色并承担该角色。
还有,还有另一种方法可以解决此问题?
答案 0 :(得分:0)
我没有找到解决问题的方法,一种解决方法是使用特定路径(例如,/custom-iam/service-role/
)创建服务角色,并允许开发人员仅通过该路径传递角色:
Effect: Allow
Action: iam:PassRole
Resource: 'arn:aws:iam::*:role/custom-iam/service-role/*'