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