我已经使用root帐户创建了多个服务角色和CF堆栈,并且我将创建一个IAM用户,并且我不想列出所有这些角色和CF堆栈。我只想显示一些特定的角色和CF堆栈。 您能告诉我该怎么做吗?如果您共享示例政策,那就太好了。
答案 0 :(得分: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"
您可以允许用户列出IAM角色,其路径以/somepath
开头,如下所示:
---
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堆栈并不能隐式授予列出这些堆栈的资源或输出的权限。换句话说,用户可能会列出所有堆栈,但无法查看这些堆栈的内容。