Documentation for automated readers
A curated documentation index is available at: https://grafana.com/llms.txt
A complete documentation index is available at: https://grafana.com/llms-full.txt
These indexes can help with page discovery before fetching individual documents.
This page is also available in Markdown, which may be easier for automated readers and AI tools to parse than HTML. The Markdown version is available at https://grafana.com/docs/grafana-cloud/send-data/alloy/access_permissions.md, or by sending Accept: text/markdown to https://grafana.com/docs/grafana-cloud/send-data/alloy/access_permissions/. For broader documentation discovery, the curated index is available at https://grafana.com/llms.txt and the complete index is available at https://grafana.com/llms-full.txt.
Access and permissions for Grafana Alloy
Grafana Alloy collects telemetry from hosts, containers, and APIs, then forwards it to observability backends. That telemetry collection requires read access to logs, process data, and cluster resources, plus credentials for remote write and similar endpoints. Your configuration determines which permissions Alloy needs, and your deployment platform determines how you enforce them.
The following settings are common permission options. Not every item applies to every configuration or platform. Use only what matches your components and environment.
- When your components allow it, run Alloy as a non-root user on Linux, Kubernetes, or a dedicated service account on Windows.
- If you don’t need remote access to the UI or
/metrics, restrict the HTTP server to127.0.0.1or a private network address with thehttpblock. - When you expose the HTTP server beyond localhost, enable TLS with the
httpblock. - Use TLS for outbound connections.
Refer to the component you’re configuring, for example
prometheus.remote_writefor remote write andotelcol.exporter.otlpfor OTLP. - Avoid
insecure_skip_verify = truein production. Refer to the TLS settings in the component reference, for exampleprometheus.remote_write. - Store credentials outside configuration files when you can. Refer to Types and values.
- On Kubernetes, set RBAC to the permissions your configuration uses. Refer to Access and permissions on Kubernetes.
- For container deployments, set
readOnlyRootFilesystem: truewhen your volume mounts and components allow it. Refer to Access and permissions on Kubernetes. - For container deployments, set
allowPrivilegeEscalation: falsewhen your components don’t need privilege escalation. Refer to Access and permissions on Kubernetes. - Use a dedicated Alloy instance for components that require elevated access, for example
beyla.ebpfandpyroscope.ebpf. Refer to each component reference for required capabilities and privileges.
Process identity and privilege
Create a dedicated service account or user on your deployment platform:
- Linux: systemd service, file permissions, and the
alloyuser - Kubernetes:
securityContext, non-root UID, and RBAC - Windows: service accounts, Windows security groups, and filesystem ACLs
Network exposure
Alloy runs an HTTP server for its UI, API, and /metrics endpoint.
The binary binds to 127.0.0.1:12345 by default, which limits exposure to the local machine.
The Grafana Helm chart sets alloy.listenAddr to 0.0.0.0 by default so other Pods can reach the container on port 12345.
Review what you expose before you change either default.
Secrets and credentials
You can load secrets at runtime through several patterns:
sys.env()in configuration to reference environment variablesremote.vaultto load secrets from HashiCorp Vault- Secrets from the cluster: remote.kubernetes.secret
remote.s3to load configuration or secrets from AWS S3
For secret-typed values at runtime and protection from exposure in the UI and component exports, refer to Types and values.
Was this page helpful?
Related resources from Grafana Labs


