我将存储桶策略错误地配置为拒绝所有用户访问我的 Amazon Simple Storage Service (Amazon S3) 存储桶。
解决方法
**重要事项:**出于安全和隐私原因,AWS Support 无法访问客户数据,也无法代表您访问存储桶策略。如果您无法重新获得对 S3 存储桶的访问权限,则 AWS Support 将无法恢复该存储桶。有关数据安全的详细信息,请参阅责任共担模式。
您不符合存储桶策略中的条件
如果您不符合存储桶策略中的条件,请完成以下步骤以重新获得对您的 Amazon S3 存储桶的访问权限:
- 以 AWS 账户根用户身份登录 AWS 管理控制台。
重要事项:请勿使用账户根用户身份执行日常任务。根用户凭证仅用于需要以根用户身份登录的任务。根用户凭证与具有管理员访问权限的 AWS Identity Access Management (IAM) 用户或角色不同。另外,您无法将具有允许或拒绝权限的 IAM 策略附加到根用户账户。账户管理员定期更改账户根用户的密码是一种安全最佳做法。
- 打开 Amazon S3 控制台。
- 导航到配置错误的桶。
- 选择 Permissions(权限)选项卡。
- 在 Bucket Policy(存储桶策略)中,选择 Edit(编辑)。
- 在存储桶策略中,确定并删除导致存储桶锁定的条件。
- 选择 Save Changes(保存更改)。
- 退出 AWS 管理控制台。
在您以账户根用户身份修改存储桶策略后,具有存储桶访问权限的 IAM 用户可以应用更正后的存储桶策略。有关详细信息,请参阅 Amazon S3 存储桶策略的示例和使用 Amazon S3 控制台添加存储桶策略。
您满足存储桶策略中的条件
如果您满足存储桶策略条件中的条件,但无法使用根用户账户,请修改策略。
要重新获得对存储桶的访问权限,请完成以下步骤:
- 查看存储桶策略,以确定满足的存储桶条件。
- 如果您不满足存储桶策略条件,请完成所有必需的操作,以使策略的计算结果为 true。以下为可能阻止 S3 存储桶访问的存储桶策略条件示例:
您没有将客户端 IP 地址列入允许列表。
您没有将虚拟私有云 (VPC) 端点列入允许列表。
该请求是从 VPC 内部发出的,但是 VPC 没有 Amazon S3 端点。
拒绝条件会屏蔽主体且不包含条件块。
- 重新获得访问权限后,请确定并删除导致存储桶锁定的条件。
- 对更改进行测试,以验证访问控制级别是否正确。
AWS Organizations 成员账户
如果您使用 AWS Organizations,则成员账户可以重新获得意外锁定的 Amazon S3 存储桶的访问权限。
要重新获得对您的 S3 存储桶的访问权限,请对成员账户执行特权操作并删除配置错误的存储桶策略。然后,添加有效的存储桶策略。
有关详细信息,请参阅 Centrally managing root access for customers using AWS Organizations。
使用 CloudTrail 查找存储桶名称和策略
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
如果您不知道在封锁前应用于存储桶的策略,请使用 AWS CloudTrail 来查看该事件。
要在账户中搜索最近的 PutBucketPolicy API 操作,您可以使用 CloudTrail 控制台或 AWS CLI。
CloudTrail 控制台
完成以下步骤:
- 打开 CloudTrail 控制台。
- 在导航窗格中,选择事件历史记录。
- 在 Event history(事件历史记录)页面上的 Lookup attributes(查找属性)下,选择 Event name(事件名称)。
- 在 Enter an event name(输入事件名称)搜索窗格中,选择 PutBucketPolicy 并按 Enter。
- 选择最近的事件并查看详细信息。该事件显示包括存储桶名称和策略的请求和响应参数。
AWS CLI
运行 put-bucket-policy 命令:
aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=PutBucketPolicy --region example-region
**注意:**将 example-region 替换为您的 AWS 区域。