Azure — 发现
连接您的 Azure 租户,SecureAI 即可盘点您在 Azure 中的 AI 资源,以及 Microsoft Entra ID 中每一个非人类身份(NHI),并列出每个身份所拥有的角色和权限。此连接只读,从不发送提示词。如果您希望让 SecureAI 的 LLM 流量改为运行在您自己的 Foundry 资源上,请参阅 Azure AI Foundry — Inference in your account。这是两个相互独立的连接,使用不同的服务主体和权限;您可以在同一个订阅上同时使用两者。
SecureAI 导入什么
对于服务主体能够读取的每个订阅:- AI 资源:每个 Azure AI Services、Azure OpenAI 和其他 Cognitive Services 帐户(Content Safety、Speech、Language、Document Intelligence 等),包括其区域和状态。
- Azure OpenAI 和 Foundry 的模型部署,包括其容量以及最近 30 天的使用情况(请求数、输入和输出令牌数,来自 Azure Monitor)。
- Foundry 项目与智能体:每个项目中 Foundry Agent Service 的智能体和经典助手,以及它们各自使用的模型。还包括中心(hub)和基于中心的项目(Azure Machine Learning),以及它们的在线终结点和无服务器终结点。
- Azure AI Search 和 Azure Bot Service。
- 当月按服务划分的费用(Cost Management)。
- 活动:最近 30 天 Cognitive Services 和 Machine Learning 的管理事件(活动日志)。
- NHI,列在 NHI 清单中:
- 企业应用程序的服务主体。
- Microsoft Entra 智能体标识,即 Foundry 为每个智能体创建的标识(归类为智能体)。
- 托管标识,包括系统分配和用户分配的托管标识。
- 应用注册的客户端密码和证书,及其到期时间。
- 联合凭据(工作负载标识联合身份验证)。例如,GitHub Actions 的 OIDC 信任允许该存储库以该应用程序的身份获取令牌,完全无需密码。
- 每个应用程序的上次登录,前提是您的租户提供该报告。
- 每个身份的权限:其在订阅任意范围(订阅、资源组或资源)内的 Azure RBAC 角色、Microsoft Graph 应用程序权限,以及 Entra 目录角色。
- RBAC 角色分配:按名称列出每个角色,以及拥有该角色的用户、组和应用程序。
- Owner、Contributor、User Access Administrator 或 Role Based Access Control Administrator 角色之一;
- Graph 写入权限,例如
Application.ReadWrite.All、Directory.ReadWrite.All、Mail.Send或Files.ReadWrite.All; - 目录管理员角色,例如 Global Administrator 或 Application Administrator。
先决条件
一个带有客户端密码的 Microsoft Entra ID 应用注册(服务主体),以及以下权限:
Graph 权限需要管理员同意。要读取您的所有订阅,请在每个订阅上分配 Reader,或在包含这些订阅的管理组上分配。
Foundry 智能体位于项目的数据平面,而不在 Azure Resource Manager 中:仅有 Reader 无法看到它们。如果 Foundry 资源上没有 Cognitive Services Data Reader(或 Foundry User),同步仍然可以进行,但智能体列表会保持为空,SecureAI 会将其报告为缺口。Cognitive Services Data Reader 是允许此操作的最窄角色:仅限数据平面读取。
步骤 1. 创建服务主体
使用 Azure CLI
在 Azure Cloud Shell 或az CLI 中运行。将 SUB_ID 替换为您的订阅;如果使用 Foundry,请将 MY_RESOURCE 和 MY_RG 替换为您的资源和资源组:
1bfefb4e-e0b5-418b-a88f-73c46d2cc8e9=Role(Application.ReadWrite.All),并重新授予同意。
使用 Azure 门户
- 在 Azure 门户中,转到 Microsoft Entra ID → 应用注册 → 新注册,为其命名(例如
SecureAI Discovery)并完成注册。 - 在概述中,复制目录(租户)ID 和应用程序(客户端)ID。
- 在证书和密码 → 客户端密码 → 新客户端密码中创建一个密码,并复制其值(只显示一次)。
- 在 API 权限 → 添加权限 → Microsoft Graph → 应用程序权限中,添加
Application.Read.All、Directory.Read.All和AuditLog.Read.All(如果您想在 SecureAI 中撤销,还需添加Application.ReadWrite.All)。然后单击授予管理员同意。 - 在订阅 → 您的订阅 → 访问控制(IAM) → 添加角色分配中,将 Reader 和 Cost Management Reader 分配给该应用程序。
- 在您的 Foundry 资源 → 访问控制(IAM) 中,将 Cognitive Services Data Reader 分配给该应用程序。
Azure 角色最多可能需要 5 分钟才能生效,Graph 同意还需要再多几分钟。如果首次同步时,刚刚授予的权限仍显示缺口,请稍候再同步一次。
步骤 2. 在 SecureAI 中连接 Azure
- 转到管理 → 集成,按 Cloud 筛选,然后在 Azure — 发现卡片上单击连接集成。
-
填写各字段:
- 单击连接。保存之前,SecureAI 会通过一次真实读取来测试凭据:如果密码有误,或主体无法读取该订阅,则不会存储任何内容,并且提示信息会说明缺少什么。如果连接成功但缺少某项 Graph 权限,通知中会指出该权限。
- 使用卡片上的刷新按钮进行同步。Azure 同步可能需要几分钟(它会遍历 Azure Resource Manager、Microsoft Graph、Azure Monitor 和 Cost Management)。此后,SecureAI 每 6 小时自动同步一次。
步骤 3. 验证
- Cloud Sensors 列出已发现的部署、智能体和服务。单击 Azure 卡片即可打开其 Insights:
- Usage & Costs:使用情况和费用;
- Models & Deployments:部署和智能体;
- Identity & Access:带有角色和 Privileged 标记的身份;密码、证书和联合凭据;带有成员的 RBAC 角色;
- Audit & Logs:活动。
- NHI 清单显示服务主体、智能体标识、托管标识、密码、证书和联合凭据,以及它们的权限和是否为特权。
覆盖缺口
SecureAI 无法读取的内容不会被悄悄跳过:连接或同步时,通知会指出缺少的权限。
部分读取(缺少权限、Azure 未返回的页面、限流)绝不会从清单中移除智能体或删除身份:只有当本应显示某项内容的列表被完整返回时,SecureAI 才会将其视为已删除。没有角色分配时,身份的权限保持为未知,而不会是“无”。
撤销
在 NHI 清单中(挂锁图标),使用Application.ReadWrite.All:
保护措施:
- SecureAI 不提供撤销其自身用于连接的服务主体及其密码的选项,因为那会中断发现。请在 Entra ID 中轮换它们。
- 系统分配的托管标识不能在 SecureAI 中撤销:其生命周期取决于 Azure 资源。
- Foundry 保存在智能体标识蓝图上的联合凭据,同样不能在 SecureAI 中撤销:删除它们会使智能体停止工作。
- 自动 NHI 策略(按使用时长或闲置时间撤销)暂不适用于 Azure:撤销需手动进行。

