[
https://issues.apache.org/jira/browse/HDDS-16408?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated HDDS-16408:
----------------------------------
Labels: pull-request-available (was: )
> S3 Gateway treats DeletePublicAccessBlock as DeleteBucket
> ---------------------------------------------------------
>
> Key: HDDS-16408
> URL: https://issues.apache.org/jira/browse/HDDS-16408
> Project: Apache Ozone
> Issue Type: Sub-task
> Reporter: Shuo Huang
> Assignee: Shuo Huang
> Priority: Major
> Labels: pull-request-available
>
> h3. Problem
> When S3 Gateway receives DELETE /\{bucket}?publicAccessBlock, it does not
> recognize the publicAccessBlock subresource and handles the request as
> DeleteBucket.
> As a result, the request returns HTTP 204 and deletes an empty bucket. A
> subsequent request for the bucket returns NoSuchBucket.
> According to the Amazon S3 API, DeletePublicAccessBlock removes only the
> bucket's PublicAccessBlock configuration. The bucket itself must remain
> unchanged.
> h3. Reproduction
> Start the packaged Ozone cluster, then run:
> {code:bash}
> cd <path-to-ceph-s3-tests>
> S3TEST_CONF=<path-to-s3tests.conf> python -m pytest -v \
> s3tests/functional/test_s3.py::test_get_undefined_public_block {code}
> h3. Actual result
> The test receives {{NoSuchBucket}} because the bucket was deleted.
> {code:java}
> DELETE /bucket?publicAccessBlock -> 204
> HEAD /bucket -> 404
> GET /bucket?publicAccessBlock -> NoSuchBucket
> {code}
> h3. Expected result
> The request must not be handled as DeleteBucket.
> If PublicAccessBlock is unsupported, S3 Gateway should return an appropriate
> unsupported-operation response without modifying the bucket.
> h3. Root cause
> {{BucketCrudHandler.shouldHandle()}} does not recognize the
> {{publicAccessBlock}} subresource. The request therefore reaches
> {{{}handleDeleteRequest(){}}}, which calls {{{}deleteBucket(bucketName){}}}.
> h3. References
> * AWS DeletePublicAccessBlock API:
> [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html]
> * ceph/s3-tests: test_get_undefined_public_block:
> [https://github.com/ceph/s3-tests/blob/fb8b73092bb1dd8db829f1205a9e52e73bf9a232/s3tests/functional/test_s3.py#L13830-L13847]
> * Compatibility report: [https://ozone.s3.peterxcli.dev/]
> * BucketCrudHandler routing:
> [https://github.com/apache/ozone/blob/f9f61847685b15e7aa743079f0ef146053a93d9b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/BucketCrudHandler.java#L47-L52]
> * Bucket deletion call:
> [https://github.com/apache/ozone/blob/f9f61847685b15e7aa743079f0ef146053a93d9b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/BucketCrudHandler.java#L84-L98]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]