mcpField
A
azure-bastion-jit

azure-bastion-jit

github.com/vinayaklatthe安全17842 次安装19 周前更新
代码仓库

关于 azure-bastion-jit

azure-bastion-jit 是为 Azure IaaS 虚拟机及 VMSS 管理访问提供设计指导的技能,面向需要强化管理员连接的团队。它结合 Azure Bastion 与 Defender for Cloud 的 JIT 访问,减少公网暴露和长期开放的管理端口。

主要功能

  1. 01选择 Bastion SKU
  2. 02规划 JIT 临时网络访问
  3. 03通过策略移除虚拟机公网 IP
  4. 04结合 Entra 登录和 RBAC
  5. 05配置会话录制与监控

适用场景

  1. 01将虚拟机管理改为私有连接
  2. 02为 RDP 或 SSH 设置限时访问
  3. 03设计管理员 Bastion 权限
  4. 04将 Bastion 与 JIT 活动接入监控

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/vinayaklatthe/microsoft-security-skills --skill azure-bastion-jit

安装后在 Claude Code 中输入/azure-bastion-jit确认已加载。

详细介绍

Azure Bastion + 即时 VM 访问

Azure Bastion(托管式浏览器/原生客户端跳板服务)与 Defender for Cloud 即时(JIT)VM 访问(为管理端口设置有时限的 NSG 允许规则)结合使用,可消除 Azure VM 最常见的两种遭入侵途径: 暴露于互联网的 RDP/SSH,以及长期开放的管理端口。

适用场景

设计或加固 Azure IaaS VM 和 VMSS 的管理访问。使用此技能进行 SKU 选择、JIT 策略制定、移除公共 IP,以及规划运维工作流。

请勿将此技能用于混合 VPN/SD-WAN 设计、以 ZTNA 替代 VPN (entra-global-secure-access)或仅限 AKS 的访问。

Bastion SKU — 根据功能需求选择

SKU功能
Developer免费,临时通过浏览器连接单个 VM、单个 VNet,仅支持 RDP/SSH;不支持扩展或可共享链接
Basic通过门户使用 RDP/SSH,支持仅限专用 IP 的 VM,单实例扩展
Standard+ 原生客户端、可共享链接、基于 IP 的连接、Kerberos、Linux 文件复制、自定义端口,最多可扩展至 50 个实例
Premium+ 会话录制、仅限专用网络的部署及其他管理功能

**经验法则:**大多数企业场景选择 Standard;需要会话录制或仅限专用网络部署时(受监管行业)选择 Premium。Developer 适用于非生产环境/沙盒中的个人使用。

方法

  1. 架构。 每个中心 VNet 部署一个 Bastion(如果流量隔离有要求,也可以每个分支 VNet 部署一个)。所需子网:AzureBastionSubnet,最小为 /26。子网上的 NSG 应遵循文档中规定的允许规则——如果不包含文档中规定的允许例外,就不要写“拒绝所有来自互联网的流量”,否则 Bastion 将无法正常工作。

  2. 移除 VM 公共 IP。 Azure Policy:“公共 IP 地址不应与虚拟机关联”——在生产范围内将其设为 Deny。新 VM 仅使用私有 IP;管理员通过 Bastion + JIT 访问。

  3. Bastion + VM 上的 Entra 登录。 配合 Microsoft Entra login for Windows/Linux VM 扩展使用,让 RDP/SSH 通过 Entra 凭据进行身份验证,并在 VM 登录时应用条件访问(MFA、设备合规性、命名位置)。这是大多数仅部署 Bastion 的方案所忽略的关键环节。

  4. 为每个允许 RDP/SSH 访问的 VM 配置 JIT。

    • 默认端口:RDP 3389、SSH 22、WinRM 5985/5986。
    • 最大请求时长:3 小时。
    • 来源:请求者的 IP(或 Bastion 子网,因为请求来自该子网)。
    • 审批:由 RBAC 隐式授权,或为第 0 层 VM 添加手动审批步骤。
  5. Bastion 连接的 RBAC。 Bastion 连接权限与 VM RBAC 并不相同。所需角色:

    • Bastion、VM、VM 的 NIC 和 VNet 上的 Reader。
    • 用于基于 Entra 的 VM 登录的 Virtual Machine User Login(Linux)/ Virtual Machine Administrator Login。
    • JIT 请求:Microsoft.Security/locations/jitNetworkAccessPolicies/initiate/action。 按人员角色将这些权限纳入自定义角色,避免授予过多权限。
  6. 原生客户端 + 基于 IP 的连接 + 可共享链接(Standard 及更高版本)。

    • 原生客户端(az network bastion rdp/ssh):管理员使用本地 mstsc/SSH 工具;相比浏览器标签页,体验更好。VM 登录仍会应用条件访问。
    • 基于 IP 的连接:通过 ExpressRoute/VPN,让 Bastion 连接到对等互联的本地 VM。
    • 可共享链接:用于承包商紧急访问的限时 URL。除非明确需要,否则请禁用;并审计其使用情况。
  7. 会话录制(Premium)。将管理员会话录制为视频,并存储到 Log Analytics 工作区 / Storage。某些受监管行业有此要求;请检查保留期限和访问控制。

  8. JIT 请求工作流。 为管理员编写文档:

    • 打开 Defender for Cloud → JIT VM access → Request access → 端口 + 时长。
    • 在时限内通过 Bastion 连接。
    • NSG 规则会在到期时自动还原。
  9. 监控。 将 Bastion 诊断日志(BastionAuditLogs)和 JIT 活动日志事件发送到 Sentinel。检测:非工作时间来自意外 IP 的请求,以及同一主体连续快速访问多个 VM 的情况。

