使用Azure Policy(策略)强制实现资源Tag的坑

Azure的Tag(标记)可以帮助运维人员对云资源分类从而方便地进行计费和资源管理。然而在具体实践中工程师部署云资源的时候常常会忘记给资源做标记打Tag。

针对这个问题,Azure的官方文档建议是可以使用自定义的策略要求所有资源都拥有针对特定标记以及特定的值.https://www.azure.cn/documentation/articles/resource-manager-policy/

在global azure里面甚至已经提供了内置的策略(buildin policy)来帮助管理员强制实现资源Tag。

我们以第一个内置策略为例研究一下如何在azure china也实现类似的功能。这个策略的json内容如下:

以此为模板,设计策略如下:资源组Meow内的资源都必须带有特定的标记“costcenter”,该costcenter的值必须是100.200.300。

如果这个标记不存在,资源将不能被创建

策略定义如下:

{
     "if": {
         "not": {
             "field": "tags.costcenter",
             "equals": "100.200.300“
         }
     },
     "then": {
         "effect": "deny"
     }

}

接下来, 用powershell在订阅里实现这个策略

创建一个没有标记costcenter的存储账号测试一下,错误信息显示策略限制了存储帐号的创建

加上标记costcenter,随意给个标记值,再试一下,还是不能创建

好吧,老老实实按策略来,加上标记costcenter,标记值是100.200.300

这就是我们今天要讲的坑吗?当然不是!!!!!!!!!,重要的事情讲三遍

这个策略不能随便用

这个策略不能随便用

这个策略不能随便用

还记得怎么从portal创建一个存储账户吗?

看见没有,portal就没有给机会在创建的时候加入标记tag,实施了以上的策略的订阅和资源组事实上限制了任何用户从portal在该订阅资源组创建资源。任何从portal的创建都会得到以下错误信息

所以,除非云平台的IDAM安全策略本身禁止从portal创建资源的,

类似的策略不能随便用,哪怕是azure内置的。

类似的策略不能随便用,哪怕是azure内置的。

类似的策略不能随便用,哪怕是azure内置的。

不过呢,虽然这个策略不能用,事情还是一样要做。其实global azure的内置策略还给了另外一种思路

这个策略相对温和,资源在创建时候如果没有特定标记和特定值,该策略会用append方式自动加上标记和相应的值。

先把上面实施的策略删除,然后实施新策略

用powershell创建一个没有标记costcenter的存储账号,从命令输出可以看到标记costcenter和相应的值100.200.300被自动加在存储账号上

回到portal继续创建存储账号,创建成功,标记和值都被加上了

最后再讲一句,这个append策略可以解决所有tag的问题吗?

设想一下,在一个企业级的azure环境里或者在一个azure managed service provider的环境里,十几个甚至几十个项目同时在进行,每个项目使用不同的订阅或者不同的资源组,项目不同阶段的costcenter都是不同的,采用这个append策略的话,云管理员就忙着和各个项目沟通拿costcenter加策略改策略删策略没时间干其他活了啊。云管理到底要怎么做好呢?

时间: 2024-07-31 09:14:04

使用Azure Policy(策略)强制实现资源Tag的坑的相关文章

EMS 动手实验2:用户自助密码重设&条件访问策略强制用户使用MFA二次验证&启用标识保护配置风险检测

前言: 本系列实验将引导用户完成O365 企业移动性和安全性(Enterprise Mobility Security)的常用操作和配置,本着实用性和安全性的原则,该系列实验会建议一些最佳实践.本系列实验主要分为以下几个阶段: 将Azure AD 登陆和审核日志发送到Azure Monitor 用户自助密码重设&条件访问策略强制用户使用MFA二次验证&启用标识保护配置风险检测 使用 Privileged Identity Management建立管理角色的审批和授权 使用Intune 管理

Default Domain Policy 策略不生效,被拒绝

