Azure实践之Policy与Roleassignment结合应用-创新互联

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

成都创新互联公司自2013年起,先为淮安区等服务建站,淮安区等地企业,进行企业商务咨询服务。为淮安区企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:Azure实践之Policy与Roleassignment结合应用-创新互联
网站链接:http://azwzsj.com/article/hggsi.html