

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

# 教程：使用内部用户数据库和 HTTP 基本身份验证配置域
<a name="fgac-http-auth"></a>

本教程涵盖了另一个流行的[细粒度访问控制](fgac.md)用例：内部用户数据库中的主用户和仪表板的 HTTP 基本身份验证。 OpenSearch 然后，主用户可以登录 OpenSearch 控制面板，创建内部用户，将用户映射到角色，并使用精细的访问控制来限制用户的权限。

在本教程中，您将完成以下步骤：

1. [使用主用户创建域](#fgac-http-auth-domain)

1. [在 OpenSearch 仪表板中配置内部用户](#fgac-http-auth-dashboards-user)

1. [在 OpenSearch 仪表板中映射角色](#fgac-http-auth-dashboards-map)

1. [测试权限](#fgac-http-auth-test)

## 步骤 1：创建域
<a name="fgac-http-auth-domain"></a>

在[https://console.aws.amazon.com/aos/家中/ OpenSearch ](https://console.amazonaws.cn/aos/home/) 进入亚马逊服务控制台，然后使用以下设置[创建一个域名](createupdatedomains.md)：
+ OpenSearch 1.0 或更高版本，或 Elasticsearch 7.9 或更高版本
+ 公有访问权限
+ 对内部用户数据库中的主用户的精细访问控制（对于本教程的其余部分，为 `TheMasterUser`）
+ 控制面板的 Amazon Cognito 身份验证*已禁用*
+ 以下访问策略：

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "Amazon": "arn:aws:iam::111122223333:root"
        },
        "Action": [
          "es:ESHttp*"
        ],
        "Resource": "arn:aws:es:us-east-1:111122223333:domain/{domain-name}/*"
      }
    ]
  }
  ```

------
+ 所有到达域的流量所需的 HTTPS
+ Node-to-node 加密
+ 静态数据加密

## 步骤 2：在 OpenSearch 控制面板中创建内部用户
<a name="fgac-http-auth-dashboards-user"></a>

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

1. 返回 OpenSearch 服务控制台并导航到您创建的域名的控制 OpenSearch 面板 URL。URL 遵循此格式：`domain-endpoint/_dashboards/`。

1. 使用 `TheMasterUser` 登录。

1. 选择 **Add sample data**（添加示例数据），然后添加示例飞行数据。

1. 在左侧导航窗格中，选择**安全**、**内部用户**、**创建内部用户**。

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

## 步骤 3：在 OpenSearch 仪表板中映射角色
<a name="fgac-http-auth-dashboards-map"></a>

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

1. 在 “控制面 OpenSearch 板” 的 “**安全**” 部分，选择 “**角色**”、“**创建角色**”。

1. 将角色命名为 `new-role`。

1. 对于**索引**，为索引模式指定 `opensearch_dashboards_sample_data_fli*`（Elasticsearch 域上的 `kibana_sample_data_fli*`）。

1. 对于操作组，请选择**读取**。

1. 对于 **Document Level Security Query (文档级安全查询)**，请指定以下查询：

   ```
   {
     "match": {
       "FlightDelay": true
     }
   }
   ```

1. 对于字段级安全性，请选择 **Exclude（不包括）**并指定 `FlightNum`。

1. 对于**匿名**，指定 `Dest`。

1. 选择**创建**。

1. 选择**映射的用户**、**管理映射**。然后添加 `new-user` 到**用户**，选择**映射**。

1. 返回角色列表，然后选择 **opensearch\$1dashboards\$1user**。选择**映射的用户**、**管理映射**。然后添加 `new-user` 到**用户**，选择**映射**。

## 步骤 4：测试权限
<a name="fgac-http-auth-test"></a>

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

1. 在新的私有浏览器窗口中，导航到该域的 OpenSearch 仪表板网址，使用`new-user`凭据登录，然后选择**自己浏览**。

1. 转到 **Dev Tools (开发人员工具)**，然后运行原定设置搜索：

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

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

1. 运行另一个搜索：

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

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

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