Skip to content

GEP-0063: Diki Extension#64

Open
AleksandarSavchev wants to merge 1 commit into
gardener:mainfrom
AleksandarSavchev:gep/63
Open

GEP-0063: Diki Extension#64
AleksandarSavchev wants to merge 1 commit into
gardener:mainfrom
AleksandarSavchev:gep/63

Conversation

@AleksandarSavchev
Copy link
Copy Markdown
Member

  • How to categorize this PR:
    /area security
    /area compliance
    /kind enhancement
  • One-line PR description: Add GEP for Diki Extension (gardener extension that would deploy the diki-operator)
  • Other comments:

@gardener-prow gardener-prow Bot added area/security Security related area/compliance Compliance related kind/enhancement Enhancement, improvement, extension labels May 12, 2026
@gardener-prow
Copy link
Copy Markdown

gardener-prow Bot commented May 12, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign vlerenc for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@gardener-prow gardener-prow Bot added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. cla: yes Indicates the PR's author has signed the cla-assistant.io CLA. labels May 12, 2026
Copy link
Copy Markdown
Member

@vpnachev vpnachev left a comment

Choose a reason for hiding this comment

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

Thanks for the proposal, very well structured!

My impression is that it is covering quite some diki-operator specifics like the CRDs and how the operator is running the scans, but this proposal tries to focus on the extension. Should the diki-operator become a detailed topic of this GEP, or does it need a dedicated one, or keep its development without a GEP (and try to clean up this extension from operator specific topics)?

- [diki-operator](#diki-operator)
- [diki-admission-controller](#diki-admission-controller)
- [diki-run](#diki-run)
- [Architecture](#architecture)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Looks like there is no paragraph named Architecture

burdens and makes compliance accessible to all shoot users through familiar
Kubernetes resource semantics.

### Goals
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think it will be of common interest to scan not only end-user shoot clusters, but also Seeds, Gardens and probably self-hosted shoots. Could you extend the proposal so that the extension covers also these use cases?

out of scope.
- Integration with the Gardener Dashboard.


Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

You can remove one of the two empty lines here.

Suggested change


- Introduce `gardener-extension-diki` as a Gardener extension
that deploys the `diki-operator` into shoot control planes on seeds.
- Allow shoot users to run on-demand compliance scans by creating a
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Do you envision to support configuring the scans and report outputs via the Gardener API? Admins in the shoot clusters can interfere with the diki CRDs and misconfigure them, Gardener users may want to define only once the rulesets for all of their shoots.

`ComplianceScan` or `ScheduledComplianceScan` resources. The `diki-operator` in
the seed watches these resources (via the shoot API server) and orchestrates
scan execution by creating `diki-run` Jobs in the shoot's control-plane namespace.
The `diki-run` Pod writes summary reports back to the `ComplianceScan` status
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Will diki scan only the data plane? Considering it is running in the control plane and have access to the control plane components, will it be an option for the end-users to get reports about their control plane compliance posture?

| Phase | Behaviour |
|-------|-----------|
| Reconcile | Deploys `diki-operator` and diki-admission-controller to the shoot namespace on the seed. Creates a `ManagedResource` with CRDs, RBAC, and supporting resources for the shoot cluster. Waits for `ManagedResource` health before marking the `Extension` as reconciled. |
| Delete | Deletes the `diki-operator` deployment and the `ManagedResource`. Waits for all managed objects to be removed from the shoot cluster before completing. |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Will it delete also the custom resource definitions for the ComplianceScan, ScheduledComplianceScan, ReportOutput, etc.?

this ruleset require access to the garden cluster (e.g., to inspect Shoot and
CloudProfile resources). Supporting this ruleset will require a mechanism for
the diki-run Job to obtain scoped, read-only garden cluster credentials —
a design that is deferred to a future iteration.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

There is already a concept how extensions to get access to the Gardener API, however I am not sure diki really need it, both the shoot and cloudprofile specs are available in the extensions.gardener.cloud/v1alpha1.Cluster resource. The diki-extension (or the operator) can read the resource and extract the Shoot and the CloudProfile out of it.

a design that is deferred to a future iteration.
- Version management: Expose available Diki versions and ruleset versions
to users via the API.
- Persistent storage backends: Add support for PostgreSQL, OpenSearch, and
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Do you envision an option for non-solution specific output? Such solution should satisfy the need of those users that are using not widely adopted storage products.

- Dashboard integration: Integrate with the Gardener Dashboard to
visualize compliance scan summary results, and allow users to trigger
scans from the UI.
- Report access proxy: Provide an authenticated proxy or server for
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is this scoped only to reports stored within the Seed or Gardener installation, e.g. managed storage?


An alternative architecture would deploy the compliance CRDs
(`ComplianceScan`, `ReportOutput`, `ScheduledComplianceScan`) as namespaced
resources in the garden cluster, while running the compliance operator in a
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I would still find it valuable if I can configure some scan jobs centrally and rely they are applied to all of my shoots or keep the configuration together with the shoot spec.

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

Labels

area/compliance Compliance related area/security Security related cla: yes Indicates the PR's author has signed the cla-assistant.io CLA. kind/enhancement Enhancement, improvement, extension size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants