首页 > 解决方案 > AWS IAM - 只允许用户为服务创建角色

问题描述

我正在开发一个应用程序,我正在为一个问题而苦苦挣扎。我的应用程序有 Lambdas 和 DynamoDBs 服务,前者需要权限才能调用后者。Principal我用equals创建一个角色来解决这个问题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: ...

我试图达到这一点,因为用户可以创建一个具有管理员访问权限的角色并承担它。

另外,还有其他方法可以解决这个问题吗?

标签: amazon-web-servicesamazon-iam

解决方案


我没有找到解决我的问题的方法,解决方法是创建具有特定路径的服务角色(/custom-iam/service-role/例如),并允许开发人员仅传递具有此类路径的角色:

Effect: Allow
Action: iam:PassRole
Resource: 'arn:aws:iam::*:role/custom-iam/service-role/*'

推荐阅读