API server pod has anonymous-auth disabled
Kubernetes API server anonymous authentication configuration, identified by --anonymous-auth=true. With this setting, unauthenticated requests are mapped to system:anonymous and processed by the server.
Risk
Anonymous API access exposes cluster details for reconnaissance and enumeration, eroding confidentiality.
If RBAC is misconfigured, unauthenticated users may read sensitive data or trigger actions, impacting integrity. Floods of anonymous requests can also reduce availability.
Run this check with Prowler
Run in Prowler Cloudprowler kubernetes --checks apiserver_anonymous_requestsRecommendation
Require authenticated access for all API requests and avoid reliance on anonymous users. Enforce least privilege RBAC for explicit principals only. If health checks must be public, restrict to minimal paths and methods. Add network segmentation, mutual TLS, and audit logging for defense in depth.
Remediation
Other
Check Code
from prowler.lib.check.models import Check, Check_Report_Kubernetes
from prowler.providers.kubernetes.services.apiserver.apiserver_client import (
apiserver_client,
)
class apiserver_anonymous_requests(Check):
def execute(self) -> Check_Report_Kubernetes:
findings = []
for pod in apiserver_client.apiserver_pods:
report = Check_Report_Kubernetes(metadata=self.metadata(), resource=pod)
report.status = "PASS"
report.status_extended = (
f"API Server does not have anonymous-auth enabled in pod {pod.name}."
)
for container in pod.containers.values():
if "--anonymous-auth=true" in container.command:
report.status = "FAIL"
report.status_extended = (
f"API Server has anonymous-auth enabled in pod {pod.name}."
)
findings.append(report)
return findings