{ "id": "cks-mcq-audit-policy", "title": "Kubernetes Audit Logging Levels", "category": "Cluster Setup", "difficulty": "Medium", "type": "mcq", "weight": 3, "description": "## Kubernetes Audit Logging\n\nYou are writing an audit policy for the kube-apiserver. You need to capture the **complete request AND response body** for all write operations on `secrets` in any namespace, so you have a full record of every secret modification.\n\nWhich audit level must you specify for these events?", "options": [ { "id": "a", "text": "`None` — discard all events matching this rule; nothing is logged" }, { "id": "b", "text": "`Metadata` — logs request metadata (user, verb, resource, timestamp) but not the request or response body" }, { "id": "c", "text": "`Request` — logs metadata and the request body, but not the response body" }, { "id": "d", "text": "`RequestResponse` — logs metadata, the full request body, and the full response body" } ], "correct_option": "d", "explanation": "Kubernetes audit levels in ascending verbosity: **None → Metadata → Request → RequestResponse**. `RequestResponse` is required when you need the complete picture — what was sent and what the API server returned. This is most important for sensitive resources like Secrets. The audit policy file is passed to kube-apiserver via `--audit-policy-file`. Note that `RequestResponse` is expensive; use `Metadata` for most resources.", "hints": [ { "title": "Audit policy levels", "body": "The four levels: `None` (discard), `Metadata` (headers only), `Request` (+ request body), `RequestResponse` (+ response body). Configure via `--audit-policy-file` and `--audit-log-path` on the kube-apiserver.", "command": "# Example rule targeting Secrets at RequestResponse level:\n# - level: RequestResponse\n# resources:\n# - group: \"\"\n# resources: [\"secrets\"]" } ], "setup_commands": [], "default_namespace": "default", "teardown_commands": [] }