Skip to content

Commit 00c9ac1

Browse files
committed
"Fixing Azrolinx Issues"
1 parent 2cda278 commit 00c9ac1

File tree

3 files changed

+31
-32
lines changed

3 files changed

+31
-32
lines changed

articles/governance/policy/concepts/effects.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ These effects are currently supported in a policy definition:
2525

2626
## Interchanging effects
2727

28-
Sometimes multiple effects can be valid for a given policy definition. Parameters are often used to specify allowed effect values so that a single definition can be more versatile. However, it is important to note that not all effects are interchangeable. Resource properties and logic in the policy rule can determine whether a cerain effect is considered valid to the policy definition. For example, policy definitions with effect **AuditIfNotExists** require additional details in the policy rule which are not required for policies with effect **Audit**. The effects also behave differently. **Audit** policies will assess a resource's compliance based on its own properties, while **AuditIfNotExists** policies will assess a resource's compliance based on a child or extension resource's properties.
28+
Sometimes multiple effects can be valid for a given policy definition. Parameters are often used to specify allowed effect values so that a single definition can be more versatile. However, it's important to note that not all effects are interchangeable. Resource properties and logic in the policy rule can determine whether a certain effect is considered valid to the policy definition. For example, policy definitions with effect **AuditIfNotExists** require additional details in the policy rule that aren't required for policies with effect **Audit**. The effects also behave differently. **Audit** policies will assess a resource's compliance based on its own properties, while **AuditIfNotExists** policies will assess a resource's compliance based on a child or extension resource's properties.
2929

30-
The following is general guidance around interchangeable effects:
30+
Below is some general guidance around interchangeable effects:
3131
- **Audit**, **Deny**, and either **Modify** or **Append** are often interchangeable.
3232
- **AuditIfNotExists** and **DeployIfNotExists** are often interchangeable.
33-
- **Manual** is not interchangeable.
33+
- **Manual** isn't interchangeable.
3434
- **Disabled** is interchangeable with any effect.
3535

