Skip to content

Conversation

@rich7420
Copy link

@rich7420 rich7420 commented Jan 1, 2026

What changes were proposed in this pull request?

Migrate and combinato the v1 doc "Securing Ozone" https://ozone.apache.org/docs/edge/security/secureozone.html and "Securing Datanodes
"https://ozone.apache.org/docs/edge/security/securingdatanodes.html into v2 page "Configuring Kerberos" at https://ozone-site-v2.staged.apache.org/docs/administrator-guide/configuration/security/kerberos

What is the link to the Apache Jira?

HDDS-14268

How was this patch tested?

Check off which of the following tests were done on this change. If additional testing was done, please elaborate here as well.

  • The CI checks on my fork are passing
  • I verified the rendered content using a local preview
  • I manually verified the steps provided in this change work as described

Copy link
Contributor

@jojochuang jojochuang left a comment

Choose a reason for hiding this comment

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

I'll merge it as is.

@rich7420 please open jiras to follow up with the content that should go into System Internals.

Comment on lines +16 to +36
## Tokens

Ozone uses a notion of tokens to avoid overburdening the Kerberos server. When you serve thousands of requests per second, involving Kerberos might not work well. Hence once an authentication is done, Ozone issues delegation tokens and block tokens to the clients. These tokens allow applications to do specified operations against the cluster, as if they have kerberos tickets with them. Ozone supports following kinds of tokens.

### Delegation Token

Delegation tokens allow an application to impersonate a users kerberos credentials. This token is based on verification of kerberos identity and is issued by the Ozone Manager. Delegation tokens are enabled by default when security is enabled.

### Block Token

Block tokens allow a client to read or write a block. This is needed so that Datanodes know that the user/client has permission to read or make modifications to the block.

### S3AuthInfo

S3 uses a very different shared secret security scheme. Ozone supports the AWS Signature Version 4 protocol, and from the end users perspective Ozone's S3 feels exactly like AWS S3.

The S3 credential tokens are called S3 auth info in the code. These tokens are also enabled by default when security is enabled.

Each of the service daemons that make up Ozone needs a Kerberos service principal name and a corresponding [kerberos key tab](https://web.mit.edu/kerberos/krb5-latest/doc/basic/keytab_def.html) file.

All these settings should be made in `ozone-site.xml`.
Copy link
Contributor

Choose a reason for hiding this comment

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

These lines should move to System Internals --> Security --> Tokens

Comment on lines +92 to +98
#### Manual Approval

If these are brand new Datanodes and Kerberos key tabs are not present at the Datanodes, then this request for the Datanodes identity certificate is queued up for approval from the administrator (This is work in progress, not committed in Ozone yet). In other words, the chain of trust is established by the administrator of the cluster.

#### Automatic Approval

If you running under an container orchestrator like Kubernetes, we rely on Kubernetes to create a one-time token that will be given to Datanode during boot time to prove the identity of the Datanode container (This is also work in progress.)
Copy link
Contributor

Choose a reason for hiding this comment

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

not sure if this is implemented already. @ChenSammi or @fapifta any ideas?

| `hdds.datanode.http.auth.kerberos.principal` | Datanode HTTP server service principal. |
| `hdds.datanode.http.auth.kerberos.keytab` | The keytab file used by Datanode HTTP server to login as its service principal. |

### How a Datanode becomes secure
Copy link
Contributor

Choose a reason for hiding this comment

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

This and the rest of page should go into System Internals.

@jojochuang jojochuang merged commit 34fceaa into apache:HDDS-9225-website-v2 Jan 1, 2026
11 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.

2 participants