

Amazon Kendra 从 2026 年 7 月 30 日起，将不再向新客户开放。如果您想使用该服务，请在 7 月 30 日之前注册。有关类似的功能 Amazon Kendra，请浏览 Amazon Bedrock 知识库。[了解更多](https://docs.aws.amazon.com/kendra/latest/dg/kendra-availability-change.html)。

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

# 使用 OpenID
<a name="create-index-access-control-tokens-openid"></a>

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

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

------
#### [ Console ]

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

1. 在**指定索引详细信息**页面上，为您的索引指定名称和描述。

1. 对于 **IAM 角色**，选择一个角色或选择**创建新角色**，并指定角色名称来创建新角色。IAM 角色的前缀为“AmazonKendra-”。

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

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

1. 在**令牌配置**下，选择 **OpenID** 作为**令牌类型**。

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

1. （*可选*）在**高级配置**下：

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

   1. 指定要在 ACL 检查中使用的一个或多个**组**。

   1. 指定将验证颁发机构的**颁发机构**。

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

1. 在**配置详细信息**页面中，选择**开发者版本**。

1. 选择**创建**以创建索引。

1. 等待索引创建完成。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'
)
```

------