@@ -195,39 +195,45 @@ TBD
195
195
196
196
### [ PowerShell] ( #tab/Powershell )
197
197
198
- $subscriptionId = "d0567c0b-5849-4a5d-a2eb-5267eae1bbc7";
198
+
199
+ 1 . Set up your environemnt variables
200
+ ``` azurepowershell
201
+ # Set up your environment variables.
202
+ $subscriptionId = <your subscription ID>;
203
+ $rg = Get-AzResourceGroup -Name <your resource group name>;
199
204
Select-AzSubscription $subscriptionId;
200
- $groupName= "ed-ps-initiative-03";
201
- $rg = Get-AzResourceGroup -Name $groupName;
202
- $definition = Get-AzPolicySetDefinition |Where-Object ResourceID -eq /providers/Microsoft.Authorization/policySetDefinitions/f5b29bc4-feca-4cc6-a58a-772dd5e290a5;
203
- $assignmentName="assign-ps-initiative-03-03";
204
- $params = @{"logAnalytics"="/subscriptions/$subscriptionId/resourcegroups/$($rg.ResourceGroupName)/providers/microsoft.operationalinsights/workspaces/ed-psi-02-workspace"}
205
- $policyAssignment=Get-AzPolicyAssignment -Name $assignmentName -Scope "/subscriptions/$subscriptionId/resourcegroups/$($rg.ResourceGroupName)";
205
+ $logAnlayticsWorskspaceId=</subscriptions/$subscriptionId/resourcegroups/$rg.ResourceGroupName/providers/microsoft.operationalinsights/workspaces/<your log analytics workspace>>;
206
206
207
+ # Get the initiative defintion. In this example we'll use Initiative *Enable audit category group resource logging for supported resources to Log Analytics*, ResourceID "/providers/Microsoft.Authorization/policySetDefinitions/f5b29bc4-feca-4cc6-a58a-772dd5e290a5"
208
+ $definition = Get-AzPolicySetDefinition |Where-Object ResourceID -eq /providers/Microsoft.Authorization/policySetDefinitions/f5b29bc4-feca-4cc6-a58a-772dd5e290a5;
207
209
210
+ #Set an assignment name and configure parameters. For this initiative, the parameters include the Log Analytics workspace id.
211
+ $assignmentName=<your assignment name>;
212
+ $params = @{"logAnalytics"="/subscriptions/$subscriptionId/resourcegroups/$($rg.ResourceGroupName)/providers/microsoft.operationalinsights/workspaces/<your log analytics workspace>"}
213
+ # Assign the initiative using the parameters
208
214
$policyAssignment=New-AzPolicyAssignment -Name $assignmentName -Scope $rg.ResourceId -PolicySetDefinition $definition -PolicyparameterObject $params -IdentityType 'SystemAssigned' -Location eastus;
209
215
210
-
216
+ # Assign the `Contributor` role to the system assigned Managed Identity. For other initiatives, check which roles are required.
211
217
New-AzRoleAssignment -Scope $rg.ResourceId -ObjectId $policyAssignment.Identity.PrincipalId -RoleDefinitionName Contributor;
212
218
213
-
219
+ #Scan for policy compliance. The `Start-AzPolicyComplianceScan` command takes a few minutes to return
214
220
Start-AzPolicyComplianceScan -ResourceGroupName $rg.ResourceGroupName;
215
221
#$policyAssignment=Get-AzPolicyAssignment -Name $assignmentName -Scope "/subscriptions/$subscriptionId/resourcegroups/$($rg.ResourceGroupName)";
216
222
217
- $assignmentState=Get-AzPolicyState -PolicyAssignmentName $assignmentName -ResourceGroupName $rg.ResourceGroupName
218
-
219
- $policyAssignmentId=$assignmentState.PolicyAssignmentId[ 0]
220
-
221
- $policyDefinitionReferenceIds=$assignmentState.PolicyDefinitionReferenceId
223
+ #Get a list of resources to remediate and the required parameters by calling `Get-AzPolicyState`
224
+ $assignmentState=Get-AzPolicyState -PolicyAssignmentName $assignmentName -ResourceGroupName $rg.ResourceGroupName;
225
+ $policyAssignmentId=$assignmentState.PolicyAssignmentId[0];
226
+ $policyDefinitionReferenceIds=$assignmentState.PolicyDefinitionReferenceId;
222
227
228
+ #For each resource type with non-compliant resources, start a remediation task.
223
229
$policyDefinitionReferenceIds | ForEach-Object {
224
230
$referenceId = $_
225
- Start-AzPolicyRemediation -ResourceGroupName $rg.ResourceGroupName -PolicyAssignmentId $policyAssignmentId -PolicyDefinitionReferenceId $referenceId -Name "$($rg.ResourceGroupName) remediation $referenceId"
231
+ Start-AzPolicyRemediation -ResourceGroupName $rg.ResourceGroupName -PolicyAssignmentId $policyAssignmentId -PolicyDefinitionReferenceId $referenceId -Name "$($rg.ResourceGroupName) remediation $referenceId";
226
232
}
227
233
228
-
234
+ #Check the compliance state when the remediation tasks have completed.
229
235
Get-AzPolicyState -PolicyAssignmentName $assignmentName -ResourceGroupName $rg.ResourceGroupName|select-object IsCompliant , ResourceID
230
-
236
+ ```
231
237
232
238
233
239
## Remediation tasks
0 commit comments