我将存储桶策略错误地配置为拒绝所有用户访问我的 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 或根用户账户。获得访问权限后,请修改策略以删除阻止您和其他用户访问的条件。
要重新获得对存储桶的访问权限,请完成以下步骤:
- 获取存储桶策略的副本。您可以通过 AWS 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 账户重新获得意外锁定的 S3 存储桶的访问权限。
要重新获得对您的 S3 存储桶的访问权限,请对成员账户执行特权操作并删除配置错误的存储桶策略。然后,添加有效的存储桶策略。
有关详细信息,请参阅使用 AWS Organizations 集中管理客户的根访问权限。
当您无法满足存储桶策略中的条件或无法使用 AWS Organizations 时该怎么做
如果您不满足存储桶策略中的条件且无法使用 AWS Organizations,请删除导致锁定的存储桶策略条件。完成以下步骤:
- 以 AWS 账户根用户身份登录 AWS 管理控制台。
注意: 您必须拥有根用户访问权限。管理访问权限不足以删除存储桶策略条件。
重要事项: 请勿使用账户根用户身份执行日常任务。根用户凭证仅用于需要以根用户身份登录的任务。根用户凭证与具有管理员访问权限的 AWS Identity Access Management (IAM) 用户或角色不同。另外,您无法将具有允许或拒绝权限的 IAM 策略附加到根用户账户。账户管理员定期更改账户根用户的密码是一种安全最佳实践。
- 打开 Amazon S3 控制台。
- 导航到配置错误的存储桶。
- 选择 Permissions(权限)选项卡。
- 在 Bucket Policy(存储桶策略)中,选择 Edit(编辑)。
- 在存储桶策略中,识别并删除导致存储桶锁定的条件。
- 选择 Save Changes(保存更改)。
- 退出 AWS 管理控制台。
在您以账户根用户身份修改存储桶策略后,具有存储桶访问权限的 IAM 用户可以应用更正后的存储桶策略。有关详细信息,请参阅 Amazon S3 存储桶策略的示例和使用 Amazon S3 控制台添加存储桶策略。
使用 CloudTrail 查找存储桶名称和策略
如果您不知道在锁定前应用于存储桶的策略,请使用 AWS CloudTrail 来查看该事件。要在账户中搜索最近的 PutBucketPolicy API 操作,您可以使用 CloudTrail 控制台或 AWS CLI。
注意: CloudTrail 事件历史记录涵盖过去 90 天的事件。您可以将 CloudTrail 配置为将管理事件日志发送到 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 区域。