我在尝试访问我的 AWS 服务时收到了访问被拒绝或未经授权错误。如何解决我的 AWS 账户上的访问被拒绝错误?
简短描述
由于您的 AWS Identity and Access Management(IAM)策略不符合特定条件要求,您可能会收到访问被拒绝或未经授权错误。首先,请查看您的账户上的任何服务控制策略(SCP),然后检查您的基于资源的策略中是否存在拒绝。如果这样做未解决错误,则问题可能是由权限边界的存在引起的。
权限边界是一项功能,利用它,您能够使用托管式策略设置基于身份的策略可以向 IAM 实体(用户或角色)授予的最大权限。当您为实体设置权限边界时,该实体只能执行其基于身份的策略和权限边界都允许的操作。
**注意:**权限边界会设置实体的最大权限,但是不授予这些权限。
如需解决授权错误,请执行下列步骤:
- 检查是否您的 IAM 策略中允许某项操作,但权限边界中不允许该操作
- 使用 IAM 控制台在权限边界中包括所有必需的操作
- 在 IAM 策略中使用“iam:PermissionsBoundary”条件键
解决方法
检查是否您的 IAM 策略中允许但权限边界中不允许某项操作
以下示例显示了 IAM 策略中允许但权限边界内不允许的操作。在此示例中,IAM 用户附加了策略 USER_IAM_POLICY:
IAM policy:(USER_IAM_POLICY)
“Effect”: “Allow”,
“Action”: [
“ec2:*”,
“s3:*”
],
此策略允许用户完全访问 Amazon Elastic Compute Cloud(Amazon EC2)和 Amazon Simple Storage Service(Amazon S3)服务。用户还设置了名为 USER_PB_POLICY 的权限边界。
Permissions Boundary:(USER_PB_POLICY)
“Effect”: “Allow”,
“Action”: [
“cloudwatch:*”,
“s3:*”
],
该权限边界设置了用户可执行的最大权限。在此示例中,此权限边界允许完全访问 Amazon CloudWatch 和 Amazon S3 服务。然而,由于 Amazon S3 是 IAM 策略和权限边界中唯一允许的服务,因此用户只能访问 S3。如果用户尝试访问 Amazon EC2,他们会收到访问被拒绝错误。
如需解决此错误,请编辑权限边界并允许访问 Amazon EC2:
“Effect”: “Allow”,
“Action”: [
“cloudwatch:*”,
“s3:*”,
“ec2:*”
],
使用 IAM 控制台在权限边界中包括所有必需的操作
按照以下步骤编辑权限边界,以包括用户需要的所有操作:
- 打开 IAM 控制台。
- 在导航窗格中,选择角色/用户。
- 选择要编辑的 IAM 实体。
- 在权限边界部分中,检查您的设置。如果设置了权限边界,这意味着存在权限边界。本节列出了用作 IAM 实体上权限边界的托管式策略的名称。
- 请展开 JSON 策略,并检查您需要的操作是否在权限边界中被列入白名单。如果您的操作未列入白名单,请编辑 JSON 策略以允许您的 IAM 实体需要的所有操作。
有关编辑策略的详细信息,请参阅编辑 IAM 策略。
在您的 IAM 策略中使用 iam:PermissionsBoundary 条件键
将 iam:PermissionsBoundary 条件键添加到您的 IAM 策略中。此条件键检查特定策略是否附加为 IAM 实体上的权限边界。
下列示例显示了一项名为 RestrictedRegionpermissionsBoundary 的 IAM 策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EC2RestrictRegion",
"Effect": “Allow”,
"Action": "ec2:*”
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": [
"us-east-1"
]
}
}
}
请创建一个策略并将其附加到负责创建用户的委派管理员。当我们将下列示例策略附加到管理员时,他们只能在将 RestrictedRegionPermissionsBoundary 策略附加到 IAM 用户时创建该用户。如果管理员试图在不附加策略的情况下创建 IAM 用户,则会收到访问被拒绝错误。
{
"Sid": "CreateUser",
"Effect": "Allow",
"Action": [
"iam:CreateUser"
],
"Resource": "arn:aws:iam::111222333444:user/test1*",
"Condition": {
"StringEquals": {
"iam:PermissionsBoundary": "arn:aws:iam::111222333444:policy/RestrictedRegionPermissionsBoundary"
}
}
如需在创建新用户时将 IAM 策略 RestrictedRegionPermissionsBoundary 设置为权限边界,请执行下列步骤:
- 打开 IAM 控制台。
- 在导航窗格中,选择用户,然后选择**添加用户 **。
- 输入要编辑的用户名,选择 AWS 访问类型,然后选择下一步。
- 展开设置权限边界部分,然后选择使用权限边界来控制最大角色权限。
- 在搜索字段中,输入 RestrictedRegionPermissionsBoundary,然后为您的策略选择单选按钮。
- 选择 Next:Tags。
- 查看您的设置并创建用户。
相关信息
IAM 实体的权限边界
使用边界评估有效权限