尝试使用 Azure Cloud Shell 的 Azure 课程因 "RequestDisallowedByPolicy" 使用免费帐户而失败

Azure course that tries to use Azure Cloud Shell fails with "RequestDisallowedByPolicy" using free account

我被 Azure 支持问到 post 这个问题,只是想看看是否有人有有用的意见。

我正在逐步完成 MS Azure 培训课程。我创建了通常的免费帐户来完成这些操作。我已经浏览了几十个,现在是这个:

https://docs.microsoft.com/en-us/learn/modules/secure-and-isolate-with-nsg-and-service-endpoints/3-exercise-network-security-groups?source=learn

这会尝试使用 Azure PowerShell 服务。我在访问 PowerShell 页面时遇到了一些问题。看起来,如果我还没有登录到门户,它会进入一个半无限循环,尝试进入 shell 页面,然后尝试登录,然后是 shell 页面,然后最后它放弃并说 "We couldn't sign you in. Please try again.".

但是,我能够解决这个问题。如果在单独的选项卡中,我登录到 Azure 门户,然后返回并按照 link 到 Azure Cloud Shell,它会通过登录门并将我发送到我选择的页面 Bash 或幂 Shell。该课程指定使用 Bash。当我 select 那个时,它会要求我创建一个 Storage 对象。当我确认时,它给了我以下错误(省略了订阅 ID):

{
  "error": {
    "code": "RequestDisallowedByPolicy",
    "target": "cs733f82532facdx4f04x95b",
    "message": "Resource 'cs733f82532facdx4f04x95b' was disallowed by policy. Policy identifiers: '[{\"policyAssignment\":{\"name\":\"Enforce tag on resource\",\"id\":\"/subscriptions/xxxxx/providers/Microsoft.Authorization/policyAssignments/740514d625684aad84ef8ca0\"},\"policyDefinition\":{\"name\":\"Enforce tag on resource\",\"id\":\"/subscriptions/xxxxx/providers/Microsoft.Authorization/policyDefinitions/be3862a6-ca1e-40b0-a024-0c0c7d1e8b3e\"}}]'.",
    "additionalInfo": [
      {
        "type": "PolicyViolation",
        "info": {
          "policyDefinitionDisplayName": "Enforce tag on resource",
          "evaluationDetails": {
            "evaluatedExpressions": [
              {
                "result": "True",
                "expressionKind": "Field",
                "expression": "tags[Department]",
                "path": "tags[Department]",
                "targetValue": "false",
                "operator": "Exists"
              }
            ]
          },
          "policyDefinitionId": "/subscriptions/xxxxx/providers/Microsoft.Authorization/policyDefinitions/be3862a6-ca1e-40b0-a024-0c0c7d1e8b3e",
          "policyDefinitionName": "be3862a6-ca1e-40b0-a024-0c0c7d1e8b3e",
          "policyDefinitionEffect": "deny",
          "policyAssignmentId": "/subscriptions/xxxxx/providers/Microsoft.Authorization/policyAssignments/740514d625684aad84ef8ca0",
          "policyAssignmentName": "740514d625684aad84ef8ca0",
          "policyAssignmentDisplayName": "Enforce tag on resource",
          "policyAssignmentScope": "/subscriptions/xxxxx",
          "policyAssignmentParameters": {
            "tagName": {
              "value": "Department"
            }
          }
        }
      }
    ]
  }
}

我认为由此得出的简单结论是我的免费帐户没有足够的权限来执行这里需要的操作。我阅读的文档似乎暗示我必须获得该帐户的其他权限才能执行此操作。但是,我只是使用我创建的免费帐户来完成 Azure 培训课程。让我这样做真的没有意义。我已经看到其他 Azure 课程创建了一个临时沙箱,据说是因为它们在沙箱中预先创建了特定对象,但我也认为沙箱具有免费帐户中不可用的特定权限。在我看来,解决此问题的唯一合理方法是重构该课程以使用具有正确权限的临时沙箱。

我只是在寻找对此的任何意见,并确认这是应该做的。

您似乎没有在免费订阅中创建资源、cloudshell 存储。除非您添加到 Work/Corporate 个租户。

根据您提供的信息,您尝试使用的订阅有一个强制执行标签的策略Department,这意味着创建的任何资源都应该有一个带有部门信息的标签。