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结合应用


相关内容

热门资讯

“我们完全可以相互成就、共同繁... 在华扎根50年,美国企业康明斯与中国伙伴携手成长、共享机遇——“我们完全可以相互成就、共同繁荣”(见...
乌克兰总统办公室前主任被控涉嫌... △乌克兰总统办公室前主任叶尔马克(资料图)当地时间11日,乌克兰国家反腐败局和特别反腐败检察院表示,...
你的蓝牙耳机正在 “偷听”?国... 在科技飞速发展的当下,无线耳机、智能手表、无线键盘等蓝牙设备凭借“一键连接”带来的便捷优势,已广泛应...
光洋股份:公司立足成为最懂制造... 证券日报网5月11日讯 ,光洋股份在接受调研者提问时表示,公司近年来加快布局机器人领域,立足成为最懂...
重庆拟投千亿培育沉浸式与虚拟现... 🤖 由 文心大模型 生成的文章摘要 重庆市发布“十五五”现代服务业发展规划,明确投入1 重庆市发...
内存缩水开倒车!谷歌Pixel... 5月11日消息,据相关媒体报道,受全球DRAM供应紧缺影响,谷歌即将推出的Pixel 11系列在内存...
伊朗议长:“14点提案”无可替... 当地时间12日凌晨,伊朗议会议长卡利巴夫在社交平台上发布消息称,除了接受伊朗“14点提案”中所规定的...
交付巴基斯坦的“麒麟”级潜艇战... ‍‍近日,在国防部举行的例行消息发布中有媒体提到,中方为巴基斯坦建造的“麒麟”级常规动力潜艇首艇已经...
伊朗官员:伊美就浓缩铀处置方式... 当地时间11日,总台记者获悉,一名伊朗官员称,伊朗与美国之间的谈判在浓缩铀的处置、暂停铀浓缩活动期限...
沈阳添新地标!超级IP“巨虎东... 万众期待,神兽归沈! 5月10日,沈阳专属超级文旅IP“巨虎东东”圆满完成交付唤醒仪式,正式启程奔赴...