elasticsearch 给予匿名用户管理员级别的权限

nfzehxib  于 2023-03-12  发布在  ElasticSearch
关注(0)|答案(3)|浏览(205)

我试图给予匿名用户管理员级别的特权,以写入某些索引上的Opendistro捆绑包的Elasticsearch。我已经更新了config.yml与http.anonymous_auth_enabled:并且还对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
}

在这里寻找,如果有人可以提供正确的方式来设置匿名认证与Opendisto。

eanckbw9

eanckbw91#

后端角色实际上只是“从外部服务器导入的角色”的一个令人困惑的名称。在这种情况下,您可以忽略它们。
相反,您需要一个“常规”角色,您可以在Kibana〉Security〉Roles(或使用REST API)中创建该角色。只需确保它具有与现有admin角色相同的群集和索引权限。我将我的角色命名为anonymous-admin,并将群集权限指定为UNLIMITED,将索引权限指定为*
然后转到Security〉Role Mappings〉Add a new role mapping.选择您的anonymous-admin角色,将字符串opendistro_security_anonymous添加到Users字段,然后点击Submit。
之前:

$ 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"
}
u5i3ibmn

u5i3ibmn2#

在无法使用@aetter提供的解决方案后,我在Github上找到了hardik-k-shah的帖子,下面是详细的指南。
https://github.com/opendistro-for-elasticsearch/security/issues/42
要启用匿名访问,您必须在config.yml和kibana. yml中启用匿名访问。您还必须为匿名访问创建一个具有相关权限(在您的示例中,对某些索引具有读取权限)的角色,并为匿名用户创建相关角色Map。匿名请求始终以opendisto_security_anonymous作为用户名,以opendisto_security_anonymous_backendrole作为后端角色。
启用匿名访问的详细步骤:
1.在config.yml中启用匿名访问

opendistro_security:
    dynamic:
       http:
          anonymous_auth_enabled: false

2.创建具有所需权限的匿名角色。(如果要将角色设置为只读,则可以通过Kibana UI或通过更改角色.yml文件创建此角色)例如:,

opendistro_security_anonymous:
readonly: true
cluster:
  - CLUSTER_COMPOSITE_OPS_RO
indices:
  '*':
    '*':
      - READ

3.为opendisto_security_anonymous_backendrole角色创建角色Map。(您可以通过kibana UI或通过更改roles_mapping.yml文件创建此角色Map)

opendistro_security_anonymous:
backend_roles:
  - opendistro_security_anonymous_backendrole

4.如果您的集群已经启动并运行,请使用securityadmin工具应用此配置更改。
5.更新kibana.yml以启用匿名访问。您必须重新启动kibana进程以应用此更改。

opendistro_security.auth.anonymous_auth_enabled: true
zmeyuzjn

zmeyuzjn3#

我希望匿名访问仅用于健康检查。一些附加说明可能会有所帮助
需要在以下位置将anonymous_auth_enabled设置为true:/usr/共享/ElasticSearch/插件/开放发行版_安全/安全配置/配置.yml

opendistro_security:
    dynamic:
       http:
          anonymous_auth_enabled: true

角色现在需要查看:/usr/共享/ElasticSearch/插件/开放发行版_安全/安全配置/角色.yml

# allow anonymous access to /cluster
opendistro_security_anonymous:
  reserved: true
  cluster_permissions:
    - 'cluster_monitor'

角色Map如下所述:/usr/共享/ElasticSearch/插件/开放发行版_安全/安全配置/角色Map.yml

opendistro_security_anonymous:
  reserved: true
  backend_roles:
    - "opendistro_security_anonymous_backendrole"

我很想知道为什么角色Map中的角色与定义的新角色不匹配,但现在它正在工作,我不会为此失眠。
如果您对此感兴趣,我猜您已经在以下位置启用了安全保护:/usr/配置文件/配置文件

opendistro_security.disabled: false

相关问题