允许用户启动/停止特定的Azure VM

Mr.*_*mic 8 azure

我们的销售团队将使用Azure VM进行销售演示.我希望能够让某些人能够随意启动/停止自己的VM.我已经看到能够在管理门户中添加人员作为管理员,但这似乎让他们可以访问我们的整个订阅.我希望能够在不让每个人都创建自己的订阅的情况下管理这个.

示例场景:

人员A能够启动/停止人员A的专用虚拟机.

人员B能够启动/停止人员B的专用虚拟机.等等

rla*_*lar 12

为了允许用户启动和停止虚拟机,您需要使用正确的权限创建自定义角色.

在这个答案中,我将列出要使用的结果来获得此结果azure command line interface.您可以使用做同样Power ShellAzure Rest Api(找到有关命令的详细信息要与使用Power Shell这个链接,并与Azure Rest Api在此链接).

  • 使用以下内容创建一个JSON文件(让我们命名newRole.json):

    {
      "Name": "Virtual Machine Operator",
      "IsCustom": true,
      "Description": "Can deallocate, start  and restart virtual machines.",
      "Actions": [
        "Microsoft.Compute/*/read",
        "Microsoft.Compute/virtualMachines/start/action",
        "Microsoft.Compute/virtualMachines/restart/action",
        "Microsoft.Compute/virtualMachines/deallocate/action"
      ],
      "NotActions": [

], "AssignableScopes": [ "/subscriptions/11111111-1111-1111-1111-111111111111" ] }
Run Code Online (Sandbox Code Playgroud)

  • JSON文件的每个字段的简短说明:

    • Name:新角色的名称.这是将在azure门户中显示的名称
    • Is Custom:指定它是用户定义的角色
    • Description:角色的简短描述,也在天蓝色门户中显示
    • Actions:与此角色关联的用户可以执行的操作列表.每条线分别允许用户:
      • 查看虚拟机列表(不是全部,我们稍后会看到如何指定每个用户可以看到哪个VM)
      • 在列表中的虚拟机中启动其中一个虚拟机
      • 重新启动列表中的虚拟机之一
      • 在列表中的虚拟机中释放其中一个虚拟机
    • No Actions:与此角色关联的用户无法执行的操作列表.在这种情况下,列表为空,通常它必须是前一个字段的子集.
    • AssignableScopes:必须添加角色的订阅集.每个代码都以/subscription/字符串为前缀.您可以通过访问订阅菜单(由此图标标识)找到订阅的代码

      在此输入图像描述

      并复制SUBSCRIPTION ID列 下的值

  • azure cli执行命令登录您的azure帐户az login.有关如何安装azure cli以及分别在此处此处执行登录过程的更多信息.
  • 创建执行命令的新角色az role definition create --role-definition newRole.json.
  • 访问门户并选择必须由您选择的用户打开和关闭的虚拟机
  • 选择机器后选择 Access control (Iam)

    在此输入图像描述

  • 从新刀片选择 Add

  • 填写以下字段:
    • Role:在我们的示例中,选择您刚刚创建的角色 Virtual Machine Operator
    • Assign access to:Azure AD user, group, or application.
    • Select:与需要启动/重新启动/停止VM的帐户关联的电子邮件
  • 按保存

在此操作之后,当用户将访问门户时,她将在虚拟机列表中看到所选VM.如果她选择虚拟机,她将能够启动/重启/停止它.

  • 这很有效,但对于 VM 操作员,他们可能会受益于额外的权限(例如,此角色不会让操作员看到机器的公共 IP)。微软在这里有一个以 Virtual Machine Operator 为例的教程:https://docs.microsoft.com/en-us/azure/role-based-access-control/custom-roles#custom-role-example (2认同)

小智 9

在 portal.azure.com 中打开您的 VM 导航到Access control (IAM)Role Assignments并单击添加角色分配。

选择标准角色Virtual Machine Contributor

默认分配访问权限(Azure AD 用户、组...),

选择字段中输入新受限用户的电子邮件并选择访客。

节省。

就这样。 在此处输入图片说明


Amm*_*mmo 5

我创建了一个自定义角色来允许这样做。我已经测试过并且有效。您必须从“虚拟机用户登录”角色开始,然后添加其他权限。当然,这也为用户提供了日志权限,但我假设如果您允许他们启动和停止虚拟机,那么您还希望他们能够登录。

通过图形用户界面:

 1. Add Custom Role
 2. Select "Clone a role" and role to close is "Virtual Machine User Login"
 3. Click Next
 4. Select add permissions
 5. Scroll  down to "Microsoft.Compute.VirtualMachines" and tick
Microsoft.Compute/virtualMachines/start/action"
"Microsoft.Compute/virtualMachines/powerOff/action"
"Microsoft.Compute/virtualMachines/deallocate/action"
 6. Click Next, select subscription, Next, Next then "Create".
 7. List item
Run Code Online (Sandbox Code Playgroud)

角色的所有权限:

  • 操作 Microsoft.Network/publicIPAddresses/read
  • 操作 Microsoft.Network/virtualNetworks/read
  • 操作 Microsoft.Network/virtualNetworks/read
  • 操作 Microsoft.Network/loadBalancers/read
  • 操作 Microsoft.Network/networkInterfaces/read
  • 操作 Microsoft.Compute/virtualMachines/*/read
  • 操作 Microsoft.Compute/virtualMachines/start/action
  • 操作 Microsoft.Compute/virtualMachines/powerOff/action
  • 操作 Microsoft.Compute/virtualMachines/deallocate/action
  • DataAction Microsoft.Compute/virtualMachines/login/action

这是 JSON:

{ "properties": { "roleName": "VM_Operator_test", "description": "", "assignableScopes": [ "/subscriptions/exampesubscription/EXAMPLE_RG" ], "permissions": [ { "actions": [ "Microsoft.Network/publicIPAddresses/read", "Microsoft.Network/virtualNetworks/read", "Microsoft.Network/loadBalancers/read", "Microsoft.Network/networkInterfaces/read", "Microsoft.Compute/virtualMachines/*/read", "Microsoft.Compute/virtualMachines/start/action", "Microsoft.Compute/virtualMachines/powerOff/action", "Microsoft.Compute/virtualMachines/deallocate/action" ], "notActions": [], "dataActions": [ "Microsoft.Compute/virtualMachines/login/action" ], "notDataActions": [] } ] }}


Gau*_*tri 0

目前这是不可能的。尽管可以通过一些编程来实现。您在 Azure Portal 上看到的内容都可以通过Azure Service Management API. 您可以做的是编写一个使用此 API 的应用程序,然后您可以定义所有规则。

如果您认为您的销售人员不会乱搞,您可以做的另一件事是创建一些自定义 PowerShell 脚本Azure PowerShell Cmdlets,他们只需执行这些脚本即可启动/停止虚拟机。