使用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. 选择有效的关键字: 关键字是描述你的产品及服务的词语,选择适当的关键字是建立一个高排名网站的第一步.选择关键字的一个重要的技巧是选取那些常为人们在搜索时所用到的关键字. ...
随机推荐
- BZOJ 1266: [AHOI2006]上学路线route
题目描述 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林匹克竞赛小组才发现每天上学的乘车路线不一定是最优的. 可可:"很 ...
- C++学习 cout的格式化输出
cout的格式化输出 1.常用: ①double 输出到小数点后n位:(保留精度 n位) #include <iostream> #include <iomanip> usin ...
- cctype学习
#include <cctype>(转,归纳很好) 头文件描述: 这是一个拥有许多字符串处理函数声明的头文件,这些函数可以用来对单独字符串进行分类和转换: 其中的函数描述: 这些函数传入一 ...
- OAuth 2.0: Bearer Token Usage
Bearer Token (RFC 6750) 用于HTTP请求授权访问OAuth 2.0资源,任何Bearer持有者都可以无差别地用它来访问相关的资源,而无需证明持有加密key.一个Bearer代表 ...
- servlet的执行原理与生命周期
先从servlet容器说起:大家最为熟悉的servlet容器就是Tomcat ,Servlet 容器是如何管理 Servlet?先看一下tomcat的容器模型:从上图可以看出 Tomcat 的容器分为 ...
- AMD及requireJS
前面的话 由CommonJS组织提出了许多新的JavaScript架构方案和标准,希望能为前端开发提供统一的指引.AMD规范就是其中比较著名一个,全称是Asynchronous Module Defi ...
- struts2.1.6教程四_2、ActionContext 、ValueStack 、Stack Context
ActionContext 一次Action调用都会创建一个ActionContext 调用:ActionContext context = ActionContext.getContext() Va ...
- 2D游戏开发(1)
<外星人入侵> 通过pygame,入门python的2D游戏开发过程,通过教材制作一个打外星人游戏. 1.函数 run_game() import sys import pygame de ...
- 【R与数据库】R + 数据库 = 非常完美
前言 经常用R处理数据的分析师都会对dplyr包情有独钟,它强大的数据整理功能让原始数据从杂乱无章到有序清晰,便于后期进一步的深入分析,特别是配合上数据库的使用,更是让分析师如虎添翼,轻松搞定Exce ...
- 学习python的第一个小目标:通过requests+xlrd实现简单接口测试,将测试用例维护在表格中,与脚本分开。
小白的学习方式:通过确定一个小目标来想办法实现它,再通过笔记来加深印象. 面对标题中的小目标我陷入了思考....嗯,首先实现利用xlrd库来取出想要的用例 首先用表格准备好用例,如图下: 先试下取nu ...