jarredhj0214 opened a new issue, #13845:
URL: https://github.com/apache/gravitino/issues/13845

   ### Version
   main branch
   
   ### Describe what's wrong
   Flink resolves qualified names by probing candidate objects. After 
`loadTable` returns 404, the Gravitino connector falls back to `loadView`. 
Unlike table loading, view loading does not support authorized existence 
probing, so a missing candidate can return 403 and abort SQL validation.
   
   ### Error message and/or stacktrace
   ```text
   ForbiddenException: User 'user' is not authorized to perform operation 
'loadView' on metadata 'metalake.catalog.current_db.source_db'
   ```
   
   ### How to reproduce
   1. Enable authorization and configure the Gravitino Flink connector with a 
Hive catalog.
   2. Grant the caller table access and table-like probe privileges, without 
view ownership or SELECT_VIEW.
   3. Execute an INSERT referencing `source_db.source_table` while the current 
database is `current_db`.
   4. Name resolution can probe `current_db.source_db`; the table probe returns 
404, while the view fallback returns 403 and SQL validation fails. Fully 
qualified names can similarly trigger a probe using the catalog name as a 
candidate table name.
   
   Expected: authorized probes of missing candidate views return 404, allowing 
name resolution to continue. Existing views without load permission must remain 
forbidden.
   
   ### Additional context
   Table loading already supports existence probing through 
`PROBE_TABLE_LIKE_AUTHORIZATION_EXPRESSION`. View loading should follow the 
same mechanism and use the internal view dispatcher to avoid emitting 
user-facing events for internal probes.
   


-- 
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]

Reply via email to