3636
## Order of evaluation
@@ -162,7 +162,7 @@ definitions as `constraintTemplate` is deprecated.
162162
template. See
163163
[Create policy definition from constraint template](../how-to/extension-for-vscode.md) to
164164
create a custom definition from an existing
165-
[Open Policy Agent](https://www.openpolicyagent.org/) (OPA) GateKeeper v3
165+
[Open Policy Agent](https://www.openpolicyagent.org/) (OPA) Gatekeeper v3
166166
[constraint template](https://open-policy-agent.github.io/gatekeeper/website/docs/howto/#constraint-templates).
167167
- **constraint** (deprecated)
168168
- Can't be used with `templateInfo`.
@@ -173,7 +173,7 @@ definitions as `constraintTemplate` is deprecated.
173173
- An _array_ of
174174
[Kubernetes namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/)
175175
to limit policy evaluation to.
176-
- An empty or missing value causes policy evaluation to include all namespaces, except those
176+
- An empty or missing value causes policy evaluation to include all namespaces not
177177
defined in _excludedNamespaces_.
178178
- **excludedNamespaces** (required)
179179
- An _array_ of
@@ -374,7 +374,7 @@ definitions as `constraintTemplate` is deprecated.
374374
template. See
375375
[Create policy definition from constraint template](../how-to/extension-for-vscode.md) to
376376
create a custom definition from an existing
377-
[Open Policy Agent](https://www.openpolicyagent.org/) (OPA) GateKeeper v3
377+
[Open Policy Agent](https://www.openpolicyagent.org/) (OPA) Gatekeeper v3
378378
[constraint template](https://open-policy-agent.github.io/gatekeeper/website/docs/howto/#constraint-templates).
379379
- **constraint** (optional)
380380
- Can't be used with `templateInfo`.
@@ -693,7 +693,7 @@ The following operations are supported by Modify:
693693
- Add, replace, or remove resource tags. For tags, a Modify policy should have `mode` set to
694694
_Indexed_ unless the target resource is a resource group.
695695
- Add or replace the value of managed identity type (`identity.type`) of virtual machines and
696-
virtual machine scale sets.
696+
Virtual Machine Scale Sets.
697697
- Add or replace the values of certain aliases.
698698
- Use
699699
`Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }`
@@ -748,11 +748,11 @@ needed for remediation and the **operations** used to add, update, or remove tag
748748
- Determines which policy definition "wins" if more than one policy definition modifies the same
749749
property or when the Modify operation doesn't work on the specified alias.
750750
- For new or updated resources, the policy definition with _deny_ takes precedence. Policy
751-
definitions with _audit_ skip all **operations**. If more than one policy definition has
751+
definitions with _audit_ skip all **operations**. If more than one policy definition has the effect
752752
_deny_, the request is denied as a conflict. If all policy definitions have _audit_, then none
753753
of the **operations** of the conflicting policy definitions are processed.
754-
- For existing resources, if more than one policy definition has _deny_, the compliance status
755-
is _Conflict_. If one or fewer policy definitions have _deny_, each assignment returns a
754+
- For existing resources, if more than one policy definition has the effect _deny_, the compliance status
755+
is _Conflict_. If one or fewer policy definitions have the effect _deny_, each assignment returns a
756756
compliance status of _Non-compliant_.
757757
- Available values: _audit_, _deny_, _disabled_.
758758
- Default value is _deny_.

articles/governance/policy/concepts/policy-applicability.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ author: timwarner-msft
88
---
99
# What is applicability in Azure Policy?
1010

11-
When a policy definition is assigned to a scope, Azure Policy determines which resources in that scope should be considered for compliance evaluation. A resource will only be assessed for compliance if it is considered **applicable** to the given policy assignment.
11+
When a policy definition is assigned to a scope, Azure Policy determines which resources in that scope should be considered for compliance evaluation. A resource will only be assessed for compliance if it's considered **applicable** to the given policy assignment.
1212

1313
Applicability is determined by several factors:
1414
- **Conditions** in the `if` block of the [policy rule](../concepts/definition-structure.md#policy-rule).
@@ -21,7 +21,7 @@ Condition(s) in the `if` block of the policy rule are evaluated for applicabilit
2121
> [!NOTE]
2222
> Applicability is different from compliance, and the logic used to determine each is different. If a resource is **applicable** that means it is relevant to the policy. If a resource is **compliant** that means it adheres to the policy. Sometimes only certain conditions from the policy rule impact applicability, while all conditions of the policy rule impact compliance state.
2323
24-
## Applicability logic for resource manager modes
24+
## Applicability logic for Resource Manager modes
2525

2626
### Append, Audit, Manual, Modify and Deny policy effects
2727

@@ -31,21 +31,21 @@ Following are special cases to the previously described applicability logic:
3131

3232
|Scenario |Result |
3333
|---------|---------|
34-
|Any invalid aliases in the `if` conditions |The policy is not applicable |
34+
|Any invalid aliases in the `if` conditions |The policy isn't applicable |
3535
|When the `if` conditions consist of only `kind` conditions |The policy is applicable to all resources |
3636
|When the `if` conditions consist of only `name` conditions |The policy is applicable to all resources |
3737
|When the `if` conditions consist of only `type` and `kind` or `type` and `name` conditions |Only type conditions are considered when deciding applicability |
38-
|When any conditions (including deployment parameters) include a `location` condition |Will not be applicable to subscriptions |
38+
|When any conditions (including deployment parameters) include a `location` condition |Won't be applicable to subscriptions |
3939

4040
### AuditIfNotExists and DeployIfNotExists policy effects
4141

42-
The applicability of `AuditIfNotExists` and `DeployIfNotExists` policies is based off the entire `if` condition of the policy rule. When the `if` evaluates to false, the policy is not applicable.
42+
The applicability of `AuditIfNotExists` and `DeployIfNotExists` policies is based off the entire `if` condition of the policy rule. When the `if` evaluates to false, the policy isn't applicable.
4343

4444
## Applicability logic for resource provider modes
4545

4646
### Microsoft.Kubernetes.Data
4747

48-
The applicability of `Microsoft.Kubernetes.Data` policies is based off the entire `if` condition of the policy rule. When the `if` evaluates to false, the policy is not applicable.
48+
The applicability of `Microsoft.Kubernetes.Data` policies is based off the entire `if` condition of the policy rule. When the `if` evaluates to false, the policy isn't applicable.
4949

5050
### Microsoft.KeyVault.Data
5151

articles/governance/policy/how-to/get-compliance-data.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ ms.author: timwarner
1010

1111
One of the largest benefits of Azure Policy is the insight and controls it provides over resources
1212
in a subscription or [management group](../../management-groups/overview.md) of subscriptions. This
13-
control can be exercised in many different ways, such as preventing resources being created in the
14-
wrong location, enforcing common and consistent tag usage, or auditing existing resources for
13+
control can be used to prevent resources from being created in the
14+
wrong location, enforce common and consistent tag usage, or audit existing resources for
1515
appropriate configurations and settings. In all cases, data is generated by Azure Policy to enable
1616
you to understand the compliance state of your environment.
1717

@@ -40,10 +40,9 @@ operations of the Azure Policy Insights REST API, see
4040
Evaluations of assigned policies and initiatives happen as the result of various events:
4141

4242
- A policy or initiative is newly assigned to a scope. It takes around five minutes for the assignment
43-
to be applied to the defined scope. Once it's applied, the evaluation cycle begins for resources
44-
within that scope against the newly assigned policy or initiative and depending on the effects
45-
used by the policy or initiative, resources are marked as compliant, non-compliant, or exempt. A
46-
large policy or initiative evaluated against a large scope of resources can take time. As such,
43+
to be applied to the defined scope, then the evaluation cycle begins for applicable resources against the newly assigned policy or initiative. Depending on the effects
44+
used, resources are marked as compliant, non-compliant, exempt, or unknown. A
45+
large policy or initiative evaluated against a large scope of resources can take time, so
4746
there's no pre-defined expectation of when the evaluation cycle completes. Once it completes,
4847
updated compliance results are available in the portal and SDKs.
4948

@@ -96,7 +95,7 @@ to trigger an on-demand evaluation scan from your
9695
[GitHub workflow](https://docs.github.com/actions/configuring-and-managing-workflows/configuring-a-workflow#about-workflows)
9796
on one or multiple resources, resource groups, or subscriptions, and gate the workflow based on the
9897
compliance state of resources. You can also configure the workflow to run at a scheduled time so
99-
that you get the latest compliance status at a convenient time. Optionally, this GitHub Actions can
98+
that you get the latest compliance status at a convenient time. Optionally, GitHub Actions can
10099
generate a report on the compliance state of scanned resources for further analysis or for
101100
archiving.
102101

@@ -249,7 +248,7 @@ Azure Policy supports the following compliance states:
249248

250249
### Compliant and non-compliant states
251250

252-
In an assignment, a resource is **non-compliant** if it is applicable to the policy assignment and does not adhere to conditions in the policy rule. The following table shows how different policy effects work with the condition evaluation for the resulting compliance state:
251+
In an assignment, a resource is **non-compliant** if it's applicable to the policy assignment and doesn't adhere to conditions in the policy rule. The following table shows how different policy effects work with the condition evaluation for the resulting compliance state:
253252

254253
| Resource State | Effect | Policy Evaluation | Compliance State |
255254
| --- | --- | --- | --- |
@@ -274,7 +273,7 @@ For example, assume that you have a resource group - ContsoRG, with some storage
274273

275274
In this example, you need to be wary of security risks. Now that you've created a policy assignment,
276275
it's evaluated for all included and non-exempt storage accounts in the ContosoRG resource group. It
277-
audits the three non-compliant storage accounts, consequently changing their states to
276+
audits the three non-compliant storage accounts, changing their states to
278277
**Non-compliant.**
279278

280279
:::image type="complex" source="../media/getting-compliance-data/resource-group03.png" alt-text="Diagram of storage account compliance in the Contoso R G resource group." border="false":::
@@ -302,7 +301,7 @@ Besides **Compliant** and **Non-compliant**, policies and resources have four ot
302301
Azure Policy relies on several factors to determine whether a resource is considered [applicable](../concepts/policy-applicability.md), then to determine its compliance state.
303302

304303
The compliance percentage is determined by dividing **Compliant**, **Exempt**, and **Unknown** resources by _total
305-
resources_. _Total resources_ is defined as the sum of the **Compliant**, **Non-compliant**,
304+
resources_. _Total resources_ include **Compliant**, **Non-compliant**,
306305
**Exempt**, and **Conflicting** resources. The overall compliance numbers are the sum of distinct
307306
resources that are **Compliant**, **Exempt**, and **Unknown** divided by the sum of all distinct resources. In the
308307
image below, there are 20 distinct resources that are applicable and only one is **Non-compliant**.
@@ -315,7 +314,7 @@ The overall resource compliance is 95% (19 out of 20).
315314
> pages in portal are different for enabled initiatives. For more information, see
316315
> [Regulatory Compliance](../concepts/regulatory-compliance.md)
317316

318-
### Compliance roll up
317+
### Compliance rollup
319318

320319
There are several ways to view aggregated compliance results:
321320

@@ -335,7 +334,7 @@ So how is the aggregate compliance state determined if multiple resources or pol
335334

336335
This means that if there are both non-compliant and compliant states, the rolled up aggregate would be non-compliant, and so on. Let's look at an example.
337336

338-
Assume an initiative contains 10 policies, and a resource is exempt from one policy but compliant to the remaining nine. Because a compliant state has a higher rank than an exempted state, the resource would register as compliant in the rolled-up summary of the initiative. So, a resource will only show as exempt for the entire initiative if it is exempt from, or has unknown compliance to, every other single applicable policy in that initiative. On the other extreme, if the resource is non-compliant to at least one applicable policy in the initiative, it will have an overall compliance state of non-compliant, regardless of the remaining applicable policies.
337+
Assume an initiative contains 10 policies, and a resource is exempt from one policy but compliant to the remaining nine. Because a compliant state has a higher rank than an exempted state, the resource would register as compliant in the rolled-up summary of the initiative. So, a resource will only show as exempt for the entire initiative if it's exempt from, or has unknown compliance to, every other single applicable policy in that initiative. On the other extreme, if the resource is non-compliant to at least one applicable policy in the initiative, it will have an overall compliance state of non-compliant, regardless of the remaining applicable policies.
339338

340339
## Portal
341340

@@ -374,7 +373,7 @@ history.
374373
Back on the resource compliance page, select and hold (or right-click) on the row of the event you
375374
would like to gather more details on and select **Show activity logs**. The activity log page opens
376375
and is pre-filtered to the search showing details for the assignment and the events. The activity
377-
log provides additional context and information about those events.
376+
log provides more context and information about those events.
378377

379378
:::image type="content" source="../media/getting-compliance-data/compliance-activitylog.png" alt-text="Screenshot of the Activity Log for Azure Policy activities and evaluations." border="false":::
380379

@@ -392,7 +391,7 @@ Use ARMClient or a similar tool to handle authentication to Azure for the REST A
392391

393392
### Summarize results
394393

395-
With the REST API, summarization can be performed by container, definition, or assignment. Here is
394+
With the REST API, summarization can be performed by container, definition, or assignment. Here's
396395
an example of summarization at the subscription level using Azure Policy Insight's [Summarize For
397396
Subscription](/rest/api/policy/policystates/summarizeforsubscription):
398397

@@ -404,7 +403,7 @@ The output summarizes the subscription. In the example output below, the summari
404403
under **value.results.nonCompliantResources** and **value.results.nonCompliantPolicies**. This
405404
request provides further details, including each assignment that made up the non-compliant numbers
406405
and the definition information for each assignment. Each policy object in the hierarchy provides a
407-
**queryResultsUri** that can be used to get additional detail at that level.
406+
**queryResultsUri** that can be used to get more detail at that level.
408407

409408
```json
410409
{
@@ -443,7 +442,7 @@ and the definition information for each assignment. Each policy object in the hi
443442
### Query for resources
444443

445444
In the example above, **value.policyAssignments.policyDefinitions.results.queryResultsUri** provides
446-
a sample URI for all non-compliant resources for a specific policy definition. Looking at the
445+
a sample URI for all non-compliant resources for a specific policy definition. In the
447446
**$filter** value, ComplianceState is equal (eq) to 'NonCompliant', PolicyAssignmentId is specified
448447
for the policy definition, and then the PolicyDefinitionId itself. The reason for including the
449448
PolicyAssignmentId in the filter is because the PolicyDefinitionId could exist in several policy or

0 commit comments

Comments
 (0)