Amazon OpenSearch 服務的 JWT 身份驗證和授權 - Amazon OpenSearch 服務

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

Amazon OpenSearch 服務的 JWT 身份驗證和授權

Amazon OpenSearch 服務現在允許您使用 JSON 網絡令牌(JWT)進行身份驗證和授權。JWT 是基於 JSON 的訪問令牌,用於授予單一登錄(SSO)訪問權限。您可以在 OpenSearch 服務中使用 JWT 來建立單一登入權杖,以驗證對 OpenSearch 服務網域的要求。若要使用 JWT,您必須啟用精細的存取控制,並且必須提供有效的 RSA 或 ECDSA PEM 格式的公開金鑰。如需有關精細存取控制的詳細資訊,請參閱 Amazon OpenSearch 服務中的精細存取控制

您可以使用 OpenSearch 服務主控台、 AWS Command Line Interface (AWS CLI) 或 AWS SDK 來設定 JSON Web 權杖。

考量事項

在您將 JWT 與 Amazon OpenSearch 服務一起使用之前,您必須考慮以下幾點:

  • 由於 PEM 格式的 RSA 公鑰大小,我們建議使用 AWS 控制台來配置 JWT 身份驗證和授權。

  • 指定 JWT 的主旨和角色欄位時,您必須提供有效的使用者和角色,否則請求將被拒絕。

修改網域存取政策

在將網域設定為使用 JWT 驗證和授權之前,您必須先更新網域存取原則,以允許 JWT 使用者存取網域。否則,所有傳入的 JWT 授權請求都將被拒絕。提供子資源 (/*) 完整存取權的建議網域存取原則為:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESHttp*", "Resource": "domain-arn/*" } ] }

配置 JWT 身份驗證和授權

您可以在網域建立程序期間或更新現有網域來啟用 JWT 驗證和授權。根據您選擇的選項,設定步驟略有不同。

下列步驟說明如何在 OpenSearch 服務主控台中設定 JWT 驗證和授權的現有網域:

  1. 在「網域設定」下,導覽至「的 JWT 驗證和授權」 OpenSearch,選取「啟用 JWT 驗證和授權」。

  2. 設定要用於網域的公開金鑰。若要這麼做,您可以上傳包含公開金鑰的 PEM 檔案,也可以手動輸入。

    注意

    如果上傳或輸入的金鑰無效,則會在指定問題的文字方塊上方顯示警告。

  3. (選擇性) 在其他設定下,您可以設定下列選擇性欄位

    • 主旨金鑰 — 您可以將此欄位保留空白,以使用 JWT 的預設sub金鑰。

    • 角色鍵 — 您可以將此欄位保留空白,以使用 JWT 的預設roles金鑰。

    完成變更後,請儲存您的網域。

使用 JWT 發送測試請求

使用指定的主題和角色對創建新的 JWT 後,您可以發送測試請求。若要這麼做,請使用私密金鑰透過建立 JWT 的工具簽署您的要求。 OpenSearch 服務能夠通過驗證此簽名來驗證傳入的請求。

注意

如果您為 JWT 指定了自定義主題鍵或角色密鑰,則必須為 JWT 使用正確的聲明名稱。

以下是如何透過網域搜尋端點使用 JWT 權杖存取 OpenSearch 服務的範例:

curl -XGET "$search_endpoint" -H "Authorization: Bearer <JWT>"

如果網域存在,下列 AWS CLI 命令會啟用 OpenSearch JWT 驗證和授權:

aws opensearch update-domain-config --domain-name <your_domain_name> --advanced-security-options '{"JWTOptions":{"Enabled":true, "PublicKey": "<your_public_key>", "SubjectKey": "<your_subject_key>", "RolesKey": "<your_roles_key>"}}'

配置 JWT 身份驗證和授權(通過 API 進行配置)

下列對 OpenSearch 設定 API 的要求會啟用現有網域的 JWT 驗證和授權:

POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/my-domain/config { "AdvancedSecurityOptions": { "JWTOptions": { "Enabled": true, "PublicKey": "public-key", "RolesKey": "optional-roles-key", "SubjectKey": "optional-subject-key" } } }
產生 key pair

若要為您的 OpenSearch 網域設定 JWT,您必須提供隱私權增強郵件 (PEM) 格式的公開金鑰。使用 JWT 時,Amazon OpenSearch 服務目前支援兩種對近加密演算法:RSA 和 ECDSA。

若要使用一般 openssl 程式庫建立 RSA key pair,請依照下列步驟執行:

  1. openssl genrsa -out privatekey.pem 2048

  2. openssl rsa -in privatekey.pem -pubout -out publickey.pem

在此範例中,publickey.pem檔案包含可與 Amazon OpenSearch 服務搭配使用的公開金鑰,同時privatekey.pem包含用於簽署傳送至服務之 JWT 的私有金鑰。此外,如果需要將私鑰轉換為常用pkcs8格式來生成 JWT,則可以選擇將私鑰轉換為常用格式。

如果您使用上傳按鈕將 PEM 檔案直接新增至主控台,則檔案的副檔名必須為.pem副檔名、其他副檔名 .crt.cert,例如、或.key目前不支援。