為什麼我無法存取由另一個 AWS 帳戶上傳到我的 Amazon S3 儲存貯體的物件?

1 分的閱讀內容
0

另一個 AWS 帳戶中的 AWS Identity and Access Management (IAM) 使用者將物件上傳到我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。當我嘗試存取該物件時,我收到 403 存取遭拒 錯誤。我該如何解決這個問題?

簡短說明

對於具有預設物件擁有權設定的現有 Amazon S3 儲存貯體,物件擁有者是將物件上傳到儲存貯體的 AWS 帳戶。對於這些現有儲存貯體,物件擁有者必須明確授予物件的權限 (透過附加存取控制清單)。否則,儲存貯體擁有者無法存取物件。

透過 S3 物件擁有權,儲存貯體擁有者現在可以管理任何上傳至其儲存貯體之物件擁有權。依預設,所有新建立的 S3 儲存貯體都會啟用儲存貯體擁有者強制設定。啟用儲存貯體擁有者強制設定後,儲存貯體擁有者會成為儲存貯體內所有物件的物件擁有者。此外,儲存貯體上的任何 ACL 及其物件都會停用。

您也可以啟用儲存貯體擁有者強制設定或儲存貯體擁有者偏好設定,在現有儲存貯體上設定 S3 物件擁有權。啟用儲存貯體擁有者偏好設定後,ACL 仍會啟用。此外,儲存貯體擁有者僅擁有上傳至具有bucket-owner-full-control ACL 的儲存貯體的物件。如果您在現有儲存貯體上啟用儲存貯體擁有者強制執行設定,則請注意,您也可以隨時停用此設定。(在現有儲存貯體上停用儲存貯體擁有者強制執行設定,會重新啟用先前套用的任何儲存貯體和物件 ACL。)

最佳實務是儲存貯體擁有者在新的和現有的儲存貯體上使用儲存貯體擁有者強制設定,同時透過 IAM 和儲存貯體政策管理權限。

**重要事項:**在現有儲存貯體上停用任何 ACL 之前,請先評估潛在的影響。如果物件或儲存貯體上有多個 ACL,請檢閱並更新儲存貯體和 IAM 政策以授予所需權限。

解決方法

若要對儲存貯體停用 ACL,並取得儲存貯體中所有物件的擁有權,請執行下列命令:

aws s3api put-bucket-ownership-controls --bucket example-bucket --ownership-controls 'Rules=[{ObjectOwnership=BucketOwnerEnforced}]'

如果您無法在儲存貯體上停用 ACL,則請使用下列選項授予儲存貯體中物件的存取權。

在置入或複製操作期間授予存取權

在進行置入或複製操作期間,物件擁有者可以指定物件的 ACL 可為儲存貯體擁有者提供完整控制權。

對於置入操作,物件擁有者可以執行以下命令:

aws s3api put-object --bucket destination_DOC-EXAMPLE-BUCKET --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --acl bucket-owner-full-control

**注意事項:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確認您使用的是最新的 AWS CLI 版本

對於單一物件的複製操作,物件擁有者可以執行下列其中一個命令:

aws s3api copy-object --bucket destination_DOC-EXAMPLE-BUCKET --key source_DOC-EXAMPLE-BUCKET/myobject --acl bucket-owner-full-control
  • 或 -
aws s3 cp s3://source_DOC-EXAMPLE-BUCKET/myobject s3://destination_DOC-EXAMPLE-BUCKET/ --acl bucket-owner-full-control

對於多個物件的複製操作,物件所有者可以執行以下命令:

aws s3 cp s3://source_DOC-EXAMPLE-BUCKET/ s3://destination_DOC-EXAMPLE-BUCKET/ --acl bucket-owner-full-control --recursive

在物件新增至儲存貯體後授予存取權

如果物件已經在另一個帳戶的儲存貯體中,則物件擁有者可以使用 put-object-acl 命令授予儲存貯體擁有者存取權:

aws s3api put-object-acl --bucket destination_DOC-EXAMPLE-BUCKET --key keyname --acl bucket-owner-full-control

要求物件授予儲存貯體擁有者完整控制權

您可以使用儲存貯體政策,要求另一個帳戶上傳至儲存貯體的任何物件都必須將 ACL 設定為 "bucket-owner-full-control"。如需範例,請參閱當其他 AWS 帳戶將物件上傳到我的 S3 儲存貯體時,我該如何要求他們授予我對物件的擁有權?


相關資訊

IAM 教學課程: 使用 IAM 角色委派跨 AWS 帳戶的存取權

授予跨帳戶上傳物件的權限,同時確保儲存貯體擁有者擁有完整控制權

AWS 官方
AWS 官方已更新 2 年前