Niet-compatibele resources herstellen met Azure Policy
Resources die niet compatibel zijn met een deployIfNotExists- of modify-beleid, kunnen in een compatibele status worden gezet via Herstel. Herstel wordt bereikt door Azure Policy te instrueren om het effect deployIfNotExists uit te voeren of door de bewerkingen van het toegewezen beleid te wijzigen voor uw bestaande resources en abonnementen, ongeacht of deze toewijzing is toegewezen aan een beheergroep, een abonnement, een resourcegroep of een afzonderlijke resource. In dit artikel worden de stappen beschreven die nodig zijn om inzicht te krijgen in herstel met Azure Policy.
Hoe herstelbeveiliging werkt
Wanneer Azure Policy sjabloon in de beleidsdefinitie deployIfNotExists wordt uitgevoerd, gebeurt dit met behulp van een beheerde identiteit. Azure Policy maakt een beheerde identiteit voor elke toewijzing, maar moet details hebben over welke rollen de beheerde identiteit moeten verlenen. Als er rollen ontbreken voor de beheerde identiteit, wordt er een fout weergegeven tijdens de toewijzing van het beleid of een initiatief. Wanneer u de portal gebruikt, Azure Policy de beheerde identiteit automatisch de vermelde rollen toegekend zodra de toewijzing wordt gestart. Wanneer u SDK gebruikt, moeten de rollen handmatig worden toegekend aan de beheerde identiteit. De locatie van de beheerde identiteit heeft geen invloed op de werking ervan met Azure Policy.
Belangrijk
In de volgende scenario's moet de beheerde identiteit van de toewijzing handmatig toegang worden verleend, anders mislukt de herstelimplementatie:
- Als de toewijzing is gemaakt via de SDK
- Als een resource die is gewijzigd door deployIfNotExists of modify zich buiten het bereik van de beleidstoewijzing valt
- Als de sjabloon toegang heeft tot eigenschappen van resources buiten het bereik van de beleidstoewijzing
Beleidsdefinitie configureren
De eerste stap bestaat uit het definiëren van de rollen die deployIfNotExists en modify nodig hebben in de beleidsdefinitie om de inhoud van de ingesloten sjabloon te implementeren. Voeg onder de eigenschap details de eigenschap roleDefinitionIds toe. Deze eigenschap is een matrix met tekenreeksen die overeenkomen met rollen in uw omgeving. Zie het voorbeeld deployIfNotExists of de voorbeelden wijzigen voor een volledig voorbeeld.
"details": {
...
"roleDefinitionIds": [
"/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
"/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
]
}
De eigenschap roleDefinitionIds gebruikt de volledige resource-id en neemt niet de korte roleName van de rol. Gebruik de volgende code om de id voor de rol Inzender in uw omgeving op te halen:
az role definition list --name 'Contributor'
De beheerde identiteit handmatig configureren
Wanneer u een toewijzing maakt met behulp van de portal, Azure Policy de beheerde identiteit gegenereerd en worden de rollen toegekend die zijn gedefinieerd in roleDefinitionIds. In de volgende voorwaarden moeten de stappen voor het maken van de beheerde identiteit en het toewijzen van machtigingen handmatig worden uitgevoerd:
- Tijdens het gebruik van de SDK (zoals Azure PowerShell)
- Wanneer een resource buiten het toewijzingsbereik wordt gewijzigd door de sjabloon
- Wanneer een resource buiten het toewijzingsbereik wordt gelezen door de sjabloon
Beheerde identiteit maken met PowerShell
Als u een beheerde identiteit wilt maken tijdens de toewijzing van het beleid, moet Locatie worden gedefinieerd en Moet AssignIdentity worden gebruikt. In het volgende voorbeeld wordt de definitie van het ingebouwde beleid Deploy SQL DB transparent data encryption (Transparante gegevensversleuteling voor SQL DB) gehaald, wordt de doelresourcegroep gedefinieerd en wordt vervolgens de toewijzing gemaakt.
# Login first with Connect-AzAccount if not using Cloud Shell
# Get the built-in "Deploy SQL DB transparent data encryption" policy definition
$policyDef = Get-AzPolicyDefinition -Id '/providers/Microsoft.Authorization/policyDefinitions/86a912f6-9a06-4e26-b447-11b16ba8659f'
# Get the reference to the resource group
$resourceGroup = Get-AzResourceGroup -Name 'MyResourceGroup'
# Create the assignment using the -Location and -AssignIdentity properties
$assignment = New-AzPolicyAssignment -Name 'sqlDbTDE' -DisplayName 'Deploy SQL DB transparent data encryption' -Scope $resourceGroup.ResourceId -PolicyDefinition $policyDef -Location 'westus' -AssignIdentity
De variabele bevat nu de principal-id van de beheerde identiteit, samen met de standaardwaarden die worden geretourneerd $assignment bij het maken van een beleidstoewijzing. Deze kan worden gebruikt via $assignment.Identity.PrincipalId .
Gedefinieerde rollen verlenen met PowerShell
De nieuwe beheerde identiteit moet replicatie via een Azure Active Directory voordat de benodigde rollen kunnen worden verleend. Zodra de replicatie is voltooid, wordt in het volgende voorbeeld de beleidsdefinitie in voor $policyDef de roleDefinitionIds itereert en wordt New-AzRoleAssignment gebruikt om de nieuwe beheerde identiteit de rollen te verlenen.
# Use the $policyDef to get to the roleDefinitionIds array
$roleDefinitionIds = $policyDef.Properties.policyRule.then.details.roleDefinitionIds
if ($roleDefinitionIds.Count -gt 0)
{
$roleDefinitionIds | ForEach-Object {
$roleDefId = $_.Split("/") | Select-Object -Last 1
New-AzRoleAssignment -Scope $resourceGroup.ResourceId -ObjectId $assignment.Identity.PrincipalId -RoleDefinitionId $roleDefId
}
}
Gedefinieerde rollen verlenen via de portal
Er zijn twee manieren om de beheerde identiteit van een toewijzing de gedefinieerde rollen te verlenen via de portal, met behulp van Toegangsbeheer (IAM) of door het beleid of de initiatieftoewijzing te bewerken en Opslaan te selecteren.
Volg deze stappen om een rol toe te voegen aan de beheerde identiteit van de toewijzing:
Start de Azure Policy-service in Azure Portal door Alle services te selecteren en dan Beleid te zoeken en te selecteren.
Selecteer Toewijzingen in het linkerdeelvenster van de Azure Policy-pagina.
Zoek de toewijzing met een beheerde identiteit en selecteer de naam.
Zoek de eigenschap Toewijzings-id op de pagina Bewerken. De toewijzings-id ziet er als de volgende uit:
/subscriptions/{subscriptionId}/resourceGroups/PolicyTarget/providers/Microsoft.Authorization/policyAssignments/2802056bfc094dfb95d4d7a5De naam van de beheerde identiteit is het laatste gedeelte van de toewijzingsresource-id,
2802056bfc094dfb95d4d7a5in dit voorbeeld. Kopieer dit gedeelte van de resource-id van de toewijzing.Navigeer naar de resource of de bovenliggende container resources (resourcegroep, abonnement, beheergroep) die de roldefinitie handmatig moet toevoegen.
Selecteer de koppeling Toegangsbeheer (IAM) op de pagina resources en selecteer vervolgens + Roltoewijzing toevoegen bovenaan de pagina voor toegangsbeheer.
Selecteer de juiste rol die overeenkomt met een roleDefinitionIds in de beleidsdefinitie. Laat Toegang toewijzen ingesteld op de standaardwaarde 'Azure AD-gebruiker, -groep of -toepassing'. Plak of typ in het vak Selecteren het gedeelte van de toewijzingsresource-id dat u eerder hebt gevonden. Zodra de zoekopdracht is voltooid, selecteert u het object met dezelfde naam om ID te selecteren en selecteert u Opslaan.
Een hersteltaak maken
Een hersteltaak maken via de portal
Tijdens de evaluatie bepaalt de beleidstoewijzing met de effecten deployIfNotExists of modify of er niet-compatibele resources of abonnementen zijn. Wanneer niet-compatibele resources of abonnementen worden gevonden, vindt u de details op de pagina Herstel. Samen met de lijst met beleidsregels die niet-compatibele resources of abonnementen hebben, is de optie om een hersteltaak te activeren. Met deze optie maakt u een implementatie op basis van de sjabloon deployIfNotExists of de wijzigingsbewerkingen.
Volg deze stappen om een hersteltaak te maken:
Start de Azure Policy-service in Azure Portal door Alle services te selecteren en dan Beleid te zoeken en te selecteren.
Selecteer Herstel aan de linkerkant van de Azure Policy pagina.
Alle deployIfNotExists en het wijzigen van beleidstoewijzingen met niet-compatibele resources zijn opgenomen in het tabblad Beleid om het tabblad en de gegevenstabel te herstellen. Selecteer een beleid met resources die niet compatibel zijn. De pagina Nieuwe hersteltaak wordt geopend.
Notitie
Een andere manier om de pagina hersteltaak te openen, is door het beleid te zoeken en te selecteren op de pagina Naleving. Selecteer vervolgens de knop Hersteltaak maken.
Filter op de pagina Nieuwe hersteltaak de resources die u wilt herstellen met behulp van het beletselmiddel Bereik om onderliggende resources te kiezen van waaruit het beleid is toegewezen (inclusief de afzonderlijke resourceobjecten). Gebruik daarnaast de vervolgkeuzelijst Locaties om de resources verder te filteren. Alleen resources die in de tabel worden vermeld, worden gesaneerd.
Begin met de hersteltaak nadat de resources zijn gefilterd door Herstellen te selecteren. De pagina naleving van het beleid wordt geopend op het tabblad Hersteltaken om de status van de voortgang van de taken weer te geven. Implementaties die door de hersteltaak zijn gemaakt, beginnen meteen.
Selecteer op de pagina naleving van het beleid de hersteltaak voor meer informatie over de voortgang. Het filter dat wordt gebruikt voor de taak wordt weergegeven, samen met een lijst met de resources die worden gesaneerd.
Selecteer op de pagina Hersteltaak een resource en houd deze ingedrukt (of klik er met de rechtermuisknop op) om de implementatie van de hersteltaak of de resource weer te geven. Selecteer aan het einde van de rij Gerelateerde gebeurtenissen om details zoals een foutbericht weer te geven.
Resources die zijn geïmplementeerd via een hersteltaak, worden toegevoegd aan het tabblad Geïmplementeerde resources op de pagina beleids naleving.
Een hersteltaak maken via Azure CLI
Gebruik de opdrachten om een hersteltaak te maken met Azure az policy remediation CLI. Vervang {subscriptionId} door uw abonnements-id en {myAssignmentId} door uw deployIfNotExists of wijzig de id van de beleidstoewijzing.
# Login first with az login if not using Cloud Shell
# Create a remediation for a specific assignment
az policy remediation create --name myRemediation --policy-assignment '/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/{myAssignmentId}'
Zie de opdrachten az policy remediation voor andere herstelopdrachten en voorbeelden.
Een hersteltaak maken via Azure PowerShell
Als u een hersteltaak wilt maken met Azure PowerShell, gebruikt u de Start-AzPolicyRemediation opdrachten. Vervang {subscriptionId} door uw abonnements-id en {myAssignmentId} door uw deployIfNotExists of wijzig de id van de beleidstoewijzing.
# Login first with Connect-AzAccount if not using Cloud Shell
# Create a remediation for a specific assignment
Start-AzPolicyRemediation -Name 'myRemedation' -PolicyAssignmentId '/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/{myAssignmentId}'
Zie de module Az.PolicyInsights voor andere herstel-cmdlets en voorbeelden.
Maak een hersteltaak tijdens de beleidstoewijzing in de Azure Portal
Een gestroomlijnde manier om een hersteltaak te maken, is door dit te doen vanuit de Azure Portal tijdens de beleidstoewijzing. Als de toe te wijzen beleidsdefinitie een deployIfNotExists- of een Modify-effect is, biedt de wizard op het tabblad Herstel de optie Een hersteltaak maken. Als deze optie is geselecteerd, wordt er een hersteltaak gemaakt op hetzelfde moment als de beleidstoewijzing.
Volgende stappen
- Bekijk voorbeelden op Azure Policy voorbeelden.
- Lees over de structuur van Azure Policy-definities.
- Lees Informatie over de effecten van het beleid.
- Begrijpen hoe u programmatisch beleid kunt maken.
- Meer informatie over het op halen van nalevingsgegevens.
- Bekijk wat een beheergroep is met Uw resources organiseren met Azure-beheergroepen.