本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 JSON 網絡令牌(JWT)與公鑰
下列範例會示範如何在建立索引時,使用 JSON Web Token (JWT) 搭配公開金鑰來進行使用者存取控制。如需有關 JWT 的詳細資訊,請參閱 jwt.io
- Console
-
-
選擇 [建立索引] 以開始建立新索引。
-
在 [指定索引詳細資訊] 頁面上,為索引提供名稱和說明。
-
對於 IAM 角色,請選取角色或選取 [建立新角色],然後指定角色名稱以建立新角色。該 IAM 角色的前綴為「AmazonKendra-」。
-
將所有其他欄位保留為預設值。選擇下一步。
-
在 [設定使用者存取控制] 頁面的 [存取控制設定] 下,選擇 [是] 以使用權杖進行存取控制。
-
在令牌配置下,選擇具有公共密鑰的 JWT 作為令牌類型。
-
在 [簽署公用金鑰的參數] 下,選擇 [密碼類型]。您可以使用現有 AWS Secrets Manager 密碼或建立新密碼。
若要建立新密碼,請選擇 [新增],然後依照下列步驟執行:
-
在 [新 AWS Secrets Manager 密碼] 下,指定 [密碼] 名稱。當您儲存公開金鑰時,
AmazonKendra-
會新增前置字元。 -
指定金鑰識別碼。密鑰 ID 是一個提示,指示哪個密鑰用於保護令牌的 JSON Web 簽名。
-
選擇權杖的簽署演算法。這是用於保護 ID 令牌的加密算法。如需 RSA 的詳細資訊,請參閱 RSA 加密法
。 -
在 [憑證屬性] 下,指定選擇性的憑證鏈結。憑證鏈結是由憑證清單所組成。它以伺服器的憑證開頭,並以根憑證終止。
-
選擇性指定指紋或指紋。它應該是一個證書的哈希值,計算在所有證書數據及其簽名上。
-
指定「指數」。這是 RSA 公開金鑰的指數值。它以 Base64urlUInt 編碼值表示。
-
指定模數。這是 RSA 公開金鑰的指數值。它以 Base64urlUInt 編碼值表示。
-
選取 [儲存金鑰] 以儲存新的金鑰。
-
-
進階組態下的選用性:
-
指定 ACL 檢查中要使用的「使用者名稱」。
-
指定一個或多個要在 ACL 檢查中使用的群組。
-
指定將驗證權杖發行者的發行者。
-
指定用戶端識別碼。您必須指定符合 JWT 中對象的規則運算式。
-
-
在佈建詳細資料頁面中,選擇開發人員版本。
-
選擇 [建立] 以建立索引。
-
等待您的索引創建。 Amazon Kendra 為您的索引佈建硬體。此操作可能需要一些時間。
-
- CLI
-
您可以將 JWT 與. AWS Secrets Manager您需要 Secrets Manager ARN,並且您的 Amazon Kendra 角色必須具有 Secrets Manager 資源的
GetSecretValue
存取權。如果您使用加密資 Secrets Manager 源 AWS KMS,則角色也必須具有解密動作的存取權。若要 AWS CLI 使用 JSON 輸入檔案建立索引,請先使用您想要的參數建立 JSON 檔案:
{ "Name": "
user-context
", "Edition": "ENTERPRISE_EDITION
", "RoleArn": "arn:aws:iam::account id
:role:/my-role
", "UserTokenConfigurationList": [ { "JwtTokenTypeConfiguration": { "KeyLocation": "SECRET_MANAGER", "Issuer": "optional: specify the issuer url
", "ClaimRegex": "optional: regex to validate claims in the token
", "UserNameAttributeField": "optional: user
", "GroupAttributeField": "optional: group
", "SecretManagerArn": "arn:aws:secretsmanager:us-west-2
:account id
:secret:/my-user-context-secret
} } ], "UserContextPolicy": "USER_TOKEN" }您可以覆寫預設的使用者和群組欄位名稱。的預設值
UserNameAttributeField
為「使用者」。的預設值GroupAttributeField
為「群組」。接下來,
create-index
使用輸入文件調用。例如,如果 JSON 文件的名稱是create-index-openid.json
,則可以使用以下命令:aws kendra create-index --cli-input-json file://create-index-openid.json
密碼必須具有以下格式 Secrets Manager:
{ "keys": [ { "alg": "RS256|RS384|RS512", "kty": "RSA", //this can be RSA only for now "use": "sig", //this value can be sig only for now "n": "
modulus of standard pem
", "e": "exponent of standard pem
", "kid": "key_id
", "x5t": "certificate thumprint for x.509 cert
", "x5c": [ "certificate chain
" ] } ] }如需有關 JWT 的詳細資訊,請參閱 jwt.io
。 - Python
-
response = kendra.create_index( Name='
user-context
', Edition='ENTERPRISE_EDITION
', RoleArn='arn:aws:iam::account id
:role:/my-role
', UserTokenConfigurationList=[ { "JwtTokenTypeConfiguration": { "KeyLocation": "URL", "Issuer": "optional: specify the issuer url
", "ClaimRegex": "optional: regex to validate claims in the token
", "UserNameAttributeField": "optional: user
", "GroupAttributeField": "optional: group
", "SecretManagerArn": "arn:aws:secretsmanager:us-west-2
:account id
:secret:/my-user-context-secret
" } } ], UserContextPolicy='USER_TOKEN' )