Quickstart: Een beleidstoewijzing maken om niet-compatibele resources met .NET Core te identificeren
De eerste stap in het begrijpen van naleving in Azure is het identificeren van de status van uw resources. In deze snelstart maakt u een beleidstoewijzing om te identificeren welke virtuele machines geen beheerde schijven gebruiken. Zodra de toewijzing is voltooid, kunt u de virtuele machines identificeren die niet-compatibel zijn.
De .NET Core-bibliotheek wordt gebruikt om Azure-resources te beheren. In deze handleiding wordt uitgelegd hoe u de .NET Core-bibliotheek voor Azure Policy gebruikt om een beleidstoewijzing te maken.
Vereisten
- Een Azure-abonnement. Als u nog geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
- Een Azure-service-principal, met inbegrip van de clientId en clientSecret. Als u geen service-principal hebt voor gebruik met Azure Policy of als u een nieuwe wilt maken, raadpleegt u Azure-beheerbibliotheken voor .NET-verificatie. Sla de stap over om de .NET Core-pakketten te installeren; dit doet u in de volgende stappen.
Het Azure Policy-project maken
Als u .NET Core voor het beheren van Azure Policy wilt inschakelen, maakt u een nieuwe consoletoepassing en installeert u de vereiste pakketten.
Controleer of de meest recente versie van .NET Core is geïnstalleerd (minimaal 3.1.8). Als deze nog niet is geïnstalleerd, downloadt u deze op dotnet.microsoft.com.
Initialiseer een nieuwe .NET Core-consoletoepassing met de naam policyAssignment:
dotnet new console --name "policyAssignment"Wijzig de mappen in de nieuwe projectmap en installeer de vereiste pakketten voor Azure Policy:
# Add the Azure Policy package for .NET Core dotnet add package Microsoft.Azure.Management.ResourceManager --version 3.10.0-preview # Add the Azure app auth package for .NET Core dotnet add package Microsoft.Azure.Services.AppAuthentication --version 1.5.0Vervang de standaard
program.csdoor de volgende code en sla het bijgewerkte bestand op:using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.IdentityModel.Clients.ActiveDirectory; using Microsoft.Rest; using Microsoft.Azure.Management.ResourceManager; using Microsoft.Azure.Management.ResourceManager.Models; namespace policyAssignment { class Program { static async Task Main(string[] args) { string strTenant = args[0]; string strClientId = args[1]; string strClientSecret = args[2]; string strSubscriptionId = args[3]; string strName = args[4]; string strDisplayName = args[5]; string strPolicyDefID = args[6]; string strDescription = args[7]; string strScope = args[8]; var authContext = new AuthenticationContext($"https://login.microsoftonline.com/{strTenant}"); var authResult = await authContext.AcquireTokenAsync( "https://management.core.windows.net", new ClientCredential(strClientId, strClientSecret)); using (var client = new PolicyClient(new TokenCredentials(authResult.AccessToken))) { var policyAssignment = new PolicyAssignment { DisplayName = strDisplayName, PolicyDefinitionId = strPolicyDefID, Description = strDescription }; var response = await client.PolicyAssignments.CreateAsync(strScope, strName, policyAssignment); } } } }Bouw en publiceer de consoletoepassing
policyAssignment:dotnet build dotnet publish -o {run-folder}
Een beleidstoewijzing maken
In deze quickstart maakt u een beleidstoewijzing en wijst u de definitie Controleer virtuele machines die niet gebruikmaken van beheerde schijven (06a78e20-9358-41c9-923c-fb736d382a4d) toe. Deze beleidsdefinitie identificeert resources die niet voldoen aan de voorwaarden die zijn vastgelegd in de beleidsdefinitie.
Wijzig mappen in de
{run-folder}die u hebt gedefinieerd met de vorige opdrachtdotnet publish.Voer de volgende opdracht in de terminal in:
policyAssignment.exe ` "{tenantId}" ` "{clientId}" ` "{clientSecret}" ` "{subscriptionId}" ` "audit-vm-manageddisks" ` "Audit VMs without managed disks Assignment" ` "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d" ` "Shows all virtual machines not using managed disks" ` "{scope}"
In de voorgaande opdrachten wordt de volgende informatie gebruikt:
- Vervang
{tenantId}door uw tenant-id {clientId}- vervang door de client-id van uw service-principal{clientSecret}- vervang door het clientgeheim van uw service-principal- Vervang
{subscriptionId}door uw abonnements-ID - name: de unieke naam voor het object voor beleidstoewijzing. In het bovenstaande voorbeeld wordt audit-vm-manageddisks gebruikt.
- displayName: de weergavenaam voor de beleidstoewijzing. In dit geval gebruikt u de toewijzing Virtuele machines zonder beheerde schijven controleren.
- policyDefID: het pad naar de beleidsdefinitie, op basis waarvan u de toewijzing maakt. In dit geval is het de id van de beleidsdefinitie Virtuele machines zonder beheerde schijven controleren.
- description: een grondigere uitleg van wat het beleid doet of waarom het aan dit bereik is toegewezen.
- scope: een bereik bepaalt voor welke resources of groep resources de beleidstoewijzing wordt afgedwongen. Het kan variëren van een beheergroep tot een afzonderlijke resource. Zorg dat u
{scope}vervangt door een van de volgende patronen:- Beheergroep:
/providers/Microsoft.Management/managementGroups/{managementGroup} - Abonnement:
/subscriptions/{subscriptionId} - Resourcegroep:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName} - Resource:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Beheergroep:
U kunt nu niet-compatibele resources identificeren om inzicht te krijgen in de nalevingsstatus van uw omgeving.
Niet-compatibele resources identificeren
Nu uw beleidstoewijzing is gemaakt, kunt u resources identificeren die niet compatibel zijn.
Initialiseer een nieuwe .NET Core-consoletoepassing met de naam policyCompliance:
dotnet new console --name "policyCompliance"Wijzig de mappen in de nieuwe projectmap en installeer de vereiste pakketten voor Azure Policy:
# Add the Azure Policy package for .NET Core dotnet add package Microsoft.Azure.Management.PolicyInsights --version 3.1.0 # Add the Azure app auth package for .NET Core dotnet add package Microsoft.Azure.Services.AppAuthentication --version 1.5.0Vervang de standaard
program.csdoor de volgende code en sla het bijgewerkte bestand op:using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.IdentityModel.Clients.ActiveDirectory; using Microsoft.Rest; using Microsoft.Azure.Management.PolicyInsights; using Microsoft.Azure.Management.PolicyInsights.Models; namespace policyAssignment { class Program { static async Task Main(string[] args) { string strTenant = args[0]; string strClientId = args[1]; string strClientSecret = args[2]; string strSubscriptionId = args[3]; string strName = args[4]; var authContext = new AuthenticationContext($"https://login.microsoftonline.com/{strTenant}"); var authResult = await authContext.AcquireTokenAsync( "https://management.core.windows.net", new ClientCredential(strClientId, strClientSecret)); using (var client = new PolicyInsightsClient(new TokenCredentials(authResult.AccessToken))) { var policyQueryOptions = new QueryOptions { Filter = $"IsCompliant eq false and PolicyAssignmentId eq '{strName}'", Apply = "groupby(ResourceId)" }; var response = await client.PolicyStates.ListQueryResultsForSubscriptionAsync( "latest", strSubscriptionId, policyQueryOptions); Console.WriteLine(response.Odatacount); } } } }Bouw en publiceer de consoletoepassing
policyAssignment:dotnet build dotnet publish -o {run-folder}Wijzig mappen in de
{run-folder}die u hebt gedefinieerd met de vorige opdrachtdotnet publish.Voer de volgende opdracht in de terminal in:
policyCompliance.exe ` "{tenantId}" ` "{clientId}" ` "{clientSecret}" ` "{subscriptionId}" ` "audit-vm-manageddisks"
In de voorgaande opdrachten wordt de volgende informatie gebruikt:
- Vervang
{tenantId}door uw tenant-id {clientId}- vervang door de client-id van uw service-principal{clientSecret}- vervang door het clientgeheim van uw service-principal- Vervang
{subscriptionId}door uw abonnements-ID - name: de unieke naam voor het object voor beleidstoewijzing. In het bovenstaande voorbeeld wordt audit-vm-manageddisks gebruikt.
De resultaten in response komen overeen met wat u ziet op het tabblad Resourcenaleving van een beleidstoewijzing in de Azure Portal-weergave.
Resources opschonen
Verwijder de beleidstoewijzing VM's zonder beheerde schijven controleren via de portal. De beleidsdefinitie is ingebouwd, dus is er geen definitie om te verwijderen.
Als u de .NET Core-consoletoepassing en de geïnstalleerde pakketten wilt verwijderen, kunt u dit doen door de projectmappen
policyAssignmentenpolicyCompliancete verwijderen.
Volgende stappen
In deze Quick Start hebt u een beleidsdefinitie toegewezen om niet-compatibele resources in uw Azure-omgeving te identificeren.
Voor meer informatie over het toewijzen van beleidsdefinities om te controleren of nieuwe resources compatibel zijn gaat u verder met de zelfstudie voor: