|
5 | 5 | [id="security-hosts-vms-rhcos_{context}"]
|
6 | 6 | = Securing containers on {op-system-first}
|
7 | 7 |
|
8 |
| -Containers simplify the act of deploying many applications to run on the same host, |
9 |
| -using the same kernel and container runtime to spin up each container. |
10 |
| -The applications can be owned by many users and, because they are kept |
11 |
| -separate, can run different, and even incompatible, versions of those applications |
12 |
| -at the same time without issue. |
| 8 | +Containers simplify the act of deploying many applications to run on the same host, using the same kernel and container runtime to spin up each container. The applications can be owned by many users and, because they are kept separate, can run different, and even incompatible, versions of those applications at the same time without issue. |
13 | 9 |
|
14 |
| -In Linux, containers are just a special type of process, so securing |
15 |
| -containers is similar in many ways to securing any other running process. |
16 |
| -An environment for running containers starts with an operating system |
17 |
| -that can secure the host kernel from |
18 |
| -containers and other processes running on the host, as well as |
19 |
| -secure containers from each other. |
| 10 | +In Linux, containers are just a special type of process, so securing containers is similar in many ways to securing any other running process. An environment for running containers starts with an operating system that can secure the host kernel from containers and other processes running on the host, as well as secure containers from each other. |
20 | 11 |
|
21 |
| -Because {product-title} {product-version} runs on {op-system} hosts, |
22 |
| -with the option of using {op-system-base-full} as worker nodes, |
23 |
| -the following concepts apply by default to any deployed {product-title} |
24 |
| -cluster. These {op-system-base} security features are at the core of what |
25 |
| -makes running containers in {product-title} more secure: |
| 12 | +Because {product-title} {product-version} runs on {op-system} hosts, with the option of using {op-system-base-full} as worker nodes, the following concepts apply by default to any deployed {product-title} cluster. These {op-system-base} security features are at the core of what makes running containers in {product-title} more secure: |
26 | 13 |
|
27 |
| -* _Linux namespaces_ enable creating an abstraction of a particular global system |
28 |
| -resource to make it appear as a separate instance to processes within a |
29 |
| -namespace. Consequently, several containers can use the same computing resource |
30 |
| -simultaneously without creating a conflict. |
31 |
| -Container namespaces that are separate from the host by default include mount table, process table, |
32 |
| -network interface, user, control group, UTS, and IPC namespaces. |
33 |
| -Those containers that need direct access to host namespaces need to have |
34 |
| -elevated permissions to request that access. |
| 14 | +* _Linux namespaces_ enable creating an abstraction of a particular global system resource to make it appear as a separate instance to processes within a namespace. Consequently, several containers can use the same computing resource simultaneously without creating a conflict. Container namespaces that are separate from the host by default include mount table, process table, network interface, user, control group, UTS, and IPC namespaces. Those containers that need direct access to host namespaces need to have elevated permissions to request that access. |
35 | 15 | ifdef::openshift-enterprise,openshift-webscale,openshift-aro[]
|
36 |
| -See |
37 |
| -link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/building_running_and_managing_containers/index[Overview of Containers in Red Hat Systems] |
38 |
| -from the {op-system-base} 8 container documentation for details on the types of namespaces. |
| 16 | +See link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/building_running_and_managing_containers/index[Overview of Containers in Red Hat Systems] from the {op-system-base} 8 container documentation for details on the types of namespaces. |
39 | 17 | endif::[]
|
40 | 18 |
|
41 |
| -* _SELinux_ provides an additional layer of security to keep containers isolated |
42 |
| -from each other and from the host. SELinux allows administrators to enforce |
43 |
| -mandatory access controls (MAC) for every user, application, process, and file. |
| 19 | +* _SELinux_ provides an additional layer of security to keep containers isolated from each other and from the host. SELinux allows administrators to enforce mandatory access controls (MAC) for every user, application, process, and file. |
44 | 20 |
|
45 |
| -* _CGroups_ (control groups) limit, account for, and isolate the resource usage |
46 |
| -(CPU, memory, disk I/O, network, etc.) of a collection of processes. CGroups are |
47 |
| -used to ensure that containers on the same host are not impacted by each other. |
| 21 | +[WARNING] |
| 22 | +==== |
| 23 | +Disabling SELinux on {op-system} is not supported. |
| 24 | +==== |
48 | 25 |
|
49 |
| -* _Secure computing mode (seccomp)_ profiles can be associated with a container to |
50 |
| -restrict available system calls. See page 94 of the |
51 |
| -link:https://access.redhat.com/articles/5059881[OpenShift Security Guide] for details about seccomp. |
| 26 | +* _CGroups_ (control groups) limit, account for, and isolate the resource usage (CPU, memory, disk I/O, network, etc.) of a collection of processes. CGroups are used to ensure that containers on the same host are not impacted by each other. |
52 | 27 |
|
53 |
| -* Deploying containers using _{op-system}_ reduces the attack surface by |
54 |
| -minimizing the host environment and tuning it for containers. |
55 |
| -The link:https://access.redhat.com/documentation/en-us/openshift_container_platform/3.11/html-single/cri-o_runtime/index[CRI-O container engine] further reduces that attack surface by |
56 |
| -implementing only those features required by Kubernetes and {product-title} to |
57 |
| -run and manage containers, as opposed to other container engines |
58 |
| -that implement desktop-oriented standalone features. |
| 28 | +* _Secure computing mode (seccomp)_ profiles can be associated with a container to restrict available system calls. See page 94 of the link:https://access.redhat.com/articles/5059881[OpenShift Security Guide] for details about seccomp. |
59 | 29 |
|
60 |
| -{op-system} is a version of {op-system-base-full} that is specially |
61 |
| -configured to work as control plane (master) and worker nodes |
62 |
| -on {product-title} clusters. |
63 |
| -So {op-system} is tuned to efficiently run container workloads, along with |
64 |
| -Kubernetes and {product-title} services. |
| 30 | +* Deploying containers using _{op-system}_ reduces the attack surface by minimizing the host environment and tuning it for containers. The link:https://access.redhat.com/documentation/en-us/openshift_container_platform/3.11/html-single/cri-o_runtime/index[CRI-O container engine] further reduces that attack surface by implementing only those features required by Kubernetes and {product-title} to run and manage containers, as opposed to other container engines that implement desktop-oriented standalone features. |
65 | 31 |
|
66 |
| -To further protect {op-system} systems in {product-title} clusters, |
67 |
| -most containers, except those managing or monitoring the host system itself, |
68 |
| -should run as a non-root user. Dropping the privilege level or |
69 |
| -creating containers with the least amount of privileges possible is recommended |
70 |
| -best practice for protecting your own {product-title} clusters. |
| 32 | +{op-system} is a version of {op-system-base-full} that is specially configured to work as control plane (master) and worker nodes on {product-title} clusters. So {op-system} is tuned to efficiently run container workloads, along with Kubernetes and {product-title} services. |
| 33 | + |
| 34 | +To further protect {op-system} systems in {product-title} clusters, most containers, except those managing or monitoring the host system itself, should run as a non-root user. Dropping the privilege level or creating containers with the least amount of privileges possible is recommended best practice for protecting your own {product-title} clusters. |
0 commit comments