GitHub - transilienceai/denali: 证据驱动、提供商中立的AI安全平台
摘要
Denali是一款开源的AI安全平台,提供基于证据的资产清单、态势管理、攻击路径分析和运行时检测功能,支持多个云提供商,重点在于提供商中立性和证据分离。
查看缓存全文
缓存时间: 2026/09/22 04:39
transilienceai/denali 来源:https://github.com/transilienceai/denali
Denali
Denali 是一个独立、开源的 AI 安全平台,提供基于证据的资产清单、安全态势、攻击路径和运行时上下文。它将观察到的事实、推断的关系、安全结论和覆盖范围限制分离开来,以便评估者既能了解 Denali 所知信息,也能了解其无法验证的内容。优先级排序的产品方向和发布门控记录在智能体安全路线图中。 该仓库包含一个可运行的本地产品:一个基于 PostgreSQL 的 API、一个独立的 Web 应用程序、确定性问题和检测引擎、供应商接入、一方收集器以及有界导入器。它并非 CSPM 的扩展。Prowler 通过 OCSF 作为外部发现源受到支持。
当前状态
本 README 中的状态术语是刻意独立的:
- 已发布 意味着该功能已在
main分支上实现,并由仓库测试和/或生产级 Web 或容器构建覆盖。 - 本地接受 意味着类似客户的工作流程也已在来自本地 Denali 部署的实时供应商资源上完成。
- 待上线接受 意味着实现和本地验证已存在,但文档记录的人工、浏览器或供应商端到端测试尚未完成。
- 计划中 意味着该功能尚未在此仓库中实现。
| 功能 | 实现状态 | 接受证据 |
|---|---|---|
| 证据存储、API、Web UI、连接器、导入器、问题和运行时检测 | 已发布 | 通过自动化和 PostgreSQL 套件以及生产级 Web 构建进行本地验证 |
| 自助式 AWS 连接 | 已发布 | 本地接受,针对实时 AWS 账户,包括快速创建、精确账户绑定、启用区域发现和独立平面验证 |
| 自助式 Microsoft Azure 连接 | 已发布 | 待上线接受。RBAC 传播后,实时订阅设置和健康验证成功,但最终的已连接浏览器、未选订阅、部分状态、禁用和删除测试仍待完成 |
| 自助式 Google Cloud 连接 | 已发布 | 本地接受,针对三个实时项目,使用唯一的无密钥主体,所有声明的项目/平面验证均通过 |
| 自助式 Microsoft Entra 连接 | 已发布 | 待上线接受。已观察到生产管理员同意和验证,但完整的保留生命周期和收集记录仍待完成 |
| 自助式 Google Workspace 连接 | 已发布 | 待上线接受。固定范围的全域委派、验证、持久收集和租户隔离已有自动化覆盖;首个托管生命周期和收集记录仍待完成 |
| 自助式 GitHub 连接 | 已发布 | 本地接受,通过组织拥有的 GitHub App 针对 18 个精确仓库,所有 54 个仓库/平面验证均通过 |
| 自助式 Azure Repos 连接 | 已发布 | 托管接受,于 2026 年 9 月 10 日通过生命周期和代码到云行为测试;使用完整 P0 证据模板的专用按日期记录仍待保留 |
| GCP 和 Azure 代码到云关联 | 已发布 | 本地接受,针对独立观察的、具有精确源身份、PostgreSQL 报告和浏览器证据的私有可缩放至零的固定装置 |
| AWS Lambda、ECS、EKS 和 SageMaker 代码到云关联 | 已发布 | 本地接受,针对精确的实时账户/区域验证和八个独立部署收集平面 |
| AWS AgentCore 运行时检测与响应 | 已发布 | 待上线接受。仅元数据的 CloudWatch span 收集、五分钟持久轮询、精确会话关联、偏移/工具/序列检测以及手动创建者-检查者响应批准通过自动化和 PostgreSQL 验证;托管 AWS 创建/更新、收集、调查和批准仍需完成 |
| Azure Foundry 运行时检测与响应 | 已发布 | 生产接受,于 2026 年 9 月 14 日针对 Anna 参考智能体完成:一个持久的仅元数据会话、六个智能体/模型/工具活动、完整的 Application Insights 覆盖以及零禁止内容字段 |
| 共享 EKS、GKE 和 AKS 工作负载关联 | 已发布 | 本地接受,通过一个实时、仅控制平面的 EKS 固定装置,包含精确的工作负载 UID/修订版、服务账户、镜像摘要、反例、持久性、API 和拆卸证据;GKE 和 AKS 工作负载身份仍由自动化合约测试覆盖 |
| GitHub 源到云关联 | 已发布 | 本地接受,针对两个不可变的 GitHub 修订版,所有源/清单/态势/关联平面完整,并证明了两个独立观察到的运行时链接 |
| 双应用代码到云黄金路径 | 已发布 | Anna(在 AWS 上)和 Summit(在 GCP 上)受一个版本化重置/验证清单约束,包含精确的源到运行时链接、声明的模型/工具/操作上下文、真实的 Vertex 活动、Entra 发现上下文、三个镜像漏洞、两个关联的治理问题以及一个专用仪表板故事 |
这些连接状态描述了接入和访问验证。它们并不表示供应商收集已运行,或存在清单、发现或安全判断。
已实现内容
Denali 在 Web 应用程序和 API 中呈现以下产品界面:
- 针对智能体、应用程序、模型、MCP 服务器和工具、护栏、框架、流水线、数据存储、工作负载、仓库、身份和软件组件的 AI 清单及基于证据的关系。
- 原子配置和导入的发现、扫描器无关的漏洞以及仅从充分独立证据组合而成的确定性问题。
- 依赖 GitHub 的、不可变修订版的源收集和代码到云视图,这些视图要求精确的部署标识符,保留未匹配和模糊的候选项,并将制品身份与未经验证的源修订版声明分开。
- 供应商无关的运行时活动,加上确定性的、证据关联的运行时检测、有序的 AWS AgentCore 和 Azure Foundry 会话调查,以及需要批准门控的手动响应请求。
- 保持完整、部分、失败、不支持和未知状态可见的源覆盖范围。
- 具有直接深度链接和浏览器前进/后退导航的稳定应用程序路由。
- 用于一个小型、可重现的双应用演示的清单约束黄金路径仪表板;参见运维人员和演示者指南。
- 用于 AWS、Azure、Google Cloud 和 GitHub 的连接生命周期和访问验证,包括显式范围选择和删除前禁用保护措施。
已实现的收集和导入路径包括:
| 来源 | 当前路径 |
|---|---|
| 源代码仓库 | 本地或由 GitHub App 支持的静态 Python、TypeScript、JavaScript、Terraform、SAM/CloudFormation YAML 和 JSON、Cloud Run YAML、Kubernetes YAML、ARM JSON 和 Bicep 分析;有界仓库态势;精确标识符的代码到云关联 |
| MCP Streamable HTTP | 初始化和分页 tools/list 观察,不调用工具 |
| AWS | Bedrock Agents Classic、AgentCore、有界 Lambda/ECS/EKS/SageMaker 部署清单、CloudFormation 堆栈清单和态势、来自 CloudTrail 事件历史的 Bedrock 管理活动,以及来自 CloudWatch Logs 的仅元数据 AgentCore OpenTelemetry/OpenInference spans |
| Google Cloud | 通过 Cloud Asset RESOURCE 快照获取 Cloud Run、Cloud Run functions Gen2 和 GKE 集群清单;来自 Cloud Logging 的 Vertex AI 审计活动 |
| Microsoft Azure | 通过 Azure Resource Graph 获取 Container Apps、Function Apps 和 AKS 集群清单,具有精确的 Azure 代码到云身份;通过 Application Insights 获取可选的、仅元数据的 Foundry 智能体/模型/工具 spans;Entra 活动仍是一个单独的连接器 |
| Microsoft Entra | 通过单独的 Microsoft Graph 连接器收集 AI 应用程序、权限、登录和应用程序管理信息 |
| 外部发现和扫描器 | OCSF 发现、Syft SBOMs 和 Grype 漏洞报告 |
| 运行时导出 | AWS Bedrock CloudTrail、Google Cloud Vertex AI、Google Workspace Gemini 和 Microsoft Entra AI 登录 JSON;托管的 AgentCore 和 Azure Foundry spans 使用其现有的无密钥或基于同意的云连接,而非浏览器上传 |
供应商验证和收集仍然是独立的边界。一个健康的连接并不声称收集已运行。GitHub 验证不读取源代码 blob;一个显式的收集操作会单独将每个选定的仓库解析为一个不可变的修订版,应用硬性的树/文件/字节限制,分析临时快照,并丢弃其令牌和源文件。
证据边界
Denali 的实现遵循一些不可协商的规则:
- 连接健康仅证明在记录的时间,为记录的身份和范围,声明的只读入口点是可调用的。
- 收集覆盖范围与连接健康是分开的。失败或部分收集无法撤回先前观察到的清单或通过缺失来解决问题。
- 发现和运行时事件不会制造清单资产或图边。身份和关联需要精确的、独立观察到的标识符。
- 清单不是发现;发现不是问题;活动不是检测;这些都不是自动的风险判断或已确认的事件。
- 不支持、未选择、不可用和未知的范围保持可见,而不是变为空结果或安全结果。
- 当前的收集器保留有界的元数据和证据。客户云凭据和瞬时供应商访问令牌不会写入证据或连接记录;原始的一次性设置能力在使用后不会保留。原始提示或响应、机密值以及任意扫描器负载也会被排除在外。
- 演示记录被清晰地标记为固定装置证据。规范模型比 OCSF 更丰富,因为它必须保留持久的资产身份和关系。OCSF 仍然是发现和活动的交换边界,而不是发明的 Denali 图身份的来源。
本地评估 Denali
Docker 是通往产品的最短路径:
docker compose up -d --build
docker compose exec api denali-demo-seed
在 打开 Web 应用程序。API 位于 ,交互式文档位于 。PostgreSQL 暴露在 127.0.0.1:55450。
seed 命令创建清晰标记的固定装置清单、发现、漏洞、问题、运行时活动和检测,以便评估者无需供应商凭据即可检查证据和覆盖范围的用户体验。
一个有用的第一步是:
- 检查 清单 并打开资源的断言和关系。
- 比较 发现、漏洞 和 问题,以查看原子事实与组合攻击路径保持分离。
- 比较 运行时活动 和 运行时检测。
- 检查 源 以了解明确的覆盖状态。
- 打开 连接 以检查已发布的接入流程。
依赖外部操作者身份或制品发布者的操作在配置前仍不可用。本地 Compose 运行时使用一个已配置的租户,并且没有最终用户认证或授权层。这是一个评估和开发堆栈,而非生产部署方案。数据持久化在 denali-postgres Docker 卷中。
对于 Clerk Organizations、Vercel、Modal 和 Neon 的试点部署,请从有序发布检查清单开始,然后使用托管多租户试点手册。托管模式将每个活动的 Clerk 组织映射到一个稳定的 Denali 租户 UUID,强制仅管理员可进行变更,并通过持久的 Modal 作业运行供应商验证。规范的服务边界、密钥所有权、租户隔离规则和持久工作标准记录在 ADR 0028 中。
运行收集器和导入器
对于 CLI 工作,安装所需的供应商 extras 并将命令指向本地数据库:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[api,aws,azure,gcp,github,dev]'
export DENALI_DSN=postgresql://denali:[email protected]:55450/denali
已安装的入口点包括 denali-repo-scan、denali-mcp-observe、denali-agentcore-scan、denali-aws-scan、denali-aws-stack-scan、denali-aws-stack-posture、denali-repository-posture、denali-code-to-cloud、denali-kubernetes-import、denali-ocsf-import、denali-syft-import、denali-grype-import、denali-activity-import、denali-aws-runtime、denali-gcp-vertex-runtime、denali-gcp-deployments-scan 和 denali-entra-scan。
使用每个命令的 --help 输出查看其确切范围和输入。
供应商接入
自助接入需要操作者拥有的集成身份,对于 AWS、Azure 和 GCP 设置制品,还需要一个私有的短期发布者。客户仅授予文档记录的读取范围,并保留对供应商侧 IAM 或 App 安装状态的控制。Denali 不接受客户的访问密钥、服务账户 JSON 密钥、个人访问令牌或云 CLI 会话。 已接受的合约、操作要求、验证平面、生命周期行为和证据限制在此文档中记录:
- ADR 0018 — AWS 角色接入
- ADR 0019 — Azure 多租户应用程序和选定订阅
- ADR 0020 — GCP 无密钥主体和选定项目
- ADR 0021 — GitHub App 和精确仓库边界
- ADR 0022 — GitHub 不可变源收集
- ADR 0029 — Microsoft Entra 管理员同意接入
- ADR 0033 — Google Workspace 全域委派
- ADR 0034 — Azure Repos 精确仓库接入
- GitHub App 注册和操作者配置
最新的接受记录是 AWS、Azure、GCP 和 GitHub 检查点。
架构指南
从产品和证据边界开始,然后仅遵循正在评估的部分:
相似文章
行业对智能体安全的理解总是有误,所以我开发了一个免费平台来教授真正有效的方案
本文介绍了Tantalus,一个通过真实挑战学习如何保护智能体AI系统免受间接提示注入和数据泄露的免费平台。
@0x0SojalSec: Awesome AI Security:每个人都在争相部署AI代理,但几乎很少有人正确保护它们。该仓库汇集了…
一个精心整理的GitHub仓库,汇集了用于保护AI系统的框架、工具、攻击矩阵、红队指南、政策模板、数据集及研究,涵盖提示注入、越狱以及OWASP/NIST标准等主题。
Opengeni
Opengeni 是一个用于在生产环境中部署 AI Agent 的基础设施平台,提供持久会话、沙箱、100+ 集成、人工介入审批以及可观测性支持,可自托管或使用云服务。
Palo Alto 推出多模型AI安全服务
Palo Alto Networks 已推出 Unit 42 Continuous Frontier AI Defense,这是一项多模型AI安全服务,使用多种AI模型持续评估漏洞并加速修复。
@DanKornas: 基于云的 AI 服务在设备外部处理敏感文档、通信和创意作品时,可能使它们面临隐私风险……
NativeMind 是一款私密、开源的浏览器扩展,通过 Ollama 或 WebLLM 运行本地 AI 模型,为注重隐私的用户提供离线 AI 功能。