Skip to content

[server] Add authorization to databaseExists and tableExists RPC call…#3078

Open
vaibhavk1992 wants to merge 3 commits intoapache:mainfrom
vaibhavk1992:add-authorization-database-table-exists
Open

[server] Add authorization to databaseExists and tableExists RPC call…#3078
vaibhavk1992 wants to merge 3 commits intoapache:mainfrom
vaibhavk1992:add-authorization-database-table-exists

Conversation

@vaibhavk1992
Copy link
Copy Markdown
Contributor

Currently, the databaseExists and tableExists RPC methods do not enforce authorization, allowing any authenticated user to check if databases or tables exist, which poses a security risk.

This commit adds authorization checks to both methods:

  • databaseExists: Checks DESCRIBE permission on the database
  • tableExists: Checks DESCRIBE permission on the table

For security, both methods return false for unauthorized access, preventing information disclosure. Unauthorized users cannot distinguish between "resource doesn't exist" and "no permission", which prevents reconnaissance attacks to map database structure.

Changes:

  • Modified RpcServiceBase.databaseExists() to catch authorization exceptions
  • Modified RpcServiceBase.tableExists() to catch authorization exceptions
  • Added testDatabaseExistsAuthorization() integration test
  • Added testTableExistsAuthorization() integration test

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds authorization enforcement to “existence check” RPCs to prevent unauthorized users from probing database/table names via databaseExists and tableExists.

Changes:

  • Add DESCRIBE authorization checks to RpcServiceBase.databaseExists() and RpcServiceBase.tableExists(), returning false when unauthorized to avoid information disclosure.
  • Add integration tests validating the new “unauthorized => false” behavior for both APIs.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
fluss-server/src/main/java/org/apache/fluss/server/RpcServiceBase.java Enforces DESCRIBE authorization for database/table existence checks and hides existence when unauthorized.
fluss-client/src/test/java/org/apache/fluss/client/security/acl/FlussAuthorizationITCase.java Adds IT coverage for unauthorized vs authorized outcomes of databaseExists/tableExists.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread fluss-server/src/main/java/org/apache/fluss/server/RpcServiceBase.java Outdated
@apache apache deleted a comment from Copilot AI Apr 20, 2026
Comment thread fluss-server/src/main/java/org/apache/fluss/server/RpcServiceBase.java Outdated
Comment thread fluss-server/src/main/java/org/apache/fluss/server/RpcServiceBase.java Outdated
vaibhav kumar and others added 2 commits May 5, 2026 14:44
apache#2007)

Currently, the databaseExists and tableExists RPC methods do not enforce
authorization, allowing any authenticated user to check if databases or
tables exist, which poses a security risk.

This commit adds authorization checks to both methods:
- databaseExists: Checks DESCRIBE permission on the database
- tableExists: Checks DESCRIBE permission on the table

For security, both methods return false for unauthorized access, preventing
information disclosure. Unauthorized users cannot distinguish between
"resource doesn't exist" and "no permission", which prevents reconnaissance
attacks to map database structure.

Changes:
- Modified RpcServiceBase.databaseExists() to catch authorization exceptions
- Modified RpcServiceBase.tableExists() to catch authorization exceptions
- Added testDatabaseExistsAuthorization() integration test
- Added testTableExistsAuthorization() integration test

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@wuchong wuchong force-pushed the add-authorization-database-table-exists branch from f66bfc9 to 43b39c2 Compare May 5, 2026 06:56
Copy link
Copy Markdown
Member

@wuchong wuchong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I pushed a commit to address my comments.

@vaibhavk1992
Copy link
Copy Markdown
Contributor Author

@wuchong Thanks for the fix
I will work on the other RPC calls this weekend.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants