【Azure 环境】由为存储账号(Storage Account)拒绝分配权限而引出的Azure 蓝图(Blueprint)使用问题
问题描述
当打开Azure存储账号(Storage Account)门户页面时,从 “访问控制(标识和访问管理)” 页面中发现有“拒绝分配”的功能,所以就思考,是不是可以拒绝每一个用户对存储的读取权限呢?

问题分析及答案
在蓝图(Blueprint)的锁定模式和状态的介绍文档中,锁定模式适用于蓝图分配,具有三个选项:“不锁定”、“只读”或“不删除”。由蓝图分配中的项目创建的资源有四种状态:“未锁定”、“只读”、“无法编辑/删除”或“无法删除”。当在创建对资源进行“拒绝分配”权限的操作中,同样也是只能对其进行三种操作【“不锁定”、“只读”或“不删除”】。

在问题的需求中,是拒绝分配对存储的只读权限。然后,在蓝图的只读锁定中,它的定义是“The deny assignment is preventing all operations with the * and Action configuration, but it allows read access by excluding */read via NotActions.“,也就是说,通过Azure蓝图所控制的权限,恰巧是除了只读的权限,其他的操作都可以被拒绝。
所以结论是,Azure 蓝图并不能满足问题的需求 (拒绝一个用户对存储的读取权限)。回归到如何来解决问题权限问题呢?当默认的AAD角色(如 Contributer(贡献者))不能解决权限问题,就需要使用自定义角色来完成 (注:自定义Azure AAD Role不在本文中包含,可参考官网:https://docs.azure.cn/zh-cn/role-based-access-control/custom-roles-powershell)。
在使用Blueprint(蓝图)入门时候遇见的两个有关账号(订阅)权限问题及解决办法
问题一:在创建蓝图是,选择”定义位置“时,没有任何可选项列出。
这是因为定义位置是Azure管理组层次结构中的一个位置,所以要选择它,需要当前使用的订阅有”Azure 资源的访问管理“的权限。此点需要在AAD中属性中开启。
- 没有启用Azure资源访问管理时候的蓝图”定义位置“列表无法选择

- 如何在AAD中启用”Azure 资源的访问管理“
- 登录到Azure门户
- 打开AAD ( Azure Active Directory)
- 选择”属性“目录
- 在”Azure 资源的访问管理“设置中,选择是。

When you set the toggle to Yes, you are assigned the User Access Administrator role in Azure RBAC at root scope (/). This grants you permission to assign roles in all Azure subscriptions and management groups associated with this Azure AD directory. This toggle is only available to users who are assigned the Global Administrator role in Azure AD.
When you set the toggle to No, the User Access Administrator role in Azure RBAC is removed from your user account. You can no longer assign roles in all Azure subscriptions and management groups that are associated with this Azure AD directory. You can view and manage only the Azure subscriptions and management groups to which you have been granted access.
问题二:还是无法选择蓝图“定义位置”和在分配蓝图时候,无法选择组织中的其他订阅号
已经有Azure资源的访问管理权限后,有可能还是遇见无法选择“定义位置”,这个因为当前登录的订阅还需要是改“管理组织”的Owner(所有者)。也只有是Owner后,分配蓝图才可以选择你想分配的订阅号。
为管理组设置Owner的步骤:
1)登录Azure 门户,进入管理组页面(管理组 - Microsoft Azure 由世纪互联运营)(注意:不是资源组)
2)选择需要设置Owner的管理组,在“访问控制(标识和访问管理)”中添加“Owner所有者”角色
3)保存,然后重新登陆“蓝图”页面。

