<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Falco – Plugin Events</title><link>https://v0-43--falcosecurity.netlify.app/docs/concepts/event-sources/plugins/</link><description>Recent content in Plugin Events on Falco</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://v0-43--falcosecurity.netlify.app/docs/concepts/event-sources/plugins/feed.xml" rel="self" type="application/rss+xml"/><item><title>Docs: CloudTrail Events</title><link>https://v0-43--falcosecurity.netlify.app/docs/concepts/event-sources/plugins/cloudtrail/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/docs/concepts/event-sources/plugins/cloudtrail/</guid><description>
&lt;p&gt;The Falco &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/cloudtrail#readme"&gt;cloudtrail&lt;/a&gt; plugin can read &lt;a href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html"&gt;AWS CloudTrail&lt;/a&gt; logs and emit events for each CloudTrail log entry.&lt;/p&gt;
&lt;p&gt;This plug-in also includes out-of-the-box &lt;a href="https://github.com/falcosecurity/plugins/blob/master/plugins/cloudtrail/rules/aws_cloudtrail_rules.yaml"&gt;rules&lt;/a&gt; that can be used to identify interesting/suspicious/notable events in CloudTrail logs, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Console logins that do not use multi-factor authentication&lt;/li&gt;
&lt;li&gt;Disabling multi-factor authentication for users&lt;/li&gt;
&lt;li&gt;Disabling encryption for S3 buckets&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;p&gt;See the &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/cloudtrail#configuration"&gt;README&lt;/a&gt; for information on how to configure the plugin. The plugin initialization and open params strings/objects can be added to &lt;code&gt;falco.yaml&lt;/code&gt; under the &lt;code&gt;plugins&lt;/code&gt; &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/daemon/config-options/"&gt;configuration key&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="methods-to-read-aws-cloudtrail-logs"&gt;Methods to read AWS CloudTrail logs&lt;/h2&gt;
&lt;p&gt;The plugin can be configured to read log files from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A S3 bucket&lt;/li&gt;
&lt;li&gt;A SQS queue that passes along SNS notifications about new log files&lt;/li&gt;
&lt;li&gt;A local filesystem path&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information on the open params syntax, see &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/cloudtrail#plugin-open-params"&gt;open params&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="terraform-module-for-cloudtrail-prerequisites"&gt;Terraform Module for CloudTrail | Prerequisites&lt;/h2&gt;
&lt;p&gt;In order to use the AWS CloudTrail plugin, you must &lt;a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-cloudtrail-logging-for-s3.html"&gt;enable&lt;/a&gt; CloudTrail logging for the account(s) you want to monitor. This must be done before using the plugin.&lt;/p&gt;
&lt;p&gt;In addition, of the three options above, using an SQS queue provides the easiest-to-consume source of logs. With the SQS queue, the plugin can detect when the new log files are written and can automatically consume them.&lt;/p&gt;
&lt;p&gt;However, this also requires creating multiple AWS cloud resources, such as SQS queues, SNS topics/subscriptions, IAM policy documents, etc., outside of Falco, which involve multiple manual steps.&lt;/p&gt;
&lt;p&gt;To make this process easier, we've created a Terraform &lt;a href="https://github.com/falcosecurity/falco-aws-terraform"&gt;module&lt;/a&gt; that automatically creates these resources.&lt;/p&gt;</description></item><item><title>Docs: Kubernetes Audit Events</title><link>https://v0-43--falcosecurity.netlify.app/docs/concepts/event-sources/plugins/kubernetes-audit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/docs/concepts/event-sources/plugins/kubernetes-audit/</guid><description>
&lt;p&gt;Falco v0.13.0 adds &lt;a href="https://kubernetes.io/docs/tasks/debug-application-cluster/audit/#audit-backends"&gt;Kubernetes Audit Events&lt;/a&gt; to the list of supported event sources. This is in addition to the existing support for system call events. An improved implementation of audit events was introduced in Kubernetes v1.11 and it provides a log of requests and responses to &lt;a href="https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/"&gt;kube-apiserver&lt;/a&gt;. Because almost all the cluster management tasks are performed through the API server, the &lt;a class='glossary-tooltip' title='Audit logs from the Kubernetes control plane.' data-toggle='tooltip' data-placement='top' href='https://kubernetes.io/docs/tasks/debug/debug-cluster/audit/' target='_blank' aria-label='audit log'&gt;audit log&lt;/a&gt; can effectively track the changes made to your cluster.&lt;/p&gt;
&lt;p&gt;Examples of this include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creating and destroying pods, services, deployments, daemonsets, etc.&lt;/li&gt;
&lt;li&gt;Creating, updating, and removing ConfigMaps or secrets&lt;/li&gt;
&lt;li&gt;Subscribing to the changes introduced to any endpoint&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To cover these scenarios, additional set of falco rules have been added that monitor for notable or suspicious activity, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creating pods that are privileged, mount sensitive host paths, or use host networking.&lt;/li&gt;
&lt;li&gt;Granting overly broad permissions such as &lt;code&gt;cluster-admin&lt;/code&gt; to users.&lt;/li&gt;
&lt;li&gt;Creating ConfigMaps with sensitive information.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once your cluster is configured with audit logging and the events are selected to be sent to falco, you can write falco rules that can read these events and send notifications for suspicious or other notable activity.&lt;/p&gt;
&lt;h2 id="what-s-new-in-falco"&gt;What's New in Falco&lt;/h2&gt;
&lt;p&gt;Since &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-32-0/"&gt;Falco 0.32.0&lt;/a&gt;, the Kubernetes Audit Events support has been &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/k8saudit"&gt;refactored to become a plugin&lt;/a&gt; and is compliant to the &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/plugins/"&gt;Falco Plugin System&lt;/a&gt;. Previously, this feature was supported as a parallel independent stream of events that was read separately from system calls, and was matched separately against its own sets of rules.&lt;/p&gt;
&lt;p&gt;To receive Kubernetes audit events, the plugin embeds a webserver that listens on a configurable port and accepts POST requests on a configurable endpoint. The posted JSON object comprises the event. The webserver embedded inside Falco to implement endpoints such as &lt;code&gt;/healthz&lt;/code&gt; is totally &lt;strong&gt;unrelated and independent&lt;/strong&gt; from the webserver of the plugin. The webserver of the plugin can be configured as part of the plugin's init configuration and open parameters.&lt;/p&gt;
&lt;p&gt;See &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/daemon/config-options/"&gt;configuration page&lt;/a&gt; for information on how plugins can be configured in Falco, and refer to &lt;a href="https://github.com/falcosecurity/plugins/blob/master/plugins/k8saudit/README.md"&gt;the plugin's readme&lt;/a&gt; for more specifics.&lt;/p&gt;
&lt;p&gt;The new plugin-based implementation has been developed to be as similar as possible to the legacy K8S Audit Events feature introduced in Falco 0.13.0. However, due to technical constraints, there are few user-facing differences. Although the most up-to-date setups should work as they used to, there are few user-facing differences to be mindful of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;K8S Audit Events support must be configured in &lt;code&gt;falco.yaml&lt;/code&gt; through the &lt;code&gt;plugins&lt;/code&gt; section through the plugin's init configuration and open parameters.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the legacy implementation, the extraction of list of values was supported implicitly. When extracting a field for a rule condition or output, the check used to be able to extract single values or list of values, and use them with operators such as &lt;code&gt;in&lt;/code&gt;, &lt;code&gt;intersect&lt;/code&gt;, etc. However, the concept of &amp;quot;list&amp;quot; was totally implicity and there was no distinction between single values and lists of values with length equal to 1.&lt;br&gt;
Now, the plugin-based implementation is compliant to the new semantics supported in the libs since Falco 0.32, which allows fields to be of explicit list type. A field of list type will always extract list of values, containing one or more entries, or fail the extraction.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fields of list type now only support the &lt;code&gt;in&lt;/code&gt; and &lt;code&gt;intersects&lt;/code&gt; operators. For example, checks such as &lt;code&gt;ka.req.role.rules.verbs contains create&lt;/code&gt; would be rejected and would need to be changed in the equivalent &lt;code&gt;ka.req.role.rules.verbs intersects (create)&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Failed field value extraction should now be checked with the &lt;code&gt;exists&lt;/code&gt; operator, and not by comparing with the &lt;code&gt;&amp;lt;NA&amp;gt;&lt;/code&gt; string.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;&amp;lt;NA&amp;gt;&lt;/code&gt; string literal is not returned anymore, neither in single-valued fields nor in list fields. In the legacy implementation, field existence was occasionally checked with expressions like &lt;code&gt;ka.target.subresource != &amp;lt;NA&amp;gt;&lt;/code&gt;, which would now inherently be always false, because if the field was absent the string comparison ends up failing. Instead, prefer using the analogous &lt;code&gt;ka.target.subresource exists&lt;/code&gt;, which explicitly checks for missing values&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;/healthz&lt;/code&gt; endpoint of Falco cannot bind to the same port of the K8S Audit Log endpoint (e.g. &lt;code&gt;/k8s-audit&lt;/code&gt;), due to the fact that they are now managed by two different webservers (one in Falco, one in the plugin).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In Falco versions 0.32.x (&lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-32-0/"&gt;Falco v0.32.0&lt;/a&gt;, &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-32-1/"&gt;v0.32.1&lt;/a&gt;, and &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-32-2/"&gt; v0.32.2&lt;/a&gt;), Falco didn't allow the use of Syscalls and K8S Audit event sources on the same instance. Starting from &lt;a href="https://v0-43--falcosecurity.netlify.app/blog/falco-0-33-0/"&gt;version 0.33.0&lt;/a&gt;, Falco introduced the capability of &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/concepts/event-sources/#configuring-event-sources"&gt;consuming events from multiple event sources simultaneously within the same Falco instance&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kubernetes-audit-rules"&gt;Kubernetes Audit Rules&lt;/h2&gt;
&lt;p&gt;Rules devoted to Kubernetes audit events are given in &lt;a href="https://github.com/falcosecurity/plugins/tree/master/plugins/k8saudit/rules"&gt;the default k8saudit plugin rules&lt;/a&gt;. When installed as a daemon, falco installs this rules file to &lt;code&gt;/etc/falco/&lt;/code&gt;, so they are available for use.&lt;/p&gt;
&lt;h3 id="example"&gt;Example&lt;/h3&gt;
&lt;p&gt;One of the rules in &lt;code&gt;k8s_audit_rules.yaml&lt;/code&gt; is as follows:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;list&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;k8s_audit_stages&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;items&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[&lt;span style="color:#b44"&gt;&amp;#34;ResponseComplete&amp;#34;&lt;/span&gt;]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# This macro selects the set of Audit Events used by the below rules.&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;macro&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;kevt&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;(jevt.value[/stage] in (k8s_audit_stages))&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;macro&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;kmodify&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;(ka.verb in (create,update,patch))&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;macro&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;configmap&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ka.target.resource=configmaps&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;macro&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;contains_private_credentials&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&amp;gt;&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; (ka.req.configmap.obj contains &amp;#34;aws_access_key_id&amp;#34; or
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; ka.req.configmap.obj contains &amp;#34;aws-access-key-id&amp;#34; or
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; ka.req.configmap.obj contains &amp;#34;aws_s3_access_key_id&amp;#34; or
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; ka.req.configmap.obj contains &amp;#34;aws-s3-access-key-id&amp;#34; or
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; ka.req.configmap.obj contains &amp;#34;password&amp;#34; or
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; ka.req.configmap.obj contains &amp;#34;passphrase&amp;#34;)&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Configmap contains private credentials&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;desc&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&amp;gt;&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; Detect configmap operations with map containing a private credential (aws key, password, etc.)&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;kevt and configmap and modify and contains_private_credentials&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;K8s configmap with private credential | user=%ka.user.name verb=%ka.verb name=%ka.req.configmap.name configmap=%ka.req.configmap.name config=%ka.req.configmap.obj&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;priority&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;WARNING&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;source&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;k8s_audit&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;tags&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[k8s]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;Configmap contains private credentials&lt;/code&gt; rule checks for a ConfigMap created with possibly sensitive items, such as AWS keys or passwords.&lt;/p&gt;
&lt;p&gt;Let's see how the rule works in such cases. This topic assumes that Kubernetes audit logging is configured in your environment.&lt;/p&gt;
&lt;p&gt;Create a ConfigMap containing AWS credentials:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;v1&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;data&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;ui.properties&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;|&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; color.good=purple
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; color.bad=yellow
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; allow.textmode=true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;access.properties&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;|&lt;span style="color:#b44;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; aws_access_key_id = MY-ID
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#b44;font-style:italic"&gt; aws_secret_access_key = MY-KEY&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ConfigMap&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;metadata&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;creationTimestamp&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;2016-02-18T18:52:05Z&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;my-config&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;namespace&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;default&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;resourceVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;516&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;selfLink&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;/api/v1/namespaces/default/configmaps/my-config&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;uid&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;b4952dc3-d670-11e5-8cd0-68f728db1985&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Creating this ConfigMap results in the following json object in the audit log:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;kind&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;Event&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;apiVersion&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;audit.k8s.io/v1beta1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;metadata&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;creationTimestamp&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;2018-10-20T00:18:28Z&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;level&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;RequestResponse&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;2018-10-20T00:18:28Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;auditID&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;33fa264e-1124-4252-af9e-2ce6e45fe07d&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;stage&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;ResponseComplete&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;requestURI&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;/api/v1/namespaces/default/configmaps&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;verb&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;create&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;user&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;username&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;minikube-user&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;groups&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#b44"&gt;&amp;#34;system:masters&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#b44"&gt;&amp;#34;system:authenticated&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;sourceIPs&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#b44"&gt;&amp;#34;192.168.99.1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;objectRef&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;resource&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;configmaps&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;namespace&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;my-config&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;uid&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;b4952dc3-d670-11e5-8cd0-68f728db1985&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;apiVersion&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;v1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;responseStatus&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;metadata&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;code&amp;#34;&lt;/span&gt;: &lt;span style="color:#666"&gt;201&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;requestObject&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;kind&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;ConfigMap&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;apiVersion&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;v1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;metadata&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;my-config&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;namespace&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;selfLink&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;/api/v1/namespaces/default/configmaps/my-config&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;uid&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;b4952dc3-d670-11e5-8cd0-68f728db1985&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;creationTimestamp&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;2016-02-18T18:52:05Z&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;access.properties&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;aws_access_key_id = MY-ID\naws_secret_access_key = MY-KEY\n&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;ui.properties&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;color.good=purple\ncolor.bad=yellow\nallow.textmode=true\n&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;responseObject&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;kind&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;ConfigMap&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;apiVersion&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;v1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;metadata&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;my-config&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;namespace&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;selfLink&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;/api/v1/namespaces/default/configmaps/my-config&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;uid&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;ab04e510-d3fd-11e8-8645-080027728ac4&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;resourceVersion&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;45437&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;creationTimestamp&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;2018-10-20T00:18:28Z&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;data&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;access.properties&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;aws_access_key_id = MY-ID\naws_secret_access_key = MY-KEY\n&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;ui.properties&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;color.good=purple\ncolor.bad=yellow\nallow.textmode=true\n&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;requestReceivedTimestamp&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;2018-10-20T00:18:28.420807Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;stageTimestamp&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;2018-10-20T00:18:28.428398Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;annotations&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;authorization.k8s.io/decision&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;allow&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;authorization.k8s.io/reason&amp;#34;&lt;/span&gt;: &lt;span style="color:#b44"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When the ConfigMap contains private credentials, the rule uses the following fields in the given order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;kevt&lt;/code&gt;: Checks whether the &lt;code&gt;stage&lt;/code&gt; property of the object is present in the &lt;code&gt;k8s_audit_stages&lt;/code&gt; list.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;configmap&lt;/code&gt;: Checks whether the value of the &lt;code&gt;objectRef &amp;gt; resource&lt;/code&gt; property equals to &amp;quot;configmap&amp;quot;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;kmodify&lt;/code&gt;: Checks whether the value of &lt;code&gt;verb&lt;/code&gt; is one of the following: &lt;code&gt;create&lt;/code&gt;,&lt;code&gt;update&lt;/code&gt;,&lt;code&gt;patch&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;contains-private-credentials&lt;/code&gt;: Search the ConfigMap contents at &lt;code&gt;requestObject &amp;gt; data&lt;/code&gt; for any of the sensitive strings named in the &lt;code&gt;contains_private_credentials&lt;/code&gt; macro.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If they do, a falco alert is generated:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-log" data-lang="log"&gt;17:18:28.428398080: Warning K8s ConfigMap with private credential
(user=minikube-user verb=create configmap=my-config
config={&amp;#34;access.properties&amp;#34;:&amp;#34;aws_access_key_id = MY-ID\naws_secret_access_key = MY-KEY\n&amp;#34;,
&amp;#34;ui.properties&amp;#34;:&amp;#34;color.good=purple\ncolor.bad=yellow\nallow.textmode=true\n&amp;#34;})
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The output string is used to print essential information about the audit event, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user: &lt;code&gt;%ka.user.name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;verb: &lt;code&gt;%ka.verb&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;ConfigMap name: &lt;code&gt;%ka.req.configmap.name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;ConfigMap contents: &lt;code&gt;%ka.req.configmap.obj&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="enabling-kubernetes-audit-logs"&gt;Enabling Kubernetes Audit Logs&lt;/h3&gt;
&lt;p&gt;To enable Kubernetes audit logs, you need to change the arguments to the &lt;code&gt;kube-apiserver&lt;/code&gt; process to add &lt;code&gt;--audit-policy-file&lt;/code&gt; and &lt;code&gt;--audit-webhook-config-file&lt;/code&gt; arguments and provide files that implement an audit policy/webhook configuration.&lt;/p&gt;
&lt;p&gt;It is beyond the scope of Falco documentation to give a detailed description of how to do this, but &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/getting-started/learning-environments/#falco-with-multiple-sources"&gt;this step-by-step guide&lt;/a&gt; will show you how to configure &lt;code&gt;kubernetes audit logs&lt;/code&gt; on &lt;code&gt;minikube&lt;/code&gt; and deploy Falco. Managed Kubernetes providers will usually provide a mechanism to configure the audit system.&lt;/p&gt;
&lt;div class="alert alert-warning" role="alert"&gt;
Dynamic Audit Webhooks were &lt;a href="https://github.com/kubernetes/kubernetes/pull/91502"&gt;removed&lt;/a&gt; from Kubernetes. However, static audit configuration continues to work.
&lt;/div&gt;</description></item><item><title>Docs: Okta Events</title><link>https://v0-43--falcosecurity.netlify.app/docs/concepts/event-sources/plugins/okta/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/docs/concepts/event-sources/plugins/okta/</guid><description>
&lt;p&gt;The Falco &lt;a href="https://github.com/falcosecurity/plugins/blob/master/plugins/okta/README.md"&gt;Okta&lt;/a&gt; plugin can read &lt;a href="https://www.okta.com/"&gt;Okta&lt;/a&gt; logs and emit events for each Okta log entry.&lt;/p&gt;
&lt;p&gt;Falco also distributes out-of-the-box &lt;a href="https://github.com/falcosecurity/falco/blob/master/rules/okta_rules.yaml"&gt;rules&lt;/a&gt; that can be used to identify interesting/suspicious/notable events in Okta logs, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creating a new OKTA user account&lt;/li&gt;
&lt;li&gt;Detecting a locked-out user&lt;/li&gt;
&lt;li&gt;Assigning admin permissions to an okta user&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;p&gt;See the &lt;a href="https://github.com/falcosecurity/plugins/blob/master/plugins/okta/README.md#settings"&gt;README&lt;/a&gt; for information on configuring the plugin. This simply involves providing the &lt;code&gt;organization/api&lt;/code&gt; token as part of init params. These can be added to &lt;code&gt;falco.yaml&lt;/code&gt; under the &lt;code&gt;plugins&lt;/code&gt; &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/daemon/config-options/"&gt;configuration key&lt;/a&gt; key.&lt;/p&gt;
&lt;p&gt;The plugin does not use any open params configuration.&lt;/p&gt;
&lt;h2 id="sample-output"&gt;Sample Output&lt;/h2&gt;
&lt;p&gt;For example, when using a dummy rule as follows:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- rule: Dummy
desc: Dummy
condition: okta.app!=&amp;#34;&amp;#34;
output: &amp;#34;evt=%okta.evt.type user=%okta.actor.name ip=%okta.client.ip app=%okta.app&amp;#34;
priority: DEBUG
source: okta
tags: [okta]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The dummy rule will emit an alert for each Okta log entry, like the following:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;19:12:25.439350000: Debug evt=user.authentication.sso user=User1 ip=x.x.x.x app=google
19:12:30.675628000: Debug evt=user.authentication.sso user=User2 ip=x.x.x.x app=github
19:12:35.918456000: Debug evt=user.authentication.sso user=User3 ip=x.x.x.x app=office365
&lt;/code&gt;&lt;/pre&gt;</description></item></channel></rss>