接下来,我们开始以实操的方式体验下Blueprint,Blueprint的一大特点就是使用 Azure 蓝图,蓝图定义(应该部署的对象)和蓝图分配(已部署的对象)之间的关系仍然存在 。 此连接支持改进部署的跟踪和审核。 Azure 蓝图也能一次性升级由同一蓝图管理的多个订阅。
也就是说使用Blueprint进行部署之后,blueprint的定义和已部署的资源仍然是存在关联的,如果修改了blueprint的定义,那么部署的资源也会产生相应的变化,这次的博客内容也是用来体现这一点的,在部署之前,首先来看下blueprint对权限的要求
作为用户来说,如果想操作blueprint,需要具有以下权限才可以
要创建蓝图,帐户需要以下权限:
Microsoft.Blueprint/blueprints/write - 创建蓝图定义
Microsoft.Blueprint/blueprints/artifacts/write - 在蓝图定义上创建项目
Microsoft.Blueprint/blueprints/versions/write - 发布蓝图
要删除蓝图,帐户需要以下权限:
Microsoft.Blueprint/blueprints/delete
Microsoft.Blueprint/blueprints/artifacts/delete
Microsoft.Blueprint/blueprints/versions/delete
要分配或取消分配蓝图,帐户需要以下权限:
Microsoft.Blueprint/blueprintAssignments/write - 分配蓝图
Microsoft.Blueprint/blueprintAssignments/delete - 取消分配蓝图
另外一方面,在部署资源时,我们实际上并不是使用操作用户的权限来部署的,而是一个独立的AAD中的application
在Portal上进行Blueprint部署时,这个应用程序会被临时授予订阅的owner权限,部署完成后,权限会被回收
与蓝图相关的操作可以分为三类:
定义:定义蓝图的内容,包括RBAC,Policy,资源部署等
发布:定义完成后,蓝图自动进入草稿状态,只有发布之后蓝图才可以进行分配
分配:将蓝图定义应用在一定范围内,相当于实际部署资源
具体可以参考这个链接
https://docs.microsoft.com/zh-cn/azure/governance/blueprints/concepts/lifecycle?WT.mc_id=AZ-MVP-5001235
下边就来实际演示下:
Blueprint实际在Azure Global和中国区都可以使用,这次的演示环境用的是Global
首先创建一个Blueprint模板
可以看到,在Global有很多蓝图模板可供选择,选择security benchmark试试
定义好blueprint的名称
在artifacts这里可以看到security benchmark其实就是定义了一组Azure Policy
尝试添加一个artifact,首先建一个Resource Group
接下来建一个Role Assignment, assign一个contributor role
我们简单定义这么一个blueprint就好,之后就可以发布了
选中Blueprint, 选择发布,输入对应的版本号和变更记录
之后进行蓝图的分配
选择好要分配的订阅
之前添加项目的时候,需要的参数都得写上
写好之后,直接assign即可,可以看到资源组已经建出来了
Blueprint和资源之间是有联系的,修改Blueprint,资源也会发生变化
尝试在原有Blueprint定义中,添加一个storage account的ARM Template
将这个新版本发布出去
选择update blueprint
选择1.2版本
填写storage相关内容
可以看到activity log
可以看到Storage已经出来了