接下来,我们开始以实操的方式体验下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权限,部署完成后,权限会被回收

微信截图_20201215101838.png



与蓝图相关的操作可以分为三类:

定义:定义蓝图的内容,包括RBAC,Policy,资源部署等

发布:定义完成后,蓝图自动进入草稿状态,只有发布之后蓝图才可以进行分配

分配:将蓝图定义应用在一定范围内,相当于实际部署资源

具体可以参考这个链接

https://docs.microsoft.com/zh-cn/azure/governance/blueprints/concepts/lifecycle?WT.mc_id=AZ-MVP-5001235

下边就来实际演示下:

Blueprint实际在Azure Global和中国区都可以使用,这次的演示环境用的是Global

首先创建一个Blueprint模板

图片1.png

可以看到,在Global有很多蓝图模板可供选择,选择security benchmark试试

图片2.png


定义好blueprint的名称

图片3.png


在artifacts这里可以看到security benchmark其实就是定义了一组Azure Policy

图片4.png


尝试添加一个artifact,首先建一个Resource Group

图片5.png

接下来建一个Role Assignment, assign一个contributor role

图片6.png


我们简单定义这么一个blueprint就好,之后就可以发布了

选中Blueprint, 选择发布,输入对应的版本号和变更记录

图片7.png


之后进行蓝图的分配

图片8.png


选择好要分配的订阅

图片10.png


之前添加项目的时候,需要的参数都得写上

图片11.png


写好之后,直接assign即可,可以看到资源组已经建出来了

图片12.png

Blueprint和资源之间是有联系的,修改Blueprint,资源也会发生变化

尝试在原有Blueprint定义中,添加一个storage account的ARM Template

图片13.png


将这个新版本发布出去

图片14.png

选择update blueprint

图片15.png



选择1.2版本

图片16.png


填写storage相关内容

图片17.png

可以看到activity log

图片18.png可以看到Storage已经出来了

图片19.png