JarroVGIT commented on issue #12263:
URL: https://github.com/apache/iceberg/issues/12263#issuecomment-3730570582

   @RussellSpitzer I think I may have found an avenue that does not require any 
change to the Table spec, nor the REST spec, but with limitations. Like 
mentioned above, the key requirements are:
   - Possibility to separate RBAC (in the catalog)
   - Separate location (preferred, due to vended credentials)
   - Completely independent lifecycle (e.g. schema changes/drops/maintenance 
should not interfere).
   
   Limitations: I haven't thought it through for clone-of-clone scenario's. 
   
   The key learning today was that the REST catalog specifies that multiple 
credentials[>1] (for different path prefixes) can be returned in a `GET 
<table>` (or `loadTable`) request. In the implementation of a catalog I looked 
at, it (logically) only returned a single credential, but this is something 
that could be changed (on the implementation side). Not sure if readers can 
deal with it, but that is a tomorrow-problem for now. 
   
   Then, on the catalog side, I could:
   - Add an endpoint to do a clone, which does quite a bit, e.g.: 
     - copy metadata to new location and strip it from history, new UUID, etc.
     - add some custom property like `table.clone.from`,
     - put tags on source snapshot and target snapshot (prevent maintenance)
     - register clone table.
   - Change logic of creating credentials based on existence of 
`table.clone.from` to generate more than one vended credential.
   - Additional checks and logic on `DROP` requests
   
   It isn't perfect, and it puts a lot of burden on the catalog implementation, 
but I think this could work. The most important thing is that it doesn't 
require a specification change and (assuming readers can handle multiple 
credentials for a table) doesn't change the reader requirements. 
   
   [>1]: I did find the document where this specification of the REST spec was 
discussed, but I couldn't find a rationale of why this was an array and not 
just a single `credential` field. I'll have to look tomorrow how readers would 
handle this though.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to