@@ -10,39 +10,39 @@ description: >
1010 Concepts for keeping your cloud-native workload secure.
1111---
1212
13- Kubernetes is based on a cloud-native architecture, and draws on advice from the
14- {{< glossary_tooltip text="CNCF" term_id="cncf" >}} about good practice for
15- cloud native information security.
13+ Kubernetes is based on a cloud-native architecture and draws on advice from the
14+ {{< glossary_tooltip text="CNCF" term_id="cncf" >}} about good practices for
15+ cloud- native information security.
1616
17- Read on through this page for an overview of how Kubernetes is designed to
18- help you deploy a secure cloud native platform.
17+ Read on for an overview of how Kubernetes is designed to help you deploy a
18+ secure cloud- native platform.
1919
20- ## Cloud native information security
20+ ## Cloud- native information security
2121
2222{{< comment >}}
2323There are localized versions available of this whitepaper; if you can link to one of those
2424when localizing, that's even better.
2525{{< /comment >}}
2626
2727The CNCF [ white paper] ( https://github.com/cncf/tag-security/blob/main/community/resources/security-whitepaper/v2/CNCF_cloud-native-security-whitepaper-May2022-v2.pdf )
28- on cloud native security defines security controls and practices that are
28+ on cloud- native security defines security controls and practices that are
2929appropriate to different _ lifecycle phases_ .
3030
3131## _ Develop_ lifecycle phase {#lifecycle-phase-develop}
3232
3333- Ensure the integrity of development environments.
34- - Design applications following good practice for information security,
34+ - Design applications following good practices for information security,
3535 appropriate for your context.
36- - Consider end user security as part of solution design.
36+ - Consider end- user security as part of solution design.
3737
3838To achieve this, you can:
3939
40401 . Adopt an architecture, such as [ zero trust] ( https://glossary.cncf.io/zero-trust-architecture/ ) ,
4141 that minimizes attack surfaces, even for internal threats.
42421 . Define a code review process that considers security concerns.
43431 . Build a _ threat model_ of your system or application that identifies
44- trust boundaries. Use that to model to identify risks and to help find
45- ways to treat those risks .
44+ trust boundaries. Use that threat model to identify risks and determine
45+ how to treat them .
46461 . Incorporate advanced security automation, such as _ fuzzing_ and
4747 [ security chaos engineering] ( https://glossary.cncf.io/security-chaos-engineering/ ) ,
4848 where it's justified.
@@ -51,8 +51,8 @@ To achieve this, you can:
5151
5252- Ensure the security of the supply chain for container images you execute.
5353- Ensure the security of the supply chain for the cluster and other components
54- that execute your application. An example of another component might be an
55- external database that your cloud-native application uses for persistence.
54+ that execute your application. For example, this might include an external
55+ database that your cloud-native application uses for persistence.
5656
5757To achieve this, you can:
5858
@@ -72,19 +72,19 @@ To achieve this, you can:
7272## _ Deploy_ lifecycle phase {#lifecycle-phase-deploy}
7373
7474Ensure appropriate restrictions on what can be deployed, who can deploy it,
75- and where it can be deployed to .
75+ and where it can be deployed.
7676You can enforce measures from the _ distribute_ phase, such as verifying the
7777cryptographic identity of container image artifacts.
7878
7979You can deploy different applications and cluster components into different
8080{{< glossary_tooltip text="namespaces" term_id="namespace" >}}. Containers
81- themselves, and namespaces, both provide isolation mechanisms that are
82- relevant to information security.
81+ and namespaces both provide isolation mechanisms that are relevant to
82+ information security.
8383
8484When you deploy Kubernetes, you also set the foundation for your
8585applications' runtime environment: a Kubernetes cluster (or
8686multiple clusters).
87- That IT infrastructure must provide the security guarantees that higher
87+ That infrastructure must provide the security guarantees that higher
8888layers expect.
8989
9090## _ Runtime_ lifecycle phase {#lifecycle-phase-runtime}
@@ -99,7 +99,7 @@ to providing effective cluster security.
9999
100100Other pages in the Kubernetes documentation have more detail about how to set up
101101specific aspects of access control. The [ security checklist] ( /docs/concepts/security/security-checklist/ )
102- has a set of suggested basic checks for your cluster.
102+ provides suggested basic checks for your cluster.
103103
104104Beyond that, securing your cluster means implementing effective
105105[ authentication] ( /docs/concepts/security/controlling-access/#authentication ) and
@@ -108,43 +108,43 @@ provide and manage security identities for workloads and cluster
108108components.
109109
110110Kubernetes uses TLS to protect API traffic; make sure to deploy the cluster using
111- TLS (including for traffic between nodes and the control plane), and protect the
111+ TLS (including for traffic between nodes and the control plane) and protect the
112112encryption keys. If you use Kubernetes' own API for
113113[ CertificateSigningRequests] ( /docs/reference/access-authn-authz/certificate-signing-requests/#certificate-signing-requests ) ,
114114pay special attention to restricting misuse there.
115115
116116### Runtime protection: compute {#protection-runtime-compute}
117117
118118{{< glossary_tooltip text="Containers" term_id="container" >}} provide two
119- things: isolation between different applications, and a mechanism to combine
119+ things: isolation between applications and a mechanism to combine
120120those isolated applications to run on the same host computer. Those two
121- aspects, isolation and aggregation, mean that runtime security involves
121+ aspects— isolation and aggregation— mean that runtime security involves
122122identifying trade-offs and finding an appropriate balance.
123123
124124Kubernetes relies on a {{< glossary_tooltip text="container runtime" term_id="container-runtime" >}}
125- to actually set up and run containers. The Kubernetes project does
126- not recommend a specific container runtime and you should make sure that
127- the runtime(s) that you choose meet your information security needs.
125+ to set up and run containers. The Kubernetes project does
126+ not recommend a specific container runtime, and you should make sure that
127+ the runtime(s) you choose meet your information security needs.
128128
129129To protect your compute at runtime, you can:
130130
131- 1 . Enforce [ Pod security standards ] ( /docs/concepts/security/pod-security-standards/ )
132- for applications, to help ensure they run with only the necessary privileges.
131+ 1 . Enforce [ Pod Security Standards ] ( /docs/concepts/security/pod-security-standards/ )
132+ for applications to help ensure they run with only the necessary privileges.
1331331 . Run a specialized operating system on your nodes that is designed specifically
134134 for running containerized workloads. This is typically based on a read-only
135135 operating system (_ immutable image_ ) that provides only the services
136136 essential for running containers.
137137
138- Container-specific operating systems help to isolate system components and
138+ Container-specific operating systems help isolate system components and
139139 present a reduced attack surface in case of a container escape.
1401401 . Define [ ResourceQuotas] ( /docs/concepts/policy/resource-quotas/ ) to
141141 fairly allocate shared resources, and use
142142 mechanisms such as [ LimitRanges] ( /docs/concepts/policy/limit-range/ )
143143 to ensure that Pods specify their resource requirements.
144- 1 . Partition workloads across different nodes.
144+ 1 . Partition workloads across different nodes to improve isolation .
145145 Use [ node isolation] ( /docs/concepts/scheduling-eviction/assign-pod-node/#node-isolation-restriction )
146146 mechanisms, either from Kubernetes itself or from the ecosystem, to ensure that
147- Pods with different trust contexts are run on separate sets of nodes.
147+ Pods with different trust contexts run on separate sets of nodes.
1481481 . Use a {{< glossary_tooltip text="container runtime" term_id="container-runtime" >}}
149149 that provides security restrictions.
1501501 . On Linux nodes, use a Linux security module such as [ AppArmor] ( /docs/tutorials/security/apparmor/ )
@@ -158,7 +158,7 @@ To protect storage for your cluster and the applications that run there, you can
158158 rest for volumes.
1591591 . Enable [ encryption at rest] ( /docs/tasks/administer-cluster/encrypt-data/ ) for
160160 API objects.
161- 1 . Protect data durability using backups. Verify that you can restore these, whenever you need to .
161+ 1 . Protect data durability using backups, and verify that you can restore them whenever needed .
1621621 . Authenticate connections between cluster nodes and any network storage they rely
163163 upon.
1641641 . Implement data encryption within your own application.
@@ -174,11 +174,11 @@ You should also consider network security measures, such as
174174[ NetworkPolicy] ( /docs/concepts/services-networking/network-policies/ ) or a
175175[ service mesh] ( https://glossary.cncf.io/service-mesh/ ) .
176176Some network plugins for Kubernetes provide encryption for your
177- cluster network, using technologies such as a virtual
177+ cluster network using technologies such as a virtual
178178private network (VPN) overlay.
179179By design, Kubernetes lets you use your own networking plugin for your
180- cluster (if you use managed Kubernetes, the person or organization
181- managing your cluster may have chosen a network plugin for you) .
180+ cluster. If you use managed Kubernetes, the provider may have already selected a
181+ network plugin for you.
182182
183183The network plugin you choose and the way you integrate it can have a
184184strong impact on the security of information in transit.
@@ -189,27 +189,27 @@ Kubernetes lets you extend your cluster with extra tooling. You can set up third
189189party solutions to help you monitor or troubleshoot your applications and the
190190clusters they are running. You also get some basic observability features built
191191in to Kubernetes itself. Your code running in containers can generate logs,
192- publish metrics or provide other observability data; at deploy time, you need to
192+ publish metrics, or provide other observability data; at deploy time, you need to
193193make sure your cluster provides an appropriate level of protection there.
194194
195195If you set up a metrics dashboard or something similar, review the chain of components
196196that populate data into that dashboard, as well as the dashboard itself. Make sure
197- that the whole chain is designed with enough resilience and enough integrity protection
197+ that the whole chain is designed with enough resilience and integrity protection
198198that you can rely on it even during an incident where your cluster might be degraded.
199199
200- Where appropriate, deploy security measures below the level of Kubernetes
201- itself, such as cryptographically measured boot, or authenticated distribution
200+ Where appropriate, deploy security measures below the Kubernetes layer,
201+ such as cryptographically measured boot or authenticated distribution
202202of time (which helps ensure the fidelity of logs and audit records).
203203
204- For a high assurance environment, deploy cryptographic protections to ensure that
204+ For a high- assurance environment, deploy cryptographic protections to ensure that
205205logs are both tamper-proof and confidential.
206206
207207## {{% heading "whatsnext" %}}
208208
209- ### Cloud native security {#further-reading-cloud-native}
209+ ### Cloud- native security {#further-reading-cloud-native}
210210
211211* CNCF [ white paper] ( https://github.com/cncf/tag-security/blob/main/community/resources/security-whitepaper/v2/CNCF_cloud-native-security-whitepaper-May2022-v2.pdf )
212- on cloud native security.
212+ on cloud- native security.
213213* CNCF [ white paper] ( https://github.com/cncf/tag-security/blob/f80844baaea22a358f5b20dca52cd6f72a32b066/supply-chain-security/supply-chain-security-paper/CNCF_SSCP_v1.pdf )
214214 on good practices for securing a software supply chain.
215215* [ Fixing the Kubernetes clusterf\*\* k: Understanding security from the kernel up] ( https://archive.fosdem.org/2020/schedule/event/kubernetes/ ) (FOSDEM 2020)
0 commit comments