Control Telemetry/Visibility
Last updated
Was this helpful?
Last updated
Was this helpful?
KubeArmor currently supports enabling visibility for containers and hosts.
Visibility for hosts is not enabled by default, however it is enabled by default for containers .
The karmor
tool provides access to both using karmor logs
.
If you don't have access to a K8s cluster, please follow to set one up.
karmor CLI tool:
To deploy app follow
Now we need to deploy some sample policies
This sample policy blocks execution of the apt
and apt-get
commands in wordpress pods with label selector app: wordpress
.
Checking default visibility
Container visibility is enabled by default. We can check it using kubectl describe
and grep kubearmor-visibility
For pre-existing workloads : Enable visibility using kubectl annotate
. Currently KubeArmor supports process
, file
, network
, capabilities
Open up a terminal, and watch logs using the karmor
cli
In another terminal, simulate a policy violation . Try sleep
inside a pod
In the terminal running karmor logs
, the policy violation along with container visibility is shown, in this case for example
The logs can also be generated in JSON format using karmor logs --json
Host Visibility is not enabled by default . To enable Host Visibility we need to annotate the node using kubectl annotate node
To confirm it use kubectl describe
and grep kubearmor-visibility
Now we can get general telemetry events in the context of the host using karmor logs
.The logs related to Host Visibility will have type Type: HostLog
and Operation: File | Process | Network
KubeArmor has the ability to let the user select what kind of events have to be traced by changing the annotation kubearmor-visibility
at the namespace.
Checking Namespace visibility
Namespace visibility can be checked using kubectl describe
.
To update the visibility of namespace : Now let's update Kubearmor visibility using kubectl annotate
. Currently KubeArmor supports process
, file
, network
, capabilities
. Lets try to update visibility for the namespace wordpress-mysql
Note: To turn off the visibility across all aspects, use
kubearmor-visibility=none
. Note that any policy violations or events that results in non-success returns would still be reported in the logs.
Open up a terminal, and watch logs using the karmor
cli
In another terminal, let's exec into the pod and run some process commands . Try ls
inside the pod
Now, we can notice that no logs have been generated for the above command and logs with only Operation: Network
are shown.
Note If telemetry is disabled, the user wont get audit event even if there is an audit rule.
Note Only the logs are affected by changing the visibility, we still get all the alerts that are generated.
Let's simulate a sample policy violation, and see whether we still get alerts or not.
Policy violation :
Here, note that the alert with Operation: Process
is reported.