问题: AD组策略定义用户设置,登录和注销脚本,但在在客户端没有生效,后通过在客户端执行Gpreuslt 查看策略生效情况,发现在用户设置中Default Domain Policy 策略没有应用.提示"正在筛选:没有应用(空)" 使用gpreuslt /h gpresult.html查看策略应用情况.用户设置中默认策略被拒绝,拒绝原因为"空" 查看显示没有配置WMI筛选 通过排除客户端与AD间的网络问题,域策略作用域等设置都未能解决 最后查看默认策略委派权限被设置

查看Juniper SRX系列防火墙的系统相关限制(Policy策略最大数、NAT最大数等)

通过show log nsd_chk_only | no-more 可查看Juniper SRX系列防火墙的系统相关限制.比如说Policy策略最大数.策略调用Address地址簿最大数.策略调用Applications应用最大数.NAT最大数.Zone区域最大数等相关信息. 以下为Juniper SRX5600输出结果 SRX5600> show log nsd_chk_only | no-more Matching platform :Model Name = srx5600Hardware

【Azure】通过RBAC对资源进行管理

下图为Azure 基于用户角色控制的架构图,可以清楚的看出,通过三个层面进行控制: 安全主体:安全主体是一个对象,表示请求访问 Azure 资源的用户.组或服务主体. 角色定义:角色定义是权限的集合. 它有时简称为"角色". 角色定义列出可以执行的操作,例如读取.写入和删除.Azure自带了几个角色,如果觉得不能满足企业需求,也可以创建自定义角色. 范围:范围是访问权限适用的边界. 分配角色时,可以通过定义范围来进一步限制允许的操作. 当我们创建角色的时候,也遵循以下三步. Azure

模拟鼠标移动程序实现——解决域控制器策略强制电脑锁屏问题(转)

参考文章:https://blog.csdn.net/water_0815/article/details/54959062 在此基础上增加了窗口后台运行的功能,解决了自己的强迫症. using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; usin

Azure创建虚拟机并部署站点的小坑

今天收到邮件要在Azure中创建一台虚拟机并部署刚刚完成的一个站点. 1. 根据以往习惯,我们的Web服务器和数据库服务器是分开. 今天为了节省资源同时尽快上线. 只在Azure上创建一台包括Sqlserver的虚拟机. 配置IIs后直接创建站点. 2. 根据客户要求 创建A7的配置.另外需要附加8块500G的磁盘. 3. 服务器同时需要加入我们的内网中.方便服务器之间的数据访问和传输. 经过2个小时的学习创建终于完成了. 心里挺轻松直接配置IIS .创建数据库.用户等就可以了.今天的任务就完成

WIndows AD 组策略Default Domain Controllers Policy排错分享

一.问题描述 在域控上打开"组策略管理器"查看Default Domain Controllers Policy策略"高级审核策略配置"时,提示如下报错: 二.问题原因 1. 默认域控策略"Default Domain Controllers Policy"无法打开"高级审核策略配置的原因是由于此策略的Audit.csv文件损坏导致,解决方法是重命名该文件. 三.解决过程 1.默认域控策略"Default Domain Con

Android Maven打包批量替换资源文件(overlay换皮肤)&AAR打包依赖模块覆盖策略

1.AAR打包覆盖 主module(APK)会将AAR中同名资源覆盖: 策略如下: 资源文件例如图片,layout是采用覆盖方式. values文件例如strings.xml是采用合并方式. 有依赖的模块只能采用aar进行打包,例如ui库等二方库. 建议将所有模块共同的resource资源放到通用module中,并且建立相应的命名机制,防重复. 以后如有业务独立的模块可以打成bundle,bundle可以看成一个独立的apk,拥有独立的资源文件 2. maven支持编译时指定res目录,(和An

cocos creator基础-(二十四)cc.Director与资源加载策略

1: 了解creator场景切换; 2: 了解director基本的一些接口; 3: 理解资源加载的策略; cc.Director对象 1:游戏里面控制管理整个游戏全局对象,包括了场景切换等,为cc.Director对象; 2:导演对象全局只有一个cc.director,大写的为类, 小写的cc.director为全局的导演对象; 3: cc.director来获取导演对象实例; 4: 游戏中各种管理对象都可以通过cc.director获取,比如物理引擎管理,Action管理, 碰撞检测管理等;