使用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继续创建存储账号,创建成功,标记和值都被加上了

最后再讲一句,设想一下,在一个企业级的azure环境里或者在一个azure managed service provider的环境里,十几个甚至几十个项目同时在进行,每个项目使用不同的订阅或者不同的资源组,项目不同阶段的costcenter都是不同的,采用这个append策略的话,云管理员就忙着和各个项目沟通拿costcenter加策略改策略删策略没时间干其他活了啊。
理想的解决方案到底该是怎么样的呢?
使用Azure Policy(策略)强制实现资源Tag的坑的更多相关文章
- Azure ARM (22) Azure Policy入门
<Windows Azure Platform 系列文章目录> 我们知道,在Azure服务层级中,分为以下几个层次: 1.企业合同 2.订阅 3.资源组 4.资源 我们使用的Azure资源 ...
- Azure ARM (23) Azure Policy使用
<Windows Azure Platform 系列文章目录> 在之前的文档中,我们介绍了Azure Policy的使用场景. 本章我们介绍如何创建和使用Azure Policy. 模拟场 ...
- 平台支持的从经典部署模型到 Azure Resource Manager 的 IaaS 资源迁移
本文介绍如何才能将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Resource Manager 部署模型. 用户可以阅读有关 Azure Resource Manager 功能和优点的更多 ...
- Azure DevOps(二)利用Azure DevOps Pipeline 构建基础设施资源
一,引言 上一篇文章记录了利用 Azure DevOps 跨云进行构建 Docker images,并且将构建好的 Docker Images 推送到 AWS 的 ECR 中.今天我们继续讲解 Azu ...
- 浏览器中F5和CTRL F5的行为区别及如何强制更新资源
一.浏览器中F5和CTRL F5的行为区别 我们直接来看效果,下面是我打开qq网页,分别使用F5和CTRL F5,我们来看区别. F5: CTRL F5: 区别: 首先直观上的区别是CTRL F5明显 ...
- 在MaxCompute中配置Policy策略遇到结果不一致的问题
背景信息: 本文以如下场景为基准进行编写,如下: 用户通过DataWorks-简单模式使用MaxCompute: 用户具有DataWorks默认角色,如DataWorks开发者角色: 用户通过cons ...
- Flutter 发布APK时进行代码/资源混淆的坑
Flutter 发布APK时进行代码/资源混淆的坑 @author ixenos 1. 关键点 proguard是Java的代码混淆工具,但是当用第三方库的时候,必须要告诉proguard不要检查,因 ...
- MySQL-5.7密码策略及用户资源限制
1.密码策略 在mysql 5.6对密码的强度进行了加强,推出了validate_password 插件.支持密码的强度要求. (1)安装插件 [root@localhost ~]# ll /usr/ ...
- 网站搜索引擎优化SEO策略及相关工具资源
网站优化的十大奇招妙技 1. 选择有效的关键字: 关键字是描述你的产品及服务的词语,选择适当的关键字是建立一个高排名网站的第一步.选择关键字的一个重要的技巧是选取那些常为人们在搜索时所用到的关键字. ...
随机推荐
- Java中的WebService服务
一.在本地发布一个webservice服务 1.使用jdk中的 javax.xml.ws.Endpoint 类的 static Endpointpublish(Stringaddress,Object ...
- bzoj4828 [Hnoi2017]大佬
Description 人们总是难免会碰到大佬.他们趾高气昂地谈论凡人不能理解的算法和数据结构,走到任何一个地方,大佬的气场就能让周围的人吓得瑟瑟发抖,不敢言语.你作为一个OIER,面对这样的事情非常 ...
- PHP获取随机数
<?php $FileID=date("Ymd-His") . '-' . rand(100,999); //$FileID为 20100903-132121-908 ...
- 【原创】Android 5.0 BLE低功耗蓝牙从设备应用
如果各位觉得有用,转载+个出处. 现如今安卓的低功耗蓝牙应用十分普遍了,智能手环.手表遍地都是,基本都是利用BLE通信来交互数据.BLE基本在安卓.IOS两大终端设备上都有很好支持,所以有很好发展前景 ...
- 蓝桥杯-第39级台阶-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- Power Pivot表属性无法切换回表预览模式的问题
近期Office365用户升级后解决了在Power Pivot中输入中文的问题,但是同时也带来了一个新的问题就是表属性窗口默认为“查询编辑器”模式,且无法切换回“表预览”模式. 本文和您分享在这种情况 ...
- 使用CSS和JQuery实现表格单元格内容超出时部分隐藏,隐藏部分以...显示
1.使用CSS实现,给此单元格添加一个Class: width:130px; display:block; overflow:hidden; word-break:keep-all; white-sp ...
- POJ1850-Code 递推数学
题目链接:http://poj.org/problem?id=1850 题目大意: 按照字典序对升序排列组成的字母进行编号,给出一个长度不超过10的串,求出它的编号是多少?如果无法进行编号则输出0. ...
- CI 图片上传路径问题的解决
很久没有用CI了,新公司需要用ci ,图片上传的功能,我都搞半天,伤心 1. 要看源码,upload.php里do_upload()是上传的主要函数. public function do_uploa ...
- 谷歌IAP:skusBundle array associated with key ITEM_ID_LIST cannot contain more than 20 items.
这几天在接谷歌的支付,在拉谷歌商品列表的时候转菊花,长时间不返回(querySkuDetails),一开始以为因为IAP有key不对导致的,查了下发现没有问题. 再看logcat,发现了这行: Inp ...