跳至内容

不小心拒绝所有人访问 Amazon S3 存储桶后如何重新获得访问权限?

2 分钟阅读
0

我将存储桶策略错误地配置为拒绝所有用户访问我的 Amazon Simple Storage Service (Amazon S3) 存储桶。

简短描述

要重新获得对您的 S3 存储桶的访问权限,您可以更改访问步骤以满足存储桶策略中的条件。如果您无法满足存储桶策略条件,请使用 AWS Organizations 管理账户。如果您无法使用 AWS Organizations,请使用根用户 AWS 账户。最佳做法是使用 AWS Organizations 集中管理根访问权限

解决方法

注意: 如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅排查 AWS CLI 错误。此外,请确保您使用的是最新版本的 AWS CLI

重要事项: 出于安全和隐私原因,AWS Support 无法访问客户数据,也无法代表您访问存储桶策略。如果您无法重新获得对 S3 存储桶的访问权限,则 AWS Support 将无法恢复该存储桶。有关数据安全的详细信息,请参阅责任共担模式

更改您的访问步骤以满足存储桶策略中的条件

如果您可以更改访问步骤以满足存储桶策略中的条件,则可以立即重新获得访问权限。在这种情况下,您无需使用 AWS Organizations 或根用户账户。获得访问权限后,请修改策略以删除阻止您和其他用户访问的条件。

要重新获得对存储桶的访问权限,请完成以下步骤:

  1. 获取存储桶策略的副本。您可以通过 AWS CloudTrail 记录、仍有访问权限的团队成员或在 AWS Support 的帮助下获得此副本。
  2. 如果您不满足存储桶策略条件,请完成所有必需的操作,以使策略的计算结果为 true。以下是可能阻止 S3 存储桶访问的存储桶策略条件以及获取访问权限的操作示例:
条件类型操作
IP 地址允许列表 (aws:SourceIP)通过允许的 IP 地址进行连接或使用 VPN。
Amazon Virtual Private Cloud (Amazon VPC) (aws:sourceVpc)在指定的 Amazon VPC 内发出请求。
Amazon VPC 端点 (aws:sourceVpce)使用正确的端点发出请求。
多重身份验证 (MFA) 要求 (aws:MultiFactorAuthPresent)开启并使用 MFA 身份验证。
拒绝语句中的条件块缺失使用根用户访问权限。
  1. 重新获得访问权限后,请识别并删除导致存储桶锁定的条件。
  2. 对更改进行测试,验证访问控制级别是否正确。

AWS Organizations 成员账户

如果您无法满足存储桶策略中的条件,请使用 AWS Organizations 账户重新获得意外锁定的 S3 存储桶的访问权限

要重新获得对您的 S3 存储桶的访问权限,请对成员账户执行特权操作并删除配置错误的存储桶策略。然后,添加有效的存储桶策略

有关详细信息,请参阅使用 AWS Organizations 集中管理客户的根访问权限

当您无法满足存储桶策略中的条件或无法使用 AWS Organizations 时该怎么做

如果您不满足存储桶策略中的条件且无法使用 AWS Organizations,请删除导致锁定的存储桶策略条件。完成以下步骤:

  1. AWS 账户根用户身份登录 AWS 管理控制台
    注意: 您必须拥有根用户访问权限。管理访问权限不足以删除存储桶策略条件。
    重要事项: 请勿使用账户根用户身份执行日常任务。根用户凭证仅用于需要以根用户身份登录的任务。根用户凭证与具有管理员访问权限的 AWS Identity Access Management (IAM) 用户或角色不同。另外,您无法将具有允许拒绝权限的 IAM 策略附加到根用户账户。账户管理员定期更改账户根用户的密码是一种安全最佳实践。
  2. 打开 Amazon S3 控制台
  3. 导航到配置错误的存储桶。
  4. 选择 Permissions(权限)选项卡。
  5. Bucket Policy(存储桶策略)中,选择 Edit(编辑)。
  6. 在存储桶策略中,识别并删除导致存储桶锁定的条件。
  7. 选择 Save Changes(保存更改)。
  8. 退出 AWS 管理控制台。

在您以账户根用户身份修改存储桶策略后,具有存储桶访问权限的 IAM 用户可以应用更正后的存储桶策略。有关详细信息,请参阅 Amazon S3 存储桶策略的示例使用 Amazon S3 控制台添加存储桶策略

使用 CloudTrail 查找存储桶名称和策略

如果您不知道在锁定前应用于存储桶的策略,请使用 AWS CloudTrail 来查看该事件。要在账户中搜索最近的 PutBucketPolicy API 操作,您可以使用 CloudTrail 控制台或 AWS CLI。

注意: CloudTrail 事件历史记录涵盖过去 90 天的事件。您可以将 CloudTrail 配置为将管理事件日志发送到 S3 存储桶以获得更长时间的记录。要获取超过 90 天前的 PutBucketPolicy 操作记录,您必须查询 Amazon S3 中的 CloudTrail 日志

要在控制台中使用 CloudTrail,请完成以下步骤:

  1. 打开 CloudTrail 控制台
  2. 在导航窗格中,选择 Event history(事件历史记录)。
  3. Event history(事件历史记录)页面的 Lookup attributes(查找属性)下,选择 Event name(事件名称)。
  4. Enter an event name(输入事件名称)搜索窗格中,选择 PutBucketPolicy,然后按 Enter
  5. 选择最近的事件并查看详细信息。该事件显示包括存储桶名称和策略的请求和响应参数。

要通过 AWS CLI 使用 CloudTrail,请运行以下 put-bucket-policy 命令:

aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=PutBucketPolicy --region example-region

注意:example-region 替换为您的 AWS 区域。

AWS 官方已更新 7 个月前