You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure:如何限制Contributor通过Azure Bastion访问VM并保留资源?

如何限制Azure Contributor角色通过Azure Bastion访问VM(保留Bastion资源)

针对你的需求,完全可以实现限制Contributor通过Azure Bastion访问VM且保留Bastion资源的目标,Deployment Stack的deny-settings-mode确实只有预设的三种模式,无法直接实现只读限制,你可以通过以下几种更灵活的方案解决:

方案1:针对Azure Bastion资源创建自定义拒绝分配

直接通过Azure RBAC的拒绝分配功能,精准拒绝Contributor角色对Bastion的核心操作权限:

  • 拒绝Microsoft.Network/bastionHosts/connect/action:阻止Contributor发起VM连接请求
  • 可选拒绝Microsoft.Network/bastionHosts/write:防止Contributor修改Bastion配置
  • 操作方式:在目标Bastion资源的「访问控制(IAM)」中添加拒绝分配,选择Contributor角色,指定上述要拒绝的权限,作用范围限定为该Bastion资源。紧急情况时,可临时删除该拒绝分配,恢复访问权限。

方案2:通过NSG限制Bastion的网络访问

给Azure Bastion关联的子网配置网络安全组(NSG),只允许特定紧急运维IP段访问Bastion的管理端口(如443):

  • 这样即使Contributor拥有Bastion的操作权限,也无法从非授权IP发起连接
  • 紧急场景下,只需修改NSG规则放行对应IP即可恢复使用

方案3:用ARM/Bicep模板定义自定义拒绝分配

绕过Deployment Stack的预设模式,直接编写模板创建拒绝分配,精准控制权限:

  • 在模板中明确指定要拒绝的权限(如Microsoft.Network/bastionHosts/connect/action、Microsoft.Network/bastionHosts/write),保留读取权限
  • 示例Bicep片段:
resource denyAssignment 'Microsoft.Authorization/denyAssignments@2022-04-01' = {
  name: guid(resourceGroup().id, 'deny-bastion-access')
  properties: {
    denyAssignmentName: 'DenyContributorBastionAccess'
    permissions: [
      {
        actions: [
          'Microsoft.Network/bastionHosts/connect/action'
          'Microsoft.Network/bastionHosts/write'
        ]
        notActions: []
      }
    ]
    principals: [
      {
        id: '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c' // Contributor角色ID
        type: 'RoleDefinition'
      }
    ]
    scope: resourceGroup().id
    doNotApplyToChildScopes: true
  }
}

以上方案都无需删除Azure Bastion资源,既能满足日常限制Contributor访问的需求,又能在紧急场景下快速恢复使用。

内容的提问来源于stack exchange,提问作者xaoc2nd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:12:10