【Azure】通过RBAC对资源进行管理

下图为Azure 基于用户角色控制的架构图,可以清楚的看出,通过三个层面进行控制;

  1. 安全主体:安全主体是一个对象,表示请求访问 Azure 资源的用户、组或服务主体。
  2. 角色定义:角色定义是权限的集合。 它有时简称为“角色”。 角色定义列出可以执行的操作,例如读取、写入和删除。Azure自带了几个角色,如果觉得不能满足企业需求,也可以创建自定义角色。
  3. 范围:范围是访问权限适用的边界。 分配角色时,可以通过定义范围来进一步限制允许的操作。

当我们创建角色的时候,也遵循以下三步。

Azure自带的角色定义,大家可以参考https://docs.azure.cn/zh-cn/role-based-access-control/built-in-roles 了解他们直接的区别。

了解了RBAC的过程以后,我们测试一下,企业需求的场景。

  1. 让某个外包项目的公司紧紧可以操作摸一个资源组下的所有资源,其他资源组均对其不可见。
  • 在AAD创建用户的步骤省略
  • 将创建好的用户分配到改资源组的IAM下,并分配权限。可以看出该用户仅仅可以对该资源组进行操作。

  • 登录改账户验证,如果该订阅尝试创建新的资源组会提示失败。

  1. 创建自定义资源组,使用户rbacuser可以对资源组rbacgroup中的虚拟机进行开机,关机,重启操作。
  • 了解适用于 Microsoft.Support 资源提供程序的操作列表。

Get-AzureRMProviderOperation "Microsoft.Compute/virtualMachines/*" | FT OperationName, Operation, Description -AutoSize

OperationName Operation Description

------------- --------- -----------

Get Virtual Machine Microsoft.Compute/virtualMachines/read Get the properties of a virtual machine

Create or Update Virtual Machine Microsoft.Compute/virtualMachines/write Creates a new virtual machine or updates ...

Delete Virtual Machine Microsoft.Compute/virtualMachines/delete Deletes the virtual machine

Start Virtual Machine Microsoft.Compute/virtualMachines/start/action Starts the virtual machine

Power Off Virtual Machine Microsoft.Compute/virtualMachines/powerOff/action Powers off the virtual machine. Note that...

Redeploy Virtual Machine Microsoft.Compute/virtualMachines/redeploy/action Redeploys virtual machine

Restart Virtual Machine Microsoft.Compute/virtualMachines/restart/action Restarts the virtual machine

Deallocate Virtual Machine Microsoft.Compute/virtualMachines/deallocate/action Powers off the virtual machine and releas...

Generalize Virtual Machine Microsoft.Compute/virtualMachines/generalize/action Sets the virtual machine state to General...

Capture Virtual Machine Microsoft.Compute/virtualMachines/capture/action Captures the virtual machine by copying v...

Run Command on Virtual Machine Microsoft.Compute/virtualMachines/runCommand/action Executes a predefined script on the virtu...

Convert Virtual Machine disks to Managed Disks Microsoft.Compute/virtualMachines/convertToManagedDisks/action Converts the blob based disks of the virt...

Perform Maintenance Redeploy Microsoft.Compute/virtualMachines/performMaintenance/action Performs Maintenance Operation on the VM.

Reimage Virtual Machine Microsoft.Compute/virtualMachines/reimage/action Reimages virtual machine which is using d...

Log in to Virtual Machine Microsoft.Compute/virtualMachines/login/action Log in to a virtual machine as a regular ...

Log in to Virtual Machine as administrator Microsoft.Compute/virtualMachines/loginAsAdmin/action Log in to a virtual machine with Windows ...

Get Virtual Machine Instance View Microsoft.Compute/virtualMachines/instanceView/read Gets the detailed runtime status of the v...

Lists Available Virtual Machine Sizes Microsoft.Compute/virtualMachines/vmSizes/read Lists available sizes the virtual machine...

Get Virtual Machine Extension Microsoft.Compute/virtualMachines/extensions/read Get the properties of a virtual machine e...

Create or Update Virtual Machine Extension Microsoft.Compute/virtualMachines/extensions/write Creates a new virtual machine extension o...

Delete Virtual Machine Extension Microsoft.Compute/virtualMachines/extensions/delete Deletes the virtual machine extension

  • 准备订阅信息,资源组信息

Get-AzureRmSubscription | ft SubscriptionID

SubscriptionId

--------------

