Rychlý start: Vytvoření přiřazení zásad pro identifikaci prostředků nedodržování předpisů pomocí rozhraní REST API

Prvním krokem k porozumění dodržování předpisů v Azure je zjištění stavu vašich prostředků. V tomto rychlém startu vytvoříte přiřazení zásady k identifikaci nevyhovujících prostředků pomocí rozhraní REST API. Zásada se přiřadí ke skupině prostředků a provede audit virtuálních počítačů, které nepoužívají spravované disky. Po vytvoření přiřazení zásady identifikujete nevyhovující virtuální počítače.

Tato příručka používá rozhraní REST API k vytvoření přiřazení zásad a identifikaci prostředků, které nedodržují předpisy ve vašem prostředí Azure. Příklady v tomto článku používají PowerShell a příkazy Azure CLI az rest . Příkazy můžete spustit az rest také z prostředí Bash, jako je Git Bash.

Požadavky

  • Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
  • Nejnovější verze PowerShellu nebo prostředí Bash, jako je Git Bash.
  • Nejnovější verze Azure CLI
  • Visual Studio Code.
  • Skupina prostředků s alespoň jedním virtuálním počítačem, který nepoužívá spravované disky.

Kontrola syntaxe rozhraní REST API

Ke spuštění příkazů rozhraní REST API existují dva prvky: identifikátor URI rozhraní REST API a text požadavku. Informace najdete v tématu Přiřazení zásad – Vytvořit.

Následující příklad ukazuje syntaxi identifikátoru URI rozhraní REST API pro vytvoření definice zásady.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2023-04-01
  • scope: Obor určuje, pro které prostředky nebo skupinu prostředků se přiřazení zásady vynucuje. Může se lišit od skupiny pro správu až po jednotlivé prostředky. Nahraďte {scope} jedním z následujících vzorů:
    • Skupina pro správu: /providers/Microsoft.Management/managementGroups/{managementGroup}
    • Předplatné: /subscriptions/{subscriptionId}
    • Skupina prostředků: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
    • Prostředek: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}
  • policyAssignmentName: Vytvoří název přiřazení zásady pro vaše přiřazení. Název je součástí vlastnosti přiřazení policyAssignmentId zásady.

Následující příklad je JSON pro vytvoření základního souboru požadavku.

{
  "properties": {
    "displayName": "",
    "description": "",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/11111111-1111-1111-1111-111111111111",
    "nonComplianceMessages": [
      {
        "message": ""
      }
    ]
  }
}
  • displayName: Zobrazovaný název přiřazení zásady.
  • description: Lze použít k přidání kontextu o přiřazení zásady.
  • policyDefinitionId: ID definice zásady, které má vytvořit přiřazení.
  • nonComplianceMessages: Nastavte zprávu, která se má použít, když se prostředek vyhodnotí jako nevyhovující předpisům. Další informace najdete v tématu o nedodržování přiřazení zpráv.

Připojení k Azure

Z relace terminálu editoru Visual Studio Code se připojte k Azure. Pokud máte více než jedno předplatné, spusťte příkazy pro nastavení kontextu pro vaše předplatné. <subscriptionID> nahraďte ID vašeho předplatného Azure.

az login

# Run these commands if you have multiple subscriptions
az account list --output table
az account set --subscription <subscriptionID>

Použijte az login , i když používáte PowerShell, protože příklady používají Azure CLI az rest commands.

Vytvoření přiřazení zásady

V tomto příkladu vytvoříte přiřazení zásady a přiřadíte virtuální počítače auditu, které nepoužívají definici spravovaných disků .

K vytvoření přiřazení je potřeba text požadavku. Uložte následující KÓD JSON do souboru s názvem request-body.json.

{
  "properties": {
    "displayName": "Audit VM managed disks",
    "description": "Policy assignment to resource group scope created with REST API",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
    "nonComplianceMessages": [
      {
        "message": "Virtual machines should use managed disks"
      }
    ]
  }
}

Pokud chcete vytvořit přiřazení zásad v existujícím oboru skupiny prostředků, použijte následující identifikátor URI rozhraní REST API se souborem pro tělo požadavku. Nahraďte {subscriptionId} hodnoty a {resourceGroupName} nahraďte je. Příkaz zobrazí výstup JSON v prostředí.

