Skip to content

Conversation

@pflynn-virtru
Copy link
Member

Proposed Changes

This pull request adds support for managing certificates within namespaces in the policy API and documentation. It introduces new data models, API endpoints, and documentation for associating certificates with namespaces, including assigning and removing certificates, and listing root certificates as part of a namespace's properties.

  • Introduced AssignCertificateToNamespace and RemoveCertificateFromNamespace RPCs to NamespaceService.
  • Defined supporting protobuf messages, schemas, and service handlers.
  • Updated OpenAPI documentation to include the new APIs.
  • Extended namespaces with root certificate support.

Checklist

  • I have added or updated unit tests
  • I have added or updated integration tests (if appropriate)
  • I have added or updated documentation

Testing Instructions

- Introduced AssignCertificateToNamespace and RemoveCertificateFromNamespace RPCs to NamespaceService.
- Defined supporting protobuf messages, schemas, and service handlers.
- Updated OpenAPI documentation to include the new APIs.
- Extended namespaces with root certificate support.
@pflynn-virtru pflynn-virtru requested review from a team as code owners October 14, 2025 17:53
@github-actions github-actions bot added comp:policy Policy Configuration ( attributes, subject mappings, resource mappings, kas registry) comp:sdk A software development kit, including library, for client applications and inter-service communicati docs Documentation size/s labels Oct 14, 2025
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @pflynn-virtru, 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 enhances the policy API by enabling the management of root certificates at the namespace level. This allows for more granular control over trust chains, associating specific certificates with namespaces, and improving the security and flexibility of policy enforcement. The changes encompass new protobuf definitions, API endpoints, corresponding SDK updates, and comprehensive documentation.

Highlights

  • Certificate Management: Introduced new API endpoints and data models for assigning and removing root certificates within specific namespaces, enhancing trust chain management.
  • Namespace Extension: The Namespace protobuf message now includes a root_certs field to store associated certificates, allowing namespaces to directly manage their trust anchors.
  • New RPCs: Added AssignCertificateToNamespace and RemoveCertificateFromNamespace RPCs to the NamespaceService for programmatic certificate management.
  • Documentation Update: The OpenAPI documentation has been updated to reflect the new certificate-related APIs and data structures, ensuring clear usage guidelines.
  • SDK Integration: The Go SDK client for NamespaceService has been extended to include the new certificate assignment and removal methods, providing immediate client-side support.
Ignored Files
  • Ignored by pattern: docs/openapi/**/* (9)
    • docs/openapi/policy/actions/actions.openapi.yaml
    • docs/openapi/policy/attributes/attributes.openapi.yaml
    • docs/openapi/policy/namespaces/namespaces.openapi.yaml
    • docs/openapi/policy/objects.openapi.yaml
    • docs/openapi/policy/obligations/obligations.openapi.yaml
    • docs/openapi/policy/registeredresources/registered_resources.openapi.yaml
    • docs/openapi/policy/resourcemapping/resource_mapping.openapi.yaml
    • docs/openapi/policy/subjectmapping/subject_mapping.openapi.yaml
    • docs/openapi/policy/unsafe/unsafe.openapi.yaml
  • Ignored by pattern: protocol/**/* (4)
    • protocol/go/policy/namespaces/namespaces.pb.go
    • protocol/go/policy/namespaces/namespaces_grpc.pb.go
    • protocol/go/policy/namespaces/namespacesconnect/namespaces.connect.go
    • protocol/go/policy/objects.pb.go
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 by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

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 pull request 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.


Root certs now find home, Namespaces hold trust's strong chain, Secure paths unfold.

Footnotes

  1. 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.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a 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 managing root certificates within namespaces. The changes include new protobuf messages and RPCs in the policy service, updates to the Go SDK wrapper, and regenerated documentation.

The protobuf definitions are well-structured and follow existing patterns. I've added a few suggestions to improve the comments in the .proto files, which will enhance the clarity of the generated documentation. I also suggested a minor change to a comment block style to improve how it's rendered in the documentation.

@pflynn-virtru pflynn-virtru changed the title feat(core): Proto - root certificates by namespace feat(policy): Proto - root certificates by namespace Oct 14, 2025
- Added descriptive comments for protobuf messages in Namespace<>Certificate operations.
- Introduced optional metadata to the certificate schema.
…data fields

- Added missing descriptions to Namespace<>Certificate operations in protobuf, OpenAPI, and generated files.
- Introduced "Optional metadata" descriptions to certificate-related schemas across various policies.
- Improved comments and formatting for consistency in generated code and documentation.
@github-actions
Copy link
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 176.929081ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 112.718315ms

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 363.320265ms
Throughput 275.24 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 40.106550425s
Average Latency 398.699293ms
Throughput 124.67 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 26.881954561s
Average Latency 267.865406ms
Throughput 186.00 requests/second

@github-actions
Copy link
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 173.162476ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 102.441237ms

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 382.252959ms
Throughput 261.61 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 39.780057865s
Average Latency 396.051152ms
Throughput 125.69 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 26.656111626s
Average Latency 265.70566ms
Throughput 187.57 requests/second

Copy link
Contributor

@jakedoublev jakedoublev left a comment

Choose a reason for hiding this comment

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

Proto changes LGTM (comments and policy conventions are clear)

@pflynn-virtru pflynn-virtru added this pull request to the merge queue Oct 14, 2025
Merged via the queue into main with commit 0edb359 Oct 14, 2025
32 checks passed
@pflynn-virtru pflynn-virtru deleted the feature/certicate-namespace branch October 14, 2025 20:35
github-merge-queue bot pushed a commit that referenced this pull request Oct 14, 2025
🤖 I have created a release *beep* *boop*
---


