用户模拟

用户模拟允许具有特殊权限的用户在无需知晓或访问被模拟用户的凭据的情况下,以该用户的身份执行操作。

模拟可用于测试和故障排除,或允许系统服务安全地以用户身份执行操作。

模拟可以在 REST 接口或传输层进行。

REST 接口

要允许一个用户模拟另一个用户,请将以下内容添加到 udbsx.yml

plugins.security.authcz.rest_impersonation_user:
  <认证用户>:
    - <被模拟用户_1>
    - <被模拟用户_2>

被模拟用户字段支持通配符。将其设置为 * 允许 认证用户 模拟任何用户。

传输接口

以类似的方式,添加以下内容以启用传输层模拟:

plugins.security.authcz.impersonation_dn:
  "CN=spock,OU=client,O=client,L=Test,C=DE":
    - worf

模拟用户

要模拟另一个用户,请向系统提交一个请求,将 HTTP 头 opendistro_security_impersonate_as 设置为要模拟的用户名。一个很好的测试是向 _plugins/_security/authinfo URI 发出 GET 请求:

curl -XGET -u 'admin:<custom-admin-password>' -k -H "opendistro_security_impersonate_as: user_1" https://localhost:10200/_plugins/_security/authinfo?pretty