Control: Deployment containers should not share the host process namespace
Description
Containers in a Deployment should not share the host process PID or IPC namespace. Sharing the host’s process namespace allows the container to see all of the processes on the host system. This reduces the benefit of process level isolation between the host and the containers. Under these circumstances a malicious user who has access to a container could get access to processes on the host itself, manipulate them, and even be able to kill them.
Usage
Run the control in your terminal:
powerpipe control run kubernetes_compliance.control.deployment_hostpid_hostipc_sharing_disabledSnapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run kubernetes_compliance.control.deployment_hostpid_hostipc_sharing_disabled --shareSQL
This control uses a named query:
select coalesce(uid, concat(path, ':', start_line)) as resource, case when (template -> 'spec' ->> 'hostPID')::bool or (template -> 'spec' ->> 'hostIPC')::bool then 'alarm' else 'ok' end as status, case when (template -> 'spec' ->> 'hostPID')::bool then 'Deployment pods share host pid namespaces.' when (template -> 'spec' ->> 'hostIPC')::bool then 'Deployment pods share host ipc namespaces.' else 'Deployment pods cannot share host process namespaces.' end as reason, name as deployment_name , coalesce(context_name, '') as context_name, namespace, source_type, coalesce(path || ':' || start_line || '-' || end_line, '') as pathfrom kubernetes_deployment;