操作员权限

edit

此功能旨在供 Elasticsearch ServiceElastic Cloud EnterpriseElastic Cloud on Kubernetes 间接使用。不支持直接使用。

在典型的 Elasticsearch 部署中,管理集群的人员也在基础设施层面上操作集群。基于基于角色的访问控制 (RBAC) 的用户授权在这种环境中是有效且可靠的。然而,在更受管理的环境中,例如Elasticsearch 服务,集群基础设施的操作员和集群的管理员之间存在区别。

操作员权限将某些功能限制为仅操作员用户使用。操作员用户只是具有访问特定仅限操作员的功能的常规Elasticsearch用户。这些权限对集群管理员不可用,即使他们以高权限用户(如elastic用户或其他具有superuser角色的用户)登录。通过限制系统访问,操作员权限增强了Elasticsearch安全模型,同时保护了用户能力。

操作员权限在 Elastic Cloud 上已启用,这意味着某些基础设施管理功能受到限制,您的管理用户无法访问。此功能保护您的集群免受意外的基础设施更改。

配置操作员权限

edit

此功能旨在供 Elasticsearch ServiceElastic Cloud EnterpriseElastic Cloud on Kubernetes 间接使用。不支持直接使用。

在使用操作员权限之前,您必须在集群中的所有节点上启用该功能,并指定操作员用户

启用操作员权限

edit

为了使用操作员权限功能,必须在集群中的每个节点上显式启用它。在每个elasticsearch.yml文件中添加以下设置:

xpack.security.operator_privileges.enabled: true

如果您在做出此更改之前节点已经在运行,则必须重新启动节点以使该功能生效。

该功能需要在集群中的所有节点上一致地启用或禁用。否则,根据哪个节点首先接收到请求以及哪个节点执行请求,您可能会遇到不一致的行为。

当在集群上启用操作员权限时, 特定功能 受到限制,并且只能由已被明确指定为操作员用户的用户执行。 如果普通用户尝试执行这些功能(即使他们拥有 superuser 角色),将会发生安全异常。

指定操作员用户

edit

操作员用户只是具有特殊权限的普通 Elasticsearch 用户,可以执行仅限操作员的功能。它们在 operator_users.yml 文件中指定,该文件位于配置目录中(由 ES_PATH_CONF 环境变量定义)。与 其他安全配置文件 类似,operator_users.yml 文件是节点本地的,不会全局应用于集群。这意味着,在大多数情况下,应将同一文件分发或复制到集群中的所有节点。

文件 operator_users.yml 定义了一组认证用户必须匹配的标准,才能被视为操作员用户。以下代码片段展示了一个此类文件的示例:

operator: 
  - usernames: ["system_agent_1","system_agent_2"] 
    realm_type: "file" 
    auth_type: "realm" 

一个固定的operator值标志着定义的开始。

允许的操作员用户用户名列表。此字段是必填的。

操作员用户允许的身份验证领域类型。默认且唯一可接受的值是 file

操作员用户允许的身份验证类型。默认且唯一可接受的值是 realm

您必须至少指定 usernames 字段。如果没有指定其他字段,则使用它们的默认值。所有字段都必须匹配,用户才能被视为操作员用户。您还可以指定多组标准。由于此功能目前尚不支持其他领域或身份验证类型,因此这目前并不是非常有用。

还有两条隐含规则影响哪些用户是操作员用户:

  1. 如果认证用户其他用户身份运行,则他们都不被视为操作员用户。
  2. 所有内部用户都是隐式操作员用户。

在用户被指定为操作员用户后,他们仍然受到常规的RBAC用户授权检查。也就是说,除了指定用户为操作员用户外,您还必须授予他们执行任务所需的Elasticsearch角色。因此,操作员用户完全有可能遇到“访问被拒绝”错误,并由于RBAC检查失败而无法执行某些操作。简而言之,操作员用户不是自动成为超级用户

仅限操作员的功能

edit

此功能旨在供 Elasticsearch ServiceElastic Cloud EnterpriseElastic Cloud on Kubernetes 间接使用。不支持直接使用。

操作员权限为API和动态集群设置提供了保护。 任何由操作员权限保护的API或集群设置被称为 仅限操作员的功能。当启用操作员权限功能时, 仅限操作员的API只能由操作员用户执行。同样, 仅限操作员的设置只能由操作员用户更新。仅限操作员的API和动态集群设置的列表是在代码库中预先确定的。该列表可能会在未来的版本中演变,但在给定的Elasticsearch版本中是固定的。

仅限操作员的动态集群设置

edit
  • 所有IP过滤设置
  • 以下动态的机器学习设置

    • xpack.ml.node_concurrent_job_allocations
    • xpack.ml.max_machine_memory_percent
    • xpack.ml.use_auto_machine_memory_percent
    • xpack.ml.max_lazy_ml_nodes
    • xpack.ml.process_connect_timeout
    • xpack.ml.nightly_maintenance_requests_per_second
    • xpack.ml.max_ml_node_size
    • xpack.ml.enable_config_migration
    • xpack.ml.persist_results_max_retries
  • cluster.routing.allocation.disk.threshold_enabled设置
  • 以下托管服务的恢复设置

    • node.bandwidth.recovery.operator.factor
    • node.bandwidth.recovery.operator.factor.read
    • node.bandwidth.recovery.operator.factor.write
    • node.bandwidth.recovery.operator.factor.max_overcommit

快照和恢复的操作员权限

edit

此功能旨在供 Elasticsearch ServiceElastic Cloud EnterpriseElastic Cloud on Kubernetes 间接使用。不支持直接使用。

调用仅限操作员的API或更新 仅限操作员的动态集群设置 通常会导致集群状态的变化。集群状态可以包含在集群的快照中。快照是保存集群数据的好方法, 可以在以后恢复以引导新集群、执行迁移或灾难恢复等。在传统的自管理环境中,恢复过程的意图是在请求时复制整个集群状态。然而,在更受管理的环境中, 例如Elasticsearch Service,与 仅限操作员的功能相关的数据由基础设施代码显式管理。

恢复与仅操作员功能相关的快照数据可能会出现问题,因为:

  1. 快照可能包含仅限操作员功能的不正确值。例如,快照可能是在要求不同或未启用操作员权限功能的其他集群中拍摄的。恢复与仅限操作员功能相关的数据会破坏操作员权限的保证。
  2. 即使基础架构代码可以在恢复后立即纠正这些值,集群在短时间内仍可能处于不一致状态。
  3. 基础架构代码倾向于从单一位置配置仅限操作员功能,也就是说,通过API调用。

因此, 当启用了操作员权限功能时, 与任何仅限操作员功能相关的快照数据不会 恢复。

在拍摄快照时,这些信息仍然会被包含在内,以确保所有数据始终得到保留。