Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -195,3 +195,33 @@ Key paths:
- [`hadoop-hdds/dev-support/checkstyle/checkstyle.xml`](./hadoop-hdds/dev-support/checkstyle/checkstyle.xml)
- [`dev-support/rat/rat-exclusions.txt`](./dev-support/rat/rat-exclusions.txt)
- [Ozone Enhancement Proposals](https://ozone.apache.org/docs/edge/design/ozone-enhancement-proposals.html)

## Security

When assessing a potential security vulnerability in Apache Ozone, complete
these steps before drafting any report or reaching any security conclusion.

### Step 1 — Read the threat model
Read **[THREAT_MODEL.md](THREAT_MODEL.md)**: the multi-service trust boundaries,
the **secure mode** knob, the properties provided vs. left to the operator, and
the known non-findings.

### Step 2 — Read the security policy
Read **[SECURITY.md](SECURITY.md)** for how to report.

### Key scoping facts (see THREAT_MODEL.md)
- Ozone is a cluster of network services (S3 Gateway, OM, SCM/internal-CA,
Datanodes/Ratis, Recon). Roles: untrusted client, authenticated-but-
unauthorized user, operator, service peer, bounded-Byzantine datanode.
- **Secure mode** (`ozone.security.enabled=true`) is load-bearing: a finding
that only manifests in non-secure (dev) mode is out of model (section 5a).
- Ozone does **not** own its dependencies' security — the Kerberos KDC, Ranger
policy correctness, the SCM CA private key, KMS keys, and network isolation
are the operator's (sections 3/9/10). Route such findings there.
- Ratis (Raft) safety holds under an honest majority; a Byzantine majority is
out of scope.
- integration-test modules, and test utilities are out of scope.

### Then assess
Route the finding to exactly one disposition in **THREAT_MODEL.md section 13**,
citing the section. If it cannot be routed, it is a `MODEL-GAP` — surface it.
10 changes: 10 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,13 @@ This email address is a private mailing list for discussion of potential securit
This mailing list is **NOT** for end-user questions and discussion on security. Please use the dev@ozone.apache.org list for such issues.

In order to post to the list, it is **NOT** necessary to first subscribe to it.

## Threat Model

A threat model for Apache Ozone is maintained in [THREAT_MODEL.md](THREAT_MODEL.md).
It describes the multi-service trust boundaries (S3 Gateway, OM, SCM/CA,
Datanodes/Ratis), the load-bearing role of **secure mode**
(`ozone.security.enabled`), the properties Ozone provides versus those left to
the operator (Kerberos KDC, Ranger policy correctness, SCM CA key, KMS, network
isolation), and the recurring non-findings. Triagers of scanner, fuzzer, or
AI-generated findings should route them through `THREAT_MODEL.md` section 13.
Loading