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

mlnl4t2r  于 2023-11-21  发布在  其他
关注(0)|答案(7)|浏览(106)

我们的销售团队将使用Azure虚拟机进行销售演示。我希望能够允许某些人能够随意启动/停止自己的虚拟机。我已经看到能够在管理门户中将人员添加为管理员,但这似乎给予他们访问我们整个订阅的权限。我希望能够管理此功能,而无需让每个人创建自己的订阅。
示例场景:
人员A能够启动/停止人员A的专用VM。
人员B能够启动/停止人员B的专用VM等。

bzzcjhmw

bzzcjhmw1#

为了允许用户启动和停止虚拟机,您需要创建具有正确权限的自定义role
在这个答案中,我将列出使用azure command line interface获得此结果所需遵循的步骤。您可以使用Power ShellAzure Rest Api执行相同的操作(在此link和此link中找到有关Power ShellAzure 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"
      ]
    }

字符串

  • JSON文件的每个字段的简短说明:
  • Name:新角色的名称。这是将在Azure门户中显示的名称
  • Is Custom:指定它是用户定义的角色
  • Description:角色的简短描述,也显示在Azure门户中
  • Actions:与此角色关联的用户可以执行的操作列表。每行分别允许用户:
  • 查看虚拟机列表(不是所有虚拟机,我们将在后面看到如何指定每个用户都可以看到哪个虚拟机)
  • 启动列表中的虚拟机之一
  • 重新启动列表中的虚拟机之一
  • 从列表中的虚拟机中取消分配其中一个虚拟机
  • No Actions:与此角色关联的用户不能执行的操作列表。在这种情况下,列表为空,通常它必须是前一字段的子集。
  • AssignableScopes:必须添加角色的订阅集。每个代码都以/subscription/字符串为前缀。您可以通过访问订阅菜单(由此图标标识)找到订阅的代码

x1c 0d1x的数据
并复制SUBSCRIPTION ID列下的值

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


  • 从新刀片式服务器中选择Add
  • 填写以下字段:
  • Role:选择您刚刚创建的角色,在本例中为Virtual Machine Operator
  • Assign access toAzure AD user, group, or application
  • Select:与需要启动/重新启动/停止VM的帐户关联的电子邮件
  • 按下保存

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

e5nszbig

e5nszbig2#

在portal.azure.com中打开您的虚拟机,导航到Access control (IAM)Role Assignments,然后单击“添加角色分配”。
选择标准角色 * 虚拟机参与者 *,

  • 分配访问权限 * 默认情况下离开(Azure AD用户、组...),

Select 字段中输入新受限用户的电子邮件,然后选择Guest。
保存.
就这些。

rbpvctlc

rbpvctlc3#

我已经创建了一个自定义角色来允许这一点。我已经测试过了,它工作正常。你必须从“虚拟机用户登录”角色开始,然后添加额外的权限。这当然也会给予用户日志权限,但我假设如果你允许他们启动和停止VM,那么你也会希望他们能够登录。
通过GUI:

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

字符串

角色所有权限:

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

下面是JSON:

第一个月

bbuxkriu

bbuxkriu4#

目前这是不可能的。虽然通过一些编程是可能的。你在Azure Portal上看到的可以通过Azure Service Management API实现。你可以做的是编写一个使用此API的应用程序,在那里你可以定义所有规则。
如果你认为你的销售人员不会乱来,你可以做的另一件事是通过使用Azure PowerShell Cmdlets创建一些自定义PowerShell脚本,他们可以执行这些脚本来启动/停止虚拟机。

w51jfk4q

w51jfk4q5#

我的建议是构建您自己的外观,利用Azure Management API为您执行这些任务。这允许您在访问/授权方面设置自己的控制,并将其装配为跨多个订阅(如果有必要)。此外观可能托管在免费层Azure网站中。

zlwx9yxi

zlwx9yxi6#

穿过蔚蓝色的天空

  • 创建自定义角色文件“VirtualMachineStartStop.json”
{
            "Name": "Virtual Machine Start Stop Access",
            "IsCustom": true,
            "Description": "Start/Restart/Deallocate virtual machines",
            "Actions": [
              "Microsoft.Storage/*/read",
              "Microsoft.Network/*/read",
              "Microsoft.Compute/*/read",
              "Microsoft.Compute/virtualMachines/start/action",
              "Microsoft.Compute/virtualMachines/restart/action",
              "Microsoft.Compute/virtualMachines/deallocate/action"
            ],
            "NotActions": [

            ],
            "AssignableScopes": [
              "/subscriptions/<azure_subscription_id_here>"
            ] 
  }

字符串

  • 创建角色

第一个月

  • 确认角色创建

az role definition list --custom-role-only true

c2e8gylq

c2e8gylq7#

如果您无法创建自定义角色,您现在有“桌面虚拟化开机关闭贡献者”角色;它可以启动和停止虚拟机(VM)。还有“桌面虚拟化开机贡献者”角色,它只能启动VM。
您可以在CLI中使用下面的命令指定此值,并填写必要的占位符;

az role assignment create \
  --assignee *userObjectId* \
  --role "Desktop Virtualization Power On Off Contributor" \
  --scope "/subscriptions/*Your Subscription ID*/resourceGroups/*YourResourceGroup*/providers/Microsoft.Compute/virtualMachines/*YourVirtualMachineName*"

字符串
您将需要替换SubscriptionId、ResourceGroupName、VirtualMachineName和userObjectId,您可以从下面的查询中获取这些信息。

az ad user show --id "[email protected]" --query objectId --output tsv

相关问题