細化Azure RBAC權限

 

Azure RBAC權限的細化一直是比較繁瑣的事情,如下示例拋磚引玉,供你們參考shell

 

客戶需求:ide

新用戶在指定資源組下權限需求以下:測試

1、禁止如下權限ui

一、 調整虛擬機大小配置rest

二、 刪除&中止虛擬機blog

三、 擴容磁盤&添加磁盤ip

四、 重置密碼ci

2、允許如下權限資源

一、 對應資源組下全部查看類權限作用域

二、 啓動診斷權限(查看屏幕快照)

三、 監視類權限

四、 特殊權限:重啓虛擬機&標記權限&提交工單權限

 

解決方法:

您能夠參考以下操做說明,以實現新用戶對指定資源組所具備的特定權限

1.AAD下建立新用戶

 

 2.在裝有Azure Powershell的客戶端執行以下操做

 

#登錄Azure帳號

Add-AzureRmAccount -EnvironmentName AzureChinaCloud

 

#選擇指定的訂閱

Select-AzureRmSubscription -Subscription ***

 

#獲取已有角色「虛擬機參與者」

$role = Get-AzureRmRoleDefinition -Name 'Virtual Machine Contributor'

 

#清空角色Id

$role.Id = $null

 

#給自定義角色命名及添加角色描述

$role.Name = 'Special Permission'

$role.Description = '***'

 

#清空「虛擬機參與者」的已有actions及notactions權限

$role.Actions.Clear()

$role.NotActions.Clear()

 

#賦予自定義角色全部資源的只讀權限

$role.Actions.Add("*/read")

 

#賦予自定義角色重啓虛擬機的權限

$role.Actions.Add("Microsoft.Compute/virtualMachines/restart/action")

 

#賦予自定義角色list存儲帳號key的權限,以實現查看診斷屏幕快照

$role.Actions.Add("Microsoft.Storage/storageAccounts/listKeys/action")

 

#賦予自定義角色添加診斷規則的權限,以實現監視類功能

$role.Actions.Add("Microsoft.Insights/AlertRules/*")

 

#賦予自定義角色更新虛擬機的權限,以實現標記功能

$role.Actions.Add("Microsoft.Compute/virtualMachines/write")

 

#阻止自定義角色查看虛擬機大小的功能

$role.NotActions.Add("Microsoft.Compute/virtualMachines/vmSizes/read")

 

#清空自定義角色的做用域,並受權指定訂閱

$role.AssignableScopes.Clear()

$subscriptionid = "***"

$role.AssignableScopes.Add("/subscriptions/"+$subscriptionid)

 

#新建自定義角色

New-AzureRmRoleDefinition -Role $role

 

3.給指定資源組添加基於新用戶的自定義角色權限

 

 

 

4.使用新用戶登陸Azure Portal測試驗證

嘗試關閉虛擬機報錯

嘗試刪除虛擬機報錯

 

不能夠顯示虛擬機大小,以阻止客戶調整虛擬機大小

 

 

嘗試附加數據磁盤報錯

 

 

嘗試重置密碼報錯

 

 

嘗試建立虛擬機報錯

 

能夠成功查看虛擬機信息

 

能夠成功標記虛擬機

 

 

 

更多有關RBAC的說明,請參考

https://blogs.technet.microsoft.com/bulentozkir/2016/09/09/azure-resource-manager-rbac-management-practical-tips/

https://docs.azure.cn/zh-cn/role-based-access-control/resource-provider-operations#microsoftcompute

https://docs.azure.cn/zh-cn/role-based-access-control/built-in-roles#virtual-machine-contributor

相關文章
相關標籤/搜索