教學課程:使用內部使用者資料庫和 HTTP 基本身分驗證設定網域 - Amazon OpenSearch 服務

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

教學課程:使用內部使用者資料庫和 HTTP 基本身分驗證設定網域

本教學課程涵蓋另一個熱門的精細存取控制使用案例:內部使用者資料庫中的主要使用者和 OpenSearch 儀表板的 HTTP 基本驗證。然後,主要使用者可以登入 OpenSearch 儀表板、建立內部使用者、將使用者對應至角色,以及使用精細的存取控制來限制使用者的權限。

在本教學課程中,您會完成下列步驟:

步驟 1:建立網域

https://console.aws.amazon.com/aos/home/ 瀏覽至 Amazon OpenSearch 服務主控台,並使用以下設定建立網域

  • OpenSearch 1.0 或更新版本,或彈性搜尋 7.9 或更新版本

  • 公用存取

  • 使用內部使用者資料庫 (本教學中的其餘部分稱為 TheMasterUser) 中的主要使用者進行精細存取控制。

  • Dashboards 的 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

  • N ode-to-node 加密技術

  • 靜態資料加密

步驟 2:在 OpenSearch 儀表板中建立內部使用者

現在您已經擁有網域,您可以登入 OpenSearch 儀表板並建立內部使用者。

  1. 返回 OpenSearch 服務主控台並導覽至您建立之網域的 OpenSearch 儀表板 URL。URL 遵循此格式:domain-endpoint/_dashboards/

  2. 使用TheMasterUser.

  3. 選擇 Add sample data (新增範例資料),並新增範例航班資料。

  4. 在左側導覽窗格中,選擇 [安全性]、[內部使用者]、[建立內部使用者

  5. 命名使用者 new-user,然後指定密碼。然後選擇 Create (建立)

步驟 3:對應 OpenSearch 儀表板中的角色

現在您的使用者已設定完成,您可以將使用者對應至角色。

  1. 停留在 OpenSearch 儀表板的安全部分,然後選擇角色創建角色。

  2. 將角色命名為 new-role

  3. 在索中,指定 opensearch_dashboards_sample_data_fli* (kibana_sample_data_fli*在 Elasticsearch 網域上) 做為索引模式。

  4. 對於動作群組,請選擇 read (讀取)。

  5. 對於 Document level security (文件層級安全),指定以下查詢:

    { "match": { "FlightDelay": true } }
  6. 如需欄位層級的安全性,請選擇 Exclude (排除),然後指定 FlightNum

  7. 對於 Anonymization (匿名化),請指定 Dest

  8. 選擇建立

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

  10. 傳回角色清單,然後選擇 opensearch_dashboards_user。選擇 Mapped users (已映射的使用者)、Manage mapping (管理映射)。然後將 new-user 新增至 Users (使用者),然後選擇 Map (映射)。

步驟 4:測試權限

正確對應角色後,您可以以受限使用者身分登入並測試權限。

  1. 在新的私人瀏覽器視窗中,導覽至網域的 OpenSearch 儀表板 URL,使用new-user認證登入,然後選擇 [自行探索]。

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