如何限制 IAM 用户访问(列出)特定角色和 CF 堆栈?
How to restrict IAM user to access (list) particular roles and CF stacks?
我已经使用 root 帐户创建了多个服务角色和 CF 堆栈,我将创建一个 IAM 用户,我不想列出所有这些角色和 CF 堆栈。我只想展示一些特定的角色和 CF 堆栈。
你能让我知道我该怎么做吗?如果您分享一个示例政策,那就太好了。
无法在控制台中仅显示所有 IAM 角色的子集。限制 iam:ListRoles
调用的唯一方法是使用 PathPrefix
参数(参见 https://docs.aws.amazon.com/IAM/latest/UserGuide/list_identityandaccessmanagement.html)。但是,IAM 控制台在未指定 PathPrefix
参数的情况下发出 iam:ListRoles
请求。您仍然可以使用 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 堆栈并不隐式授予列出这些堆栈的资源或输出的权限。换句话说,用户可能会列出所有的Stacks,但将无法查看这些stacks的内容。
我已经使用 root 帐户创建了多个服务角色和 CF 堆栈,我将创建一个 IAM 用户,我不想列出所有这些角色和 CF 堆栈。我只想展示一些特定的角色和 CF 堆栈。 你能让我知道我该怎么做吗?如果您分享一个示例政策,那就太好了。
无法在控制台中仅显示所有 IAM 角色的子集。限制 iam:ListRoles
调用的唯一方法是使用 PathPrefix
参数(参见 https://docs.aws.amazon.com/IAM/latest/UserGuide/list_identityandaccessmanagement.html)。但是,IAM 控制台在未指定 PathPrefix
参数的情况下发出 iam:ListRoles
请求。您仍然可以使用 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 堆栈并不隐式授予列出这些堆栈的资源或输出的权限。换句话说,用户可能会列出所有的Stacks,但将无法查看这些stacks的内容。