##
[0.12.0](protocol/go/v0.11.0...protocol/go/v0.12.0)
(2025-10-14)


### Features

* **authz:** defer to request auth as decision/entitlements entity
([#2789](#2789))
([feb34d8](feb34d8))
* **policy:** Proto - root certificates by namespace
([#2800](#2800))
([0edb359](0edb359))


### Bug Fixes

* **core:** deprecated stale protos and add better upgrade comments
([#2793](#2793))
([f2678cc](f2678cc))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: opentdf-automation[bot] <149537512+opentdf-automation[bot]@users.noreply.github.com>
github-merge-queue bot pushed a commit that referenced this pull request Oct 21, 2025
🤖 I have created a release *beep* *boop*
---


##
[0.10.0](sdk/v0.9.0...sdk/v0.10.0)
(2025-10-21)


### Features

* **policy:** Proto - root certificates by namespace
([#2800](#2800))
([0edb359](0edb359))
* **policy:** Protos List obligation triggers
([#2803](#2803))
([b32df81](b32df81))
* **sdk:** Add obligations support.
([#2759](#2759))
([3cccfd2](3cccfd2))
* **sdk:** Call init if obligations are empty.
([#2825](#2825))
([14191e4](14191e4))


### Bug Fixes

* **deps:** bump github.com/opentdf/platform/lib/ocrypto from 0.6.0 to
0.7.0 in /sdk ([#2810](#2810))
([1c5cf5f](1c5cf5f))
* **deps:** bump github.com/opentdf/platform/protocol/go from 0.12.0 to
0.13.0 in /sdk
([#2813](#2813))
([1643ed2](1643ed2))
* **sdk:** Fix the bug in ResourceLocator serialization logic
([#2791](#2791))
([01329d6](01329d6))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: opentdf-automation[bot] <149537512+opentdf-automation[bot]@users.noreply.github.com>
github-merge-queue bot pushed a commit that referenced this pull request Oct 22, 2025
🤖 I have created a release *beep* *boop*
---


##
[0.11.0](service/v0.10.0...service/v0.11.0)
(2025-10-22)


### Features

* **authz:** add obligation fulfillment logic to obligation PDP
([#2740](#2740))
([2f8d30d](2f8d30d))
* **authz:** audit logs should properly handle obligations
([#2824](#2824))
([874ec7b](874ec7b))
* **authz:** defer to request auth as decision/entitlements entity
([#2789](#2789))
([feb34d8](feb34d8))
* **authz:** obligations protos within auth service
([#2745](#2745))
([41ee5a8](41ee5a8))
* **authz:** protovalidate tests for new authz obligations fields
([#2747](#2747))
([73e6319](73e6319))
* **authz:** service logic to use request auth as entity identifier in
PDP decisions/entitlements
([#2790](#2790))
([6784e88](6784e88))
* **authz:** wire up obligations enforcement in auth service
([#2756](#2756))
([11b3ea9](11b3ea9))
* **core:** propagate token clientID on configured claim via interceptor
into shared context metadata
([#2760](#2760))
([0f77246](0f77246))
* **kas:** Add required obligations to kao metadata.:
([#2806](#2806))
([16fb26c](16fb26c))
* **policy:** add FQNs to obligation defs + vals
([#2749](#2749))
([fa2585c](fa2585c))
* **policy:** Add obligation support to KAS
([#2786](#2786))
([bb1bca0](bb1bca0))
* **policy:** List obligation triggers rpc
([#2823](#2823))
([206abe3](206abe3))
* **policy:** namespace root certificates
([#2771](#2771))
([beaff21](beaff21))
* **policy:** Proto - root certificates by namespace
([#2800](#2800))
([0edb359](0edb359))
* **policy:** Protos List obligation triggers
([#2803](#2803))
([b32df81](b32df81))
* **policy:** Return built obligations fqns with triggers.
([#2830](#2830))
([e843018](e843018))
* **policy:** Return obligations from GetAttributeValue calls
([#2742](#2742))
([aa9b393](aa9b393))


### Bug Fixes

* **core:** CORS
([#2787](#2787))
([a030ac6](a030ac6))
* **core:** deprecate policy WithValue selector not utilized by RPC
([#2794](#2794))
([c573595](c573595))
* **core:** deprecated stale protos and add better upgrade comments
([#2793](#2793))
([f2678cc](f2678cc))
* **core:** Don't require known manager names
([#2792](#2792))
([8a56a96](8a56a96))
* **core:** Fix mode negation and core mode
([#2779](#2779))
([de9807d](de9807d))
* **core:** resolve environment loading issues
([#2827](#2827))
([9af3184](9af3184))
* **deps:** bump github.com/opentdf/platform/lib/ocrypto from 0.6.0 to
0.7.0 in /service
([#2812](#2812))
([a6d180d](a6d180d))
* **deps:** bump github.com/opentdf/platform/protocol/go from 0.12.0 to
0.13.0 in /service
([#2814](#2814))
([5e9c695](5e9c695))
* **deps:** bump github.com/opentdf/platform/sdk from 0.7.0 to 0.9.0 in
/service ([#2798](#2798))
([d6bc9a8](d6bc9a8))
* **deps:** bump github.com/opentdf/platform/sdk from 0.9.0 to 0.10.0 in
/service ([#2831](#2831))
([412dfd1](412dfd1))
* ECC key loading (deprecated)
([#2757](#2757))
([49990eb](49990eb))
* **policy:** Change to nil
([#2746](#2746))
([a449434](a449434))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: opentdf-automation[bot] <149537512+opentdf-automation[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp:policy Policy Configuration ( attributes, subject mappings, resource mappings, kas registry) comp:sdk A software development kit, including library, for client applications and inter-service communicati docs Documentation size/s

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants