POST 从应用程序模拟用户角色(例如经理、承包商等...)向 Amazon Elastic Search 发出请求
POST request to Amazon Elastic Search from application impersonating user role (e.g. manager, contractor, etc...)
我正在 Spring 启动依赖于 Amazon Elastic Search 的搜索微服务。
- 我在 Amazon Elastic Search 前面有一个 angular 前端和一个 spring 引导服务
- 我在 Elasticsearch 中创建了 Application Privileges,这样我的 service/application 就可以模拟三种类型的用户:经理、员工、承包商;
- 每个角色都对应细粒度的权限(比如只有manager可以找到员工的个人数据,contractor可以找到员工但是有些字段会被擦除或者根本不返回);
我的用例如下:
GIVEN an authenticated user
AND the user has been authorized with the role Contractor by an In-House access management system;
WHEN the user searches through my service
THEN only the relevant documents are shown as per his/her privileges;
该请求(我猜 POST)看起来如何才能起作用?
只要您的请求没有更改任何内容,您就应该使用 GET 而不是 POST,但是 POST 将支持无法使用 GET 发送请求正文的客户端。
为了显示允许用户查看的文档,您需要按照此处所述为您的角色设置文档级安全性:https://opendistro.github.io/for-elasticsearch-docs/docs/security/access-control/document-level-security/
elastic 的 elasticsearch 用户应该看看:https://www.elastic.co/guide/en/elasticsearch/reference/current/document-level-security.html
我最终在 Open Distro ElasticSearch 文档中找到了关于 User Impersonation here.
的答案
简而言之,诀窍是按以下方式将 opendistro_security_impersonate_as 添加到 header 中:
curl -XGET -u 'admin:admin' -k -H "opendistro_security_impersonate_as: user_1" https://localhost:9200/_opendistro/_security/authinfo?pretty
你可以在哪里替换:
- admin:admin 与您的服务用户
- user_1 与您要模拟的用户和
- https://localhost:9200/_opendistro/_security/authinfo?与您的 GET 请求的 URL 相得益彰。
这对我来说很有用。
我正在 Spring 启动依赖于 Amazon Elastic Search 的搜索微服务。
- 我在 Amazon Elastic Search 前面有一个 angular 前端和一个 spring 引导服务
- 我在 Elasticsearch 中创建了 Application Privileges,这样我的 service/application 就可以模拟三种类型的用户:经理、员工、承包商;
- 每个角色都对应细粒度的权限(比如只有manager可以找到员工的个人数据,contractor可以找到员工但是有些字段会被擦除或者根本不返回);
我的用例如下:
GIVEN an authenticated user
AND the user has been authorized with the role Contractor by an In-House access management system;
WHEN the user searches through my service
THEN only the relevant documents are shown as per his/her privileges;
该请求(我猜 POST)看起来如何才能起作用?
只要您的请求没有更改任何内容,您就应该使用 GET 而不是 POST,但是 POST 将支持无法使用 GET 发送请求正文的客户端。
为了显示允许用户查看的文档,您需要按照此处所述为您的角色设置文档级安全性:https://opendistro.github.io/for-elasticsearch-docs/docs/security/access-control/document-level-security/
elastic 的 elasticsearch 用户应该看看:https://www.elastic.co/guide/en/elasticsearch/reference/current/document-level-security.html
我最终在 Open Distro ElasticSearch 文档中找到了关于 User Impersonation here.
的答案简而言之,诀窍是按以下方式将 opendistro_security_impersonate_as 添加到 header 中:
curl -XGET -u 'admin:admin' -k -H "opendistro_security_impersonate_as: user_1" https://localhost:9200/_opendistro/_security/authinfo?pretty
你可以在哪里替换:
- admin:admin 与您的服务用户
- user_1 与您要模拟的用户和
- https://localhost:9200/_opendistro/_security/authinfo?与您的 GET 请求的 URL 相得益彰。
这对我来说很有用。