Opendistro Elasticsearch 给匿名用户管理员权限
Opendistro Elasticsearch Give admin level privilege to anonymous user
我正在尝试授予匿名用户管理员级别的权限,以写入 Elasticsearch 的 Opendistro 捆绑包上的某些索引。我已将 config.yml 更新为 http.anonymous_auth_enabled: true 并且还对 anonymous_backendrole 角色的 role.yml 进行了必要的更改。
但我仍然收到此错误 -
{ "error" : { "root_cause" : [ { "type" : "security_exception", "reason" : "no permissions for [cluster:monitor/health] and User [name=opendistro_security_anonymous, roles=[opendistro_security_anonymous_backendrole], requestedTenant=null]" } ], "type" : "security_exception", "reason" : "no permissions for [cluster:monitor/health] and User [name=opendistro_security_anonymous, roles=[opendistro_security_anonymous_backendrole], requestedTenant=null]" }, "status" : 403 }
如果有人可以提供使用 Opendistro 设置匿名身份验证的正确方法,请在此处查找。
Backend roles其实只是一个容易混淆的名字"roles imported from an external server.",这种情况下,你可以忽略它们。
相反,您需要一个 "regular" 角色,您可以在 Kibana > 安全 > 角色(或使用 REST API)中创建该角色。只需确保它具有与现有管理员角色相同的集群和索引权限。我将我的命名为 anonymous-admin
并将其命名为 UNLIMITED
集群权限和 *
索引。
然后转到“安全”>“角色映射”>“添加新角色映射”。选择您的 anonymous-admin
角色,将字符串 opendistro_security_anonymous
添加到用户字段,然后点击提交。
之前:
$ curl -XGET https://localhost:9200 -k
{"error":{"root_cause":[{"type":"security_exception","reason":"no permissions for [cluster:monitor/main] and User [name=opendistro_security_anonymous, roles=[opendistro_security_anonymous_backendrole], requestedTenant=null]"}],"type":"security_exception","reason":"no permissions for [cluster:monitor/main] and User [name=opendistro_security_anonymous, roles=[opendistro_security_anonymous_backendrole], requestedTenant=null]"},"status":403}
之后:
$ curl -XGET https://localhost:9200 -k
{
"name" : "W8ehfvx",
"cluster_name" : "odfe-cluster",
"cluster_uuid" : "Uk67h4MkSL-U_48NJwjeRg",
"version" : {
"number" : "6.5.4",
"build_flavor" : "oss",
"build_type" : "tar",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
在无法获得@aetter 提供的解决方案后。我在 Github 上找到了 hardik-k-shah 的 post 以及下面 posted 的详细指南。
https://github.com/opendistro-for-elasticsearch/security/issues/42
要启用匿名访问,您必须在 config.yml 和 kibana.yml 中启用匿名访问。您还必须为具有相关权限的匿名访问创建一个角色(在您的情况下对某些索引的读取权限)和匿名用户的相关角色映射。
匿名请求总是分配 opendistro_security_anonymous 作为用户名和 opendistro_security_anonymous_backendrole 作为后端角色。
启用匿名访问的详细步骤:
1。在 config.yml 启用匿名访问
opendistro_security:
dynamic:
http:
anonymous_auth_enabled: false
2。创建具有所需权限的匿名角色。 (您可以通过 kibana UI 或通过更改 roles.yml 文件创建此角色,如果您想让角色只读)
例如:,
opendistro_security_anonymous:
readonly: true
cluster:
- CLUSTER_COMPOSITE_OPS_RO
indices:
'*':
'*':
- READ
3。为 opendistro_security_anonymous_backendrole 角色创建角色映射。 (您可以通过 kibana UI 或更改 roles_mapping.yml 文件来创建此角色映射)
opendistro_security_anonymous:
backend_roles:
- opendistro_security_anonymous_backendrole
4。如果您的集群已经启动并且 运行.
,请使用 securityadmin 工具应用此配置更改
5。更新 kibana.yml 以启用对 kibana 的匿名访问。您必须重新启动 kibana 进程才能应用此更改。
opendistro_security.auth.anonymous_auth_enabled: true
我只想匿名访问健康检查
一些额外的注释可能会有帮助
将 anonymous_auth_enabled 设置为 true
需要在以下时间完成:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/config.yml
opendistro_security:
dynamic:
http:
anonymous_auth_enabled: true
角色现在需要看:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles.yml
# allow anonymous access to /cluster
opendistro_security_anonymous:
reserved: true
cluster_permissions:
- 'cluster_monitor'
描述的角色映射:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles_mapping.yml
opendistro_security_anonymous:
reserved: true
backend_roles:
- "opendistro_security_anonymous_backendrole"
我很想知道为什么角色映射中的角色与定义的新角色不匹配,但现在它正在工作,我不会为此失眠。
我假设如果您对此感兴趣,您已经在以下方面启用了安全性:
/usr/share/elasticsearch/config/elasticsearch.yml
opendistro_security.disabled: false
我正在尝试授予匿名用户管理员级别的权限,以写入 Elasticsearch 的 Opendistro 捆绑包上的某些索引。我已将 config.yml 更新为 http.anonymous_auth_enabled: true 并且还对 anonymous_backendrole 角色的 role.yml 进行了必要的更改。
但我仍然收到此错误 -
{ "error" : { "root_cause" : [ { "type" : "security_exception", "reason" : "no permissions for [cluster:monitor/health] and User [name=opendistro_security_anonymous, roles=[opendistro_security_anonymous_backendrole], requestedTenant=null]" } ], "type" : "security_exception", "reason" : "no permissions for [cluster:monitor/health] and User [name=opendistro_security_anonymous, roles=[opendistro_security_anonymous_backendrole], requestedTenant=null]" }, "status" : 403 }
如果有人可以提供使用 Opendistro 设置匿名身份验证的正确方法,请在此处查找。
Backend roles其实只是一个容易混淆的名字"roles imported from an external server.",这种情况下,你可以忽略它们。
相反,您需要一个 "regular" 角色,您可以在 Kibana > 安全 > 角色(或使用 REST API)中创建该角色。只需确保它具有与现有管理员角色相同的集群和索引权限。我将我的命名为 anonymous-admin
并将其命名为 UNLIMITED
集群权限和 *
索引。
然后转到“安全”>“角色映射”>“添加新角色映射”。选择您的 anonymous-admin
角色,将字符串 opendistro_security_anonymous
添加到用户字段,然后点击提交。
之前:
$ curl -XGET https://localhost:9200 -k
{"error":{"root_cause":[{"type":"security_exception","reason":"no permissions for [cluster:monitor/main] and User [name=opendistro_security_anonymous, roles=[opendistro_security_anonymous_backendrole], requestedTenant=null]"}],"type":"security_exception","reason":"no permissions for [cluster:monitor/main] and User [name=opendistro_security_anonymous, roles=[opendistro_security_anonymous_backendrole], requestedTenant=null]"},"status":403}
之后:
$ curl -XGET https://localhost:9200 -k
{
"name" : "W8ehfvx",
"cluster_name" : "odfe-cluster",
"cluster_uuid" : "Uk67h4MkSL-U_48NJwjeRg",
"version" : {
"number" : "6.5.4",
"build_flavor" : "oss",
"build_type" : "tar",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
在无法获得@aetter 提供的解决方案后。我在 Github 上找到了 hardik-k-shah 的 post 以及下面 posted 的详细指南。
https://github.com/opendistro-for-elasticsearch/security/issues/42
要启用匿名访问,您必须在 config.yml 和 kibana.yml 中启用匿名访问。您还必须为具有相关权限的匿名访问创建一个角色(在您的情况下对某些索引的读取权限)和匿名用户的相关角色映射。 匿名请求总是分配 opendistro_security_anonymous 作为用户名和 opendistro_security_anonymous_backendrole 作为后端角色。
启用匿名访问的详细步骤:
1。在 config.yml 启用匿名访问
opendistro_security:
dynamic:
http:
anonymous_auth_enabled: false
2。创建具有所需权限的匿名角色。 (您可以通过 kibana UI 或通过更改 roles.yml 文件创建此角色,如果您想让角色只读) 例如:,
opendistro_security_anonymous:
readonly: true
cluster:
- CLUSTER_COMPOSITE_OPS_RO
indices:
'*':
'*':
- READ
3。为 opendistro_security_anonymous_backendrole 角色创建角色映射。 (您可以通过 kibana UI 或更改 roles_mapping.yml 文件来创建此角色映射)
opendistro_security_anonymous:
backend_roles:
- opendistro_security_anonymous_backendrole
4。如果您的集群已经启动并且 运行.
,请使用 securityadmin 工具应用此配置更改5。更新 kibana.yml 以启用对 kibana 的匿名访问。您必须重新启动 kibana 进程才能应用此更改。
opendistro_security.auth.anonymous_auth_enabled: true
我只想匿名访问健康检查 一些额外的注释可能会有帮助
将 anonymous_auth_enabled 设置为 true
需要在以下时间完成:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/config.yml
opendistro_security:
dynamic:
http:
anonymous_auth_enabled: true
角色现在需要看: /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles.yml
# allow anonymous access to /cluster
opendistro_security_anonymous:
reserved: true
cluster_permissions:
- 'cluster_monitor'
描述的角色映射: /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles_mapping.yml
opendistro_security_anonymous:
reserved: true
backend_roles:
- "opendistro_security_anonymous_backendrole"
我很想知道为什么角色映射中的角色与定义的新角色不匹配,但现在它正在工作,我不会为此失眠。
我假设如果您对此感兴趣,您已经在以下方面启用了安全性: /usr/share/elasticsearch/config/elasticsearch.yml
opendistro_security.disabled: false