s3: enforce authentication and JSON error format for Iceberg REST Catalog (#8192)
* s3: enforce authentication and JSON error format for Iceberg REST Catalog * s3/iceberg: align error exception types with OpenAPI spec examples * s3api: refactor AuthenticateRequest to return identity object * s3/iceberg: propagate full identity object to request context * s3/iceberg: differentiate NotAuthorizedException and ForbiddenException * s3/iceberg: reject requests if authenticator is nil to prevent auth bypass * s3/iceberg: refactor Auth middleware to build context incrementally and use switch for error mapping * s3api: update misleading comment for authRequestWithAuthType * s3api: return ErrAccessDenied if IAM is not configured to prevent auth bypass * s3/iceberg: optimize context update in Auth middleware * s3api: export CanDo for external authorization use * s3/iceberg: enforce identity-based authorization in all API handlers * s3api: fix compilation errors by updating internal CanDo references * s3/iceberg: robust identity validation and consistent action usage in handlers * s3api: complete CanDo rename across tests and policy engine integration * s3api: fix integration tests by allowing admin access when auth is disabled and explicit gRPC ports * duckdb * create test bucket
This commit is contained in:
@@ -108,7 +108,7 @@ func TestVerifyV4SignatureWithSTSIdentity(t *testing.T) {
|
||||
description: "STS identity should be denied when no IAM integration is available",
|
||||
},
|
||||
{
|
||||
name: "Traditional identity with Actions - should use canDo",
|
||||
name: "Traditional identity with Actions - should use CanDo",
|
||||
identity: &Identity{
|
||||
Name: "traditional-user",
|
||||
Account: &AccountAdmin,
|
||||
@@ -117,10 +117,10 @@ func TestVerifyV4SignatureWithSTSIdentity(t *testing.T) {
|
||||
shouldCheckPermissions: true,
|
||||
iamIntegration: nil, // IAM integration not needed for traditional identities
|
||||
expectedError: s3err.ErrNone,
|
||||
description: "Traditional identity with Actions should use canDo check",
|
||||
description: "Traditional identity with Actions should use CanDo check",
|
||||
},
|
||||
{
|
||||
name: "Traditional identity with Actions - canDo denies",
|
||||
name: "Traditional identity with Actions - CanDo denies",
|
||||
identity: &Identity{
|
||||
Name: "read-only-user",
|
||||
Account: &AccountAdmin,
|
||||
@@ -129,7 +129,7 @@ func TestVerifyV4SignatureWithSTSIdentity(t *testing.T) {
|
||||
shouldCheckPermissions: true,
|
||||
iamIntegration: nil,
|
||||
expectedError: s3err.ErrAccessDenied,
|
||||
description: "Traditional identity should be denied when canDo fails (PUT requires WRITE)",
|
||||
description: "Traditional identity should be denied when CanDo fails (PUT requires WRITE)",
|
||||
},
|
||||
{
|
||||
name: "shouldCheckPermissions false - skip authorization",
|
||||
|
||||
Reference in New Issue
Block a user