当前位置: 首页 > news >正文

Azure Local离线模式身份规划(系列篇之三)

1. 身份架构概述

Disconnected Operations不依赖 Microsoft Entra ID,而是在本地构建完整的身份认证体系。

整个身份系统由三个组件组成:

  • Active Directory Domain Services (AD DS):提供用户、组及组成员信息
  • Active Directory Federation Services (AD FS):提供 OpenID Connect(OIDC)身份认证
  • LDAP v3(推荐 LDAPS):负责同步用户组及成员信息

整个身份体系完全运行在本地数据中心,无需连接 Azure 公有云


2. 支持的身份组件

组件用途说明
Active Directory Domain Services(AD DS)用户、组、组成员管理仅支持 Universal Group Scope
Active Directory Federation Services(AD FS)OIDC 身份认证必须能够访问https://<ADFS-FQDN>/adfsMetadata Endpoint
LDAP v3同步组与成员默认端口 3268(LDAP)或 3269(LDAPS),推荐使用 3269(SSL/TLS)

⚠️重要:当前 Azure Local Disconnected Operations不支持 Microsoft Entra ID(原 Azure Active Directory)作为身份提供程序。身份认证必须通过 AD FS + Active Directory 实现。


3. 身份认证流程

[用户登录] │ ▼ [Local Portal] │ ▼ OpenID Connect [AD FS] │ ▼ 用户身份认证 [返回 Access Token] │ ▼ [Appliance Control Plane] │ ▼ LDAP(每 6 小时同步) [Active Directory]

身份职责划分

功能组件
用户认证AD FS(OIDC)
用户组同步LDAP
用户信息来源Active Directory
权限控制Azure RBAC

4. Root Operator 与权限模型

部署过程中必须指定一个 Root Operator(Initial Operator)。

Root Operator 自动拥有 Operator Subscription 权限,可继续创建其他 Operator。

其职责包括:

  • 创建 Operator
  • 创建订阅(Subscription)
  • 创建 Service Principal(SPN)
  • 管理 Identity 配置
  • 管理诊断与日志
  • 管理 RBAC

微软官方特别说明:"Role assignments and policies aren't inherited from the Operator Subscription to individual subscriptions. Each subscription has its own RBAC scope."

因此:每个 Subscription 都拥有独立的 RBAC 权限边界,权限不会自动继承


5. Operator 权限

5.1 身份管理

操作Operator
创建 Operator
创建 SPN
删除 SPN
修改 SPN
查询 SPN
查看同步后的组成员
查看 Identity 配置
查看同步状态

5.2 Subscription 管理

操作Operator
创建 Alias
删除 Alias
创建 Subscription
删除 Subscription
查询 Subscription
修改 Subscription Owner
重命名 Subscription
Resume Subscription

5.3 运维与诊断

操作Operator
收集日志
下载日志
配置 Diagnostics
配置 Syslog Forwarding

5.4 权限限制

以下操作不允许

  • ❌ 删除 Operator Subscription
  • ❌ Operator 自动继承所有 Subscription 权限

需要注意:SPN Owner 可以删除自己拥有的 SPN——这是独立于 Operator 的权限模型。


6. Identity 同步机制

部署完成后:

  1. 首次完成身份同步
  2. 后续默认每 6 小时自动同步一次

同步内容包括:

  • 用户组
  • 用户成员关系
  • Group Membership

同步状态可通过 Operator API 查询:

Get-ApplianceExternalIdentityObservability

7. 部署前需要准备的身份参数

参数说明示例
AuthorityOIDC Metadata URIhttps://adfs.contoso.com/adfs
ClientIdAD FS 注册应用 IDxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
LDAP CredentialLDAP 只读账户ldap / ******
LDAPS Certificate ChainLDAPS 证书链见 PKI 章节
OIDC Certificate ChainAD FS 证书链见 PKI 章节
LDAP ServerLDAP Server FQDNldap.contoso.com
LDAP PortLDAP 端口3269(推荐)
Root Operator UPN初始 Operatoroperator@contoso.com
Sync Group IdentifierRoot Group GUIDxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Automation Certificate自动化部署证书(可选)PowerShell 创建

8. Identity 配置示例

$ldapPass = 'retracted' | ConvertTo-SecureString -AsPlainText -Force $idpConfig = @{ authority = 'https://adfs.contoso.com/adfs' clientId = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' rootOperatorUserPrincipalName = 'operator@contoso.com' ldapServer = 'ldap.contoso.com' ldapCredential = New-Object PSCredential("ldap", $ldapPass) syncGroupIdentifier = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' }

