如何為 Amazon S3 儲存貯體啟用 MFA 刪除功能?

2 分的閱讀內容
0

我想為 Amazon Simple Storage Service (Amazon S3) 儲存貯體啟用多重要素驗證 (MFA) 刪除功能,以防止我的物件遭到意外刪除。

簡短說明

當您未設定 MFA 刪除功能時,任何具有下列任一權限的人都可以永久刪除 Amazon S3 物件:

  • 根使用者密碼
  • 具有刪除權限的 AWS Identity and Access Management (IAM) 使用者或角色憑證

設定 MFA 刪除功能後,只有根使用者可以永久刪除物件版本,或變更 S3 儲存貯體上的版本控制組態。您必須使用 MFA 裝置來驗證根使用者,才能執行刪除動作。

若要為儲存貯體設定 MFA 刪除功能,請完成以下步驟:

  1. 為根使用者產生存取金鑰和私密金鑰。
  2. 為根使用者啟用 MFA 裝置。
  3. 使用根使用者憑證設定 AWS CLI。
  4. 設定 MFA 刪除功能。
  5. 確認 MFA 刪除功能是否正常運作,並刪除您的根存取金鑰。

您只能對已開啟 S3 版本控制的儲存貯體使用 MFA 刪除功能。儲存貯體擁有者、建立儲存貯體的 AWS 帳戶,以及所有授權的 IAM 使用者都可以開啟版本控制。但是,只有根使用者帳戶才能開啟 MFA 刪除功能。若要開啟 MFA 刪除功能,您必須使用 AWS CLI 或 Amazon S3 REST API。

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

解決方法

為根使用者產生存取金鑰和私密金鑰

首先,為根使用者建立存取金鑰。建立這些金鑰後,您必須立即下載並儲存金鑰。之後您將無法擷取這些金鑰。

為根使用者啟用 MFA 裝置

如果您沒有為根使用者啟用 MFA 裝置,請參閱為根使用者啟用虛擬 MFA 裝置 (主控台)。如果您已經為根使用者啟用了 MFA 裝置,請記下 ARN。

使用根使用者憑證設定 AWS CLI

請完成下列步驟:

  1. 執行 AWS CLI configure 命令。
  2. 對於 AWS Access Key ID (AWS 存取金鑰 ID),請輸入根使用者的存取金鑰 ID,例如 AKIAEXAMPLEABCQWE
  3. 對於根使用者的 AWS Secret Access Key (AWS 私密存取金鑰),輸入私密存取金鑰 ID。您可以在包含根使用者憑證的檔案中找到私密存取金鑰。
  4. (選用) 對於 Default region name (預設區域名稱),您可以輸入預設的 AWS 區域。
  5. (選用) 對於 Default output format (預設輸出格式),您可以輸入輸出格式。

重要: 如果您在 AWS CLI 中設定了具名設定檔,則必須為根使用者的憑證建立另一個設定檔。若要設定具名設定檔,請執行以下 configure 命令:

aws configure --profile root_user

開啟 S3 MFA 刪除功能

若要開啟 MFA 刪除功能,請執行 put-bucket-versioning 命令:

aws s3api put-bucket-versioning --bucket mybucketname --versioning-configuration MFADelete=Enabled,Status=Enabled --mfa "arn:aws:iam::1XXXXXXX6789:mfa/root-account-mfa-device 123789"

**注意:**在上述命令中,請將 1XXXXXXX6789 替換為您的帳戶 ID,將 123789 替換為 MFA 裝置產生的序號。

如果您為根使用者使用具名設定檔,請執行以下 put-bucket-versioning 命令:

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

如果命令執行成功,那麼您將不會收到輸出。如果您收到帶有錯誤的輸出,請確認您使用的是根使用者,且 ARN 和 MFA 序號有效。

您也可以呼叫 PutBucketVersioning API 來開啟 MFA 刪除功能。

**注意:**您無法將 MFA 刪除功能與生命週期組態一起使用。如果儲存貯體上有生命週期組態,並且您執行上述的 put-bucket-versioning 命令,那麼您會收到以下錯誤:

「呼叫 PutBucketVersioning 作業時發生錯誤 (InvalidBucketState): 具有生命週期組態的儲存貯體不支援 MFA 驗證。在啟用 MFA 驗證之前刪除生命週期組態。」

確認 MFA 刪除功能是否正常運作

首先,請確定您已開啟 S3 版本控制,您可以使用 Amazon S3 主控台或下列 GetBucketVersioning API:

aws s3api get-bucket-versioning --bucket mybucketname

輸出範例:

{    
    "Status": "Enabled",    
    "MFADelete": "Enabled"    
}

若要永久刪除物件版本,您必須包含 x-amz-mfa 請求標頭。您可以在 delete-object 命令中使用 --mfa 選項來包含標頭值。標頭的值是您驗證裝置的序號、空格和驗證碼鏈。如需詳細資訊,請參閱從已啟用 MFA 刪除功能的儲存貯體中刪除物件

如果您未開啟 MFA 刪除功能並嘗試刪除物件版本,則會收到以下錯誤。當您使用 IAM 使用者嘗試刪除物件版本時,也會收到以下錯誤:

「呼叫 DeleteObject 作業時發生 aws s3api delete-object --bucket mybucketname --key myobjectkey --version-id 3HL4kqCxf3vjVBH40Nrjkd 錯誤 (AccessDenied): 此請求必須使用 MFA 驗證」

若要使用根使用者在已開啟 MFA 刪除功能的儲存貯體中刪除物件版本,請執行以下 delete-object 命令:

aws s3api delete-object --bucket mybucketname --key myobjectkey --version-id 3HLkqCxf3vjVBH40Nrjkd --mfa "arn:aws:iam::(accountnumber):mfa/root-account-mfa-device (pass)" {    
    "VersionId": "3HLkqCxf3vjVBH40Nrjkd"    
}

注意: 若要允許您帳戶中的 IAM 使用者或角色在不使用版本 ID 的情況下執行 delete-object 請求,請授予其 s3:DeleteObject 權限。對於已啟用版本控制的儲存貯體,delete-object 請求只會建立刪除標記。它不會永久刪除物件版本。若要永久刪除物件,您必須指定該物件的版本 ID。

開啟 MFA 刪除功能後,作為最佳安全實務,請採取以下動作:

AWS 官方已更新 4 個月前