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
- Om du inte har något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.
- Den senaste versionen av PowerShell eller ett Bash-gränssnitt som Git Bash.
- Senaste versionen av Azure CLI.
- Visual Studio Code.
- En resursgrupp med minst en virtuell dator som inte använder hanterade diskar.
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}
- Hanteringsgrupp:
policyAssignmentName
: Skapar namnet på principtilldelningen för tilldelningen. Namnet ingår i principtilldelningenspolicyAssignmentId
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.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för