Dela via


Snabbstart: Skapa en principtilldelning för att identifiera icke-kompatibla resurser med REST API

Det första steget mot att förstå kompatibilitet i Azure är att identifiera dina resursers status. I den här snabbstarten skapar du en principtilldelning för att identifiera icke-kompatibla resurser med hjälp av REST API. Principen tilldelas till en resursgrupp och granskar virtuella datorer som inte använder hanterade diskar. När du har skapat principtilldelningen identifierar du icke-kompatibla virtuella datorer.

Den här guiden använder REST API för att skapa en principtilldelning och för att identifiera icke-kompatibla resurser i din Azure-miljö. Exemplen i den här artikeln använder PowerShell och Azure CLI-kommandona az rest . Du kan också köra az rest kommandona från ett Bash-gränssnitt som Git Bash.

Förutsättningar

Granska REST API-syntaxen

Det finns två element för att köra REST API-kommandon: REST API-URI:n och begärandetexten. Mer information finns i Principtilldelningar – Skapa.

I följande exempel visas URI-syntaxen för REST API för att skapa en principdefinition.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2023-04-01
  • scope: Ett omfång avgör vilka resurser eller grupper av resurser som principtilldelningen tillämpas på. Det kan sträcka sig från en hanteringsgrupp till en enskild resurs. Ersätt {scope} med något av följande mönster:
    • Hanteringsgrupp: /providers/Microsoft.Management/managementGroups/{managementGroup}
    • Prenumeration: /subscriptions/{subscriptionId}
    • Resursgrupp: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
    • Resurs: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}
  • policyAssignmentName: Skapar namnet på principtilldelningen för tilldelningen. Namnet ingår i principtilldelningens policyAssignmentId egenskap.

Följande exempel är JSON för att skapa en brödtextfil för begäran.

{
  "properties": {
    "displayName": "",
    "description": "",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/11111111-1111-1111-1111-111111111111",
    "nonComplianceMessages": [
      {
        "message": ""
      }
    ]
  }
}
  • displayName: Visningsnamn för principtilldelningen.
  • description: Kan användas för att lägga till kontext om principtilldelningen.
  • policyDefinitionId: Det principdefinitions-ID som du vill skapa tilldelningen med.
  • nonComplianceMessages: Ställ in meddelandet som ska användas när en resurs utvärderas som icke-kompatibel. Mer information finns i tilldelning av icke-efterlevnadsmeddelanden.

Ansluta till Azure

Anslut till Azure från en terminalsession i Visual Studio Code. Om du har fler än en prenumeration kör du kommandona för att ange kontext till din prenumeration. Ersätt <subscriptionID> med ditt Azure-prenumerations-ID.

az login

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

Använd az login även om du använder PowerShell eftersom exemplen använder Azure CLI az rest-kommandon .

Skapa en principtilldelning

I det här exemplet skapar du en principtilldelning och tilldelar definitionen Granska virtuella datorer som inte använder hanterade diskar .

En begärandetext krävs för att skapa tilldelningen. Spara följande JSON i en fil med namnet 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"
      }
    ]
  }
}

Om du vill skapa principtilldelningen i ett befintligt resursgruppsomfång använder du följande REST API-URI med en fil för begärandetexten. Ersätt {subscriptionId} och {resourceGroupName} med dina värden. Kommandot visar JSON-utdata i gränssnittet.

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

I PowerShell krävs backtick (`) för att komma undan at sign (@) för att ange ett filnamn. I ett Bash-gränssnitt som Git Bash utelämnar du backticken.

Mer information finns i Principtilldelningar – Skapa.

Identifiera icke-kompatibla resurser

Efterlevnadstillståndet för en ny principtilldelning tar några minuter att bli aktiv och ge resultat om principens tillstånd. Du använder REST API för att visa de icke-kompatibla resurserna för den här principtilldelningen och utdata finns i JSON.

Kör följande kommando för att identifiera icke-kompatibla resurser. Ersätt {subscriptionId} och {resourceGroupName} med dina värden som användes när du skapade principtilldelningen.

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'"

Frågor filter om resurser som utvärderas som icke-kompatibla med principdefinitionen med namnet audit-vm-managed-disks som du skapade med principtilldelningen. Observera återigen att backtick används för att undkomma dollartecknet ($) i filtret. För en Bash-klient är ett omvänt snedstreck (\) ett vanligt escape-tecken.

Ditt resultat liknar följande exempel:

{
  "@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"
    }
  ]
}

Mer information finns i Principtillstånd – Lista frågeresultat för resursgrupp.

Rensa resurser

Om du vill ta bort principtilldelningen använder du följande kommando. Ersätt {subscriptionId} och {resourceGroupName} med dina värden som användes när du skapade principtilldelningen. Kommandot visar JSON-utdata i gränssnittet.

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

Du kan kontrollera att principtilldelningen har tagits bort med följande kommando. Ett meddelande visas i gränssnittet.

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.

Mer information finns i Principtilldelningar – Ta bort och Principtilldelningar – Hämta.

Nästa steg

I den här snabbstarten har du tilldelat en principdefinition för att identifiera icke-kompatibla resurser i Azure-miljön.

Om du vill veta mer om hur du tilldelar principer som validerar resursefterlevnad fortsätter du till självstudien.