Skip to content

fix(operator): configure web access and deployment defaults - #880

Merged
Loognqiang merged 7 commits into
apache:masterfrom
kitalkuyo-gita:operator-web-access
Oct 31, 2026
Merged

Loognqiang merged 7 commits into
apache:masterfrom
kitalkuyo-gita:operator-web-access

Conversation

@kitalkuyo-gita

Copy link
Copy Markdown
Member

Summary

Require authenticated access to the Kubernetes operator’s management API and separate administrator and read-only permissions.

Anonymous requests receive HTTP 401. Authenticated viewers attempting write operations receive HTTP 403.

Changes

  • Add mandatory Bearer authentication for all /api endpoints.
  • Require an administrator token and support an optional, separate viewer token.
  • Reject missing, invalid, or identical credentials at startup.
  • Accept credentials only through an explicit Authorization header; disable session, Basic, and form authentication.
  • Add dashboard token entry and disconnect controls, keeping credentials in page memory.
  • Configure Helm credentials through an existing Kubernetes Secret.
  • Add a default-deny ingress NetworkPolicy and apply the existing Recreate deployment strategy.
  • Require an explicit operator image tag.
  • Add authentication and authorization regression tests.
  • Document deployment requirements, credential rotation, and the operator’s trust boundary.
  • Correct the private vulnerability-reporting address.

Deployment impact

Existing deployments must configure webSecurity.existingSecret and an explicit image.tag containing this application change.

The Secret must contain admin-token; viewer-token is optional. Standalone deployments must configure GEAFLOW_OPERATOR_ADMIN_TOKEN.

The default NetworkPolicy blocks inbound pod traffic when enforced by the CNI. Use local port forwarding or configure explicit ingress rules and HTTPS. Recreate deployments entail downtime.

Administrator access remains restricted to trusted operators: submitting jobs authorizes code execution. This change does not provide workload sandboxing or tenant isolation.

Validation

Completed:

  • Three frontend authentication tests executed through a local Node/TypeScript harness.
  • TypeScript syntax transpilation checks for changed frontend files.
  • YAML/XML parsing and Git whitespace checks.

Not yet completed:

  • Maven compilation, backend tests, Checkstyle, and RAT.
  • Full frontend Jest, type checking, and production build.
  • Helm rendering/lint and Kubernetes end-to-end validation.

Full validation was limited by unavailable local build tools and dependencies. The existing Spring Boot dependency baseline is retained and requires review before release.

Use finishWriting before querying or inspecting the index and close stores during cleanup. Assert terminal close behavior and Directory release while preserving the existing tokenization and serialized-document golden data.
Inherit Spring Boot test dependency management, align the engine and Checkstyle versions, remove the unsupported TestNG provider, and complete Kubernetes imports and security-test fixtures.

Build on a pinned Java 11 runtime and run the JVM in the foreground so invalid credentials stop the container. Align Helm's local-mode environment with the entrypoint.

@Leomrlin Leomrlin left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@Loognqiang Loognqiang left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@Loognqiang
Loognqiang merged commit 49f16d2 into apache:master Oct 31, 2026
2 checks passed
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