

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

# 根据用户上下文进行筛选
<a name="user-context-filter"></a>

**注意**  
功能支持因所用索引类型和搜索 API 而异。要查看您使用的索引类型和搜索 API 是否支持此功能，请参阅[索引类型](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)。

您可以根据用户或其所在组对文档的访问权限来筛选用户的搜索结果。您可以使用用户令牌、用户 ID 或用户属性来筛选文档。

用户上下文筛选是一种个性化搜索，其优点是控制对文档的访问权限。例如，并非所有在公司门户网站上搜索信息的团队都应该访问绝密的公司文档，这些文档也不应与所有用户相关。只有获得绝密文档访问权限的特定用户或团队组才能在搜索结果中看到这些文档。

将文档编入索引后 Amazon Kendra，会为大多数文档提取相应的访问控制列表 (ACL)。ACL 指定允许或拒绝哪些用户名和组名访问文档。没有 ACL 的文档是公共文档。

Amazon Kendra 可以为大多数数据源提取与每个文档关联的用户或群组信息。例如，Quip 中的文档可以包含有权访问该文档的精选用户的“共享”列表。如果您使用 S3 存储桶作为数据来源，则需要为 ACL 提供一个 [JSON 文件](https://docs.aws.amazon.com/kendra/latest/dg/s3-acl.html)，并将该文件的 S3 路径作为数据来源配置的一部分。如果将文档直接添加到索引，则可以在 Princip [al](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Principal.html) 对象中指定 ACL 作为 [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument.html)API 中文档对象的一部分。

如果您使用的是 Amazon Kendra Enterprise 索引或开发者版索引，则可以使用 [CreateAccessControlConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateAccessControlConfiguration.html)API 重新配置现有的文档级别访问控制，而无需再次为所有文档编制索引。例如，您的索引包含只有特定员工或用户才能访问的绝密公司文档。其中一位用户离开公司或转到应被禁止访问绝密文档的团队。用户仍然可以访问绝密文档，因为在您的文档之前被编入索引时，该用户拥有访问权限。您可以为具有拒绝访问权限的用户创建特定的访问控制配置。您可以稍后更新访问控制配置，以便在用户返回公司并重新加入“绝密”团队时允许访问。随着情况的变化，您可以重新配置文档的访问控制。

要将您的访问控制配置应用于某些文档，请使用 D [oc](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Document.html) ument 对象中`AccessControlConfigurationId`包含的 [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument.html)API。如果您使用 S3 存储桶作为数据源，则`.metadata.json`使用更新`AccessControlConfigurationId`并同步您的数据源。 Amazon Kendra 目前仅支持对使用 `BatchPutDocument` API 编制索引的 S3 数据源和文档进行访问控制配置。

## 按用户令牌筛选
<a name="context-filter-token"></a>

**重要**  
Amazon Kendra GenAI 企业版索引不支持基于令牌的用户访问控制。

查询索引时，您可以使用用户令牌，根据用户或其所在组对文档的访问权限来筛选搜索结果。当您发出查询时， Amazon Kendra 提取并验证令牌，提取和检查用户和群组信息，然后运行查询。将返回用户有权访问的所有文档，包括公共文档。有关更多信息，请参阅[基于角色的访问控制](https://docs.aws.amazon.com/kendra/latest/dg/create-index-access-control.html)。

您在[UserContext](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UserContext.html)对象中提供用户令牌，然后在[查询](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API 中传递该令牌。

以下命令说明如何添加用户令牌。

```
response = kendra.query(
    QueryText = query,
    IndexId = index,
    UserToken = {
        Token = "token"
    })
```

您可以将用户映射到群组。使用用户上下文筛选时，无需在发出查询时包含用户所属的所有群组。使用 [PutPrincipalMapping](https://docs.aws.amazon.com/kendra/latest/APIReference/API_PutPrincipalMapping.html)API，您可以将用户映射到他们的群组。如果您不想使用 `PutPrincipalMapping` API，则必须在发出查询时提供用户名和该用户所属的所有群组。您还可以使用[UserGroupResolutionConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UserGroupResolutionConfiguration.html)对象获取 IAM Identity Center 身份源中群组和用户的访问级别。

## 按用户 ID 和群组筛选
<a name="context-filter-user-incl-datasources"></a>

查询索引时，您可以使用用户 ID 和群组，根据用户或其群组对文档的访问权限筛选搜索结果。当您发出查询时， Amazon Kendra 会检查用户和群组信息并运行查询。将返回与用户有权访问的查询相关的所有文档，包括公共文档。

您还可以按用户和群组有权访问的数据来源筛选搜索结果。如果一个组与多个数据来源相关联，但您只想让该组访问特定数据来源的文档，则指定数据来源非常有用。例如，“研究”、“工程”和“销售和营销”这三个组都与存储在数据来源Confluence和Salesforce中的公司文档相关联。但是，“销售和营销”团队只需要访问存储在Salesforce中的客户相关文档即可。因此，当销售和营销用户搜索与客户相关的文档时，他们可以在搜索结果中看到来自 Salesforce 的文档。不从事销售和市场营销工作的用户不会在搜索结果中看到 Salesforce 文档。

您在[UserContext](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UserContext.html)对象中提供用户、群组和数据源信息，然后在 [Query](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API 中传递这些信息。用户 ID 以及组和数据来源列表应与您在 Princip [al](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Principal.html) 对象中指定的名称相匹配，以标识用户、组和数据来源。使用该`Principal`对象，您可以将用户、组或数据来源添加到允许列表或拒绝列表中以访问文档。

您必须提供以下任一信息：
+ 用户和群组信息，以及（可选）数据来源信息。
+ 仅当您使用 [PutPrincipalMapping](https://docs.aws.amazon.com/kendra/latest/APIReference/API_PutPrincipalMapping.html)API 将用户映射到群组和数据源时，才会显示用户信息。您还可以使用[UserGroupResolutionConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UserGroupResolutionConfiguration.html)对象获取 IAM Identity Center 身份源中群组和用户的访问级别。

如果查询中未包含此信息，则 Amazon Kendra 返回所有文档。如果您提供此信息，则仅返回具有匹配用户 IDs、组和数据源的文档。

以下内容显示了如何包括用户 ID、群组和数据来源。

```
response = kendra.query(
    QueryText = query,
    IndexId = index,
    UserContext={'Token': 'string', 'UserId': 'string', 'Groups': [ 'string', ], 'DataSourceGroups': [ { 'GroupId': 'string', 'DataSourceId': 'string' }, ] },)
```

## 按属性筛选
<a name="context-filter-attribute"></a>

查询索引时，您可以使用内置属性，`_user_id`并`_group_id`根据用户及其群组对文档的访问权限筛选搜索结果。您最多可以设置 100 个群组标识符。当您发出查询时， Amazon Kendra 会检查用户和群组信息并运行查询。将返回与用户有权访问的查询相关的所有文档，包括公共文档。

您在[AttributeFilter](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeFilter.html)对象中提供用户和群组属性，然后在[查询](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API 中传递这些属性。

以下示例显示了一个请求，该请求根据用户 ID 以及用户所属的“HR”和“IT”组筛选查询响应。该查询将返回允许列表中包含用户或“HR”或“IT”组的所有文档。如果该用户或其中一个组在文档的拒绝列表中，则不会返回该文档。

```
response = kendra.query(
        QueryText = query,
        IndexId = index,
        AttributeFilter = {
            "OrAllFilters": [
                {
                    "EqualsTo": {
                        "Key": "_user_id",
                        "Value": {
                            "StringValue": "user1"
                        }
                     }
                },
                {
                    "EqualsTo": {
                        "Key": "_group_ids",
                        "Value": {
                            "StringListValue": ["HR", "IT"]
                        }
                    }
                }
            ]
        }
        )
```

您还可以在`Principal`对象中指定群组可以访问哪个数据来源。

**注意**  
用户上下文筛选不是对内容的身份验证或授权控制。它不会对发送到 `Query` API 的用户和群组进行用户身份验证。您的应用程序有责任确保发送到 `Query` API 的用户和群组信息经过身份验证和授权。

每个数据来源都实现了用户上下文筛选。以下部分描述了每种实现。

**Topics**
+ [按用户令牌筛选](#context-filter-token)
+ [按用户 ID 和群组筛选](#context-filter-user-incl-datasources)
+ [按属性筛选](#context-filter-attribute)
+ [对直接添加到索引的文档进行用户上下文筛选](#context-filter-batch)
+ [筛选用户上下文以查找常见问题](#context-filter-faq)
+ [数据来源的用户上下文筛选](#datasource-context-filter)

## 对直接添加到索引的文档进行用户上下文筛选
<a name="context-filter-batch"></a>

使用 [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument.html)API 将文档直接添加到索引时， Amazon Kendra 会从文档的`AccessControlList`字段中获取用户和群组信息。您为文档提供访问控制列表（ACL），ACL 随文档一起提取。

您可以在 `BatchPutDocument` API 中将 Princip [al](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Principal.html) 对象中的 ACL 指定为 [Doc](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Document.html) ument 对象的一部分。提供以下信息：
+ 用户或组应具有的访问权限。您可以指定为 `ALLOW` 或 `DENY`。
+ 实体的类型。您可以指定为 `USER` 或 `GROUP`。
+ 用户或组的名称。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

## 筛选用户上下文以查找常见问题
<a name="context-filter-faq"></a>

向索引[中添加常见问题解答](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateFaq.html)时， Amazon Kendra 会从 FAQ JSON 文件中`AccessControlList` object/field 获取用户和群组信息。您也可以使用带有自定义字段或属性的常见问题 CSV 文件进行访问控制。

提供以下信息：
+ 用户或组应具有的访问权限。您可以指定为 `ALLOW` 或 `DENY`。
+ 实体的类型。您可以指定为 `USER` 或 `GROUP`。
+ 用户或组的名称。

有关更多信息，请参阅 [ 常见问题](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html)。

## 数据来源的用户上下文筛选
<a name="datasource-context-filter"></a>

Amazon Kendra 还会从支持的数据源连接器中搜寻用户和组访问控制列表 (ACL) 信息。这对于用户上下文筛选非常有用，在这种筛选中，搜索结果是根据用户或其所在组对文档的访问权限进行筛选的。

**重要**  
Amazon Kendra GenAI 企业版索引仅支持 v2.0 Amazon Kendra 数据来源连接器。

**Topics**
+ [Adobe Experience Manager 数据来源的用户上下文筛选](#context-filter-aem)
+ [Alfresco 数据来源的用户上下文筛选](#context-filter-alfresco)
+ [针对 Aurora (MySQL) 数据源的用户上下文筛选](#context-filter-aurora-mysql)
+ [筛选 Aurora (PostgreSQL) 数据源的用户上下文](#context-filter-aurora-postgresql)
+ [Amazon FSx 数据源的用户上下文筛选](#context-filter-fsx)
+ [数据库数据来源的用户上下文筛选](#context-filter-jdbc)
+ [Amazon RDS （微软 SQL Server）数据源的用户上下文筛选](#context-filter-rds-ms-sql-server)
+ [针对 Amazon RDS (MySQL) 数据源的用户上下文筛选](#context-filter-rds-mysql)
+ [筛选 Amazon RDS (Oracle) 数据源的用户上下文](#context-filter-rds-oracle)
+ [筛选 Amazon RDS (PostgreSQL) 数据源的用户上下文](#context-filter-rds-postgresql)
+ [Amazon S3 数据源的用户上下文筛选](#context-filter-s3)
+ [Box 数据来源的用户上下文筛选](#context-filter-box)
+ [Confluence 数据来源的用户上下文筛选](#context-filter-confluence)
+ [针对 Dropbox 数据来源的用户上下文筛选](#context-filter-dropbox)
+ [Drupal 数据来源的用户上下文筛选](#context-filter-drupal)
+ [GitHub 数据源的用户上下文筛选](#context-filter-github)
+ [Gmail 数据来源的用户上下文筛选](#context-filter-gmail)
+ [筛选 Google 云端硬盘数据来源的用户上下文](#context-filter-google)
+ [筛选 IBM DB2 数据源的用户上下文](#context-filter-ibm-db2)
+ [Jira 数据来源的用户上下文筛选](#context-filter-jira)
+ [Microsoft Exchange 数据来源的用户上下文筛选](#context-filter-exchange)
+ [微软 OneDrive 数据源的用户上下文筛选](#context-filter-onedrive)
+ [微软 OneDrive v2.0 数据源的用户上下文筛选](#context-filter-onedrivev2)
+ [微软 SharePoint 数据源的用户上下文筛选](#context-filter-sharepoint-online)
+ [Microsoft SQL Server 数据来源的用户上下文筛选](#context-filter-ms-sql-server)
+ [Microsoft Teams 数据来源的用户上下文筛选](#context-filter-teams)
+ [Microsoft Yammer 数据来源的用户上下文筛选](#context-filter-yammer)
+ [针对 MySQL 数据来源的用户上下文筛选](#context-filter-mysql)
+ [筛选 Oracle 数据库数据来源的用户上下文](#context-filter-oracle-database)
+ [PostgreSQL 数据来源的用户上下文筛选](#context-filter-postgresql)
+ [Quip 数据来源的用户上下文筛选](#context-filter-quip)
+ [Salesforce 数据来源的用户上下文筛选](#context-filter-salesforce)
+ [ServiceNow 数据源的用户上下文筛选](#context-filter-servicenow)
+ [Slack 数据来源的用户上下文筛选](#context-filter-slack)
+ [Zendesk 数据来源的用户上下文筛选](#context-filter-zendesk)

### Adobe Experience Manager 数据来源的用户上下文筛选
<a name="context-filter-aem"></a>

当您使用 Adobe Experience Manager 数据源时， Amazon Kendra 会从 Adobe Experience Manager 实例获取用户和群组信息。

群组和用户映射 IDs 如下：
+ `_group_ids`—群组 IDs 存在于 Adobe Experience Manager 内容中，其中设置了访问权限。它们是从 Adobe 体验管理器中的群组名称映射出来的。
+ `_user_id`— 用户 IDs 存在于 Adobe Experience Manager 内容中，其中设置了访问权限。它们是从 Adobe 体验管理器中的用户电子邮件 IDs 中映射出来的。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### Alfresco 数据来源的用户上下文筛选
<a name="context-filter-alfresco"></a>

当你使用 Alfresco 数据源时， Amazon Kendra 会从 Alfresco 实例中获取用户和群组信息。

群组和用户映射 IDs 如下：
+ `_group_ids`—在 Alfresco 中，群组 IDs 存在于设置了访问权限的文件上。它们是从 Alfresco 中组的系统名称（不是显示名称）映射出来的。
+ `_user_id`—用户 IDs 存在于 Alfresco 中已设置访问权限的文件上。它们是从用户电子邮件中映射出来的，就像 IDs 在 Alfresco 中一样。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### 针对 Aurora (MySQL) 数据源的用户上下文筛选
<a name="context-filter-aurora-mysql"></a>

使用 Aurora (MySQL) 数据源时， Amazon Kendra 会从源表中的一列中获取用户和组信息。您可以在控制台中指定此列，或者使用[TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html)对象作为 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API 的一部分。

 Aurora (MySQL) 数据库数据源具有以下限制：
+ 您只能为数据库数据来源指定允许列表。您无法指定拒绝列表。
+ 您只能指定群组。您不能为允许列表指定单个用户。
+ 数据库列应是一个包含以分号分隔的组列表的字符串。

### 筛选 Aurora (PostgreSQL) 数据源的用户上下文
<a name="context-filter-aurora-postgresql"></a>

使用 Aurora (PostgreSQL) 数据源时 Amazon Kendra ，会从源表中的一列中获取用户和组信息。您可以在控制台中指定此列，或者使用[TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html)对象作为 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API 的一部分。

 Aurora (PostgreSQL) 数据库数据源具有以下限制：
+ 您只能为数据库数据来源指定允许列表。您无法指定拒绝列表。
+ 您只能指定群组。您不能为允许列表指定单个用户。
+ 数据库列应是一个包含以分号分隔的组列表的字符串。

### Amazon FSx 数据源的用户上下文筛选
<a name="context-filter-fsx"></a>

使用 Amazon FSx 数据源时， Amazon Kendra 会从 Amazon FSx 实例的目录服务中获取用户和组信息。

群 Amazon FSx 组和用户映射 IDs 如下：
+ `_group_ids`—群组 IDs 存在 Amazon FSx 于设置了访问权限的文件中。它们是从的目录服务中的系统组名称映射出来的 Amazon FSx。
+ `_user_id`—用户 IDs 存在 Amazon FSx 于设置了访问权限的文件中。它们是从的目录服务中的系统用户名映射出来的 Amazon FSx。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### 数据库数据来源的用户上下文筛选
<a name="context-filter-jdbc"></a>

当您使用数据库数据源（例如）时 Amazon Aurora PostgreSQL， Amazon Kendra 会从源表的某一列中获取用户和组信息。您可以在 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API 中将此列指定为[AclConfiguration[DatabaseConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DatabaseConfiguration.html)](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AclConfiguration.html)对象的一部分。

数据库数据来源具有以下限制：
+ 您只能为数据库数据来源指定允许列表。您无法指定拒绝列表。
+ 您只能指定群组。您不能为允许列表指定单个用户。
+ 数据库列应是一个包含以分号分隔的组列表的字符串。

### Amazon RDS （微软 SQL Server）数据源的用户上下文筛选
<a name="context-filter-rds-ms-sql-server"></a>

当你使用 Amazon RDS （Microsoft SQL Server）数据源时， Amazon Kendra 会从源表中的一列中获取用户和组信息。您可以在控制台中指定此列，或者使用[TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html)对象作为 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API 的一部分。

 Amazon RDS （微软 SQL Server）数据库数据源有以下限制：
+ 您只能为数据库数据来源指定允许列表。您无法指定拒绝列表。
+ 您只能指定群组。您不能为允许列表指定单个用户。
+ 数据库列应是一个包含以分号分隔的组列表的字符串。

### 针对 Amazon RDS (MySQL) 数据源的用户上下文筛选
<a name="context-filter-rds-mysql"></a>

使用 Amazon RDS (MySQL) 数据源时， Amazon Kendra 会从源表中的一列中获取用户和组信息。您可以在控制台中指定此列，或者使用[TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html)对象作为 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API 的一部分。

 Amazon RDS (MySQL) 数据库数据源具有以下限制：
+ 您只能为数据库数据来源指定允许列表。您无法指定拒绝列表。
+ 您只能指定群组。您不能为允许列表指定单个用户。
+ 数据库列应是一个包含以分号分隔的组列表的字符串。

### 筛选 Amazon RDS (Oracle) 数据源的用户上下文
<a name="context-filter-rds-oracle"></a>

使用 Amazon RDS (Oracle) 数据源时， Amazon Kendra 会从源表中的一列中获取用户和组信息。您可以在控制台中指定此列，或者使用[TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html)对象作为 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API 的一部分。

 Amazon RDS (Oracle) 数据库数据源具有以下限制：
+ 您只能为数据库数据来源指定允许列表。您无法指定拒绝列表。
+ 您只能指定群组。您不能为允许列表指定单个用户。
+ 数据库列应是一个包含以分号分隔的组列表的字符串。

### 筛选 Amazon RDS (PostgreSQL) 数据源的用户上下文
<a name="context-filter-rds-postgresql"></a>

使用 Amazon RDS (PostgreSQL) 数据源时 Amazon Kendra ，会从源表中的一列中获取用户和组信息。您可以在控制台中指定此列，或者使用[TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html)对象作为 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API 的一部分。

 Amazon RDS (PostgreSQL) 数据库数据源具有以下限制：
+ 您只能为数据库数据来源指定允许列表。您无法指定拒绝列表。
+ 您只能指定群组。您不能为允许列表指定单个用户。
+ 数据库列应是一个包含以分号分隔的组列表的字符串。

### Amazon S3 数据源的用户上下文筛选
<a name="context-filter-s3"></a>

您可以使用与文档关联的元数据文件向 Amazon S3 数据源中的文档添加用户上下文筛选。您可以将信息添加到 JSON 文档的`AccessControlList`字段中。有关向从数据来源编制索引的文档中添加元 Amazon S3 数据的更多信息，请参阅 [S3 文档元数据](https://docs.aws.amazon.com/kendra/latest/dg/s3-metadata.html)。

您提供三条信息：
+ 实体应拥有的访问权限。您可以说`ALLOW`或`DENY`。
+ 实体的类型。您可以说`USER`或`GROUP`。
+ 在 中，将实体命名为 。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### Box 数据来源的用户上下文筛选
<a name="context-filter-box"></a>

使用 Box 数据源时， Amazon Kendra 会从 Box 实例获取用户和群组信息。

Box 组和用户映射 IDs 如下：
+ `_group_ids`—群组 IDs 存在于 Box 中已设置访问权限的文件上。它们是从 Box 中群组的名称映射出来的。
+ `_user_id`—用户 IDs 存在于设置访问权限的文件的 Box 中。它们是从 Box 中的用户电子邮件 IDs 中映射出来的。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### Confluence 数据来源的用户上下文筛选
<a name="context-filter-confluence"></a>

当您使用 Confluence 数据源时， Amazon Kendra 会从 Confluence 实例获取用户和群组信息。

您可以使用空间权限页面配置用户和群组对空间的访问权限。对于页面和博客，您可以使用限制页面。有关空间权限的更多信息，请参阅 Confluence Support 网站上的[空间权限概述](https://confluence.atlassian.com/doc/space-permissions-overview-139521.html)。有关页面和博客限制的更多信息，请参阅 Confluence Support 网站上的[页面限制](https://confluence.atlassian.com/doc/page-restrictions-139414.html)。

Confluence 群组和用户名映射如下：
+ `_group_ids`-群组名称会出现在有限制的空间、页面和博客上。它们是根据 Confluence 中的群组名称映射出来的。群组名称始终为小写。
+ `_user_id`- 用户名出现在空间、页面或博客上有限制的地方。它们根据您使用的 Confluence 实例的类型进行映射。

  **适用于 Confluence 连接程序 v1.0**
  + 服务器-`_user_id` 是用户名。用户名始终为小写。
  + 云端-`_user_id` 是用户的账户 ID。

  **适用于 Confluence 连接器 v2.0**
  + 服务器 - `_user_id` 是用户名。用户名始终为小写。
  + Cloud-`_user_id` 是用户的电子邮件 ID。
**重要**  
**要使用户上下文筛选功能在 Confluence 连接器上正常运行，您需要确保将获得 Confluence 页面访问权限的用户的可见性设置为“任何人”。**有关更多信息，请参阅 Atlassian 开发者文档中的[设置电子邮件可见性](https://support.atlassian.com/confluence-cloud/docs/configure-user-email-visibility/)。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### 针对 Dropbox 数据来源的用户上下文筛选
<a name="context-filter-dropbox"></a>

当您使用 Dropbox 数据源时， Amazon Kendra 会从 Dropbox 实例中获取用户和群组信息。

群组和用户映射 IDs 如下：
+ `_group_ids`—群组 IDs 存在于 Dropbox 中已设置访问权限的文件上。它们是从 Dropbox 中群组的名称映射出来的。
+ `_user_id`—用户 IDs 存在于 Dropbox 中已设置访问权限的文件中。它们是从 Dropbox 中的用户电子邮件 IDs 中映射出来的。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### Drupal 数据来源的用户上下文筛选
<a name="context-filter-drupal"></a>

当你使用 Drupal 数据源时， Amazon Kendra 会从 DrupalInstance 中获取用户和群组信息。

群组和用户映射 IDs 如下：
+ `_group_ids`— 在 Drupal 中，在设置了访问权限的文件上存在群 IDs 组。它们是根据Drupal中群组的名称映射出来的。
+ `_user_id`— 在 Drupal 中，用户 IDs 存在于设置了访问权限的文件上。它们是从用户电子邮件中映射出来的，就像 IDs 在Drupal中一样。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### GitHub 数据源的用户上下文筛选
<a name="context-filter-github"></a>

当您使用 GitHub 数据源时， Amazon Kendra 会从该 GitHub 实例获取用户信息。

 GitHub 用户映射 IDs 如下：
+ `_user_id`—用户 IDs 存在 GitHub 于设置了访问权限的文件中。它们是从用户电子邮件中映射出来 IDs 的 GitHub。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### Gmail 数据来源的用户上下文筛选
<a name="context-filter-gmail"></a>

当你使用 Gmail 数据源时， Amazon Kendra 会从 Gmail 实例中获取用户信息。

用户映射 IDs 如下：
+ `_user_id`— 用户 IDs 存在于 Gmail 中已设置访问权限的文件上。它们是从用户电子邮件中映射出来的，就像在 Gmail IDs 中一样。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### 筛选 Google 云端硬盘数据来源的用户上下文
<a name="context-filter-google"></a>

Google Workspace 云端硬盘数据来源会返回谷歌云端硬盘用户和群组的用户和群组信息。组和域成员资格映射到`_group_ids`索引字段。Google 云端硬盘用户名将映射到该`_user_id`字段。

当您在 `Query` API 中提供一个或多个用户电子邮件地址时，仅返回与这些电子邮件地址共享的文档。以下`AttributeFilter`参数仅返回与“martha@example.com”共享的文档。

```
"AttributeFilter": {
                "EqualsTo":{
                   "Key": "_user_id", 
                   "Value": {
                       "StringValue": "martha@example.com"
                   }
               }
           }
```

如果您在查询中提供一个或多个群组电子邮件地址，则仅返回与群组共享的文档。以下`AttributeFilter`参数仅返回与“hr@example.com”群组共享的文档。

```
"AttributeFilter": {
                "EqualsTo":{
                   "Key": "_group_ids", 
                   "Value": {
                       "StringListValue": ["hr@example.com"]
                   }
               }
           }
```

如果您在查询中提供了域，则会返回与该域共享的所有文档。以下`AttributeFilter`参数返回与“example.com”域共享的文档。

```
"AttributeFilter": {
                "EqualsTo":{
                   "Key": "_group_ids", 
                   "Value": {
                       "StringListValue": ["example.com"]
                   }
               }
           }
```

您最多可以在 `AccessControlList` 字段中添加 200 个条目。



### 筛选 IBM DB2 数据源的用户上下文
<a name="context-filter-ibm-db2"></a>

使用 IBM DB2 数据源时， Amazon Kendra 会从源表中的一列中获取用户和组信息。您可以在控制台中指定此列，或者使用[TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html)对象作为 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API 的一部分。

IBM DB2 数据库数据源有以下限制：
+ 您只能为数据库数据来源指定允许列表。您无法指定拒绝列表。
+ 您只能指定群组。您不能为允许列表指定单个用户。
+ 数据库列应是一个包含以分号分隔的组列表的字符串。

### Jira 数据来源的用户上下文筛选
<a name="context-filter-jira"></a>

使用 Jira 数据源时， Amazon Kendra 会从 Jira 实例获取用户和群组信息。

Jira 用户的映射 IDs 如下所示：
+ `_user_id`—用户 IDs 存在于 Jira 中已设置访问权限的文件上。它们是从用户电子邮件中映射为 Jira IDs 中的用户。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### Microsoft Exchange 数据来源的用户上下文筛选
<a name="context-filter-exchange"></a>

当你使用微软 Exchange 数据源时， Amazon Kendra 会从微软 Exchange 实例获取用户信息。

微软 Exchange 用户映射 IDs 如下：
+ `_user_id`— 用户在 Microsoft Exchange 中 IDs 存在访问某些内容的权限。它们是从微软 Exchange IDs 中的用户名映射出来的。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### 微软 OneDrive 数据源的用户上下文筛选
<a name="context-filter-onedrive"></a>

Amazon Kendra 在 Microsoft 为站点上的文档编制索引 OneDrive 时，会从 Microsoft 检索用户和群组信息。用户和群组信息取自托管的底层 Microsoft SharePoint 站点 OneDrive。

使用 OneDrive 用户或群组筛选搜索结果时，按如下方式计算 ID：

1. 获取网站名称。例如，`https://host.onmicrosoft.com/sites/siteName.`

1. 以网站名称的 MD5 哈希值为例。例如 `430a6b90503eef95c89295c8999c7981`。

1. 通过将 MD5 哈希值与竖线 (\$1) 和 ID 连接起来，创建用户电子邮件或群组 ID。例如，如果群组名称是 localGroupName “”，则群组 ID 将是：

   `"430a6b90503eef95c89295c8999c7981 | localGroupName"`
**注意**  
竖线前后各留一个空格。竖条用于用其 MD5哈希值`localGroupName`进行标识。

   对于用户名“someone@host.onmicrosoft.com”，用户 ID 将如下所示：

   `"430a6b90503eef95c89295c8999c7981 | someone@host.onmicrosoft.com"`

调用[查询](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API 时，将用户`_user_id`或群组 ID Amazon Kendra 作为或`_group_id`属性发送到。例如，使用群组筛选搜索结果的 AWS CLI 命令如下所示：

```
aws kendra  query \
                --index-id index ID  
                --query-text "query text" 
                --attribute-filter '{
                   "EqualsTo":{
                     "Key": "_group_id", 
                     "Value": {"StringValue": "430a6b90503eef95c89295c8999c7981 | localGroupName"}
                  }}'
```

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### 微软 OneDrive v2.0 数据源的用户上下文筛选
<a name="context-filter-onedrivev2"></a>

Microsoft OneDrive v2.0 数据源返回来自 OneDrive 访问控制列表 (ACL) 实体的分区和页面信息。 Amazon Kendra 使用 OneDrive 租户域连接到 OneDrive 实例，然后可以根据用户或群组对分区和文件名的访问权限筛选搜索结果。

对于标准对象，`_user_id` 和 `_group_id` 的使用方式如下：
+ `_user_id`— 你的 Microsoft OneDrive 用户电子邮件 ID 已映射到该`_user_id`字段。
+ `_group_id`— 你的 Microsoft OneDrive 群组电子邮件已映射到该`_group_id`字段。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### 微软 SharePoint 数据源的用户上下文筛选
<a name="context-filter-sharepoint-online"></a>

Amazon Kendra 在 Microsoft 为站点文档编制索引 SharePoint 时，会从 Microsoft 检索用户和群组信息。要根据用户或组访问权限筛选搜索结果，请在调用 `Query` API 时提供用户和组信息。

要使用用户名进行筛选，请使用该用户的电子邮件地址。例如，johnstiles@example.com。

使用 SharePoint 群组筛选搜索结果时，按如下方式计算群组 ID：

**对于本地组**

1. 获取网站名称。例如，`https://host.onmicrosoft.com/sites/siteName.`

1. 以网站名称的 SHA256 哈希值为例。例如 `430a6b90503eef95c89295c8999c7981`。

1. 通过将 SHA256 哈希值与竖线 (\$1) 和群组名称连接起来来创建群组 ID。例如，如果群组名称是 localGroupName “”，则群组 ID 将是：

   `"430a6b90503eef95c89295c8999c7981 | localGroupName"`
**注意**  
竖线前后各留一个空格。竖条用于用其 SHA256哈希值`localGroupName`进行标识。

调用[查询 API](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) 时，将群组 ID Amazon Kendra 作为`_group_id`属性发送到。例如，该 AWS CLI 命令如下所示：

```
aws kendra  query \
                --index-id index ID  
                --query-text "query text" 
                --attribute-filter '{
                   "EqualsTo":{
                     "Key": "_group_id", 
                     "Value": {"StringValue": "430a6b90503eef95c89295c8999c7981 | localGroupName"}
                  }}'
```

**对于 AD 组**

1. 使用 AD 组 ID 配置搜索结果的筛选条件。

调用[查询](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API 时，将群组 ID Amazon Kendra 作为`_group_id`属性发送到。例如，该 AWS CLI 命令如下所示：

```
aws kendra  query \
                --index-id index ID  
                --query-text "query text" 
                --attribute-filter '{
                   "EqualsTo":{
                     "Key": "_group_id", 
                     "Value": {"StringValue": "AD group"}
                  }}'
```

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### Microsoft SQL Server 数据来源的用户上下文筛选
<a name="context-filter-ms-sql-server"></a>

当你使用 Microsoft SQL Server 数据源时， Amazon Kendra 会从源表中的一列中获取用户和组信息。您可以在控制台中指定此列，或者使用[TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html)对象作为 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API 的一部分。

 Microsoft SQL Server 数据库数据来源有以下限制：
+ 您只能为数据库数据来源指定允许列表。您无法指定拒绝列表。
+ 您只能指定群组。您不能为允许列表指定单个用户。
+ 数据库列应是一个包含以分号分隔的组列表的字符串。

### Microsoft Teams 数据来源的用户上下文筛选
<a name="context-filter-teams"></a>

Amazon Kendra 在为文档编制索引时，会从 Microsoft Teams 中检索用户信息。用户信息取自底层的 Microsoft Teams 实例。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### Microsoft Yammer 数据来源的用户上下文筛选
<a name="context-filter-yammer"></a>

Amazon Kendra 在为文档编制索引时，会从 Microsoft Yammer 中检索用户信息。用户和组信息取自底层的 Microsoft Yammer 实例。

微软 Yammer 用户映射 IDs 如下：
+ `_email_id`：映射到 `_user_id` 字段的 Microsoft 电子邮件地址 ID。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。



### 针对 MySQL 数据来源的用户上下文筛选
<a name="context-filter-mysql"></a>

使用 MySQL 数据源时， Amazon Kendra 会从源表中的一列中获取用户和组信息。您可以在控制台中指定此列，或者使用[TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html)对象作为 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API 的一部分。

MySQL 数据库数据来源具有以下限制：
+ 您只能为数据库数据来源指定允许列表。您无法指定拒绝列表。
+ 您只能指定群组。您不能为允许列表指定单个用户。
+ 数据库列应是一个包含以分号分隔的组列表的字符串。

### 筛选 Oracle 数据库数据来源的用户上下文
<a name="context-filter-oracle-database"></a>

使用 Oracle 数据库数据源时， Amazon Kendra 会从源表中的一列中获取用户和组信息。您可以在控制台中指定此列，或者使用[TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html)对象作为 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API 的一部分。

Oracle 数据库数据来源具有以下限制：
+ 您只能为数据库数据来源指定允许列表。您无法指定拒绝列表。
+ 您只能指定群组。您不能为允许列表指定单个用户。
+ 数据库列应是一个包含以分号分隔的组列表的字符串。

### PostgreSQL 数据来源的用户上下文筛选
<a name="context-filter-postgresql"></a>

使用 PostgreSQL 数据源时 Amazon Kendra ，会从源表中的一列中获取用户和组信息。您可以在控制台中指定此列，或者使用[TemplateConfiguration](https://docs.aws.amazon.com/kendra/latest/APIReference/API_TemplateConfiguration.html)对象作为 [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API 的一部分。

PostgreSQL 数据库数据来源具有以下限制：
+ 您只能为数据库数据来源指定允许列表。您无法指定拒绝列表。
+ 您只能指定群组。您不能为允许列表指定单个用户。
+ 数据库列应是一个包含以分号分隔的组列表的字符串。

### Quip 数据来源的用户上下文筛选
<a name="context-filter-quip"></a>

当您使用 Quip 数据源时， Amazon Kendra 会从 Quip 实例获取用户信息。

Quip 用户的映射 IDs 如下所示：
+ `_user_id`—用户 IDs 存在于 Quip 中已设置访问权限的文件上。它们是从 Quip 中的用户电子邮件 IDs 中映射出来的。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### Salesforce 数据来源的用户上下文筛选
<a name="context-filter-salesforce"></a>

Salesforce 数据来源返回来自 Salesforce 访问控制列表（ACL）实体的用户和群组信息。您可以将用户上下文筛选应用于 Salesforce 标准对象和聊天提要。用户上下文筛选不适用于 Salesforce 知识文章。

如果您将任意 Salesforce 字段映射到 Amazon Kendra 的文档标题和正文字段，Amazon Kendra 将在搜索结果中使用来自这些标题和正文字段的数据。

对于标准对象，`_user_id` 和 `_group_ids` 的使用方式如下：
+ `_user_id` - Salesforce 用户的用户名。
+ `_group_ids`—
  + Salesforce 的名字 `Profile`
  + Salesforce `Group` 的名字
  + Salesforce `UserRole` 的名字
  + Salesforce 的名字 `PermissionSet`

对于 chatter Feed，`_user_id`和`_group_ids`的使用方式如下：
+ `_user_id`- Salesforce 用户的用户名。仅当该项目发布在用户的 Feed 中时才可用。
+ `_group_ids`—群组 IDs 的使用方式如下。仅当 Feed 项目在聊天或协作群组中发布时才可用。
  + 聊天群组或协作群组的名称。
  + 如果该群组是公开的，`PUBLIC:ALL`.

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### ServiceNow 数据源的用户上下文筛选
<a name="context-filter-servicenow"></a>

只有 TemplateConfiguration API 和 ServiceNow 连接器 v2.0 支持用户上下文筛选。 ServiceNow ServiceNowConfigurationAPI 和 ServiceNow 连接器 v1.0。不支持用户上下文筛选。

当您使用 ServiceNow 数据源时， Amazon Kendra 会从该 ServiceNow 实例获取用户和群组信息。

群组和用户映射 IDs 如下：
+ `_group_ids`—群组 IDs 存在 ServiceNow 于设置了访问权限的文件中。它们是根据中的角色名称映射而来`sys_ids`的 ServiceNow。
+ `_user_id`—用户 IDs 存在 ServiceNow 于设置了访问权限的文件中。它们是从用户电子邮件中映射出来 IDs 的 ServiceNow。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### Slack 数据来源的用户上下文筛选
<a name="context-filter-slack"></a>

当你使用 Slack 数据源时， Amazon Kendra 会从 Slack 实例中获取用户信息。

Slack 用户的映射 IDs 如下所示：
+ `_user_id`—用户 IDs 存在于 Slack 中设置访问权限的消息和频道上。它们是从用户电子邮件中映射出来的，就像在 Slack IDs 中一样。

您最多可以在 `AccessControlList` 字段中添加 200 个条目。

### Zendesk 数据来源的用户上下文筛选
<a name="context-filter-zendesk"></a>

当你使用 Zendesk 数据源时， Amazon Kendra 会从 Zendesk 实例中获取用户和群组信息。

群组和用户映射 IDs 如下：
+ `_group_ids`—群组 IDs 存在于设置访问权限的 Zendesk 工单和文章中。它们是从 Zendesk 中的群组名称映射出来的。
+ `_user_id`—群组 IDs 存在于设置访问权限的 Zendesk 工单和文章中。它们是从用户电子邮件中映射出来的，就像 IDs 在 Zendesk 中一样。

您最多可以在`AccessControlList`字段中添加 200 个条目。