使用 OpenID - Amazon Kendra

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 OpenID

要将 Amazon Kendra 索引配置为使用 OpenID 令牌进行访问控制,您需要来自 OpenID 提供程序的 JWKS(JSON Web 密钥集)网址。在大多数情况下,JWKS URL 采用以下格式:https://domain-name/.well_known/jwks.json(如果他们关注的是 OpenID 发现)。

以下示例说明在创建索引时如何使用 OpenID 进行用户访问控制。

Console
  1. 选择创建索引以开始创建新索引。

  2. 指定索引详细信息页面上,为您的索引指定名称和描述。

  3. 对于 IAM 角色,选择一个角色或选择创建新角色,并指定角色名称来创建新角色。IAM 角色将带有前缀 “AmazonKendra-”。

  4. 将所有其他字段保留为默认值。选择下一步

  5. 配置用户访问控制页面上,在访问控制设置下,选择以使用令牌进行访问控制。

  6. 令牌配置下,选择 OpenID 作为令牌类型

  7. 指定签名密钥 URL。该 URL 应指向一组 JSON Web 密钥。

  8. 可选)在高级配置下:

    1. 指定要在 ACL 检查中使用的用户名

    2. 指定要在 ACL 检查中使用的一个或多个

    3. 指定将验证颁发机构的颁发机构

    4. 指定客户端 ID。您必须指定与 JWT 中的受众相匹配的正则表达式。

  9. 配置详细信息页面中,选择开发者版本

  10. 选择创建以创建索引。

  11. 等待您的索引创建完成。 Amazon Kendra 为您的索引配置硬件。此操作可能需要一些时间。

CLI

要使用 JSON 输入文件创建索引,请先 AWS CLI 使用所需参数创建一个 JSON 文件:

{ "Name": "user-context", "Edition": "ENTERPRISE_EDITION", "RoleArn": "arn:aws:iam::account-id:role:/my-role", "UserTokenConfigurations": [ { "JwtTokenTypeConfiguration": { "KeyLocation": "URL", "Issuer": "optional: specify the issuer url", "ClaimRegex": "optional: regex to validate claims in the token", "UserNameAttributeField": "optional: user", "GroupAttributeField": "optional: group", "URL": "https://example.com/.well-known/jwks.json" } } ], "UserContextPolicy": "USER_TOKEN" }

您可以覆盖默认的用户和组字段名称。UserNameAttributeField 的默认值为“user”。GroupAttributeField 的默认值为“groups”。

接下来,使用输入文件调用 create-index。例如,如果您的 JSON 文件名为 create-index-openid.json,则可以使用以下名称:

aws kendra create-index --cli-input-json file://create-index-openid.json
Python
response = kendra.create_index( Name='user-context', Edition='ENTERPRISE_EDITION', RoleArn='arn:aws:iam::account-id:role:/my-role', UserTokenConfigurations=[ { "JwtTokenTypeConfiguration": { "KeyLocation": "URL", "Issuer": "optional: specify the issuer url", "ClaimRegex": "optional: regex to validate claims in the token", "UserNameAttributeField": "optional: user", "GroupAttributeField": "optional: group", "URL": "https://example.com/.well-known/jwks.json" } } ], UserContextPolicy='USER_TOKEN' )