-
Notifications
You must be signed in to change notification settings - Fork 20
feat(core): add direct entitlement support #2630
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
base: main
Are you sure you want to change the base?
Conversation
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.
Summary of Changes
Hello @ryanulit, 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 introduces direct entitlement support for Virtru SaaS ERS, enhancing the Entity Resolution Service (ERS) to handle entitlements that do not require traditional subject mappings. It achieves this by adding a new DirectEntitlement
protobuf message and incorporating it into EntityRepresentation
. Furthermore, it refines the attribute resolution logic to support ad-hoc attributes, ensuring that resource attribute values can be processed even if not pre-registered, by dynamically creating synthetic attribute values. This change streamlines entitlement management and improves flexibility in how resources are authorized.
Highlights
- New DirectEntitlement Message: A new Protobuf message,
DirectEntitlement
, has been introduced. This message defines a fully qualified name (fqn
) and a list ofactions
, enabling the representation of entitlements that do not rely on traditional subject mappings. - Extended EntityRepresentation: The
EntityRepresentation
message has been extended to include arepeated DirectEntitlement direct_entitlements
field. This allows entities to directly carry entitlement information, streamlining the authorization process. - Enhanced Token-Based Entity Resolution Request: The
CreateEntityChainsFromTokensRequest
now accepts arepeated authorization.v2.Resource resources
field. This enhancement provides additional context for token-based entity resolution, improving the precision of entitlement decisions. - Ad-hoc Attribute Resolution: The system can now dynamically handle resource attribute values that are not pre-registered. The
getResourceDecisionableAttributes
function has been updated to extract values from FQNs and create syntheticAttributeAndValue
objects, ensuring broader compatibility with ad-hoc attributes. - Direct Entitlement Integration in PDP: The Policy Decision Point (PDP) has been updated to process
direct_entitlements
fromEntityRepresentation
. This allows FQN-to-action mappings to be directly incorporated into authorization decisions, bypassing the need for complex subject mappings in certain scenarios.
Using Gemini Code Assist
The 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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
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 .gemini/
folder in the base of the repository. Detailed instructions can be found here.
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.
Protobuf defined, Entitlements flow direct, Access now is clear.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
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 support for direct entitlements in the Entity Resolution Service. The changes include updates to the protobuf definitions to support this new feature, and modifications to the policy decision point logic to handle these direct entitlements.
My review has identified a few issues:
- A critical validation issue in the protobuf definition for
CreateEntityChainsFromTokensRequest
that will cause runtime errors. - A high-severity issue in
helpers.go
related to brittle and inefficient FQN parsing. - A high-severity logic error in
pdp.go
where direct entitlements overwrite existing entitlements instead of merging them.
I've provided detailed comments and suggestions for each of these points. Addressing them will improve the correctness and robustness of the new feature.
Benchmark results, click to expandBenchmark authorization.GetDecisions Results:
Benchmark authorization.v2.GetMultiResourceDecision Results:
Standard Benchmark Metrics Skipped or FailedBulk Benchmark Results
TDF3 Benchmark Results:
NANOTDF Benchmark Results:
|
Benchmark results, click to expandBenchmark authorization.GetDecisions Results:
Benchmark authorization.v2.GetMultiResourceDecision Results:
Standard Benchmark Metrics Skipped or FailedBulk Benchmark Results
TDF3 Benchmark Results:
NANOTDF Benchmark Results:
|
Benchmark results, click to expandBenchmark authorization.GetDecisions Results:
Benchmark authorization.v2.GetMultiResourceDecision Results:
Standard Benchmark Metrics Skipped or FailedBulk Benchmark Results
TDF3 Benchmark Results:
NANOTDF Benchmark Results:
|
Benchmark results, click to expandBenchmark authorization.GetDecisions Results:
Benchmark authorization.v2.GetMultiResourceDecision Results:
Standard Benchmark Metrics Skipped or FailedBulk Benchmark Results
TDF3 Benchmark Results:
NANOTDF Benchmark Results:
|
Benchmark results, click to expandBenchmark authorization.GetDecisions Results:
Benchmark authorization.v2.GetMultiResourceDecision Results:
Standard Benchmark Metrics Skipped or FailedBulk Benchmark Results
TDF3 Benchmark Results:
NANOTDF Benchmark Results:
|
Benchmark results, click to expandBenchmark authorization.GetDecisions Results:
Benchmark authorization.v2.GetMultiResourceDecision Results:
Standard Benchmark Metrics Skipped or FailedBulk Benchmark Results
TDF3 Benchmark Results:
NANOTDF Benchmark Results:
|
Proposed Changes
DirectEntitlement
proto message to be used in the entity resolution protos to support directly entitling a user to resource attribute value FQNsChecklist
Testing Instructions