Hi Jingsong,

+1 from me.

I support introducing a language-neutral permission management contract for
the REST Catalog ecosystem. Keeping it scoped to `RESTCatalog` looks like a
reasonable initial boundary, and the proposed APIs and Spark procedures
seem like a practical starting point.

Thanks for driving this discussion and preparing the POC.

Best,
Yijie Shao

Jiajia Li <[email protected]> 于2026年8月24日周一 18:46写道:

> Hi Jingsong,
>  +1 for defining this contract as part of the REST Catalog ecosystem. We
> run a production Paimon REST Catalog server and very much need a neutral
> permission management contract like this — it is exactly what engine
> integrations and tools need as well. The proposed model and boundaries look
> right to me.
> Best,
> Jiajia
> ------------------------------------------------------------------
> From:Jingsong Li <[email protected]>
> Send Time:Mon, Aug 24, 2026, 18:21
> To:dev<[email protected]>
> Subject:[DISCUSS] Introduce REST permission management APIs
> Hi community,
> I'd like to discuss introducing a language-neutral permission
> management contract for Paimon's REST Catalog support.
> RESTCatalog is becoming the common catalog interface across engines
> and services. Authentication and authorization decisions should remain
> responsibilities of the REST server, but clients still need an
> interoperable way to list, grant, and revoke permissions without
> depending on a vendor-specific SDK.
> I prepared a POC in the following draft PR:
> https://github.com/apache/paimon/pull/9377 <
> https://github.com/apache/paimon/pull/9377 >
> The current proposal has the following boundaries:
> - Add a small PermissionManagement contract with list, grant, and
> revoke operations.
> - Expose PermissionManagement directly from RESTCatalog instead of
> changing the generic Catalog interface. Other catalog implementations
> are therefore not required to support it.
> - Make the corresponding RESTApi methods public so Java clients and
> engine integrations can use the same transport contract.
> - Define a separate rest-management-open-api.yaml with these endpoints:
>  - GET /v1/catalogs/{catalog}/permissions
>  - POST /v1/catalogs/{catalog}/permissions/grant
>  - POST /v1/catalogs/{catalog}/permissions/revoke
> - Use a flat resource-oriented permission model covering catalog,
> database, table, view, function, column, row filter, and column
> masking permissions, with optional expiration.
> - Keep user and role lifecycle, authentication, policy persistence,
> and authorization enforcement outside this API and under the
> responsibility of the REST server implementation.
> - Initially expose the capability to Spark SQL through
> grant_permission, list_permissions, and revoke_permission procedures.
> Future GRANT/REVOKE SQL syntax could be layered on the same Java and
> REST contracts without changing the server API.
> I would appreciate feedback on the following questions:
> 1. Should Paimon define this permission management contract as part of
> its REST Catalog ecosystem?
> 2. Is exposing it only through RESTCatalog the right initial boundary,
> or should it be modeled as a generic Catalog capability?
> 3. Should the management OpenAPI contract remain separate from
> rest-catalog-open-api.yaml?
> 4. Are the proposed resource model and endpoint shapes suitable for
> different REST Catalog server implementations?
> 5. Are Spark procedures a reasonable first SQL integration, while
> leaving dedicated permission SQL syntax for a follow-up?
> The PR is intended as a POC for discussion, and I am happy to adjust
> the design based on community feedback.
> Best,
> Jingsong
>

Reply via email to