9. 自动化部署(Automation Certificate)

如果希望整个部署流程无人值守,可配置 Automation Certificate。

Azure CLI 示例

az login \ --service-principal \ --username <ApplicationId> \ --certificate <CertificatePath> \ --tenant <TenantId>

PowerShell 示例

Connect-AzAccount ` -ServicePrincipal ` -CertificateThumbprint $CertThumbprint ` -Tenant $TenantId ` -ApplicationId $ApplicationId

⚠️重要:Automation Certificate等同于部署环境的最高权限凭据。如果证书永久丢失,将无法继续自动化管理,严重情况下可能需要重新部署 Disconnected Operations。

建议:

  • 使用企业 PKI 签发
  • 离线备份
  • 妥善保管私钥

10. 部署前 Identity 检查清单

检查项是否必须
LDAP Server 已部署
LDAP Endpoint 可访问
AD FS 已部署
OIDC Metadata 可访问
Appliance 能解析 LDAP FQDN
Appliance 能解析 AD FS FQDN
LDAP 只读账户已创建
已确定 Root Operator
已确定同步 Root Group
已准备所有 Identity 参数

11. 官方未明确说明但需要注意的事项

微软官方文档未明确说明以下内容:

  • AD FS 的最低版本要求(通常建议 Windows Server 2019 或更新版本
  • 是否支持 LDAP StartTLS(官方仅说明 LDAP/LDAPS,推荐使用 LDAPS 3269
  • Operator 数量是否存在上限
  • Operator Subscription 是否涉及独立授权或计费
  • Universal Group Scope 的设计原因(官方仅要求必须使用 Universal Group,未进一步解释)
http://www.jsqmd.com/news/1123722/

相关文章:

  • JVM是什么?
  • 良心盘点!2026AI论文写作工具榜单(覆盖 99% 学生论文写作需求)
  • YOLOv13超图视觉与NCNN部署实战指南
  • Wwise音频文件处理终极指南:3分钟掌握游戏音效解包与定制
  • 如何用大模型设计一个“国标级“智能体:从 prompt 到落地的完整指南
  • 【OpenHarmony/HarmonyOs 】实验室首页细节拆解:分类侧栏、搜索筛选与推荐探索交互
  • 小程序基础库3.16.0实战指南:NFC/离线运行/双端适配/接口迁移代码落地及公众号迁移公证书线上办理流程
  • IBM ODM JNDI注入漏洞CVE-2024-22319复现与深度解析
  • 91.吃透 PLC 底层!扫描周期 + 状态机物料分拣,全套 ST 源码
  • python___模块
  • 如何快速解决Windows热键冲突:终极热键检测工具使用指南
  • OpCore Simplify技术深度解析:揭秘黑苹果自动化配置的核心原理
  • 安卓手机 SIM 卡迁移至新款 iPhone 17/16?
  • 免费获取百度文库文档的终极方案:开源页面清理脚本完整指南
  • Elsevier投稿状态追踪插件:科研工作者的智能审稿监控工具
  • 如何用BilibiliDown三步搞定B站视频下载?小白也能掌握的完整指南
  • 影刀RPA新手教程:财务报表自动汇总完全指南——多Excel合并数据透视与自动发邮件
  • Crypto++实战指南:从CRC32到RSA的C++加密库集成与应用
  • 3分钟掌握抖音内容下载:免费工具助你高效保存视频、直播和合集
  • STM32F072RB与SLO2016构建工业隔离通信系统
  • AI专著撰写实用技巧:利用AI工具,快速生成20万字专著的方法!
  • 基于策略模式与智能降级的高性能抖音下载器架构设计
  • AI模型工作流横评:端到端业务链路实战测评
  • 资深后端工程师分享:技术栈选型背后的思考
  • Pyfa终极指南:5个技巧快速掌握EVE Online免费Python舰船配装工具
  • OpenHarmony Image 图片组件全场景开发与 API23 + 适配优化
  • 排序算法百科全书:从基础到精进的完整指南
  • Sonnet 4.6 实测:中端模型如何以1/5成本实现95% Opus级工程能力
  • Claude Sonnet 4.6办公能力重构:从操作计算机到指挥知识系统
  • Codex 用户集体暴怒!Token疯狂蒸发的 5 个原因终于找到了