限制对 Amazon Quick 知识库中敏感文档的访问以用于 Amazon S3

TL;DR · AI 摘要
AWS 新增 Amazon Quick 知识库对 S3 敏感文档的细粒度访问控制功能,支持通过 ACL 实现文档级权限管理。
核心要点
- 支持文档级 ACL 控制敏感 S3 文档访问
- 提供 Global ACL 文件和文档元数据两种配置方式
- 默认拒绝策略需显式授权访问
结构提纲
按章节快速跳转。
- §引言
组织需要更细粒度的文档访问控制来保护敏感信息。
Amazon Quick 提供文档级 ACL 支持以实现更精细的访问控制。
提供 Global ACL 文件和文档元数据两种配置方式。
默认拒绝策略要求显式授权访问,避免未授权访问风险。
不同配置方式对重新索引范围有不同影响,需根据使用场景选择。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Amazon Quick S3 文档访问控制
- 功能特性
- 文档级 ACL 支持
- 默认拒绝策略
- 配置方式
- Global ACL 文件
- 文档元数据文件
- 操作影响
- 重新索引范围差异
- 管理复杂度对比
金句 / Highlights
值得收藏与分享的关键句。
Amazon S3 知识库的文档级访问控制列表(ACL)支持为您提供这种细粒度控制。
当用户提问时,Quick 会根据您的 ACL 配置评估其身份,并仅显示他们有权查看的内容。
如果某个文档或前缀未在您的 ACL 配置中明确列出,则默认会被拒绝。
标题:在 Amazon Quick 知识库中限制对 Amazon S3 敏感文档的访问 | Amazon Web Services
URL 来源:https://aws.amazon.com/blogs/machine-learning/restrict-access-to-sensitive-documents-in-your-amazon-quick-knowledge-bases-for-amazon-s3/
发布时间:2026-05-15T07:41:00-08:00
Markdown 内容:
需要限制对敏感文档访问的组织,正日益依赖 AI 驱动的搜索和聊天功能,以帮助员工在海量资料库中找到答案。在知识库级别控制访问的粗粒度权限适用于许多团队,但敏感文档需要更精细的控制,以将特定文档或文件夹的访问权限限制在授权团队、个人或系统范围内。
Amazon Quick 中针对 Amazon Simple Storage Service (Amazon S3) 知识库的文档级访问控制列表 (ACL) 支持,为您提供了这种精细的控制能力。您可以在文档或文件夹级别,将敏感 S3 文档的访问权限限制在仅允许应查看的用户和组。当用户提问时,Quick 会根据您的 ACL 配置评估其身份,并且只呈现他们有权查看的内容。有了这些控制措施,您就可以安全地将整个文档库纳入 Quick,同时满足合规性和数据治理要求。
在本文中,我们将详细介绍如何在 Amazon Quick 中为您的 S3 知识库配置文档级 ACL。您将学习如何设置和验证一个 ACL 配置,以在聊天和自动化工作流中强制执行文档级权限。本文涵盖:
- 使用 IAM 策略分配来控制用户可以访问哪些 S3 存储桶以创建知识库
- 规划您的访问控制结构
- 在两种 ACL 配置方法(全局 ACL 文件和文档级元数据文件)之间进行选择
- 为用户和组设置权限
- 通过聊天和 ACL 感知的 Flows 验证您的访问控制是否正常工作
- 随时间推移更新和维护您的 ACL 配置
S3 ACL 在 Quick 中的工作原理
您可以使用 Amazon Quick 中的 S3 ACL 功能,将访问权限附加到您的文档上,从而使聊天响应仅包含您有权查看的内容。您可以使用针对单个用户或组的标准 ALLOW 和 DENY 策略来指定谁可以访问哪些文档,Quick 会在查询时强制执行这些权限。
有两种配置 ACL 的方法,每种方法适用于不同的操作需求:
- 全局 ACL 配置文件(例如 ACL.json) – 一个单一的集中式文件,用于在文件夹(前缀)级别指定访问权限。当您的组织具有稳定的、基于文件夹的权限结构时,请使用此方法。
- 文档级元数据文件 – 与每个文档并存的独立元数据文件,其中包含针对每个文档的访问控制条目。当权限频繁更改时,请使用此方法,因为只需要重新索引受影响的文档,而不是整个文件夹结构。
根据权限更改的频率以及您需要的精细程度来选择您的方法:
| 考虑因素 | 全局 ACL 文件 | 文档级元数据 | | --- | --- | --- | | 权限粒度 | 文件夹(S3 前缀)级别 | 单个文档级别 | | 管理开销 | 维护单个文件 | 每个文档一个元数据文件 | | 权限更改时的重新索引范围 | 整个受影响的前缀 | 仅受影响的文档 | | 推荐用于 | 稳定的基于文件夹的访问结构 | 频繁更改的文档级权限 |
理解重新索引范围
您所选方法的重新索引范围具有重要的操作影响。使用全局 ACL 方法时,权限更改会触发受影响前缀的完全重新索引。如果您的组织需要频繁更新权限,请考虑改用文档级元数据文件,这样只有受影响的文档会被重新索引,而不是整个文件夹结构。
默认拒绝行为
当您在 Quick 中的 S3 知识库上启用 ACL 时,未在您的 ACL 配置中明确列出的文档或前缀将被默认拒绝。这种默认拒绝的方法(有时称为“故障关闭”,意味着当不存在明确规则时,系统默认拒绝访问)意味着,如果您配置了 ACL,则必须明确授予用户想要访问的每个前缀或文档的权限。
例如,如果您的 S3 存储桶有三个文件夹(/finance/、/legal/ 和 /policies/),而您的 ACL 文件只授予对 /finance/ 和 /policies/ 的访问权限,那么 /legal/ 文件夹及其内容将自动对所有人拒绝,即使没有针对它的 DENY 规则。
IAM 使用的隐式拒绝模型工作方式相同。除非您明确授予权限,否则 Quick 会拒绝访问。当您配置 ACL 时,您对访问权限拥有明确的控制权,不会无意中暴露任何内容。
如果用户或组对同一文档或前缀同时拥有 ALLOW 和 DENY 条目,则 DENY 始终优先。这意味着,您可以为团队或组使用广泛的 ALLOW 规则,然后应用有针对性的 DENY 条目来限制对特定资源的访问,从而为您提供精细的控制,而无需重构整个 ACL 配置。
先决条件
开始之前,请确认您已具备以下条件:
- 已启用 Amazon Quick 的 AWS 账户。如果您没有 Quick 账户,请参阅 Amazon Quick 入门指南。
- 包含您要索引文档的 Amazon S3 存储桶。
- 关于如何构建访问控制列表的规划。以下部分将解释如何创建这些文件。
- 已在 Quick 中预配的用户,其电子邮件地址与您的 ACL 文件中的身份匹配。有关预配用户的详细信息,请参阅 在 Amazon Quick 中管理用户访问权限。
- 用于配置 IAM 策略分配和知识库创建的 Quick 管理员访问权限。
- 熟悉 IAM 概念和基本的 JSON 语法。
- 用于验证 ACL 配置的测试或非生产知识库。启用 ACL 是一项单向操作,无法撤销,因此在生产环境中启用前请验证您的设置。
控制用于创建知识库的 S3 存储桶访问权限
文档级 ACL 控制用户可以在知识库中访问哪些文档,但它们并不控制谁可以首先创建知识库。请记住这个区别。如果您的组织拥有应始终要求 ACL 的 S3 存储桶(例如,包含敏感 HR 或法律文档的存储桶),您需要确保只有授权的管理员才能基于这些存储桶创建知识库。如果没有此控制,Quick 用户可以在同一存储桶上创建新的知识库而不启用 ACL,从而完全绕过您的文档级访问控制。本节介绍如何实施这些控制。
Quick 中的 IAM 策略分配功能允许您通过限制特定用户或组可以访问哪些 S3 存储桶来创建知识库,从而解决此问题。例如,您可以将 ACL 敏感的存储桶限制为一小部分受信任的管理员(他们将在设置过程中始终启用 ACL),允许对不需要 ACL 的非敏感存储桶进行更广泛的知识库创建,或者通过不授予用户访问权限来完全阻止基于某些存储桶创建知识库。
注意: 通过 Quick 分配的 IAM 策略优先于 AWS 资源级策略。在分配 IAM 策略之前,请确认它们符合您的访问要求。
此步骤是可选的。但是请注意,如果没有限制知识库创建的 IAM 策略分配,任何有权访问 S3 存储桶的 Quick 用户都可以在同一存储桶上创建单独的知识库而不启用 ACL,从而有效绕过您的文档级访问控制。在跳过本节之前,请考虑此风险是否适用于您的组织。
步骤 1:在 IAM 中创建 S3 访问策略
在 IAM 控制台中创建一个 IAM 策略,指定被分配用户可以访问哪些 S3 存储桶。以下示例策略授予对两个特定存储桶的访问权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:ListBucketVersions",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket1",
"arn:aws:s3:::amzn-s3-demo-bucket2"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket1/*",
"arn:aws:s3:::amzn-s3-demo-bucket2/*"
]
}
]
}JSON
将 amzn-s3-demo-bucket1 和 amzn-s3-demo-bucket2 替换为您要授予访问权限的 S3 存储桶名称。
步骤 2:在 Quick 中分配策略
创建 IAM 策略后,通过管理控制台将其分配给 Quick 用户或组。
要在 Quick 中分配策略:
- 在 Quick 管理控制台中,在 权限 下,选择 IAM 策略分配。

- 选择 添加新分配。

- 输入分配的名称(例如
s3-kb-restrict)。

- 在 选择 IAM 策略 页面,搜索并选择您在步骤 1 中创建的 IAM 策略。选择 下一步。

- 在 分配用户和组 页面上,选择以下选项之一:
- 选择 分配给用户和组 以将策略应用于当前和未来的用户。
- 搜索并选择要分配策略的特定用户或组。
- 选择 下一步。
- 在 查看并启用更改 页面上,验证您的分配详细信息,然后选择 保存并启用。

未通过 IAM 策略分配明确授予访问权限的用户无法使用受限制的 S3 存储桶来创建知识库。用户仍然可以访问与他们共享的知识库。此限制仅适用于知识库的创建。IAM 策略分配为您提供了一层管理控制,补充了您在各个知识库内配置的文档级 ACL。
有关更多详细信息,请参阅 Amazon Quick 文档中的使用 IAM 策略分配限制 Amazon S3 存储桶访问。
规划您的访问控制结构
在创建 ACL 文件之前,请确定您的访问控制结构。Quick 会强制执行您配置的权限,但由您决定谁应该访问哪些文档,并构建相应的 ACL 文件。
首先,规划您组织的访问需求。确定哪些团队、角色或个人需要访问哪些文档集。然后选择您的 ACL 方法:单一的全局 ACL 文件,或文档级元数据文件中的 ACL 条目。最后,对齐您的身份信息。ACL 文件中的用户和组名必须与 Quick 用户的电子邮件地址和组名匹配(电子邮件匹配不区分大小写,但组名必须完全匹配)。组成员资格在您的身份提供商(IdP,例如 IAM Identity Center)中管理,并与 Quick 同步,而不是在 ACL 文件本身中管理。
以下示例说明了常见的访问模式以及您可能如何构建它们。
| 访问模式 | 方法 | 示例配置 | | :--- | :--- | :--- | | 团队范围的文件夹访问 | 全局 ACL 文件 | ALLOW group finance-team on s3://amzn-s3-demo-bucket/finance/ | | 公司范围的读取访问 | 全局 ACL 文件 | ALLOW group all-employees on s3://amzn-s3-demo-bucket/policies/ | | 单用户文档访问 | 文档级元数据 | ALLOW user vp-eng@example.com on roadmap-2026.pdf | | 受限文件夹(默认拒绝) | 全局 ACL 文件 | ALLOW group legal-team on s3://amzn-s3-demo-bucket/legal/(其他前缀默认拒绝) | | 组合方法 | 两种方法 | 全局 ACL 在 s3://amzn-s3-demo-bucket/hr/ 上 ALLOW hr-team + 元数据文件在特定文件上 ALLOW manager@example.com |
选项 1:使用全局 ACL 文件配置访问
⚠️ 开始之前: 在知识库上启用文档级 ACL 是一项单向操作,无法撤销。如果您以后需要移除 ACL 功能,则必须创建一个没有 ACL 的新知识库。请先在非生产知识库上测试您的 ACL 配置,因为此设置启用后无法关闭。
全局 ACL 文件是一个单一的 JSON 文件,它将 S3 前缀映射到访问控制条目。将此文件上传到 S3 存储桶的根目录。该文件不需要命名为 acl.json。
全局 ACL 文件结构
该文件是一个 JSON 数组,其中每个条目指定一个 S3 前缀及其关联的访问控制条目。
每个 aclEntries 项包括:
- Name – 用户电子邮件地址或组名。这必须与 Quick 内的身份完全匹配。例如,来自 IAM Identity Center 的用户电子邮件或组。
- Type – USER 或 GROUP。
- Access – ALLOW 或 DENY。
请记住,此文件中未列出的前缀默认被拒绝。
配置步骤
- 按照前面所示的结构创建您的 acl.json 文件。
- 将 acl.json 文件上传到 S3 存储桶的根目录(与包含文档的存储桶相同)。
- 在 Quick 控制台中,导航到 知识库。
- 选择 Amazon S3 作为知识库,并配置您的 S3 存储桶设置。

- 输入您的知识库详细信息,然后选择 下一步:其他设置。

- 在 其他设置 下,打开 访问控制列表(ACL) 选项。
- 在 全局 ACL 文件位置 字段中,输入您的 acl.json 文件的 S3 URI(例如,
s3://amzn-s3-demo-bucket/acl.json)。

- 选择 创建。
- 启动同步以索引您的文档。Quick 在索引期间应用 ACL 规则。

同步完成后,只有具有显式 ALLOW 条目的前缀下的文档才会被索引并可在聊天中使用。您可以查看同步运行报告,了解哪些文档已被索引,哪些文档因 ACL 限制未被索引。
成功添加的文件:

失败的文件:

选项 2:使用文档级元数据文件配置访问
⚠️ 开始前须知: 在知识库上启用文档级 ACL 是一项单向操作,无法撤销。如果您以后需要移除 ACL 功能,必须创建一个不带 ACL 的新知识库。请先在非生产知识库上测试您的 ACL 配置,因为此设置启用后无法关闭。
如果您需要按文档进行控制,或者希望在权限更改时更快地重新索引,可以使用文档级元数据文件。您 S3 存储桶中的每个文档都有一个对应的元数据 JSON 文件,其中包含访问控制条目。
元数据文件结构
为每个文档创建一个 .metadata.json 文件。元数据文件必须存储在同一个 S3 存储桶中,可以放在您在知识库设置期间指定的元数据文件夹位置,也可以作为索引的实际文档的 sidecar 文件放在同一文件夹。我们将在下一节中解释这两种选项。
该文件包含一个 AccessControlList 数组。对于 ACL 强制执行,只有 AccessControlList 字段是必需的。其他字段(DocumentId、Attributes、Title、ContentType)是可选的,用于额外的元数据丰富:
{
"DocumentId": "finance-q3-report",
"Attributes": {
"_category": "financial-reports",
"_created_at": "2025-10-01T00:00:00Z",
"_source_uri": "s3://amzn-s3-demo-bucket/reports/q3-report.pdf"
},
"AccessControlList": [
{
"Name": "finance-team",
"Type": "GROUP",
"Access": "ALLOW"
},
{
"Name": "contractor@example.com",
"Type": "USER",
"Access": "DENY"
}
],
"Title": "Q3 Financial Report",
"ContentType": "PDF"
}JSON
AccessControlList 条目遵循与全局 ACL 文件相同的格式。每个条目包含 Name、Type(USER 或 GROUP)和 Access(ALLOW 或 DENY)。
当 ACL 开启时,没有元数据文件(或元数据文件不包含 AccessControlList)的文档默认会被拒绝访问。
元数据文件名和位置
为了让知识库找到正确的元数据文件,文档的 S3 键会被附加到元数据文件夹位置,然后加上后缀 .metadata.json 来构建元数据文件的 Amazon S3 路径。例如,如果文件 S3 键是 recipe.pdf,则元数据文件的 S3 键将是 recipe.pdf.metadata.json。
放置元数据文件有两个选项。您可以将它们放在一个专用目录中(例如 s3://amzn-s3-demo-bucket/metadata),或者放在与被引用文件相同的文件夹中。
以下是文件位于同一文件夹中的示例:

另一个使用专用 "metadata" 文件夹的示例:

配置步骤
- 为您想要索引的每个文档创建一个 .metadata.json 文件,其中包含 AccessControlList 字段。
- 将元数据文件上传到您的 S3 存储桶,可以放在专用元数据文件夹中,也可以放在每个匹配的 S3 文件所在的同一文件夹中。
- 在 Quick 控制台中,导航到 知识库。
- 选择 Amazon S3 作为新知识库。
- 在 附加设置 下,开启 访问控制列表 (ACL) 选项。
- 对于元数据文件位置,选择以下选项之一:
- 同一文件夹选项: 将元数据文件夹位置留空。

- 1. 专用文件夹选项: 在 元数据文件夹位置 字段中,输入您的元数据文件夹的 S3 URI(例如,
s3://amzn-s3-demo-bucket/metadata/)。

- 选择 创建。
- 启动同步。Quick 将从每个元数据文件中读取 ACL 条目,并在查询时强制执行它们。
验证您的配置
知识库同步完成后,您可以通过聊天和流程来验证 ACL 是否正常工作。
聊天
要在聊天中验证 ACL:
- 在 Quick 中打开一个聊天会话,并连接到您已启用 ACL 的知识库。
- 在聊天会话底部禁用网络搜索,以便将结果隔离到您的知识库。
- 询问一个您有权访问的文档相关问题。您应该会收到相关的回复。

- 询问一个您无权访问的文档相关问题。Quick 不应显示该文档的内容。

ACL 验证确认了 Quick 正在根据您的身份和 ACL 配置来过滤响应。
流程
借助 Quick Flows 和 S3 ACL,您可以构建智能的、具备权限感知能力的自动化流程,在尊重数据治理的同时大规模提供洞察。
以下示例探讨了一个流程概念:用于生成高管摘要的 ACL 感知流程。

该流程包含以下步骤:
- 触发器和用户上下文:用户通过聊天或流程控制台提交一个主题。流程会捕获其身份以进行访问评估。
- S3 ACL 评估:流程检查 ACL 配置以确定您可以访问哪些文档,从而在自动化层强制执行数据治理。
- 内部摘要生成:如果存在授权文档,流程将检索它们并从内部源生成高管摘要。
- 网络搜索回退:当没有可访问的内部源时,流程会自动搜索网络。外部摘要会被明确标注以确保透明度。这是流程中的一个可选步骤。
您可以进一步扩展此用例,例如将摘要传递给下游步骤以创建用于领导层简报的结构化幻灯片,或者添加电子邮件步骤以按计划定期将摘要发送给用户或分发列表。
初始设置后更新 ACL
当您的组织发生变化时(例如新员工入职、团队变动、角色转换),请相应地更新您的访问控制配置。Quick 不会实时监控您的 ACL 文件变更。更新的权限将在下一次知识库同步时生效,默认情况下同步每天运行一次。对于时间敏感的变更(例如撤销访问权限),请在更新 ACL 文件后立即触发手动同步。要更新权限:
- 在 S3 中更新您的 ACL 文件。 修改您的全局 ACL 文件或相关的文档级元数据文件以反映新的权限(添加用户、移除访问权限、更改组成员身份等)。
- 重新同步您的知识库。 将更新后的文件上传到 S3 后,从 Quick 控制台触发知识库的新同步。Quick 将在同步期间重新评估 ACL 条目并相应地更新索引。
在同步完成之前,之前的权限仍然有效。
重新索引的范围取决于您使用的配置方法:
- 全局 ACL 文件。 整个受影响的前缀将被重新索引。
- 文档级元数据。 仅重新索引其元数据文件发生变更的文档。
如果您预计权限会频繁变更,使用文档级元数据文件可以让您在访问权限更新方面获得更快的周转时间。
保护您的 ACL 文件
将 ACL 和元数据文件上的 s3:PutObject 权限限制在有限的管理员范围内。任何能够修改这些文件的人都可以授予自己访问任何文档的权限,因此应将 ACL 文件的写入访问视为特权操作。在您的 ACL 文件上启用 S3 版本控制,以维护权限变更的审计追踪。对于文档级元数据文件,请将所有权分配给熟悉每个文档集敏感性的团队成员,例如数据所有者或安全负责人,以便权限决策与业务背景保持一致。
监控和审计 ACL 活动
对于像文档级 ACL 这样的安全功能,了解配置变更和访问模式至关重要。Amazon Quick 提供了多种机制来帮助您监控和审计已启用 ACL 的知识库。
所有知识库的创建和更新操作都会记录在 AWS CloudTrail 中,包括是否在知识库上启用了 ACL。这为管理员提供了谁在何时配置 ACL 的审计追踪,帮助您跟踪访问控制设置的变更并调查任何意外的修改。
Amazon Quick 还提供了一个监控知识库大小的功能,可以帮助您跟踪增长并检测索引内容的意外变化。有关更多详细信息,请参阅 Quick 文档中的监控索引存储使用情况。
限制和注意事项
在您的 S3 知识库上启用 ACL 之前,请注意以下几点:
- 启用 ACL 后无法禁用。 在知识库上启用文档级 ACL 是一项单向操作。如果您以后需要移除 ACL 功能,必须创建一个没有 ACL 的新知识库。
- 用户身份匹配基于电子邮件。 ACL 条目中的 Name 字段必须与用户 Quick 身份关联的电子邮件地址完全匹配。如果用户的电子邮件发生变化,请更新您的 ACL 文件并重新同步。
有关其他限制,请参阅 Amazon Quick 文档中的 S3 数据源连接器限制 和 知识库 ACL 限制。
清理资源
如果您在遵循本文档时创建了资源并且不再需要它们,请执行以下步骤以避免持续产生费用:
- 删除知识库。 在 Quick 控制台中,导航到 知识库,选择您创建的知识库,然后选择 删除。
- 移除 ACL 和元数据文件。 如果是为了测试目的而创建的,请从您的 S3 存储桶中删除全局 ACL 文件和文档级 .metadata.json 文件。
- 移除 IAM 策略。 如果您为 S3 存储桶访问限制创建了 IAM 策略,请先在 Quick 管理控制台中移除 IAM 策略分配,然后在 IAM 控制台中删除 IAM 策略本身。
结论
Amazon Quick 中 Amazon S3 知识库的文档级 ACL 为您提供了细粒度的控制,可以决定谁可以访问知识库中的特定文档。在本文中,您配置了 IAM 策略分配来控制知识库创建,规划了访问控制结构,设置了全局 ACL 文件和文档级元数据文件,通过聊天和 Flows 验证了您的配置,并学习了如何排查常见问题。
通过这些控制措施,您可以放心地扩展知识库中的内容,因为每个用户只能看到他们被授权访问的文档和数据。这有助于您的组织在满足安全、合规性和数据治理要求的同时,从 Quick 中获得更多价值。Quick Flows 将这些控制扩展到自动化工作流中,在运行时检查用户访问权限,并仅从用户有权查看的文档生成输出。借助文档级 ACL,您的组织可以放心地使用 AI 来安全地解锁敏感数据的价值。
后续步骤
要继续深入学习:
- 查看 Amazon S3 连接器文档 以获取详细的配置参考。
- 阅读 ACL 最佳实践指南 获取大规模构建访问控制的建议。
- 在推广到生产环境之前,尝试在包含示例文档的测试知识库上设置 ACL。从少量文档和几个测试用户开始,在验证配置按预期工作后再进行扩展。
要了解更多关于 Amazon Quick 的信息,请访问 Quick 产品页面,探索 Quick 中的安全功能,并加入 Quick 社区 提问和分享您的经验。
- * *