

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 教學課程：使用內部使用者資料庫和 HTTP 基本身分驗證設定網域
<a name="fgac-http-auth"></a>

本教學課程涵蓋另一種熱門的[精細存取控制](fgac.md)使用案例：內部使用者資料庫中的主要使用者，以及適用於 OpenSearch Dashboards 的 HTTP 基本身分驗證。然後，主要使用者可以登入 OpenSearch Dashboards、建立內部使用者、將使用者對應至角色，並使用精細存取控制來限制使用者的許可。

在本教學課程中，您會完成下列步驟：

1. [使用主要使用者建立網域](#fgac-http-auth-domain)

1. [在 OpenSearch Dashboards 中設定內部使用者](#fgac-http-auth-dashboards-user)

1. [在 OpenSearch Dashboards 中對應角色](#fgac-http-auth-dashboards-map)

1. [測試許可](#fgac-http-auth-test)

## 步驟 1：建立網域
<a name="fgac-http-auth-domain"></a>

導覽至位於 https：//[https://console.aws.amazon.com/aos/home/](https://console.aws.amazon.com/aos/home/) 的 Amazon OpenSearch Service 主控台，並使用[下列設定建立網域](createupdatedomains.md)：
+ OpenSearch 1.0 或更高版本，或者 Elasticsearch 7.9 或更高版本
+ 公開存取
+ 使用內部使用者資料庫 (本教學中的其餘部分稱為 `TheMasterUser`) 中的主要使用者進行精細存取控制。
+ Dashboards 的 Amazon Cognito 身分驗證*已停用*
+ 以下存取政策：

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

****  

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

------
+ 要求所有前往網域的流量皆使用 HTTPS
+ 節點對節點加密
+ 靜態資料加密

## 步驟 2：在 OpenSearch Dashboards 中建立內部使用者
<a name="fgac-http-auth-dashboards-user"></a>

現在您已擁有網域，您可以登入 OpenSearch Dashboards 並建立內部使用者。

1. 返回 OpenSearch Service 主控台，然後導覽至您所建立網域的 OpenSearch Dashboards URL。URL 遵循此格式：`{{domain-endpoint}}/_dashboards/`。

1. 使用 登入`TheMasterUser`。

1. 選擇 **Add sample data** (新增範例資料)，並新增範例航班資料。

1. 在左側導覽窗格中，選擇**安全性**、**內部使用者**、**建立內部使用者**。

1. 命名使用者 `new-user`，然後指定密碼。然後選擇 **Create (建立)**。

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

現在您的使用者已設定完成，您可以將使用者映射至角色。

1. 停留在 OpenSearch Dashboards **的安全**區段，然後選擇**角色**、**建立角色**。

1. 將角色命名為 `new-role`。

1. 對於**索引**，請指定索引模式的 `opensearch_dashboards_sample_data_fli*`(`kibana_sample_data_fli*`在 Elasticsearch 網域上）。

1. 對於動作群組，請選擇 **read** (讀取)。

1. 對於 **Document level security** (文件層級安全)，指定以下查詢：

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

1. 如需欄位層級的安全性，請選擇 **Exclude** (排除)，然後指定 `FlightNum`。

1. 對於 **Anonymization** (匿名化)，請指定 `Dest`。

1. 選擇**建立**。

1. 選擇 **Mapped users** (已映射的使用者)、**Manage mapping** (管理映射)。然後將 `new-user` 新增至 **Users** (使用者)，然後選擇 **Map** (映射)。

1. 傳回角色清單，然後選擇 **opensearch\_dashboards\_user**。選擇 **Mapped users** (已映射的使用者)、**Manage mapping** (管理映射)。然後將 `new-user` 新增至 **Users** (使用者)，然後選擇 **Map** (映射)。

## 步驟 4：測試許可
<a name="fgac-http-auth-test"></a>

當您的角色映射正確時，您可以有限使用者身分登入並測試許可。

1. 在新的私有瀏覽器視窗中，導覽至網域的 OpenSearch Dashboards URL，使用 `new-user` 憑證登入，然後選擇 **Explore on my own** (自行探索)。

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 (開發工具)** 並執行相同的搜尋。注意許可、命中數、相符文件以及所包含欄位中的差異。