我将存储桶策略错误地配置为拒绝所有用户访问我的 Amazon Simple Storage Service (Amazon S3) 存储桶。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
**重要事项:**出于安全和隐私原因,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 控制台添加存储桶策略。
您满足存储桶策略中的条件时该怎么办
如果您可以更改访问步骤以满足存储桶策略中的条件,则可以在没有根用户账户的情况下重新获得访问权限。获得访问权限后,修改策略以移除阻止您和其他用户访问的条件。
要重新获得对存储桶的访问权限,请完成以下步骤:
-
获取存储桶策略的副本。您可以通过 CloudTrail 记录、仍有访问权限的团队成员或在 AWS Support 的帮助下获得此副本。
-
如果您不满足存储桶策略条件,请完成所有必需的操作,使策略评估为 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 身份验证。 |
| 拒绝语句中的条件块缺失 | 使用根用户访问权限。 |
-
重新获得访问权限后,请确定并删除导致存储桶锁定的条件。
-
对更改进行测试,验证访问控制级别是否正确。
AWS Organizations 成员账户
如果您使用 AWS Organizations,则成员账户可以重新获得对意外锁定的 Amazon S3 存储桶的访问权限。
要重新获得对您的 S3 存储桶的访问权限,请对成员账户执行特权操作并删除配置错误的存储桶策略。然后,添加有效的存储桶策略。
有关详细信息,请参阅使用 AWS Organizations 集中管理客户的根访问权限。
使用 CloudTrail 查找存储桶名称和策略
如果您不知道在锁定前应用于存储桶的策略,请使用 AWS CloudTrail 来查看该事件。要在账户中搜索最近的 PutBucketPolicy API 操作,您可以使用 CloudTrail 控制台或 AWS CLI。
**注意:**CloudTrail 事件历史记录涵盖过去 90 天的事件。您可以将 CloudTrail 配置为将管理事件日志发送到 Amazon S3 存储桶以获得更长时间的记录。要获取超过 90 天前的 PutBucketPolicy 操作记录,您必须查询 Amazon S3 中的 CloudTrail 日志。
要在控制台中使用 CloudTrail,请完成以下步骤:
- 打开 CloudTrail 控制台。
- 在导航窗格中,选择 Event history(事件历史记录)。
- 在 Event history(事件历史记录)页面的 Lookup attributes(查找属性)下,选择 Event name(事件名称)。
- 在 Enter an event name(输入事件名称)搜索窗格中,选择 PutBucketPolicy,然后按 Enter。
- 选择最近的事件并查看详细信息。该事件显示包括存储桶名称和策略的请求和响应参数。
要通过 AWS CLI 使用 CloudTrail,请运行以下 put-bucket-policy 命令:
aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=PutBucketPolicy --region example-region
**注意:**将 example-region 替换为您的 AWS 区域。