Skip to content

Commit 894a533

Browse files
vamsimanoharclaude
authored andcommitted
fix: harden anonymous auth permissions and add 500GB EBS for EKS nodes
Anonymous auth role changes: - Switch from broad cluster perms (read, cluster_monitor) to explicit actions - Add mget as cluster permission (required for _bulk_get API) - Add ISM, rollup, transform, security analytics read permissions - Add sample data index read access - Change tenant_permissions from kibana_all_write to kibana_all_read - Set reserved: false to allow runtime updates via Security API - Remove write permissions from .kibana index (read-only anonymous) - Add indices:admin/resolve/index and mappings/fields/get for OSD UI EKS node group: add 500GB gp3 block device mapping. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Vamsi Manohar <reddyvam@amazon.com> Signed-off-by: Kyle Hounslow <kylhouns@amazon.com>
1 parent 89f868a commit 894a533

2 files changed

Lines changed: 54 additions & 14 deletions

File tree

charts/observability-stack/values-anonymous-auth.yaml

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44
# helm install obs-stack . -f values-anonymous-auth.yaml
55
# helm upgrade obs-stack . -f values-anonymous-auth.yaml
66
#
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.
7+
# This enables read-only anonymous access to OpenSearch Dashboards — users can
8+
# browse data, explore traces, and run queries without logging in. They cannot
9+
# modify saved objects or perform admin operations.
1110
#
1211
# IMPORTANT: If toggling on an existing deployment, you must delete the
1312
# OpenSearch StatefulSet PVCs to force security config reinitialization:
@@ -51,17 +50,37 @@ opensearch:
5150
type: "roles"
5251
config_version: 2
5352
opendistro_security_anonymous_role:
54-
reserved: true
53+
reserved: false
5554
cluster_permissions:
56-
- "read"
57-
- "cluster_monitor"
58-
- "cluster_composite_ops"
55+
- "cluster:monitor/state"
56+
- "cluster:monitor/health"
57+
- "cluster:monitor/nodes/info"
58+
- "cluster:monitor/main"
5959
- "indices:data/read/scroll*"
6060
- "cluster:admin/opensearch/ppl"
6161
- "cluster:admin/opensearch/sql"
6262
- "cluster:admin/opensearch/ql/datasources/read"
6363
- "cluster:admin/opensearch/ql/async_query/read"
6464
- "cluster:admin/opensearch/direct_query/read/query"
65+
- "cluster:admin/opendistro/ism/policy/search"
66+
- "cluster:admin/opendistro/ism/policy/get"
67+
- "cluster:admin/opendistro/ism/managedindex/explain"
68+
- "cluster:admin/opendistro/rollup/search"
69+
- "cluster:admin/opendistro/rollup/get"
70+
- "cluster:admin/opendistro/rollup/explain"
71+
- "cluster:admin/opendistro/transform/get_transforms"
72+
- "cluster:admin/opendistro/transform/get"
73+
- "cluster:admin/opendistro/transform/explain"
74+
- "cluster:admin/opensearch/securityanalytics/rule/search"
75+
- "cluster:admin/opensearch/securityanalytics/detector/search"
76+
- "cluster:admin/opensearch/securityanalytics/findings/get"
77+
- "cluster:admin/opensearch/securityanalytics/alerts/get"
78+
- "cluster:admin/opensearch/securityanalytics/detector/get"
79+
- "cluster:admin/opensearch/securityanalytics/logtype/search"
80+
- "cluster:admin/opensearch/ml/connectors/search"
81+
- "cluster:admin/opensearch/ml/predict"
82+
- "indices:data/read/mget"
83+
- "indices:data/read/mget*"
6584
index_permissions:
6685
- index_patterns:
6786
- ".kibana"
@@ -72,34 +91,46 @@ opensearch:
7291
- ".opensearch_dashboards_*"
7392
allowed_actions:
7493
- "read"
75-
- "indices:data/write/index*"
76-
- "indices:data/write/update*"
77-
- "indices:data/write/bulk*"
94+
- "indices:data/read*"
95+
- "indices:data/read/mget"
96+
- "indices:data/read/mget*"
97+
- "indices:admin/mappings/fields/get*"
98+
- "indices:admin/resolve/index"
7899
- index_patterns:
79100
- ".tasks"
80101
- ".management-beats"
81102
- "*:.tasks"
82103
- "*:.management-beats"
83104
allowed_actions:
84105
- "read"
106+
- index_patterns:
107+
- "opensearch_dashboards_sample_data_logs"
108+
- "opensearch_dashboards_sample_data_flights"
109+
- "opensearch_dashboards_sample_data_ecommerce"
110+
allowed_actions:
111+
- "read"
85112
- index_patterns:
86113
- '*'
87114
allowed_actions:
88115
- "read"
89116
- "indices:data/read/*"
117+
- "indices:data/read/mget"
118+
- "indices:data/read/mget*"
119+
- "indices:data/read/search"
120+
- "indices:data/read/search*"
90121
- "indices:admin/get"
91122
- "indices:admin/exists"
123+
- "indices:admin/resolve/index"
92124
- "indices:admin/aliases/exists*"
93125
- "indices:admin/aliases/get*"
94126
- "indices:admin/mappings/get"
95-
- "indices:admin/resolve/index"
96127
- "indices:monitor/settings/get"
97128
- "indices:monitor/stats"
98129
tenant_permissions:
99130
- tenant_patterns:
100131
- '*'
101132
allowed_actions:
102-
- "kibana_all_write"
133+
- "kibana_all_read"
103134
roles_mapping.yml: |-
104135
_meta:
105136
type: "rolesmapping"
@@ -134,8 +165,8 @@ opensearch-dashboards:
134165
opensearch.requestTimeout: 30000
135166
opensearch.requestHeadersAllowlist: ["authorization", "securitytenant"]
136167
opensearch_security.auth.anonymous_auth_enabled: true
137-
savedObjects.permission.enabled: false
138168
opensearch_security.multitenancy.enabled: false
169+
savedObjects.permission.enabled: false
139170
opensearch_security.readonly_mode.roles: ["kibana_read_only"]
140171
console.enabled: true
141172
server.maxPayloadBytes: 1048576

terraform/aws/main.tf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,15 @@ module "eks" {
104104
min_size = var.node_count
105105
max_size = var.node_count + 1
106106
desired_size = var.node_count
107+
block_device_mappings = {
108+
xvda = {
109+
device_name = "/dev/xvda"
110+
ebs = {
111+
volume_size = 500
112+
volume_type = "gp3"
113+
}
114+
}
115+
}
107116
}
108117
}
109118

0 commit comments

Comments
 (0)