防护措施

  • 不要在 AzureBastionSubnet 上配置拒绝所有流量的 NSG。 必须允许特定服务标记 / 端口;服务正常运行需要遵循文档中规定的规则。
  • JIT 会更改 NSG 规则,不会更改 Azure Firewall / NVA 规则。 如果管理流量经过防火墙,仅靠 JIT 无法放行。应设置防火墙策略,或仅通过 Bastion 路由管理流量。
  • 仅使用 Bastion 并不等于条件访问。 如果 VM 上没有 Entra 登录,虽然移除了公网暴露,但被盗的 VM 凭据仍然有效。请组合使用。
  • 可共享链接会绕过发起用户的 MFA,除非同时启用 Entra VM 登录。请避免在敏感 VM 上使用。
  • Premium 会话录制会带来较大的存储开销。 请规划保留期限和成本。
  • 不要为了“方便”在每个分支 VNet 中都部署 Bastion。 通常通过对等互联在中心部署一个即可;每个实例的成本会不断累积。
  • 通过共享 NAT IP 发起的 JIT 请求会在授权时段内为该 NAT 后所有人开放端口。请结合命名位置和条件访问使用。
  • **同时配置 VM 公共 IP 和 Bastion 对等访问作为“备用方案”**会破坏安全模型。请二选一。

常见反模式

  • “保留带有公共 IP 的 VM 上的堡垒主机,‘以备紧急访问’”——紧急访问是一种流程,而不是一个无人监控的开放 RDP 端口。
  • “JIT 请求窗口 = 8 小时,来源 = 任意”——这相当于让互联网开放端口一个工作日。
  • “没有 Entra VM 登录的 Bastion”——本地管理员密码一旦泄露,依然会导致灾难性后果。
  • “通过电子邮件永久分享可共享链接”——这会变成永久后门。请设置有效时限并进行审计。
  • “将所有会话录制到任何人都能读取的工作区”——录制内容会暴露特权操作和凭据。
  • “每台开发 VM 都配备独立的 Bastion”——不经济且会产生过多噪声。每个中心网络配置一个即可。
  • “跳过 Sentinel/日志集成”——SOC 无法看到 Bastion 会话。
  • “使用 Bastion 访问 AKS API 服务器”——工具不合适;应使用专用群集 + GSA Private Access,或跳转箱 + kube-config。

示例提示词

  • 为包含 3 个中心网络、跨多个区域且拥有 2,000 台 VM 的着陆区设计 Bastion + JIT。
  • 从自管理的 Windows 跳转主机迁移到 Bastion + Entra VM 登录 + JIT。
  • 通过 Azure Policy 移除 Linux VM 的公共 IP,并推出仅限专用网络的访问方式。
  • 在 Bastion Premium 上配置会话录制,并将录制内容保留 1 年到 Storage。
  • 构建自定义 RBAC 角色“通过 Bastion 操作 VM”,仅组合 Bastion 连接 + Entra 登录 + JIT 请求。
  • Sentinel 检测:非工作时间的 JIT 请求、同一主体快速连续访问 VM、创建可共享链接。
  • 比较 Bastion 可共享链接与 Entra Private Access 在偶尔需要的承包商访问场景中的差异。

Microsoft Learn

评论

支持 Markdown