我们保护什么、如何保护,以及仍然欠缺什么。
在你的 AI 流量前面放一个网关,是一项真正需要信任的决定,而做这个决定的人往往拿到了一份问卷和一个截止日期。本页就是为这个人写的。下面的每项控制都写明了执行它的机制,每个日期都是承诺而不是愿望,我们没有的东西和我们有的东西列得一样清楚。
INFRO 账号可自助开通。 模型目录、文档和 API 契约已公开,网关已部署,v1 之后的所有功能都标注为“后续”。 套餐与试用
这些是关于我们自己日程的承诺,而不是对审计师结论的声明。这里没有任何内容表示 INFRO 已通过认证,因为事实并非如此——如果某个日期尚未与审计机构商定,本页会如实说明,而不是估一个。
目前尚未承诺任何日期。我们已聘请审计机构进行 SOC 2 审计。观察期尚未排定,因此这里没有可公布的内容——我们宁愿这样说,也不愿说出一个尚未与审计机构商定的季度。排定后,日期会公布在这里,而不是单独发给个别审查人员,这样每个人督促我们兑现的都是同一个承诺。如果你的时间安排取决于此,请告诉我们,我们会告诉你排期的真实进展——sales@infro.io。
SOC 2 Type I
已聘请审计机构审计师的意见:本页所述的控制措施设计合理,且在某个具体日期已经到位。它不说明这些控制措施是否在一段时间内持续运行——那属于 Type II。
- 观察开始
- 尚未公布
- 预计出具报告
- 尚未公布
完成后,本页会列出审计机构、报告日期和纳入范围的信任服务标准,报告本身在保密协议下提供。在报告出具之前,这里不会声称有任何机构或范围。
SOC 2 Type II
已聘请审计机构审计师的意见:这些控制措施在一个观察窗口内有效运行,这也是大多数安全评审真正想要的报告。
- 观察窗口开始
- 尚未公布
- 观察窗口结束
- 尚未公布
- 预计出具报告
- 尚未公布
Type II 的观察窗口无法压缩:报告的长度取决于它观察的期间。如果窗口发生变动,这里的日期会随之变动,并说明这一变化,而不是悄悄修正。
ISO 27001
评估中对信息安全管理体系而非一组控制措施的认证。美国以外的评审者要求它的频率比要求 SOC 2 更高。
评估中。尚未聘请审计机构,也没有承诺日期——所以本页没有日期,在有可以承诺的事情之前也不会有。如果 ISO 对你是硬性要求,请在第一封邮件中说明;这是一个有用的信号,也可能改变我们做这件事的顺序。
我们目前没有任何认证,上文也没有任何表述与此相反。报告产生后,本页会写明审计机构、报告日期和审计范围内的准则,并且报告将在保密协议下提供。在那之前,我们能提供的是下面的控制措施、答复集,以及关于审计真实进展的直接回答——如果你的流程要求在签约前拿到报告,正确的做法是等待,而不是谈判。
以下每一项现在都已到位,并且每一项写明的是实现机制而不是意图——一个数据库触发器、一项绑定、一个已部署的标头。如果某项控制是一项政策而不是一种机制,也会如实说明。
凭据与密钥
- 提供商凭据加密存放,并绑定到单个租户
- 你所连接的提供商密钥使用 AES-256-GCM 加密,密钥作为 Worker 密钥保存,绝不放在数据库中。组织和连接标识符作为附加认证数据绑定其中,因此被复制到其他租户的行——或同一租户的其他行——的加密凭据会默认失败,而不是被解密。为成本对账而连接的凭据在各自的绑定下单独加密。对推理凭据绑定为 conn:<organization>:<connection>,对成本 API 凭据绑定为 billing:<organization>:<provider kind>。仅凭数据库泄露本身无法打开任何内容。
- 任何地方都没有“显示”功能
- 提供商凭据一旦保存,任何界面都不会再返回它——控制台、API、内部运营控制台都不会。任何一方能看到的只有最后四个字符和时间戳。如果你丢失了密钥,请在提供商处轮换;我们无法向你显示它。运营控制台的连接查询根本不会选取加密存放的那一列。提供“显示”按钮,会让一个被攻破的会话变成所有客户厂商密钥的泄露入口。
- INFRO API 密钥以哈希形式静态存储
- 网关密钥是来自密码学随机源的 32 个字节。我们存储的是它的 SHA-256 摘要、一个显示前缀和最后四个字符,因此即使数据库泄露,也不会泄露可用的凭据。吊销时写入一条墓碑记录,而不是删除该行,因此不会被仍在各个地点之间传播的陈旧缓存条目所遮蔽。有意选用 SHA-256 而不是密码 KDF:针对 32 个随机字节不存在可攻击的字典,而 KDF 会给每个请求增加 50–200ms 的计费算力。
- 加密密钥可以在无需你参与的情况下轮换
- 轮换用于加密客户凭据的密钥,会就地重新加密每一份已存储的凭据。它不要求客户重新输入任何内容,所存储的算法带有版本字符串,因此未来的方案可以与当前方案共存,而不需要一次性切换日。直说:丢失该密钥且没有备份是无法恢复的,每位客户都必须重新连接每一个提供商。备份和恢复已写成运营流程。
你的内容
- 我们不使用你的数据进行训练,也不出售
- INFRO 不会使用你的提示词、输入或输出训练任何东西,也不会出售它们。你所连接的提供商按照你与它们之间的协议和账号设置处理你的数据——INFRO 的日志控制不会改变这些设置,也无法改变。这是本页上唯一一项属于政策而不是机制的控制。它写在条款和 DPA 中,在那里才具备可执行性。
- 提示词和补全内容的捕获默认关闭
- 请求元数据——模型、提供商、路由、token 数量、延迟、预估成本——始终会被记录,因为计量、预算和治理就是这个产品。提示词和补全的内容则不会,除非组织开启捕获。数据库列默认为关闭;没有任何套餐默认开启。org_settings.prompt_logging_enabled,自第一次迁移起为 DEFAULT false NOT NULL。
- 保留窗口由你决定,删除清理是真实执行的
- 开启捕获后,保留窗口由你选择——24 小时、14、30、60 或 90 天,或一年——实际存储取你的选择与套餐上限中较短的一个,因此界面不会提供套餐会悄悄忽略的窗口。定时任务在捕获的载荷过期后删除它们,并分批进行,因此积压不会变成针对请求路径正在写入的表的长事务。每一行载荷都带有自己的 expires_at;清理在平台的每分钟定时任务中运行,其延迟是触发运营告警的条件之一。删除是真正的 DELETE,而不是一个标记。
- 追踪导出是允许列表,而不是复制
- 如果你把 OpenTelemetry span 发送到自己的收集器,属性集是逐字段构建的,而不是展开数据库行,因此以后新增的内部列不会默认泄露到你的可观测性后端。收集器端点必须是 HTTPS,由数据库约束强制执行,你配置的请求头则像其他凭据一样加密存放。这是 INFRO 唯一有意把你的数据发送到你所选第三方主机的地方,也是唯一一旦泄露就会长期存在的地方。一项测试断言编码后的字节中不含内部标识符。
访问与问责
- 审计日志无法被改写
- 每一次策略变更、凭据更新、密钥轮换、套餐授予和成员变更,都是带有操作人和时间戳的一条新记录。这些记录在数据库层面拒绝 UPDATE、DELETE 和 TRUNCATE——不是靠约定,也不是靠支持脚本可以绕过的应用代码。你组织的历史是一份记录,而不是一个可以改写的值。由数据库触发器强制执行。无论是 INFRO 工程师在 psql 提示符下,还是被攻破的应用,都无法悄悄修改它。
- 客户身份与运营人员身份互不共享任何内容
- 客户控制台和内部运营控制台分别在两个独立的系统中认证:独立的表、独立的 cookie 名、独立的签名密钥、独立的来源允许列表。向运营端点出示客户会话,在那里只是匿名的,而不仅仅是权限不足——它携带的名称是该系统不会查找的,签名用的密钥是它不持有的,对应的表是它不读取的。如果两个签名密钥相同,或两个来源列表有重叠,Worker 会拒绝启动。运营人员注册被永久禁用;账号由我们开通,被停用的运营人员的记录会被保留,正是为了让存在性检查无法让他们重新进入。
- 运营人员双因素认证,以及对破坏性操作的二次验证
- 每位运营人员都可使用 TOTP 双因素认证,且默认关闭——这是有意的决定,在这里明说而不是暗示。开启后,每个运营人员会话都必须出示验证码,密码绝不能替代它。与这一设置无关,涉及资金、凭据或其他运营人员访问权限变更的操作,需要出示过去 15 分钟内提供的第二因素;在双因素关闭时,这个二次验证就是密码。连续失败十次会将账号锁定十五分钟。证明是仅由验证钩子写入的按会话因素记录,因此在另一个浏览器中生成的会话无法打开任何内容。验证码仅可使用一次;备份码为一次性,并加密存储。
- 面向你自己用户的双因素认证、通行密钥和会话
- 每个账号都可以通过验证器应用和十个一次性恢复码开启双因素认证,并注册通行密钥或硬件安全密钥,它们既可以单独完成登录,也可以在密码之后作为第二步。所有者或管理员可以要求整个组织使用双因素认证:未启用的成员在设置完成之前,无法访问该组织中的任何内容。单点登录满足这一要求,因为你的身份提供商会执行自己的 MFA。每个账号都能看到自己在哪里登录,并结束任何会话。验证码仅可使用一次,连续失败十次会锁定账号十五分钟;没有“记住此设备”。移除一个因素需要出示十分钟内提供的第二因素,仅靠密码不行。只有当设备验证了用户时,通行密钥才能单独完成登录。不提供邮件和短信验证码。
- 你的组织绝不会从请求中读取
- 控制台和运营端点从已认证的会话中获取组织,并将其作为显式参数传递,因此调用处无法省略它,请求正文或查询参数中指定的组织也不可能变成由攻击者可控的输入所做的授权决策。一项结构性测试用真实的行、真实的响应投影和一个哨兵值运行,断言内部标识符和上游错误正文绝不会出现在客户的响应中。
平台层面
- 三个界面上都有安全响应头
- infro.io、客户控制台和运营控制台都会发送 Content-Security-Policy、HSTS、X-Content-Type-Options: nosniff、X-Frame-Options: DENY、Referrer-Policy、Permissions-Policy 和 Cross-Origin-Opener-Policy。运营控制台还增加了资源策略和禁止索引指令,其登录页面带有按响应生成的 nonce 策略,完全不允许任何内联脚本。可使用 curl -I 对三个主机名中的任何一个从外部验证。一个已提交的脚本会在强制执行策略的情况下抓取每个路由,遇到任何违规就失败,因此新增的第三方来源不可能悄悄上线。
- 出站 webhook 带签名,轮换时不出现空档
- 我们发送的每个 webhook 都带有基于时间戳和原始正文精确字节的 HMAC-SHA256 签名,因此你既可以验证真实性,也可以验证载荷在传输中没有被改动。在密钥轮换期间,每次投递会同时用旧密钥和新密钥签名,因此你可以采用新密钥而不丢失任何投递。请求头格式为 INFRO-Signature: t=<unix>,v1=<hex>,附有验证代码文档。签名和时间戳是 webhook 被视为需要确认的通知、而绝不能作为行动依据的原因。
- 一套有文档的错误界面
- 网关做出的每一次拒绝,都属于一套已公布的类型和代码,包括那些由我们自己的过错导致的拒绝。请求在任何解析之前就会受到大小限制,并返回有文档记载的 413 而不是超时,认证、登录和线索收集界面则按调用方的网络地址限速。在你写下任何一行代码之前,已在 /docs/api/errors 完整公布。速率限制请求头会说明哪些是精确的,哪些是上界。
- 具名的子处理方列表,附带通知
- INFRO 聘用的厂商公开列在 /subprocessors,包括各自实际能看到什么、在哪里运行,以及新厂商开始处理数据前 30 天的通知。处理你请求的 AI 提供商是你自己选择并直接签约的——它们不是 INFRO 的子处理方,该页面解释了这一区分为何是实质性的,而不是为了方便。目前有两家具名的基础设施厂商。数据库运行在法兰克福,网关运行在它旁边;请求无论调用方在哪里都会进入 Cloudflare 的网络,本页如实说明,而不暗示某个区域。
这份清单存在,是因为没有它,本页其余部分的价值会降低。如果其中某一项会阻碍采购,我们宁愿在你的第一封邮件里谈,而不是在评估的第四周。
- 目前没有 SOC 2 或 ISO 27001
- 两者都没有。审计需要有可供检查的运营历史,而我们的还很短。上面的路线图是我们转而做出的承诺;如果你的流程没有报告在手就无法推进,那是等待的理由,而不是谈判的理由。
- 没有独立的渗透测试
- 本页的任何内容都没有经过撰写它的团队之外的人审查。我们保持一项按资产组织的常设内部安全评审,它是一种自我评估——这就是想过某件事与让别人试过某件事之间的区别。
- 不支持仅限欧盟或区域化的处理
- 请求在离调用方最近的地点进入 Cloudflare 的网络,TLS 在那里终止,而网关本身运行在法兰克福,紧挨着数据库。这样的部署缩短了数据库往返时间;它不是数据驻留控制,限定区域的处理需要我们尚未购买的基础设施权益。一个看起来像欧洲、却并不真正限制处理位置的主机名,是你一个请求就能证伪的说法,所以我们不提供。
- 托管服务是多租户的
- 在每个自助套餐上,各组织共用托管服务,彼此之间的隔离是逻辑隔离而不是物理隔离。如果你的要求是我们的软件运行在你自己的基础设施中,那就是企业协议下的自托管或混合部署,按合同逐一界定和商定;没有任何自助套餐包含这一项。
- 自助套餐没有公布的正常运行时间 SLA
- 没有运营历史的服务无法诚实地公布可用性承诺,所以我们不公布。企业协议可以按合同约定附带带有补偿条款的合同化 SLA。网关的健康状况可以在你自己的浏览器中通过 /status 查看。
- SSO 和 SCIM 是新功能
- SAML 和 OIDC 单点登录以及 SCIM 2.0 同步已实现,并从 Business 套餐起提供,以 DNS 验证过的域名为前提。它们尚未在生产环境中与每一家身份提供商实际运行过,因此我们与每位客户一起设置首次连接,而不称之为自助服务。
- 护栏基于模式;没有分类器护栏
- 针对聊天补全的护栏,从 Business 套餐起提供,会按固定模式检查提示词和响应——电子邮件地址、电话号码、银行卡号、IBAN、美国社会安全号码、IP 地址、API 密钥以及你列出的术语——并阻断、脱敏或标记匹配内容。模式匹配会漏掉这些格式之外的任何内容。没有任何功能能检测提示词注入、越狱、有害内容或偏离主题的请求,图像、音频以及聊天补全以外的端点也不会被检查。如果你的评审需要请求路径上的内容分类器,INFRO 不提供。
- 没有单个请求的成本上限
- 预算为你的组织、项目、成员或密钥所能触及的总额设置上限,速率限制则为请求量设置上限。目前尚不存在的是拒绝单个异常昂贵请求的控制。对网关来说,合法的大提示词和滥用的提示词看起来是一样的,而客户有理由期待这样的控制。
- 速率限制按地点执行
- 限额由 Cloudflare 的速率限制服务在网关所运行的地点计数,而不是由一个全局计数器统一计数。网关部署在法兰克福,因此大部分流量在那里计数,但部署位置只是路由偏好而不是保证,在其他地方处理的流量会单独计数——所以一个密钥可能会短暂超过其名义限额。这是一个有意的取舍——全局计数器的方案会让最大的客户被我们的架构限速,而不是被他们自己的限额限速——API 文档说明了哪些速率限制请求头是精确的,哪些是上界。
尚未具备的能力,我们和已具备的能力一样如实列出。如果这里的某一项妨碍了你的采购,我们宁愿现在就谈,而不是等到签约之后。
- 不使用你的数据进行训练已承诺
- INFRO 不会使用你的提示词、输入或输出进行训练,也不会出售它们。你所连接的 AI 提供商对数据的使用,遵循你与它们的协议和设置。
- 默认关闭内容日志已承诺
- 用量元数据用于平台计量、成本估算和治理。可选的提示词和响应日志默认关闭,单独存储,并受你套餐的保留期限制。
- 密钥静态哈希存储已承诺
- API 密钥以 32 个 CSPRNG 字节的 SHA-256 摘要形式存储。即使数据库泄露,也不会泄露可用的凭据;吊销时会写入一条墓碑记录,因此不会被陈旧的缓存条目所遮蔽。
- 仅追加的审计日志已承诺
- 审计记录无法更新或删除——数据库本身会拒绝。每一次策略变更、凭据更新、密钥轮换和成员变更都是带有操作人的一条新记录,因此你组织的历史无法被悄悄改写。
- 公开的子处理方列表已承诺
- 基础设施供应商公开列在 /subprocessors,新供应商开始处理数据前会提前 30 天通知,但受该页所述紧急例外情形的约束。你直接选择并与你所连接的 AI 提供商签约。
- SOC 2 / ISO 27001尚未
- 未持有,也不宣称持有。认证需要有可供审计的运营历史,而该网关的运营历史还很短。我们公布的是 /trust 上的路线图:已聘请审计机构进行 SOC 2,但尚未安排观察窗口;ISO 27001 正在评估中,尚无审计机构和日期,两者都不会被描述为超出这一状态的任何东西。日期会在审计机构确认后才出现在那里,而不会提前。
- 含标准合同条款的 DPA已承诺
- 全文公布在 /dpa,包含标准合同条款(SCCs)及英国附录。签署通过邮件完成,而不是在控制台中——没有会签流程,页面上也如实说明,而不是暗示有一个按钮。
- 欧盟数据驻留尚未
- 需要我们尚未购买的基础设施权限。一个看起来像欧洲的主机名只是一个声明,客户用一次请求就能证伪,因此在处理确实受到区域限制之前,我们不会提供这样的主机名。
我们对安全审查真正会问的问题的回答——数据处理、加密、密钥管理、访问控制、监控、合规——以纯文本文档形式公布,你可以阅读、比对差异,并粘贴到自己的工具中。
它特意采用 Markdown 而不是 CAIQ 电子表格。CAIQ 的价值在于其问题编号,而一份只填了一部分的 CAIQ 会暗示我们加入了某个我们并未加入的登记库——因此这份文档按审查人员的阅读顺序涵盖同样的内容,并采用你我双方的工具都能比对差异的格式。它与本页由同一份数据生成,因此两者不会出现矛盾。
也欢迎发送你们自己的问卷,任何形式都可以。我们会回答每一个问题,包括答案为否的问题,并说明其中哪些已定下日期。请发邮件至 sales@infro.io。
在询问我们之前,请先阅读它们。查看其中任何一份都不需要通话、保密协议或销售洽谈。
- 数据处理协议
- 全文,纳入了标准合同条款及英国附录,包括数据泄露通知义务和保留期限表。通过邮件签署——控制台中没有会签流程,本页如实说明这一点,而不是暗示有一个按钮。
- 子处理方
- INFRO 聘用的每一家供应商、每一家实际能看到什么、在哪里运行,以及新供应商开始处理数据前提前 30 天通知。它还解释了为什么你连接的 AI 提供商不是 INFRO 的子处理方。
- 隐私政策
- 收集哪些数据、合法依据、每类数据保留多久,以及数据主体享有的权利。与本页上的保留期相互配合,而不是相互矛盾。
- 可接受使用政策
- 平台上禁止构建什么,包括没有审批途径的类别,以及我们发现后会如何处理。采用卡组织的用语撰写,因为提问的正是他们。
- 漏洞披露政策
- 哪些在范围内、如何在不伤害其他客户的前提下测试、你报告后我们承诺做什么,以及针对善意研究的安全港条款。也发布在 /.well-known/security.txt。
- 服务条款
- 商业协议、运营主体及其司法管辖区,以及协议结束时账号的处理方式。
- 错误分类
- 网关可能作出的每一种拒绝,都在你针对它写下第一行代码之前公布——包括那些责任在我们而不在你的情况。
- 数据处理,见 API 参考文档
- 逐字段说明:每个请求会记录什么、组织开启捕获后会额外记录什么,以及保留期如何应用。这是上文所述保留控制的工程师版本。
- 密钥与认证
- 网关密钥如何签发、限定到某个项目和环境、按角色收窄权限以及吊销——写给需要决定组织中谁能获得密钥的人。
- AI API 密钥安全
- 有无网关时提供商密钥分别存放在哪里、每个网关密钥在调用提供商之前要通过的四项检查,以及密钥泄露后第一个小时该做什么。
- 我们会在一个工作日内确认收到,并在调查期间持续向你通报进展,包括答案是我们早已知道的情况。
- 善意研究在这里是安全的。只要测试避免侵犯隐私、降低服务质量,以及破坏或窃取不属于你的数据,我们就不会因此采取法律行动。
- 我们没有漏洞赏金计划,也不支付报酬。事先说明,因为工作做完后才发现,比事先知道更糟。
- 商务和采购问题请另寻渠道——安全审查或问卷请联系 sales@infro.io,已有账号的问题请联系 support@infro.io。