-
Notifications
You must be signed in to change notification settings - Fork 116
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Documentation for password management
- Loading branch information
Showing
2 changed files
with
156 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
# Password Management | ||
|
||
- [Global kubernetes secret object](#global-kubernetes-secret-object) | ||
- [Default behavior of global kubernetes secret object](#default-behavior-of-global-kubernetes-secret-object) | ||
- [Splunk Secret Tokens in the global secret object](#splunk-secret-tokens-in-the-global-secret-object) | ||
- [HEC Token](#hec-token) | ||
- [Default administrator password](#default-administrator-password) | ||
- [Pass4symmkey](#pass4symmkey) | ||
- [IDXC Pass4symmkey](#idxc-pass4symmkey) | ||
- [SHC Pass4symmkey](#shc-pass4symmkey) | ||
- [Information for Splunk Enterprise administrator](#information-for-splunk-enterprise-administrator) | ||
- [Secrets on Docker Splunk](#secrets-on-docker-splunk) | ||
|
||
## Global kubernetes secret object | ||
A global kubernetes secret object acts as a global source of splunk secret tokens for all Splunk Enterprise CRs in a kubernetes namespace. It's name follows the format "splunk-`<namespace`>-secret" where `<namespace`> represents the namespace we are operating in. The contents of this object are volume mounted on all the pods within a kubernetes namespace. | ||
|
||
This approach: | ||
- Eliminates any mismatch between operator-generated secrets and admin provided secrets as all secrets are synced into a common object. | ||
- Allows for dynamic adoption and modification of secrets. | ||
|
||
## Default behavior of global kubernetes secret object | ||
|
||
For a given namespace upon the creation of the first Splunk Enterprise CR, the operator checks for the existence of a global kubernetes secret object: | ||
|
||
- If the object does not exist, | ||
- Creates the global kubernetes secret object with name splunk-`<namespace`>-secret | ||
- Auto-generates(except for S3 specific tokens) & stores all the Splunk secret tokens into the global kubernetes secret object | ||
- If the object exists, | ||
- Reads the configured Splunk secret tokens in the global secret object | ||
- Auto-generates(except for S3 specific tokens) & stores only the missing Splunk secret tokens into the global secret object | ||
|
||
Note: Before the creation of any Splunk deployments in the kubernetes namespace, the admin can create a global kubernetes secret object with the tokens mentioned below so that the operator uses these values to deploy. | ||
|
||
### Splunk Secret Tokens in the global secret object | ||
The configurable Splunk Secret Tokens include: | ||
|
||
#### HEC Token | ||
**Key String in global kubernetes secret object**: `hec_token` | ||
**Description**: hec_token is used to authenticate clients sending data into Splunk Enterprise via HTTP connections. | ||
|
||
#### Default administrator password | ||
**Key String in global kubernetes secret object**: `password` | ||
**Description**: password refers to the default administrator password for Splunk. | ||
|
||
#### Pass4symmkey | ||
**Key String in global kubernetes secret object**: `pass4symmkey` | ||
**Description**: pass4symmkey is an authentication token for inter-communication within Splunk Enterprise. | ||
|
||
#### IDXC Pass4symmkey | ||
**Key String in global kubernetes secret object**: `idxc.secret` | ||
**Description**: idxc.secret is an authentication token for inter-communication specifically for indexer clustering in Splunk Enterprise. | ||
|
||
#### SHC Pass4symmkey | ||
**Key String in global kubernetes secret object**: `shc.secret` | ||
**Description**: shc.secret is an authentication token for inter-communication specifically for search head clustering in Splunk Enterprise. | ||
|
||
For specifications on Splunk secret tokens refer [Splunk docs](https://docs.splunk.com) | ||
|
||
For examples of performing CRUD operations on the global secrets object refer this [link](Examples.md#managing-global-kubernetes-secret-object). For more information | ||
on managing kubernetes secret objects refer [here](https://kubernetes.io/docs/tasks/configmap-secret/managing-secret-using-kubectl/) | ||
|
||
## Information for Splunk Enterprise administrator | ||
- The default administrator account cannot be disabled on any Splunk Enterprise instance. The kubernetes operator uses this account to interact with all Splunk Enterprise instances in the namespace. | ||
- The passwords managed using the global kubernetes secret object should never be changed using Splunk Enterprise tools (CLI, UI) | ||
- The default administrator account must use the global kubernetes secret object for any password changes. See [here](Examples.md#managing-global-kubernetes-secret-object) | ||
- After initiating a update/delete operation on the global secrets object, the operator will require time to finish setting the changes on the all Splunk Enterprise instances in the namespace during which disruption of splunk services can be expected while the secret updates are happening. A status check on all the Splunk Enterprise cluster tiers is required. | ||
|
||
## Secrets on Docker Splunk | ||
When Splunk Enterprise is deployed on a docker container, ansible playbooks are used to setup Splunk. Ansible playbooks interpret the environment variable SPLUNK_DEFAULTS_URL in the container as the location to read the Splunk Secret Tokens from. The tokens are used to setup Splunk Instances running on containers inside pods. |