az rest --method put --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01 --body `@request-body.json

V PowerShellu je nutné, aby backtick (`) utekl at sign (@) k zadání názvu souboru. V prostředí Bash, jako je Git Bash, vynecháte backtick.

Informace najdete v tématu Přiřazení zásad – Vytvořit.

Zjištění nevyhovujících prostředků

Stav dodržování předpisů pro nové přiřazení zásad trvá několik minut, než se aktivuje a poskytne výsledky o stavu zásady. Rozhraní REST API slouží k zobrazení nevyhovujících prostředků pro toto přiřazení zásad a výstupu je ve formátu JSON.

Pokud chcete identifikovat nekompatibilní prostředky, spusťte následující příkaz. Nahraďte {subscriptionId} a {resourceGroupName} nahraďte hodnotami použitými při vytváření přiřazení zásady.

az rest --method post --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01 --uri-parameters `$filter="complianceState eq 'NonCompliant' and PolicyAssignmentName eq 'audit-vm-managed-disks'"

Dotazy filter na prostředky, které jsou vyhodnoceny jako nevyhovující definici zásady s názvem audit-vm-managed-disks , které jste vytvořili s přiřazením zásady. Opět si všimněte, že backtick se používá k úniku znaku dolaru ($) ve filtru. U klienta Bash je zpětné lomítko (\) běžným řídicím znakem.

Vaše výsledky budou vypadat přibližně jako v následujícím příkladu:

{
  "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
  "@odata.count": 1,
  "@odata.nextLink": null,
  "value": [
    {
      "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
      "@odata.id": null,
      "complianceReasonCode": "",
      "complianceState": "NonCompliant",
      "effectiveParameters": "",
      "isCompliant": false,
      "managementGroupIds": "",
      "policyAssignmentId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks",
      "policyAssignmentName": "audit-vm-managed-disks",
      "policyAssignmentOwner": "tbd",
      "policyAssignmentParameters": "",
      "policyAssignmentScope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
      "policyAssignmentVersion": "",
      "policyDefinitionAction": "audit",
      "policyDefinitionCategory": "tbd",
      "policyDefinitionGroupNames": [
        ""
      ],
      "policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
      "policyDefinitionName": "06a78e20-9358-41c9-923c-fb736d382a4d",
      "policyDefinitionReferenceId": "",
      "policyDefinitionVersion": "1.0.0",
      "policySetDefinitionCategory": "",
      "policySetDefinitionId": "",
      "policySetDefinitionName": "",
      "policySetDefinitionOwner": "",
      "policySetDefinitionParameters": "",
      "policySetDefinitionVersion": "",
      "resourceGroup": "{resourceGroupName}",
      "resourceId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmName}>",
      "resourceLocation": "westus3",
      "resourceTags": "tbd",
      "resourceType": "Microsoft.Compute/virtualMachines",
      "subscriptionId": "{subscriptionId}",
      "timestamp": "2024-03-26T02:19:28.3720191Z"
    }
  ]
}

Další informace najdete v tématu Stavy zásad – Výpis výsledků dotazu pro skupinu prostředků.

Vyčištění prostředků

Pokud chcete přiřazení zásady odebrat, použijte následující příkaz. Nahraďte {subscriptionId} a {resourceGroupName} nahraďte hodnotami použitými při vytváření přiřazení zásady. Příkaz zobrazí výstup JSON v prostředí.

az rest --method delete --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01

Přiřazení zásad můžete ověřit pomocí následujícího příkazu. V prostředí se zobrazí zpráva.

az rest --method get --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01
The policy assignment 'audit-vm-managed-disks' is not found.

Další informace najdete v tématu Přiřazení zásad – Odstranění a přiřazení zásad – Získat.

Další kroky

V tomto rychlém startu jste přiřadili definici zásady pro identifikaci prostředků, které nedodržují předpisy, ve vašem prostředí Azure.

Další informace o přiřazování zásad, které ověřují dodržování předpisů prostředků, najdete v tomto kurzu.