Modyfikowanie efektu definicji usługi Azure Policy
Efekt jest używany do dodawania modify
, aktualizowania lub usuwania właściwości lub tagów w subskrypcji lub zasobie podczas tworzenia lub aktualizowania. Typowym przykładem jest aktualizowanie tagów zasobów, takich jak costCenter. Istniejące niezgodne zasoby można skorygować za pomocą zadania korygowania. Pojedyncza reguła Modyfikuj może mieć dowolną liczbę operacji. Przypisania zasad z ustawionym efektem jako Modyfikuj wymagają tożsamości zarządzanej do korygowania.
Efekt modify
obsługuje następujące operacje:
- Dodawanie, zastępowanie lub usuwanie tagów zasobów. W przypadku tagów zasady Modyfikowanie powinny mieć ustawiony
indexed
tryb, chyba że zasób docelowy jest grupą zasobów. - Dodaj lub zastąp wartość typu tożsamości zarządzanej (
identity.type
) maszyn wirtualnych i zestawów skalowania maszyn wirtualnych. Można modyfikowaćidentity.type
tylko dla maszyn wirtualnych lub zestawów skalowania maszyn wirtualnych. - Dodaj lub zastąp wartości niektórych aliasów.
- Użyj programu
Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }
Azure PowerShell w wersji 4.6.0 lub nowszej, aby uzyskać listę aliasów, których można używać zmodify
programem .
- Użyj programu
Ważne
Jeśli zarządzasz tagami, zaleca się użycie opcji Modyfikuj zamiast dołączania jako Modyfikuj zapewnia więcej typów operacji i możliwość korygowania istniejących zasobów. Jednak funkcja Append jest zalecana, jeśli nie możesz utworzyć tożsamości zarządzanej lub opcja Modyfikuj nie obsługuje jeszcze aliasu dla właściwości zasobu.
Modyfikowanie oceny
Zmodyfikuj ocenę przed przetworzeniem żądania przez dostawcę zasobów podczas tworzenia lub aktualizowania zasobu. Operacje modify
są stosowane do zawartości żądania po if
spełnieniu warunku reguły zasad. Każda modify
operacja może określać warunek, który określa, kiedy jest stosowany. Operacje z ocenami warunków fałszywych są pomijane.
Po określeniu aliasu więcej kontroli jest wykonywanych, aby upewnić się, że modify
operacja nie zmienia zawartości żądania w sposób, który powoduje odrzucenie go przez dostawcę zasobów:
- Właściwość mapowania aliasu na jest oznaczona jako Modyfikowalna w wersji interfejsu API żądania.
- Typ tokenu
modify
w operacji jest zgodny z oczekiwanym typem tokenu dla właściwości w wersji interfejsu API żądania.
Jeśli którykolwiek z tych testów zakończy się niepowodzeniem, ocena zasad powróci do określonego conflictEffect
elementu .
Ważne
Zaleca się modyfikowanie definicji zawierających aliasy, które używają efektu konfliktu inspekcji, aby uniknąć niepowodzeń żądań przy użyciu wersji interfejsu API, w których właściwość mapowana nie jest "modyfikowalna". Jeśli ten sam alias działa inaczej między wersjami interfejsu API, operacje modyfikowania warunkowego mogą służyć do określenia operacji używanej dla każdej wersji interfejsu modify
API.
Gdy definicja zasad używająca modify
efektu jest uruchamiana w ramach cyklu oceny, nie wprowadza zmian w już istniejących zasobach. Zamiast tego oznacza każdy zasób spełniający if
warunek jako niezgodny.
Modyfikowanie właściwości
Właściwość details
modify
efektu ma wszystkie właściwości podrzędne, które definiują uprawnienia wymagane do korygowania oraz operations
używane do dodawania, aktualizowania lub usuwania wartości tagów.
roleDefinitionIds
(wymagane)- Ta właściwość musi zawierać tablicę ciągów pasujących do identyfikatora roli kontroli dostępu opartej na rolach dostępnego dla subskrypcji. Aby uzyskać więcej informacji, zobacz Korygowanie — konfigurowanie definicji zasad.
- Zdefiniowana rola musi zawierać wszystkie operacje przyznane roli Współautor .
conflictEffect
(opcjonalnie)- Określa definicję zasad "wins", jeśli więcej niż jedna definicja zasad modyfikuje tę samą właściwość lub gdy
modify
operacja nie działa na określonym aliasie.- W przypadku nowych lub zaktualizowanych zasobów pierwszeństwo ma definicja zasad z odmową. Definicje zasad z inspekcją pomijają wszystkie
operations
. Jeśli co najmniej jedna definicja zasad ma wpływ na odmowę, żądanie zostanie odrzucone jako konflikt. Jeśli wszystkie definicje zasad mają inspekcję, żadne zoperations
definicji zasad powodujących konflikt nie są przetwarzane. - W przypadku istniejących zasobów, jeśli więcej niż jedna definicja zasad ma efekt odmowy, stan zgodności to Konflikt. Jeśli co najmniej jedna definicja zasad ma efekt odmowy, każde przypisanie zwraca stan zgodności Niezgodne.
- W przypadku nowych lub zaktualizowanych zasobów pierwszeństwo ma definicja zasad z odmową. Definicje zasad z inspekcją pomijają wszystkie
- Dostępne wartości: inspekcja, odmowa, wyłączone.
- Wartość domyślna to odmowa.
- Określa definicję zasad "wins", jeśli więcej niż jedna definicja zasad modyfikuje tę samą właściwość lub gdy
operations
(wymagane)- Tablica wszystkich operacji tagów, które mają zostać ukończone na odpowiednich zasobach.
- Właściwości:
operation
(wymagane)field
(wymagane)- Tag do dodawania, zastępowania lub usuwania. Nazwy tagów muszą być zgodne z tą samą konwencją nazewnictwa dla innych pól.
value
(opcjonalnie)- Wartość, na która ma być ustawiony tag.
- Ta właściwość jest wymagana, jeśli
operation
jest addOrReplace lub Add.
condition
(opcjonalnie)
Modyfikowanie operacji
Tablica operations
właściwości umożliwia zmianę kilku tagów na różne sposoby z jednej definicji zasad. Każda operacja składa się z operation
właściwości , field
i value
. Określa operation
, jakie zadanie korygowania wykonuje w tagach, field
określa, który tag jest zmieniany, i value
definiuje nowe ustawienie dla tego tagu. W poniższym przykładzie wprowadzono następujące zmiany tagu:
environment
Ustawia tag na "Test", nawet jeśli już istnieje z inną wartością.- Usuwa tag
TempResource
. Dept
Ustawia tag na parametr zasad DeptName skonfigurowany w przypisaniu zasad.
"details": {
...
"operations": [
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "Test"
},
{
"operation": "Remove",
"field": "tags['TempResource']",
},
{
"operation": "addOrReplace",
"field": "tags['Dept']",
"value": "[parameters('DeptName')]"
}
]
}
Właściwość operation
ma następujące opcje:
Działanie | opis |
---|---|
addOrReplace |
Dodaje zdefiniowaną właściwość lub tag i wartość do zasobu, nawet jeśli właściwość lub tag już istnieje z inną wartością. |
add |
Dodaje zdefiniowaną właściwość lub tag i wartość do zasobu. |
remove |
Usuwa zdefiniowaną właściwość lub tag z zasobu. |
Modyfikowanie przykładów
Przykład 1: Dodaj environment
tag i zastąp istniejące environment
tagi ciągiem "Test":
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"operations": [
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "Test"
}
]
}
}
Przykład 2: Usuń env
tag i dodaj environment
tag lub zastąp istniejące environment
tagi wartością sparametryzowaną:
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"conflictEffect": "deny",
"operations": [
{
"operation": "Remove",
"field": "tags['env']"
},
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "[parameters('tagValue')]"
}
]
}
}
Przykład 3: Upewnij się, że konto magazynu nie zezwala na publiczny dostęp do obiektu blob, modify
operacja jest stosowana tylko podczas oceniania żądań przy użyciu wersji interfejsu API nowszej lub równej 2019-04-01
:
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab"
],
"conflictEffect": "audit",
"operations": [
{
"condition": "[greaterOrEquals(requestContext().apiVersion, '2019-04-01')]",
"operation": "addOrReplace",
"field": "Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
"value": false
}
]
}
}
Następne kroki
- Zapoznaj się z przykładami w przykładach usługi Azure Policy.
- Przejrzyj temat Struktura definicji zasad Azure Policy.
- Dowiedz się, jak programowo tworzyć zasady.
- Dowiedz się, jak uzyskać dane zgodności.
- Dowiedz się, jak korygować niezgodne zasoby.
- Przejrzyj grupy zarządzania platformy Azure.