练习 - 创建 Azure 自定义角色

已完成

在本单元中,你将创建一个“虚拟机操作员”自定义角色,并在 Azure 中将它分配给自己。

本练习为选做练习。 要完成本练习,你需要访问一个 Azure 订阅,其中你自己的帐户拥有“用户访问管理员”或“所有者”角色。 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户

创建角色

在 Azure 中为新员工创建自定义角色。

  1. 使用拥有“用户访问管理员”或“所有者”角色的帐户登录到 Azure 门户

  2. 从右上方菜单栏中选择“Cloud Shell”。

  3. 选择“Bash”。

  4. 运行以下命令以获取用于自定义角色定义的订阅 ID。 复制该订阅 ID。

     az account list  --output json | jq '.[] | .id, .name'
    
  5. 在 Cloud Shell 中键入“code”。

  6. 将以下角色定义粘贴到编辑器中。 这是我们在前面的单元中标识的角色定义。

    {
     "Name": "Virtual Machine Operator",
     "IsCustom": true,
     "Description": "Can monitor and restart virtual machines.",
     "Actions": [
       "Microsoft.Storage/*/read",
       "Microsoft.Network/*/read",
       "Microsoft.Compute/*/read",
       "Microsoft.Compute/virtualMachines/start/action",
       "Microsoft.Compute/virtualMachines/restart/action",
       "Microsoft.Authorization/*/read",
       "Microsoft.ResourceHealth/availabilityStatuses/read",
       "Microsoft.Resources/subscriptions/resourceGroups/read",
       "Microsoft.Insights/alertRules/*",
       "Microsoft.Support/*"
     ], 
     "NotActions": [],
     "DataActions": [],
     "NotDataActions": [],
     "AssignableScopes": [
       "/subscriptions/subscriptionId"
     ]
    }
    
  7. AssignableScopes 部分,将“subscriptionId”替换为在上一步中获得的值。

  8. 从 Cloud Shell 窗格右上角的三点菜单中,选择“保存”(或在 Windows 中按“CTRL + S”,在 macOS 中按“CMD + S”)

  9. 输入“vm-operator-role-new.json”作为文件名,然后保存。

  10. 从 Cloud Shell 窗格右上角的三点菜单中,选择“关闭编辑器”(或在 Windows 中按“CTRL + Q”,在 macOS 中按“CMD + Q”)

  11. 在 Cloud Shell 中运行以下命令以创建自定义角色:

    az role definition create --role-definition vm-operator-role.json
    

分配角色

创建自定义角色时,可以将其分配给用户或组。 就我们的应用场景而言,为了简单起见,请将自定义角色分配给自己。

  1. 运行以下命令获取用户主体名称。 将“显示名称”替换为在 Azure 门户右上方的配置文件卡上显示的名称。 显示名称可能是名字和姓氏。

    USER=$(az ad user list --display-name "your display name" --query [0].userPrincipalName --output tsv)
    echo $USER
    
  2. 运行以下命令,为自己分配自定义角色,将“你的订阅 ID”替换为之前复制的订阅 ID:

    az role assignment create --assignee $USER --role "Virtual Machine Operator"  --scope /subscriptions/"your subscription id"
    
  3. 关闭 Cloud Shell。