附录一:什么是Azure Blueprint?
Just as a blueprint allows an engineer or an architect to sketch a project's design parameters, Azure Blueprints enables cloud architects and central information technology groups to define a repeatable set of Azure resources that implements and adheres to an organization's standards, patterns, and requirements. Azure Blueprints makes it possible for development teams to rapidly build and stand up new environments with trust they're building within organizational compliance with a set of built-in components, such as networking, to speed up development and delivery.
Blueprints are a declarative way to orchestrate the deployment of various resource templates and other artifacts such as:
- Role Assignments
- Policy Assignments
- Azure Resource Manager templates (ARM templates)
- Resource Groups
正如工程师或建筑师使用蓝图勾勒出项目的设计参数一样,通过 Azure 蓝图,云架构师和数据中心信息技术组同样可以定义一组可重复的 Azure 资源,这些资源实现并遵守组织的标准、模式和要求。 通过 Azure 蓝图,开发团队可以快速生成和构建新环境,并确信这些生成的环境符合组织规定,还可以使用一组有助于加快开发和交付过程的内置组件(如网络)。
蓝图是一种声明性方法,用于协调各个资源模板和其他项目的部署,例如:
- 角色分配
- 策略分配
- Azure 资源管理器模板(ARM 模板)
- 资源组
参考资料
使用 Azure PowerShell 创建或更新 Azure 自定义角色:https://docs.azure.cn/zh-cn/role-based-access-control/custom-roles-powershell
Elevate access for a Global Administrator:https://docs.microsoft.com/en-us/azure/role-based-access-control/elevate-access-global-admin#elevate-access-for-a-global-administrator
Define and assign a blueprint in the portal:https://docs.microsoft.com/en-us/azure/governance/blueprints/create-blueprint-portal
What is Azure Blueprints? https://docs.microsoft.com/en-us/azure/governance/blueprints/overview
【Azure 环境】由为存储账号(Storage Account)拒绝分配权限而引出的Azure 蓝图(Blueprint)使用问题的更多相关文章
- [Windows Azure] What is a Storage Account?
What is a Storage Account? A storage account gives your applications access to Windows Azure Blob, T ...
- 【Azure 存储服务】Python模块(azure.cosmosdb.table)直接对表存储(Storage Account Table)做操作示例
什么是表存储 Azure 表存储是一项用于在云中存储结构化 NoSQL 数据的服务,通过无结构化的设计提供键/属性存储. 因为表存储无固定的数据结构要求,因此可以很容易地随着应用程序需求的发展使数据适 ...
- 【Azure Developer】使用 Python SDK连接Azure Storage Account, 计算Blob大小代码示例
问题描述 在微软云环境中,使用python SDK连接存储账号(Storage Account)需要计算Blob大小?虽然Azure提供了一个专用工具Azure Storage Explorer可以统 ...
- Azure China (4) 管理Azure China Storage Account
<Windows Azure Platform 系列文章目录> Update 2015-05-10 强烈建议使用AzCopy工具,AzCopy命令行工具,是经过优化的.高性能Azure S ...
- Azure Automation (2) 定期删除存储账号中的文件
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China. 本文是对笔者之前的文档Azure Backup (1) 将SQL ...
- 定期删除Azure存储账号下N天之前的数据文件-ASM
######RemoveStorageBlob*DaysOld##### <# .SYNOPSIS Remove all blob contents from one storage accou ...
- 定期删除Azure存储账号下N天之前的数据文件-ARM
######RemoveStorageBlob*DaysOld-ARM##### <# .SYNOPSIS Remove all blob contents from one storage a ...
- 如何快速从一个Storage Account拷贝到另一个账号
当您有两个Storage Account的时候,怎样快速做到从一个账号拷贝到另一个账号呢.当拷贝的文件比较,例如100多G(VHD文件). http://code.msdn.microsoft.com ...
- 【Azure 应用服务】Azure Function集成虚拟网络,设置被同在虚拟网络中的Storage Account触发,遇见Function无法触发的问题
一切为了安全,所有的云上资源如支持内网资源访问,则都可以加入虚拟网络 问题描述 使用Azure Function处理Storage Account中Blob 新增,更新,删除等情况.Storage A ...
随机推荐
- 基于 RTF specification v1.7 的 RTF 文件解析及 OLE 对象提取(使用 Python 开发)
0x01 Office RTF 文件介绍 RTF 文件也称富文本格式(Rich Text Format, 一般简称为 RTF),意为多文本格式是由微软公司开发的跨平台文档格式.大多数的文字处理软件都能 ...
- Winamp栈溢出漏洞研究【转载】
课程简介 Winamp是一款非常经典的音乐播放软件,它于上世纪九十年代后期问世.与现在音乐播放软件行业百家争鸣的情况不同,当时可以说Winamp就是听音乐的唯一选择了,相信那个时代的电脑玩家是深有体会 ...
- C#-CHTTPDownload
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Bugku-flag.php
flag.php 目录 flag.php 题目描述 解题过程 题目描述 点了login咋没反应 提示:hint 解题过程 fuzz 打开发现是个登录页面,点击login没反应,看了源码,action= ...
- Webpack的热更新是如何做到的?原理是什么?
一.是什么 HMR全称 Hot Module Replacement,可以理解为模块热替换,指在应用程序运行过程中,替换.添加.删除模块,而无需重新刷新整个应用 例如,我们在应用运行过程中修改了某个模 ...
- 线程本地存储(动态TLS和静态TLS)
线程本地存储(TLS) 对于多线程应用程序,如果线程过于依赖全局变量和静态局部变量就会产生线程安全问题.也就是一个线程的使用全局变量可能会影响到其他也使用此全局变量的线程,有可能会造成一定的错误,这可 ...
- 使用Optional处理null
一.聊聊NullPointerException 相比做Java开发的,见到NullPointerException肯定不陌生吧,可以说见到它深恶痛绝.在开发时认为不会出现NullPointerE ...
- jQ的隐式迭代和设置样式属性
jQ中的隐式迭代 意义:不需要原生迭代了,在jQ内部自动帮你实现了循环 代码实现: let arr = document.querySelectorAll('li') for(let i = 0;i ...
- calico官网网络拓扑实现:基于eNSP与VMVare
Calico官网提供了两种网络设计模式: AS per rack: 每个rack(机架)组成一个AS,每个rack的TOR交换机与核心交换机组成一个AS AS per server: 每个node做为 ...
- [DB] Spark Core (2)
RDD WordCount处理流程 sc.textFile("/root/temp/data.txt").flatMap(_.split(" ")).map(( ...