|
| 1 | +# Anonymous Authentication overlay for Observability Stack Helm chart. |
| 2 | +# |
| 3 | +# Usage: |
| 4 | +# helm install obs-stack . -f values-anonymous-auth.yaml |
| 5 | +# helm upgrade obs-stack . -f values-anonymous-auth.yaml |
| 6 | +# |
| 7 | +# This enables anonymous access to OpenSearch Dashboards — users can browse |
| 8 | +# data, view/create/modify saved objects, explore traces, and run queries |
| 9 | +# without logging in. They cannot delete existing saved objects or perform |
| 10 | +# admin operations. |
| 11 | +# |
| 12 | +# IMPORTANT: If toggling on an existing deployment, you must delete the |
| 13 | +# OpenSearch StatefulSet PVCs to force security config reinitialization: |
| 14 | +# helm uninstall obs-stack |
| 15 | +# kubectl delete pvc -l app.kubernetes.io/instance=obs-stack |
| 16 | +# helm install obs-stack . -f values-anonymous-auth.yaml |
| 17 | + |
| 18 | +anonymousAuth: |
| 19 | + enabled: true |
| 20 | + |
| 21 | +# OpenSearch — enable anonymous auth in the security plugin |
| 22 | +opensearch: |
| 23 | + securityConfig: |
| 24 | + config: |
| 25 | + dataComplete: false |
| 26 | + data: |
| 27 | + config.yml: |- |
| 28 | + _meta: |
| 29 | + type: "config" |
| 30 | + config_version: 2 |
| 31 | + config: |
| 32 | + dynamic: |
| 33 | + http: |
| 34 | + anonymous_auth_enabled: true |
| 35 | + xff: |
| 36 | + enabled: false |
| 37 | + internalProxies: "192\\.168\\.0\\.10|192\\.168\\.0\\.11" |
| 38 | + authc: |
| 39 | + basic_internal_auth_domain: |
| 40 | + description: "Authenticate via HTTP Basic against internal users database" |
| 41 | + http_enabled: true |
| 42 | + transport_enabled: true |
| 43 | + order: 4 |
| 44 | + http_authenticator: |
| 45 | + type: "basic" |
| 46 | + challenge: true |
| 47 | + authentication_backend: |
| 48 | + type: "intern" |
| 49 | + roles.yml: |- |
| 50 | + _meta: |
| 51 | + type: "roles" |
| 52 | + config_version: 2 |
| 53 | + opendistro_security_anonymous_role: |
| 54 | + reserved: true |
| 55 | + cluster_permissions: |
| 56 | + - "read" |
| 57 | + - "cluster_monitor" |
| 58 | + - "cluster_composite_ops" |
| 59 | + - "indices:data/read/scroll*" |
| 60 | + - "cluster:admin/opensearch/ppl" |
| 61 | + - "cluster:admin/opensearch/sql" |
| 62 | + - "cluster:admin/opensearch/ql/datasources/read" |
| 63 | + - "cluster:admin/opensearch/ql/async_query/read" |
| 64 | + - "cluster:admin/opensearch/direct_query/read/query" |
| 65 | + index_permissions: |
| 66 | + - index_patterns: |
| 67 | + - ".kibana" |
| 68 | + - ".kibana-6" |
| 69 | + - ".kibana_*" |
| 70 | + - ".opensearch_dashboards" |
| 71 | + - ".opensearch_dashboards-6" |
| 72 | + - ".opensearch_dashboards_*" |
| 73 | + allowed_actions: |
| 74 | + - "read" |
| 75 | + - "indices:data/write/index*" |
| 76 | + - "indices:data/write/update*" |
| 77 | + - "indices:data/write/bulk*" |
| 78 | + - index_patterns: |
| 79 | + - ".tasks" |
| 80 | + - ".management-beats" |
| 81 | + - "*:.tasks" |
| 82 | + - "*:.management-beats" |
| 83 | + allowed_actions: |
| 84 | + - "read" |
| 85 | + - index_patterns: |
| 86 | + - '*' |
| 87 | + allowed_actions: |
| 88 | + - "read" |
| 89 | + - "indices:data/read/*" |
| 90 | + - "indices:admin/get" |
| 91 | + - "indices:admin/exists" |
| 92 | + - "indices:admin/aliases/exists*" |
| 93 | + - "indices:admin/aliases/get*" |
| 94 | + - "indices:admin/mappings/get" |
| 95 | + - "indices:admin/resolve/index" |
| 96 | + - "indices:monitor/settings/get" |
| 97 | + - "indices:monitor/stats" |
| 98 | + tenant_permissions: |
| 99 | + - tenant_patterns: |
| 100 | + - '*' |
| 101 | + allowed_actions: |
| 102 | + - "kibana_all_write" |
| 103 | + roles_mapping.yml: |- |
| 104 | + _meta: |
| 105 | + type: "rolesmapping" |
| 106 | + config_version: 2 |
| 107 | + opendistro_security_anonymous_role: |
| 108 | + backend_roles: |
| 109 | + - "opendistro_security_anonymous_backendrole" |
| 110 | + all_access: |
| 111 | + reserved: true |
| 112 | + backend_roles: |
| 113 | + - "admin" |
| 114 | + description: "Maps admin to all_access" |
| 115 | + kibana_server: |
| 116 | + reserved: true |
| 117 | + users: |
| 118 | + - "kibanaserver" |
| 119 | + description: "Maps kibana_server role to kibanaserver user" |
| 120 | +
|
| 121 | +# OpenSearch Dashboards — enable anonymous login and disable saved-object |
| 122 | +# permission checks (required so anonymous users can access workspaces |
| 123 | +# created by the init script; OSD doesn't support per-workspace permission |
| 124 | +# grants via the API). |
| 125 | +opensearch-dashboards: |
| 126 | + config: |
| 127 | + opensearch_dashboards.yml: | |
| 128 | + server.host: "0.0.0.0" |
| 129 | + server.name: "observability-stack-dashboards" |
| 130 | + opensearch.hosts: ["https://opensearch-cluster-master:9200"] |
| 131 | + opensearch.username: "admin" |
| 132 | + opensearch.password: "My_password_123!@#" |
| 133 | + opensearch.ssl.verificationMode: none |
| 134 | + opensearch.requestTimeout: 30000 |
| 135 | + opensearch.requestHeadersAllowlist: ["authorization", "securitytenant"] |
| 136 | + opensearch_security.auth.anonymous_auth_enabled: true |
| 137 | + savedObjects.permission.enabled: false |
| 138 | + opensearch_security.multitenancy.enabled: false |
| 139 | + opensearch_security.readonly_mode.roles: ["kibana_read_only"] |
| 140 | + console.enabled: true |
| 141 | + server.maxPayloadBytes: 1048576 |
| 142 | + savedObjects.maxImportPayloadBytes: 26214400 |
| 143 | + csp.strict: false |
| 144 | + explore.enabled: true |
| 145 | + explore.discoverTraces.enabled: true |
| 146 | + explore.discoverMetrics.enabled: true |
| 147 | + explore.agentTraces.enabled: true |
| 148 | + workspace.enabled: true |
| 149 | + data_source.enabled: true |
| 150 | + data_source.ssl.verificationMode: none |
| 151 | + datasetManagement.enabled: true |
| 152 | + data.savedQueriesNewUI.enabled: true |
| 153 | + opensearchDashboards.branding.useExpandedHeader: false |
| 154 | + uiSettings.overrides.home:useNewHomePage: true |
| 155 | + uiSettings.overrides.query:enhancements:enabled: true |
| 156 | + uiSettings.overrides.explore:experimental: true |
0 commit comments