Control: ReplicationController containers should not share the host process namespace
Description
Containers in a ReplicationController 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.replication_controller_hostpid_hostipc_sharing_disabled
Snapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run kubernetes_compliance.control.replication_controller_hostpid_hostipc_sharing_disabled --share
SQL
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 'ReplicationController pods share host PID namespaces.' when (template -> 'spec' ->> 'hostIPC')::bool then 'ReplicationController pods share host IPC namespaces.' else 'ReplicationController pods cannot share host process namespaces.' end as reason, name as replication_controller_name , coalesce(context_name, '') as context_name, namespace, source_type, coalesce(path || ':' || start_line || '-' || end_line, '') as pathfrom kubernetes_replication_controller;