Xxxxxx

Get-AzureRmResourceGroup | ft ResourceId

  • 本方案通过Virtual Machine Contributor的模板修改

    • 查看Virtual Machine Contributor

Get-AzureRmRoleDefinition -Name "Virtual Machine Contributor"

Name : Virtual Machine Contributor

Id : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c

IsCustom : False

Description : Lets you manage virtual machines, but not access to them, and not the virtual network or storage account they‘re connected to.

Actions : {Microsoft.Authorization/*/read, Microsoft.Compute/availabilitySets/*, Microsoft.Compute/locations/*, Microsoft.Compute/virtualMachines

/*...}

NotActions : {}

DataActions : {}

NotDataActions : {}

AssignableScopes : {/}

  • 修改virtual Machine Contributor

#获取"Virtual Machine Contributor"配置

$role = Get-AzureRmRoleDefinition "Virtual Machine Contributor"

$role.Id = $null

$role.Name = "Virtual Machine Operator"

$role.Description = "Can monitor and start stop or restart virtual machines."

$role.Actions.Clear()

#添加周边资源读的权限

$role.Actions.Add("Microsoft.Storage/*/read")

$role.Actions.Add("Microsoft.Network/*/read")

$role.Actions.Add("Microsoft.Compute/*/read")

$role.Actions.Add("Microsoft.Authorization/*/read")

$role.Actions.Add("Microsoft.Resources/subscriptions/resourceGroups/read")

#添加VM相关的操作权限

$role.Actions.Add("Microsoft.Compute/virtualMachines/start/action")

$role.Actions.Add("Microsoft.Compute/virtualMachines/restart/action")

$role.Actions.Add("Microsoft.Compute/virtualMachines/powerOff/action")

$role.Actions.Add("Microsoft.Compute/virtualMachines/deallocate/action")

$role.Actions.Add("Microsoft.Insights/alertRules/*")

#把两个Subscription加入到这个Role管理范围中

$role.AssignableScopes.Clear()

$role.AssignableScopes.Add("/subscriptions/xxxxx")

#添加角色

New-AzureRmRoleDefinition -Role $role

Name : Virtual Machine Operator

Id : 55aca895-61dc-4162-b7a6-fbab532d14a2

IsCustom : True

Description : Can monitor and start stop or restart virtual machines.

Actions : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read, Microsoft.Compute/virtualMachines/start/action...}

NotActions : {}

AssignableScopes : {/subscriptions/xxxxx}

  • 分配rbacuser到rbacgroup资源组中。

New-AzureRmRoleAssignment -SignInName [email protected] -Scope /subscriptions/xxxxxx/resourceGroups/rbacgroup -RoleDefinitionName "Virtual Machine Operator"

RoleAssignmentId : /subscriptions/xxxxx/resourceGroups/rbacgroup/providers/Microsoft.Authorization/roleAssignments/336b10

d9-4ae7-4832-87a8-7f3d1dccb834

Scope : /subscriptions/xxxxxx/resourceGroups/rbacgroup

DisplayName : RBACUSER

SignInName : [email protected]

RoleDefinitionName : Virtual Machine Operator

RoleDefinitionId : d0b203bd-37e1-4006-871c-8b0330d657f6

ObjectId : 42bfdd38-4d2c-4abb-8b4c-fcf5ab1e7f11

ObjectType : User

CanDelegate : False

  • 验证

仅仅可以看到看到rbacgroup资源组,并且删除虚拟机的时候提示没有权限

原文地址:https://www.cnblogs.com/smallfox/p/10260669.html

时间: 2024-08-29 21:36:23

【Azure】通过RBAC对资源进行管理的相关文章

设置SQL Azure防火墙规则来允许SSMS管理SQL Azure

SQL Server Management Studio可以用来管理SQL Azure 但SQL Azure是云端的关系型数据库,也就是说任何一台连接到Internet的机器都能够连接到SQL Azure数据库.但是在某些情况下这是不安全的,作为用户来说,我只希望我自己企业内部能够连接到我创建的SQL Azure数据库:除我企业之外的其他人都无法连接到这台SQL Azure数据库.这个功能可以功过设置SQL Azure的防火墙规则来进行. 我这里设置任何地址都可以访问 设置SQL Azure防火

JavaEE学习之Spring Security3.x——模拟数据库实现用户,权限,资源的管理

