如何为我的 Amazon S3 桶启用 MFA 删除功能?
我想为我的 Amazon Simple Storage Service(Amazon S3)桶启用多重身份验证(MFA)删除功能,以保护我的对象免遭意外删除。
简短描述
通过 Amazon S3 MFA 删除功能,可以防止意外删除对象。如果您未启用 MFA 删除功能,则具有以下任一权限的任何人都可以永久删除 Amazon S3 对象:
- 根用户密码
- 具有足够权限的 AWS Identity and Access Management(IAM)用户或角色的凭证
启用 MFA 删除功能后,只有根用户可以永久删除对象版本或更改 S3 桶上的版本控制配置。根用户必须通过 MFA 设备进行身份验证才能执行此操作。
**注意:**只有启用版本控制的桶才支持 MFA 删除功能。桶拥有者、创建桶的 AWS 账户以及所有经授权的 IAM 用户都可以启用版本控制。但是,只有根账户的桶拥有者才能启用 MFA 删除功能。
要为您的桶启用 MFA 删除功能,请完成以下步骤:
- 为根用户生成访问密钥和密钥。
- 为根用户激活 MFA 删除设备。
- 使用根用户凭证配置 AWS 命令行界面(AWS CLI)。
- 使用 PutBucketVersioning API 启用 MFA 删除功能。
- 确认 MFA 删除功能在运行。记得删除您的根访问密钥。
**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
解决方法
为根用户生成访问密钥和密钥
按照为根用户创建访问密钥中的说明进行操作。
创建这些密钥后,您会收到一条警告,提醒您只有这一次机会查看或下载密钥。您以后无法检索这些密钥。因此,请务必保存好,以便在配置 AWS CLI 时使用。
为根用户激活 MFA 设备
如果您没有为根用户激活的 MFA 设备,请按照为您的 AWS 账户根用户启用虚拟 MFA 设备(控制台)中的说明进行操作。
如果您已经为根用户激活了 MFA 设备,请记下 ARN。
使用根凭证配置 AWS CLI
运行 AWS CLI configure 命令。
- 当提示输入 AWS 访问密钥 ID(例如: AKIAEXAMPLEABCQWE)时,粘贴您在步骤 1 中下载的根用户的访问密钥 ID。
- 当提示输入根用户的 AWS 秘密访问密钥时,粘贴秘密访问密钥 ID。您可以在包含根用户凭证的文件中找到此信息。
- (可选)当提示输入默认区域名称时,您可以跳过并按 Enter。
- (可选)当提示输入默认输出格式时,您可以跳过并按 Enter。
**重要事项:**如果您在 AWS CLI 上配置了命名配置文件,则必须为根用户的凭证再创建一个配置文件。
要配置命名配置文件,请运行以下命令:
aws configure --profile root_user
使用 PutBucketVersioning API 启用 S3 MFA 删除功能
要启用 MFA 删除功能,请运行 put-bucket-versioning 命令:
aws s3api put-bucket-versioning --bucket mybucketname --versioning-configuration MFADelete=Enabled,Status=Enabled --mfa "arn:aws:iam::(accountnumber):mfa/root-account-mfa-device (pass)"
例如:
aws s3api put-bucket-versioning --bucket mybucketname --versioning-configuration MFADelete=Enabled,Status=Enabled --mfa "arn:aws:iam::1XXXXXXX6789:mfa/root-account-mfa-device 123789"
在此示例中,123789 是使用 MFA 设备生成的六位数示例代码。
如果您为根用户使用了命名配置文件,请运行以下命令:
aws s3api put-bucket-versioning --bucket mybucketname --versioning-configuration MFADelete=Enabled,Status=Enabled --mfa "arn:aws:iam::1XXXXXXX6789:mfa/root-account-mfa-device 123789" --profile root_user
如果命令执行成功,则不会有输出。如果您遇到错误,请确保您安装了最新版本的 AWS CLI。此外,请确认您使用的是根用户并且 MFA 代码和 ARN 有效。
确认 MFA 删除功能在运行
检查 Amazon S3 控制台,确保桶的版本控制已启用。
要检查 MFA 删除功能是否已启用,请使用 GetBucketVersioning API:
aws s3api get-bucket-versioning --bucket mybucketname { "Status": "Enabled", "MFADelete": "Enabled" }
为桶启用 MFA 删除功能后,将来所有对象删除中必须包含请求标头,才能永久删除对象版本。标头的值是您的身份验证设备的序列号、空格和设备上显示的身份验证代码的代码链。有关详细信息,请参阅从启用 MFA 删除功能的桶中删除对象。您可以在 delete-object 命令中使用 --mfa 选项来包含标头值。
如果您尝试在没有 MFA 的情况下删除桶中的对象版本,则会出现以下错误。当您使用 IAM 用户尝试删除对象版本时,也会出现此错误:
aws s3api delete-object --bucket mybucketname --key myobjectkey --version-id 3HL4kqCxf3vjVBH40Nrjkd An error occurred (AccessDenied) when calling the DeleteObject operation: Mfa Authentication must be used for this request
要使用根用户在启用 MFA 删除功能的桶中删除对象版本,请运行以下命令:
aws s3api delete-object --bucket mybucketnme --key myobjectkey --version-id 3HLkqCxf3vjVBH40Nrjkd --mfa "arn:aws:iam::(accountnumber):mfa/root-account-mfa-device (pass)" { "VersionId": "3HLkqCxf3vjVBH40Nrjkd" }
**注意:**您的 AWS 账户中拥有 s3:DeleteObject 权限的 IAM 用户或角色仍然可以在不指定版本 ID 的情况下成功地向桶中的对象发出 delete-object 请求。在具有版本控制的桶中,此请求会创建删除标记。对象的当前版本与先前版本相同。永久删除这些桶中对象的唯一方法是在 delete-object 请求中指定对象版本的版本 ID。启用 MFA 删除功能后,只有根用户才能对桶中的对象进行版本识别删除。此外,根用户必须通过根用户 MFA 设备对请求进行身份验证。
作为安全最佳做法,在启用 MFA 删除功能后,请执行以下操作:
- 将存储在 AWS CLI 上的根用户凭证作废并将其删除。AWS CLI 凭证存储在您的操作系统的配置文件夹中。有关详细信息,请参阅配置和凭证文件设置。
- 使用 AWS 管理控制台删除根用户访问密钥。有关说明,请参阅删除根用户的访问密钥。
相关信息
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前