Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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. Istniejące niezgodne zasoby można również skorygować za pomocą zadania korygowania. Przypisania zasad z ustawionym efektem jako Modyfikuj wymagają tożsamości zarządzanej do korygowania. Typowym przykładem użycia modify efektu jest aktualizowanie tagów dla zasobów, takich jak "costCenter".
Istnieją pewne niuanse dotyczące zachowania modyfikacji właściwości zasobu. Dowiedz się więcej o scenariuszach pomijania modyfikacji.
modify Pojedyncza reguła może mieć dowolną liczbę operacji. Obsługiwane operacje to:
- Dodawanie, zastępowanie lub usuwanie tagów zasobów. Można usuwać tylko tagi. W przypadku tagów zasady Modyfikowanie powinny mieć , 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.typetylko 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ć zmodifyprogramem .
- Użyj programu
Important
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.
Po określeniu aliasu wykonywana jest więcej kontroli, 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
modifyw 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 conflictEffectelementu .
Important
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.
Pominięte modyfikacje
W niektórych przypadkach operacje modyfikowania są pomijane podczas oceny:
-
Istniejące zasoby: jeśli definicja zasad korzystająca z
modifyefektu jest uruchamiana w ramach cyklu oceny, nie wprowadza zmian w zasobach, które już istnieją. Zamiast tego oznacza każdy zasób spełniającyifwarunek jako niezgodny, dzięki czemu można je skorygować za pomocą zadania korygowania. -
Nie dotyczy: jeśli warunek operacji w
operationstablicy jest obliczany na wartość false, ta konkretna operacja jest pomijana. -
Nie można modyfikować właściwości: jeśli alias określony dla operacji nie można modyfikować w wersji interfejsu API żądania, ocena używa efektu konfliktu. Jeśli efekt konfliktu zostanie ustawiony na odmowę, żądanie zostanie zablokowane. Jeśli efekt konfliktu został ustawiony na inspekcję, żądanie jest dozwolone, ale
modifyoperacja jest pomijana. -
Właściwość nie istnieje: jeśli właściwość nie istnieje w ładunku zasobu żądania, modyfikacja może zostać pominięta. W niektórych przypadkach właściwości modyfikowalne są zagnieżdżone w innych właściwościach i mają alias taki jak
Microsoft.Storage/storageAccounts/blobServices/deleteRetentionPolicy.enabled. Jeśli właściwość "nadrzędna", w tym przypadkudeleteRetentionPolicy, nie jest obecna w żądaniu, modyfikacja jest pomijana, ponieważ zakłada się, że ta właściwość zostanie pominięta celowo. W praktycznym przykładzie przejdź do sekcji Przykład właściwości, która nie istnieje. -
Operacja tożsamości bez maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych: jeśli operacja modyfikowania próbuje dodać lub zamienić
identity.typepole na zasób inny niż maszyna wirtualna lub zestaw skalowania maszyn wirtualnych, ocena zasad jest całkowicie pomijana, więc modyfikacja nie jest wykonywana. W takim przypadku zasób jest uznawany za nie dotyczy zasad.
Przykład właściwości, która nie istnieje
Modyfikacja właściwości zasobu zależy od żądania interfejsu API i zaktualizowanego ładunku zasobu. Ładunek może zależeć od używanego klienta, takiego jak witryna Azure Portal, i innych czynników, takich jak dostawca zasobów.
Załóżmy, że stosujesz zasady modyfikujące tagi na maszynie wirtualnej. Za każdym razem, gdy maszyna wirtualna jest aktualizowana, na przykład podczas zmiany rozmiaru lub dysku, tagi są odpowiednio aktualizowane niezależnie od zawartości ładunku maszyny wirtualnej. Dzieje się tak, ponieważ tagi są niezależne od właściwości maszyny wirtualnej.
Jeśli jednak zastosujesz zasady modyfikujące właściwości na maszynie wirtualnej, modyfikacja zależy od ładunku zasobu. Jeśli spróbujesz zmodyfikować właściwości, które nie są uwzględnione w ładunku aktualizacji, modyfikacja nie zostanie podjęta. Na przykład może się to zdarzyć podczas stosowania poprawek assessmentMode właściwości maszyny wirtualnej (aliasu Microsoft.Compute/virtualMachines/osProfile.windowsConfiguration.patchSettings.assessmentMode). Właściwość jest "zagnieżdżona", więc jeśli jej właściwości nadrzędne nie są uwzględnione w żądaniu, zakłada się, że pominięcie jest zamierzone, a modyfikacja zostanie pominięta. Aby wprowadzić modyfikację, ładunek zasobu powinien zawierać ten kontekst.
Modyfikowanie właściwości
Właściwość detailsmodify 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 obejmować wszystkie operacje przyznane roli Współtwórca/Współtwórca tagu.
-
conflictEffect(opcjonalnie)- Określa definicję zasad "wins", jeśli więcej niż jedna definicja zasad modyfikuje tę samą właściwość lub gdy
modifyoperacja 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 zoperationsdefinicji 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.
- Properties:
-
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
operationjest 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 operationwłaściwości , fieldi 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:
-
environmentUstawia tag na "Test", nawet jeśli już istnieje z inną wartością. - Usuwa tag
TempResource. -
DeptUstawia 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:
| Operation | Description |
|---|---|
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 zdefiniowany tag z zasobu. Obsługiwane tylko w przypadku tagów. |
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
}
]
}
}
Dalsze 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.