本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
JWTAmazon OpenSearch 服務的身份驗證和授權
Amazon OpenSearch 服務現在允許您使用 JSON Web 令牌(JWTs)進行身份驗證和授權。JWTs是用JSON於授予單一登入 (SSO) 存取權的基礎存取權杖。您可以JWTs在 OpenSearch 服務中使用來建立單一登入權杖,以驗證對 OpenSearch Service 網域的要求。若要使用JWTs,您必須啟用精細的存取控制,並且必須提供有效RSA或ECDSAPEM格式化的公開金鑰。如需有關精細存取控制的詳細資訊,請參閱 Amazon OpenSearch 服務中的精細存取控制。
您可以JSON使用 OpenSearch 服務主控台、 AWS Command Line Interface (AWS CLI) 或 AWS SDKs.
考量事項
在JWTs與 Amazon OpenSearch 服務一起使用之前,您必須考慮以下事項:
-
由於PEM格式化的RSA公鑰大小,我們建議使用 AWS 控制台來配置JWT身份驗證和授權。
-
為您指定主旨和角色欄位時,您必須提供有效的使用者和角色JWTs,否則會拒絕要求。
-
OpenSearch 2.11 是可用於JWT驗證的最早相容版本。
修改網域存取政策
您必須先更新網域存取原則以允許使用者存取網域,才能將網域設定為使JWT用JWT驗證和授權。否則,所有傳入的JWT授權要求都會遭到拒絕。提供子資源 (/*) 完整存取權的建議網域存取原則為:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:ESHttp*",
"Resource": "domain-arn/*"
}
]
}
設定JWT驗證和授權
您可以在網域建立程序期間或更新現有網域來啟用JWT驗證和授權。根據您選擇的選項,設定步驟略有不同。
下列步驟說明如何在 OpenSearch Service 主控台中設定JWT驗證和授權的現有網域:
-
在 [網域設定] 下,瀏覽至 [JWT驗證和授權] OpenSearch,選取 [啟用JWT驗證和授權]。
-
設定要用於網域的公開金鑰。若要這麼做,您可以上傳包含公開金鑰的PEM檔案,也可以手動輸入。
注意
如果上傳或輸入的金鑰無效,則會在指定問題的文字方塊上方顯示警告。
-
(選擇性) 在其他設定下,您可以設定下列選擇性欄位
-
主旨金鑰 — 您可以將此欄位保留空白,以使用您的預設
sub
金鑰JWTs。 -
角色鍵 — 您可以將此欄位保留空白,以使用您的預設
roles
金鑰JWTs。
完成變更後,請儲存您的網域。
-
使用 a 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)
下列對組態的要求會API啟用現有網域 OpenSearch 的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
若要設定您JWTs的 OpenSearch 網域,您必須提供隱私權增強型郵件 () PEM 格式的公開金鑰。Amazon OpenSearch 服務目前在使用時支援兩種對近加密演算法JWTs:RSA和ECDSA。
若要使用通用 openssl 程式庫建立 RSA key pair,請依照下列步驟執行:
openssl genrsa -out privatekey.pem 2048
openssl rsa -in privatekey.pem -pubout -out publickey.pem
在此範例中,publickey.pem
檔案包含可與 Amazon OpenSearch 服務搭配使用的公開金鑰,同時privatekey.pem
包含用於簽署JWTs傳送至服務的私有金鑰。此外,如果您需要將私鑰轉換為常用pkcs8
格式來生成JWTs.
如果您使用上傳按鈕將PEM檔案直接新增至主控台,檔案必須具有.pem
副檔名、其他副檔名 .crt
.cert
,例如、或.key
目前不支援。