一.引言 因项目需要最近研究了下Spring Security3.x,并模拟数据库实现用户,权限,资源的管理. 二.准备 1.了解一些Spring MVC相关知识: 2.了解一些AOP相关知识: 3.了解Spring: 4.了解Maven,并安装. 三.实现步骤 本示例中使用的版本是Spring Security3.2.2.通过数据库实现Spring Security认证授权大致需要以下几个步骤: 1.新建maven web project(因为本示例使用的是maven来构建的),项目结构如下,

Azure Powershell对ASM资源的基本操作

本文主要介绍Windows Azure Powershell对ASM资源的基本操作 1.登陆ASM模式,命令:Add-AzureAccount -Environment AzureChinaCloud 2.获取订阅信息,命令:Get-AzureSubscription 3.设置指定的操作订阅及指定的存储账号,命令: Set-AzureSubscription -SubscriptionId "******" -CurrentStorageAccountName "******

微软推Azure Data Studio助PostgreSQL使用者管理

微软为帮助PostgreSQL用户管理数据库,释出开源编辑器Azure Data Studio,让不习惯使用命令行工具psql的用户,可以选择使用图形化接口工具管理数据库,Azure Data Studio也整合了终端机,开发者在需要的时候还是能使用psql.Azure Data Studio是一个专注于数据开发的跨平台编辑器,可用于Linux.MacOS和Windows,支持多数Visual Studio Code,像是Python.R和Kubernetes,微软提到,当使用者的使用情境偏向处

运维工程师的逆袭——云资源的管理与维护

资源协作是运维管理的一部分,专注于资源共享.Project 功能由资源协作升级而来,除了延用之前资源共享的概念外,着重突出资源间的联系,给资源的组成下了一个新的定义. 1:Project 是什么 Project 是一系列相关业务资源的结合.当我们创建 Project 后,可以共享给他人共同管理,其所有者可以通过参与者创建不同的操作权限,达到多人按需协作管理资源的目的.Project 里的资源可以跟我们真正的项目同时存在. 运维工程师培训 2:Project 涉及的概念 在 Project 里,创

Global Azure上创建、配置、管理SQL Server信息

近期写了很多关于Azure的相关的文档,今天忙完介绍一下,如何在Windows Azure上配置和管理SQL Server信息:我们今天的实验还是以Global Azure来操作:其实在Windows Azure上的SQL Server结构跟本地差不多,只是在Azure上创建的SQL Server数据不会具有系统默认的管理员权限:比如创建数据库的时候需要指定数据库的管理员信息:不能使用sa做为管理员账户:具体就不多介绍了,具体见下: 我们首先单击SQL 数据库---添加 因为我们环境内没有创建过

页游资源的管理方法

1.   配置文件压缩 页游需要10几,20几个配置文件这是很常见的,配置文件现在流行使用xml格式.可以通过压缩软件打包,flash通过二进制方式加载压缩包之后解压使用.这样一方面减少连接请求数:另一方减少了流量. 2.   资源细化分离,按需加载 分离各类模块和素材(图片.swf文件),方便实现按需加载.整个游戏的资源size很大,但是进入游戏往往并不需要所有的资源.这样我们可以分离各类模块和素材,所有资源通过配置文件管理.整理出进入游戏需要的必加载资源,剩余资源只在需要的时候再加载,以减少

创业基础(第六章:创业资源及其管理) 来自高校:全国大学生创新创业实践联盟 分类:创新创业 学习规则:按序学习

点击获取全部6.1:1. (单选) 以下资源中,最重要.最核心的资源是(D) A. 物质资源 B. 技术资源 C. 财务资源 D. 人力资源 2. (单选) 资源就是任何主体在向社会提供产品或服务的过程中,所能(C)的有助于实现自己目标的各种要素以及要素的组合. A. 拥有 B. 支配 C. 拥有和支配 D. 拥有.支配和抢夺 3. (单选) 以下项目中,创业所需要的资源包括(D) A. 人脉 B. 资金 C. 团队 D. 以上三项都对6.2:1. (单选) 以下关于技术资源的说法,错误的是(B

学习资源网站管理

Andriod学习 Andriod学习之路:http://www.stormzhang.com/android/2014/07/07/learn-android-from-rookie/ 资料分享:http://www.jianshu.com/p/2ee0e74abbdf 极客学院:http://www.jikexueyuan.com/path/android/ 数据结构 可视化:http://visualgo.net/ C语言 http://www.douban.com/doulist/155