1

我正在尝试授予匿名用户管理员级别的权限,以写入 Elasticsearch 的 Opendistro 捆绑包上的某些索引。我已经用 http.anonymous_auth_enabled: true 更新了 config.yml,并且还对匿名后备角色角色的 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 设置匿名身份验证。

4

3 回答 3

6

后端角色实际上只是“从外部服务器导入的角色”的一个令人困惑的名称。在这种情况下,您可以忽略它们。

相反,您需要一个“常规”角色,您可以在 Kibana > Security > Roles(或使用 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"
}
于 2019-04-05T21:27:28.703 回答
1

在无法获得@aetter 工作提供的解决方案之后。我在 Github 上找到了 hardik-k-shah 的一篇文章,详细指南贴在下面。

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
于 2020-05-04T19:57:57.460 回答
0

我希望匿名访问仅用于健康检查一些额外的说明可能会有所帮助

设置anonymous_auth_enabledtrue需要在:/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
于 2021-02-09T13:49:11.863 回答