2

我使用 root 帐户创建了多个服务角色和 CF 堆栈,我将创建一个 IAM 用户,我不想列出所有这些角色和 CF 堆栈。我只想展示一些特定的角色和 CF Stacks。你能告诉我我该怎么做吗?如果您共享示例策略,那就太好了。

4

1 回答 1

2

无法在控制台中仅显示所有 IAM 角色的子集。限制iam:ListRoles调用的唯一方法是使用PathPrefix参数(请参阅https://docs.aws.amazon.com/IAM/latest/UserGuide/list_identityandaccessmanagement.html)。但是,IAM 控制台会在未指定参数的情况下发出iam:ListRoles请求。PathPrefix您仍然可以使用 AWS CLI 仅请求 IAM 角色的子集,如下所示:

aws iam list-roles --path-prefix "/somepath"

您可以允许用户列出路径以/somepath如下开头的 IAM 角色:

---
AWSTemplateFormatVersion: '2010-09-09'

Resources:
  User:
    Type: AWS::IAM::User
    Properties:
      Path: "/"
      Policies:
      - PolicyName: IamAccess
        PolicyDocument:
          Version: '2012-10-17'
          Statement:
          - Effect: Allow
            Action:
            - 'iam:ListRoles'
            Resource: !Sub "arn:aws:iam::${AWS::AccountId}:role/somepath*"

至于仅列出所有 CloudFormation 堆栈的子集,这是不可能的。该ListStacks调用不允许您过滤要列出的堆栈。请参阅https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscloudformation.html。只需将以下代码段添加到上面的代码中,即可让您的用户列出所有 CloudFormation 堆栈:

      - PolicyName: CloudFormationAccess
        PolicyDocument:
          Version: '2012-10-17'
          Statement:
          - Effect: Allow
            Action:
            - 'cloudformation:ListStacks'
            Resource: '*'

请注意,列出 CloudFormation 堆栈并不会隐式授予列出这些堆栈的资源或输出的访问权限。换句话说,用户可以列出所有堆栈,但不能查看这些堆栈的内容。

于 2018-07-02T19:15:04.563 回答