--- title: Security Context --- :::note - Examples under each key are only to be used as a placement guide - See the [Full Examples](/truecharts-common/container/securitycontext#full-examples) section for complete examples. ::: ## Appears in - `.Values.workload.$name.podSpec.containers.$name` - `.Values.workload.$name.podSpec.initContainers.$name` --- ## `securityContext` Define securityContext for the container | | | | ---------- | -------------------------------------------------------------------- | | Key | `workload.$name.podSpec.containers.$name.securityContext` | | Type | `map` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainer) | Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: {} ``` --- ### `securityContext.runAsUser` Define the runAsUser for the container | | | | ---------- | ----------------------------------------------------------------------------- | | Key | `workload.$name.podSpec.containers.$name.securityContext.runAsUser` | | Type | `int` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerrunasuser) | Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: runAsUser: 568 ``` --- ### `securityContext.runAsGroup` Define the runAsGroup for the container | | | | ---------- | ------------------------------------------------------------------------------ | | Key | `workload.$name.podSpec.containers.$name.securityContext.runAsGroup` | | Type | `int` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerrunasgroup) | Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: runAsGroup: 568 ``` --- ### `securityContext.readOnlyRootFilesystem` Define the readOnlyRootFilesystem for the container | | | | ---------- | ------------------------------------------------------------------------------------------ | | Key | `workload.$name.podSpec.containers.$name.securityContext.readOnlyRootFilesystem` | | Type | `bool` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerreadonlyrootfilesystem) | Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: readOnlyRootFilesystem: true ``` --- ### `securityContext.allowPrivilegeEscalation` Define the allowPrivilegeEscalation for the container | | | | ---------- | -------------------------------------------------------------------------------------------- | | Key | `workload.$name.podSpec.containers.$name.securityContext.allowPrivilegeEscalation` | | Type | `bool` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerallowprivilegeescalation) | Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: allowPrivilegeEscalation: false ``` --- ### `securityContext.privileged` Define the privileged for the container | | | | ---------- | ------------------------------------------------------------------------------ | | Key | `workload.$name.podSpec.containers.$name.securityContext.privileged` | | Type | `bool` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerprivileged) | Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: privileged: false ``` --- ### `securityContext.runAsNonRoot` Define the runAsNonRoot for the container | | | | ---------- | -------------------------------------------------------------------------------- | | Key | `workload.$name.podSpec.containers.$name.securityContext.runAsNonRoot` | | Type | `bool` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerrunasnonroot) | Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: runAsNonRoot: true ``` --- ### `securityContext.capabilities` Define the capabilities for the container :::note If at least one capability is defined in either [`add`](/truecharts-common/container/securitycontext/#securitycontextcapabilitiesadd) or [`drop`](/truecharts-common/container/securitycontext/#securitycontextcapabilitiesdrop) on container level, it will **NOT** get merged with the value(s) from the `.Values.securityContext.container.capabilities.[add/drop]`. But it will override them. ::: :::tip When setting capabilities for containers, remember to **NOT** include `CAP_` prefix. For example, `CAP_NET_ADMIN` should be `NET_ADMIN`. This is not specific to this chart, but a general Kubernetes thing. ::: | | | | ---------- | -------------------------------------------------------------------------------- | | Key | `workload.$name.podSpec.containers.$name.securityContext.capabilities` | | Type | `map` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainercapabilities) | Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: capabilities: {} ``` --- #### `securityContext.capabilities.add` Define the capabilities.add for the container | | | | ---------- | ----------------------------------------------------------------------------------- | | Key | `workload.$name.podSpec.containers.$name.securityContext.capabilities.add` | | Type | `list` of `string` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainercapabilitiesadd) | Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: capabilities: add: [] ``` --- #### `securityContext.capabilities.drop` Define the capabilities.drop for the container | | | | ---------- | ------------------------------------------------------------------------------------ | | Key | `workload.$name.podSpec.containers.$name.securityContext.capabilities.drop` | | Type | `list` of `string` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainercapabilitiesdrop) | Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: capabilities: drop: [] ``` --- ### `securityContext.seccompProfile` Define the seccompProfile for the container | | | | ---------- | ---------------------------------------------------------------------------------- | | Key | `workload.$name.podSpec.containers.$name.securityContext.seccompProfile` | | Type | `map` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerseccompprofile) | Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: seccompProfile: {} ``` --- #### `securityContext.seccompProfile.type` Define the seccompProfile.type for the container | | | | ---------- | -------------------------------------------------------------------------------------- | | Key | `workload.$name.podSpec.containers.$name.securityContext.seccompProfile.type` | | Type | `string` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerseccompprofiletype) | Valid Values: - `RuntimeDefault` - `Localhost` - `Unconfined` Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: seccompProfile: type: Localhost ``` --- #### `securityContext.seccompProfile.profile` Define the seccompProfile.profile for the container :::note Only **required** when `securityContext.seccompProfile.type` is `Localhost`. ::: | | | | ---------- | ----------------------------------------------------------------------------------------- | | Key | `workload.$name.podSpec.containers.$name.securityContext.seccompProfile.profile` | | Type | `string` | | Required | ✅ | | Helm `tpl` | ❌ | | Default | See [here](/truecharts-common/securitycontext#securitycontextcontainerseccompprofileprofile) | Example ```yaml workload: workload-name: podSpec: containers: container-name: securityContext: seccompProfile: type: Localhost profile: path/to/profile.json ``` --- ## Full Examples ```yaml workload: workload-name: enabled: true primary: true podSpec: containers: container-name: enabled: true primary: true securityContext: runAsNonRoot: true runAsUser: 568 runAsGroup: 568 readOnlyRootFilesystem: true allowPrivilegeEscalation: false privileged: false seccompProfile: type: Localhost profile: path/to/profile.json capabilities: add: [] drop: - ALL ```