我正在研究一个应用程序,我正在为问题而苦苦挣扎。我的应用程序具有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: ...
我试图达到这一目标,因为用户可以使用Admin Access创建角色并假设。
另外,是否有另一种方法可以解决此问题?
我没有找到问题的解决方案,解决方案是用特定路径(例如/custom-iam/service-role/
)创建服务角色,并且允许开发人员仅使用此路径传递角色:
Effect: Allow
Action: iam:PassRole
Resource: 'arn:aws:iam::*:role/custom-iam/service-role/*'