-
Notifications
You must be signed in to change notification settings - Fork 5k
feat(rbac): access control #33822
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(rbac): access control #33822
Conversation
Summary of ChangesHello @kailixu, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly upgrades the database's security infrastructure by integrating a robust Role-Based Access Control (RBAC) system. This enhancement provides administrators with fine-grained control over user and role permissions, allowing for precise definition of access rights across various database objects and data levels. The new system facilitates more efficient and secure management of who can perform what actions on which resources, laying a foundation for advanced security policies. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces a comprehensive Role-Based Access Control (RBAC) system, including new data structures and functionalities for managing roles and granular privileges. Key changes involve adding new system tables and message types for roles, defining detailed privilege types (system, object, legacy) with support for row-level, column-level, and tag-based table privileges, and updating user authentication responses to reflect this new privilege model. New commands for creating, dropping, and altering roles are added, along with corresponding AST nodes and serialization/deserialization logic. The privilege system now uses SPrivSet instead of simple int64_t bitmasks, and user/role objects are updated to store these new privilege sets and associated hash objects for fine-grained control. Additionally, ownership fields are introduced to various metadata structures (tables, views, databases, indexes, mounts, topics, streams). Review comments highlight an incomplete implementation for retrieving column privileges in mndRetrieveColPrivileges, suggest removing a duplicate error code TSDB_CODE_ROLE_SUBROLE_EXCEEDED, and point out a typo in the macro TSDB_PRIVILEDGE_COLS_LEN.
| // typedef struct SColNameFlag { | ||
| // col_id_t colId; | ||
| // char colName[TSDB_COL_NAME_LEN]; | ||
| // int8_t flag; | ||
| // } SColNameFlag; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
include/util/tdef.h
Outdated
| #define TSDB_PRIV_MAX_KEY_LEN (TSDB_OBJ_FNAME_LEN + TSDB_TABLE_NAME_LEN + TSDB_NAME_DELIMITER_LEN + 10) | ||
| #define TSDB_PRIV_MAX_TBL_POLICY 32 | ||
| #define TSDB_PRIV_MAX_INPUT_ARGS 256 | ||
| #define TSDB_PRIVILEDGE_COLS_LEN 12 * 1024 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
find test cases failed, and would reopen when feat is done. |
Description
Please briefly describe the code changes in this pull request.
<Close/close/Fix/fix/Resolve/resolve>:
Checklist
Please check the items in the checklist if applicable.