nspcc-dev / neofs-s3-gw

NeoFS S3 Protocol Gateway
GNU Affero General Public License v3.0
7 stars 15 forks source link

Incorrect owner id in list object versions output #953

Closed evgeniiz321 closed 2 months ago

evgeniiz321 commented 3 months ago

Create objects Get objects ACL:

[{'ETag': 'fcde2b2edba56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9', 'Size': 3, 'Key': 'bar', 'VersionId': 'FNWVaXLabfpPB3sTYdoWZEyRR8CP5pHwts8xigkhgJ6k', 'IsLatest': True, 'LastModified': datetime.datetime(2024, 5, 16, 2, 33, 46, tzinfo=tzutc()), 'Owner': {'DisplayName': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp', 'ID': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp'}}, {'ETag': 'baa5a0964d3320fbc0c6a922140453c8513ea24ab8fd0577034804a967248096', 'Size': 3, 'Key': 'baz', 'VersionId': '4BjSZz7yLXKAH4HQXm1T3KyFoMBcoNhxsqaG14CCzKQE', 'IsLatest': True, 'LastModified': datetime.datetime(2024, 5, 16, 2, 33, 46, tzinfo=tzutc()), 'Owner': {'DisplayName': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp', 'ID': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp'}}, {'ETag': '2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae', 'Size': 3, 'Key': 'foo', 'VersionId': '5ZediAKYqDheD7rC4Prt8Jf3rDt2wMdFb1dkGoPEU6Mz', 'IsLatest': True, 'LastModified': datetime.datetime(2024, 5, 16, 2, 33, 46, tzinfo=tzutc()), 'Owner': {'DisplayName': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp', 'ID': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp'}}]

Notice that Owner ID is equal to NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp.

Now issue list_object_versions:

'Owner': {'DisplayName': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp', 'ID': '024ff90ae96bfa3447c2e656b595e0d88f8a7bb4f2c75ac2feac2ff6f0e86fbbe2'}

Owner ID is equal to something else. But should be NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp as in the object ACL output.

test_bucket_list_return_data_versioning

roman-khimov commented 3 months ago

IIRC the key was used intentionally here.

smallhive commented 3 months ago

$ aws --no-paginate s3api get-object-acl --bucket heh1717474686 --key file-1717474690.txt --endpoint http://localhost:19080

{
    "Owner": {
        "DisplayName": "NiskPF9pfRMzg7V7PeB4d6ogLzu74a1L2Q",
        "ID": "03a0c9429ca04596dbef6eca53f0ed60e10a9d43a9efcedcf627cf4305dcef8b9a"
    },
    "Grants": [
        {
            "Grantee": {
                "DisplayName": "NiskPF9pfRMzg7V7PeB4d6ogLzu74a1L2Q",
                "ID": "03a0c9429ca04596dbef6eca53f0ed60e10a9d43a9efcedcf627cf4305dcef8b9a",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        },
        {
            "Grantee": {
                "Type": "Group",
                "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
            },
            "Permission": "READ"
        }
    ]
}

The right and only valid definition of owner is

"Owner": {
        "DisplayName": "NiskPF9pfRMzg7V7PeB4d6ogLzu74a1L2Q",
        "ID": "03a0c9429ca04596dbef6eca53f0ed60e10a9d43a9efcedcf627cf4305dcef8b9a"
    },

Where DisplayName is the address of the owner from its wallet. ID is a pub key

Any variants as

'Owner': {'DisplayName': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp', 'ID': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp'}

are not valid. I'm fixing the places when see them in the code. But it requires time.

test_bucket_list_return_data_versioning behaviour is valid. Tested on the latest master as well.

What test leads to this situation? @evgeniiz321

[{'ETag': 'fcde2b2edba56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9', 'Size': 3, 'Key': 'bar', 'VersionId': 'FNWVaXLabfpPB3sTYdoWZEyRR8CP5pHwts8xigkhgJ6k', 'IsLatest': True, 'LastModified': datetime.datetime(2024, 5, 16, 2, 33, 46, tzinfo=tzutc()), 'Owner': {'DisplayName': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp', 'ID': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp'}}, {'ETag': 'baa5a0964d3320fbc0c6a922140453c8513ea24ab8fd0577034804a967248096', 'Size': 3, 'Key': 'baz', 'VersionId': '4BjSZz7yLXKAH4HQXm1T3KyFoMBcoNhxsqaG14CCzKQE', 'IsLatest': True, 'LastModified': datetime.datetime(2024, 5, 16, 2, 33, 46, tzinfo=tzutc()), 'Owner': {'DisplayName': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp', 'ID': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp'}}, {'ETag': '2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae', 'Size': 3, 'Key': 'foo', 'VersionId': '5ZediAKYqDheD7rC4Prt8Jf3rDt2wMdFb1dkGoPEU6Mz', 'IsLatest': True, 'LastModified': datetime.datetime(2024, 5, 16, 2, 33, 46, tzinfo=tzutc()), 'Owner': {'DisplayName': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp', 'ID': 'NPvy7w9qrB2qyS2wVMxwKiNWRfykgFCCmp'}}]
roman-khimov commented 3 months ago

Refs. https://github.com/nspcc-dev/neofs-api/issues/278

smallhive commented 2 months ago

Double checked. The test test_bucket_list_return_data_versioning is green, but here not in master. It should be checked after merge

smallhive commented 2 months ago

Merged, could be rechecked. @evgeniiz321

roman-khimov commented 2 months ago

https://rest.fs.neo.org/7ZVSQHtioVRiDT2btN9xEmQhczXV9vryCEAHUawfD8Sc/275-1718625554/index.html#suites/6d7c9ec7c4f3e4460ae14fd266a64e04/ca4dc00f8e357a94/