Azure实践之Policy与Role assignment结合应用
admin
2023-04-08 08:42:52
0次

今天再来与各位分享一篇关于Azure Policy的应用,Policy的作用之前已经有过一次介绍,没看过的朋友可以移步之前的博客

使用Azure Polcy强制禁止非托管磁盘VM

https://blog.51cto.com/mxyit/2347943

 

今天要分享的主题是如何用Policy限制Azure中的role assignment,可能很多人一提到Role Assignment,第一反应就会是RBAC。这其实很正常,因为Role assignment确实是属于RBAC的范畴,那么RBAC和Polcicy的区别到底是什么?主要有两点


  • RBAC 关注不同范围内的用户操作。 你可能会被添加到资源组的参与者角色,可对该资源组做出更改。

  • 策略关注部署期间的资源属性,以及现有资源。 Policy 控制属性,例如资源的类型或位置



很多人一提到要限制role assignment第一反应也是用RBAC来实现,但是其实,用Policy来实现这个需求有可能还会更简单

 

之前有客户提到过这样一种情况,企业中Azure环境权限分配很混乱,有权限的人私自为其他账号添加owner权限,这些人又私自为其他人添加owner权限,导致权限已经泛滥,客户花了很大的精力才把权限慢慢回收回来,同时为了便于管理,客户也希望能限制为用户添加owner权限,为此,其中一种解决办法就是可以通过Policy实现。Policy可以做到只允许用户assign特定的一些role,比如只可以分批contributor或者reader这种角色,owner这种角色不允许assign,这样可以从技术手段上杜绝权限泛滥的可能

 

下边来看下具体如何实现,Policy的核心实际上就是定义rules的JSON文件,

可以看到其实实现我们的需求并不复杂,下边的policy意思就是,如果Role ID不在roleDefinitionIds这个数组中,则拒绝添加,Role ID是什么概念呢?其实Azure中每个Role都是有一个独立的ID的,想要查询这个ID其实很简单,下边提供两种方法


1:通过PowerShell

Get-AzureRmRoleDefinition|ft name,id -AutoSize


Azure实践之Policy与Role assignment结合应用



2:直接在网页中查找

https://docs.microsoft.com/zh-cn/azure/role-based-access-control/built-in-roles#reader


{

 

         "if": {

 

                "allOf": [

 

                    {

 

                        "field": "type",

 

                        "equals": "Microsoft.Authorization/roleAssignments"

 

                    },

 

                    {

 

                        "not": {

 

                            "field": "Microsoft.Authorization/roleAssignments/roleDefinitionId",

 

                            "in": "[parameters('roleDefinitionIds')]"

 

                        }

 

                    }

 

                ]

 

            },

 

       "then": {

 

              "effect": "deny"

 

       }

 

}


有了Role ID之后来看一下,首先我们需要将允许添加的role id添加到数组中,比如如果只允许添加contributor和reader权限,则可以将这两个ID添加到一个数组

[string[]]$ids="acdd72a7-3385-48ef-bd42-f606fba81ae7"

$ids+="b24988ac-6180-42a0-ab88-20f7382dd24c"

Azure实践之Policy与Role assignment结合应用



之后开始定义Role definition,包含rules定义的JSON文件已经放在restrict-roleassignment-owner2这个文件中,另外因为role id是一个可变的参数,因此在parameter参数中需要定义好参数的类型等属性

Azure实践之Policy与Role assignment结合应用



可以看到这个parameter是一个array,也就是数组类型,也符合我们的需求

{

 

       "roleDefinitionIds": {

 

              "type": "array",

 

              "metadata": {

 

                     "description": "The list of role definition Ids",

 

                     "displayName": "Approved Role Definitions"

 

              }

 

       }

 

}


定义好之后可以开始分配这个policy了,在scope中可以灵活选择需要assign到哪个级别,可以选择订阅或者单独某个资源或者资源组都可以,这里直接选择将policy分配到订阅级别

Azure实践之Policy与Role assignment结合应用


定义好之后来做个最终的测试,策略已经生效了!在assign role的时候尝试assign owner,但是已经提示policy禁止这么做了

Azure实践之Policy与Role assignment结合应用


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...