教程:使用内部用户数据库和 HTTP 基本身份验证配置域 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:使用内部用户数据库和 HTTP 基本身份验证配置域

本教程介绍了另一个常见的精细访问控制用例:内部用户数据库和针对 OpenSearch 控制面板的 HTTP 基本身份验证中使用的主用户。主用户随后可以登录到 OpenSearch 控制面板,创建内部用户,将用户映射到角色,并使用精细访问控制来限制用户的权限。

在本教程中,您将完成以下步骤:

步骤 1:创建域

导航到位于 https://console.aws.amazon.com/aos/home/ 的 Amazon OpenSearch Service 控制台,然后使用以下设置创建域

  • OpenSearch 1.0 或更高版本,或 Elasticsearch 7.9 或更高版本

  • 公有访问权限

  • 对内部用户数据库中的主用户的精细访问控制(对于本教程的其余部分,为 TheMasterUser

  • 控制面板的 Amazon Cognito 身份验证已禁用

  • 以下访问策略:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-id}:root" }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:{region}:{account-id}:domain/{domain-name}/*" } ] }
  • 所有到达域的流量所需的 HTTPS

  • 节点到节点加密

  • 静态数据加密

步骤 2:在 OpenSearch 控制面板中创建内部用户

现在,您已经有了域,您可以登录 OpenSearch 控制面板,创建内部用户。

  1. 返回到 OpenSearch Service 控制台,导航到您创建的域的 OpenSearch 控制面板 URL。URL 遵循此格式:domain-endpoint/_dashboards/

  2. 使用 TheMasterUser 登录。

  3. 选择 Add sample data(添加示例数据),然后添加示例飞行数据。

  4. 在左侧导航窗格中,选择安全内部用户创建内部用户

  5. 命名用户 new-user 并指定密码。然后选择创建

步骤 3:在 OpenSearch 控制面板中映射角色

现在,用户配置完毕,您可以将用户映射到角色。

  1. 在 OpenSearch 控制面板的安全部分,选择角色创建角色

  2. 将角色命名为 new-role

  3. 对于索引,为索引模式指定 opensearch_dashboards_sample_data_fli*(Elasticsearch 域上的 kibana_sample_data_fli*)。

  4. 对于操作组,请选择读取

  5. 对于 Document Level Security Query (文档级安全查询),请指定以下查询:

    { "match": { "FlightDelay": true } }
  6. 对于字段级安全性,请选择 Exclude(不包括)并指定 FlightNum

  7. 对于匿名,指定 Dest

  8. 选择创建

  9. 选择映射的用户管理映射。然后添加 new-user用户,选择映射

  10. 返回角色列表,然后选择 opensearch_dashboards_user。选择映射的用户管理映射。然后添加 new-user用户,选择映射

步骤 4:测试权限

角色正确映射后,您可以以受限用户身份登录并测试权限。

  1. 在新的私有浏览器窗口中,导航到域的 OpenSearch 控制面板 URL,使用 new-user 凭证登录,然后选择 Explore on my own(自行浏览)。

  2. 转到 Dev Tools (开发人员工具),然后运行原定设置搜索:

    GET _search { "query": { "match_all": {} } }

    请注意权限错误。new-user 没有运行集群范围内搜索的权限。

  3. 运行另一个搜索:

    GET dashboards_sample_data_flights/_search { "query": { "match_all": {} } }

    请注意,在所有匹配的文档中,有一个为 trueFlightDelay 字段,一个匿名化的 Dest 字段,但没有 FlightNum 字段。

  4. 在原始浏览器窗口中,以 TheMasterUser 身份登录,选择 Dev Tools (开发人员工具),然后执行相同的搜索。请注意权限、命中数、匹配文档和包含字段的差异。