Struktura przypisań usługi Azure Policy
Przypisania zasad definiują, które zasoby są oceniane przez definicję zasad lub inicjatywę. Ponadto przypisanie zasad może określić wartości parametrów dla tej grupy zasobów w czasie przypisania, co umożliwia ponowne użycie definicji zasad, które odpowiadają tym samym właściwościom zasobu z różnymi potrzebami w zakresie zgodności.
Aby utworzyć przypisanie zasad, należy użyć notacji obiektów Języka JavaScript (JSON). Przypisanie zasad zawiera elementy dla:
- zakres
- identyfikator definicji zasad i wersja
- nazwa wyświetlana
- opis
- metadane
- selektory zasobów
- Zastępuje
- tryb wymuszania
- wykluczone zakresy
- komunikaty o niezgodności
- parameters
- tożsamość
Na przykład poniższy kod JSON przedstawia przykładowe żądanie przypisania zasad w trybie DoNotEnforce z parametrami:
{
"properties": {
"displayName": "Enforce resource naming rules",
"description": "Force resource names to begin with DeptA and end with -LC",
"definitionVersion": "1.*.*",
"metadata": {
"assignedBy": "Cloud Center of Excellence"
},
"enforcementMode": "DoNotEnforce",
"notScopes": [],
"policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
"nonComplianceMessages": [
{
"message": "Resource names must start with 'DeptA' and end with '-LC'."
}
],
"parameters": {
"prefix": {
"value": "DeptA"
},
"suffix": {
"value": "-LC"
}
},
"identity": {
"type": "SystemAssigned"
},
"resourceSelectors": [],
"overrides": []
}
}
Scope
Zakres używany do czasu tworzenia zasobów przypisania jest głównym czynnikiem stosowania zasobów. Aby uzyskać więcej informacji na temat zakresu przypisania, zobacz Omówienie zakresu w usłudze Azure Policy.
Identyfikator definicji zasad i wersja (wersja zapoznawcza)
To pole musi być pełną nazwą ścieżki definicji zasad lub definicji inicjatywy. Jest policyDefinitionId
to ciąg, a nie tablica. Najnowsza zawartość przypisanej definicji lub inicjatywy zasad jest pobierana za każdym razem, gdy przypisanie zasad jest oceniane. Zaleceniem jest to, że jeśli wiele zasad jest często przypisanych razem, zamiast tego należy użyć inicjatywy .
W przypadku wbudowanych definicji i inicjatyw można użyć określonych definitionVersion
elementów do oceny. Domyślnie wersja jest ustawiona na najnowszą wersję główną oraz automatyczne pozyskiwanie drobnych i poprawek.
- Aby automatycznie pozyskiwać wszelkie drobne zmiany definicji, numer wersji to
#.*.*
. Symbol wieloznaczny reprezentuje aktualizacje automatycznego pozyskiwania. - Aby przypiąć do ścieżki wersji pomocniczej, format wersji to
#.#.*
. - Wszystkie zmiany poprawek muszą być automatycznie pozyskiwane na potrzeby zabezpieczeń. Zmiany poprawek są ograniczone do zmian tekstu i scenariuszy rozbijania szkła.
Nazwa wyświetlana i opis
Służy element displayName
i description
do identyfikowania przypisania zasad i zapewniania kontekstu do jego użycia z określonym zestawem zasobów. displayName
ma maksymalną długość 128 znaków i description
maksymalną długość 512 znaków.
Metadane
Opcjonalna metadata
właściwość przechowuje informacje o przypisaniu zasad. Klienci mogą definiować dowolne właściwości i wartości przydatne dla swojej organizacji w programie metadata
. Istnieją jednak pewne typowe właściwości używane przez usługę Azure Policy. Każda metadata
właściwość ma limit 1024 znaków.
Typowe właściwości metadanych
assignedBy
(ciąg): przyjazna nazwa podmiotu zabezpieczeń, który utworzył przypisanie.createdBy
(ciąg): identyfikator GUID podmiotu zabezpieczeń, który utworzył przypisanie.createdOn
(ciąg): uniwersalny format daty i godziny utworzenia przypisania ISO 8601.updatedBy
(ciąg): przyjazna nazwa podmiotu zabezpieczeń, który zaktualizował przypisanie, jeśli istnieje.updatedOn
(ciąg): uniwersalny format daty i godziny aktualizacji przydziału ISO 8601, jeśli istnieje.
Właściwości metadanych specyficznych dla scenariusza
parameterScopes
(obiekt): kolekcja par klucz-wartość, w których klucz pasuje do nazwy parametru skonfigurowanego strongType, a wartość definiuje zakres zasobów używany w portalu w celu udostępnienia listy dostępnych zasobów przez dopasowanie strongType. Portal ustawia tę wartość, jeśli zakres jest inny niż zakres przypisania. W przypadku ustawienia edytuj przypisanie zasad w portalu automatycznie ustawia zakres parametru na tę wartość. Jednak zakres nie jest zablokowany dla wartości i można go zmienić na inny zakres.Poniższy przykład dotyczy parametru
parameterScopes
strongType o nazwiebackupPolicyId
, który ustawia zakres wyboru zasobów, gdy przypisanie jest edytowane w portalu."metadata": { "parameterScopes": { "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}" } }
evidenceStorages
(obiekt): zalecane domyślne konto magazynu, które powinno być używane do przechowywania dowodów na potrzeby zaświadczania do przypisań zasad zmanual
efektem. WłaściwośćdisplayName
jest nazwą konta magazynu. WłaściwośćevidenceStorageAccountID
jest identyfikatorem zasobu konta magazynu. WłaściwośćevidenceBlobContainer
to nazwa kontenera obiektów blob, w którym planujesz przechowywać dowody.{ "properties": { "displayName": "A contingency plan should be in place to ensure operational continuity for each Azure subscription.", "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/{definitionId}", "metadata": { "evidenceStorages": [ { "displayName": "Default evidence storage", "evidenceStorageAccountId": "/subscriptions/{subscriptionId}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}", "evidenceBlobContainer": "evidence-container" } ] } } }
Selektory zasobów
Opcjonalna resourceSelectors
właściwość ułatwia bezpieczne praktyki wdrażania (SDP), umożliwiając stopniowe wdrażanie przypisań zasad na podstawie czynników, takich jak lokalizacja zasobu, typ zasobu lub czy zasób ma lokalizację. Gdy selektory zasobów są używane, usługa Azure Policy ocenia tylko zasoby, które mają zastosowanie do specyfikacji wykonanych w selektorach zasobów. Selektory zasobów mogą również służyć do zawężania zakresu wykluczeń w ten sam sposób.
W poniższym przykładowym scenariuszu nowe przypisanie zasad jest oceniane tylko wtedy, gdy lokalizacja zasobu to Wschodnie stany USA lub Zachodnie stany USA.
{
"properties": {
"policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
"definitionVersion": "1.1.*",
"resourceSelectors": [
{
"name": "SDPRegions",
"selectors": [
{
"kind": "resourceLocation",
"in": [
"eastus",
"westus"
]
}
]
}
]
},
"systemData": { ...
},
"id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
"type": "Microsoft.Authorization/policyAssignments",
"name": "ResourceLimit"
}
Gdy wszystko będzie gotowe do rozwinięcia zakresu oceny dla zasad, wystarczy zaktualizować przypisanie. W poniższym przykładzie przedstawiono przypisanie zasad z dwoma kolejnymi regionami świadczenia usługi Azure dodanymi do selektora SDPRegions . Należy pamiętać, że w tym przykładzie protokół SDP oznacza bezpieczną praktykę wdrażania:
{
"properties": {
"policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
"definitionVersion": "1.1.*",
"resourceSelectors": [
{
"name": "SDPRegions",
"selectors": [
{
"kind": "resourceLocation",
"in": [
"eastus",
"westus",
"centralus",
"southcentralus"
]
}
]
}
]
},
"systemData": { ...
},
"id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
"type": "Microsoft.Authorization/policyAssignments",
"name": "ResourceLimit"
}
Selektory zasobów mają następujące właściwości:
name
: nazwa selektora zasobów.selectors
: (Opcjonalnie) Właściwość użyta do określenia, który podzbiór zasobów mających zastosowanie do przypisania zasad powinien zostać oceniony pod kątem zgodności.kind
: właściwość selektora, która opisuje, która cecha zawęża zestaw ocenianych zasobów. Każdy rodzaj może być używany tylko raz w jednym selektorze zasobów. Dozwolone wartości to:resourceLocation
: Ta właściwość służy do wybierania zasobów na podstawie ich typu. Nie można używać w tym samym selektorze zasobów coresourceWithoutLocation
.resourceType
: Ta właściwość służy do wybierania zasobów na podstawie ich typu.resourceWithoutLocation
: Ta właściwość służy do wybierania zasobów na poziomie subskrypcji, które nie mają lokalizacji. Obecnie obsługuje tylko programsubscriptionLevelResources
. Nie można używać w tym samym selektorze zasobów coresourceLocation
.
in
: lista dozwolonych wartości dla określonegokind
elementu . Nie można używać znotIn
programem . Może zawierać maksymalnie 50 wartości.notIn
: lista niedozwolonych wartości dla określonegokind
elementu . Nie można używać zin
programem . Może zawierać maksymalnie 50 wartości.
Selektor zasobów może zawierać wiele selectors
elementów . Aby mieć zastosowanie do selektora zasobów, zasób musi spełniać wymagania określone przez wszystkie jego selektory. Ponadto w jednym przypisaniu można określić maksymalnie 10 resourceSelectors
. Zasoby w zakresie są oceniane, gdy spełniają one jedną z tych selektorów zasobów.
Przesłonięcia
Opcjonalna overrides
właściwość umożliwia zmianę efektu definicji zasad bez zmieniania podstawowej definicji zasad lub używania sparametryzowanego efektu w definicji zasad.
Typowym przypadkiem użycia przesłonięć w efekcie są inicjatywy zasad z dużą liczbą skojarzonych definicji zasad. W takiej sytuacji zarządzanie wieloma skutkami zasad może zużywać znaczne nakłady pracy administracyjnej, zwłaszcza gdy efekt musi zostać zaktualizowany od czasu do czasu. Przesłonięcia mogą służyć do jednoczesnego aktualizowania efektów wielu definicji zasad w ramach inicjatywy.
Przyjrzyjmy się przykładowi. Wyobraź sobie, że masz inicjatywę zasad o nazwie CostManagement, która zawiera niestandardową definicję zasad z policyDefinitionReferenceId
corpVMSizePolicy i jednym efektem audit
. Załóżmy, że chcesz przypisać inicjatywę CostManagement , ale nie chcesz jeszcze widzieć zgodności zgłoszonej dla tych zasad. Efekt tej zasady audit
można zastąpić disabled
za pomocą przesłonięcia przypisania inicjatywy, jak pokazano w poniższym przykładzie:
{
"properties": {
"policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policySetDefinitions/CostManagement",
"overrides": [
{
"kind": "policyEffect",
"value": "disabled",
"selectors": [
{
"kind": "policyDefinitionReferenceId",
"in": [
"corpVMSizePolicy"
]
}
]
}
]
},
"systemData": { ...
},
"id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
"type": "Microsoft.Authorization/policyAssignments",
"name": "CostManagement"
}
Innym typowym przypadkiem użycia przesłonięć jest wdrożenie nowej wersji definicji. Aby uzyskać zalecane kroki dotyczące bezpiecznego aktualizowania wersji przypisania, zobacz Bezpieczne wdrażanie zasad.
Przesłonięcia mają następujące właściwości:
kind
: właściwość, która zastępuje przypisanie. Obsługiwane rodzaje topolicyEffect
ipolicyVersion
.value
: nowa wartość, która zastępuje istniejącą wartość. W przypadkukind: policyEffect
elementu obsługiwane wartości to efekty. W przypadkukind: policyVersion
parametru obsługiwany numer wersji musi być większy lub równydefinitionVersion
określonej w przypisaniu.selectors
: (Opcjonalnie) Właściwość używana do określania zakresu przypisania zasad powinna zostać zastosowana do przesłonięcia.kind
: właściwość selektora, która opisuje, która cecha zawęża zakres przesłonięcia. Dozwolone wartości dla elementukind: policyEffect
:policyDefinitionReferenceId
: Ta właściwość określa, które definicje zasad w ramach przypisania inicjatywy powinny mieć zastosowanie przesłonięcia efektu.resourceLocation
: Ta właściwość służy do wybierania zasobów na podstawie ich typu. Nie można używać w tym samym selektorze zasobów coresourceWithoutLocation
.
Dozwolona wartość dla elementu
kind: policyVersion
:resourceLocation
: Ta właściwość służy do wybierania zasobów na podstawie ich typu. Nie można używać w tym samym selektorze zasobów coresourceWithoutLocation
.
in
: lista dozwolonych wartości dla określonegokind
elementu . Nie można używać znotIn
programem . Może zawierać maksymalnie 50 wartości.notIn
: lista niedozwolonych wartości dla określonegokind
elementu . Nie można używać zin
programem . Może zawierać maksymalnie 50 wartości.
Jedno przesłonięcia może służyć do zastępowania efektu wielu zasad przez określenie wielu wartości w tablicy policyDefinitionReferenceId
. Pojedyncze przesłonięcia mogą być używane dla maksymalnie 50 policyDefinitionReferenceId
, a pojedyncze przypisanie zasad może zawierać maksymalnie 10 przesłonięć, obliczonych w kolejności, w której zostały określone. Przed utworzeniem przypisania efekt wybrany w przesłonięciu jest weryfikowany względem reguły zasad i listy dozwolonych wartości parametrów (w przypadkach, gdy efekt jest sparametryzowany).
Tryb wymuszania
Właściwość enforcementMode
zapewnia klientom możliwość testowania wyniku zasad w istniejących zasobach bez inicjowania efektu zasad lub wyzwalania wpisów w dzienniku aktywności platformy Azure.
Ten scenariusz jest często określany jako What If i jest zgodny z bezpiecznymi praktykami wdrażania. Efekt enforcementMode
różni się od efektu Disabled (Wyłączone), ponieważ całkowicie uniemożliwia ocenę zasobów.
Ta właściwość ma następujące wartości:
Tryb | Wartość JSON | Typ | Korygowanie ręczne | Wpis dziennika aktywności | Opis |
---|---|---|---|---|---|
Enabled (Włączony) | Domyślny | ciąg | Tak | Tak | Efekt zasad jest wymuszany podczas tworzenia lub aktualizowania zasobów. |
Disabled | DoNotEnforce | ciąg | Tak | Nie | Efekt zasad nie jest wymuszany podczas tworzenia lub aktualizowania zasobów. |
Jeśli enforcementMode
nie określono wartości w definicji zasad lub inicjatywy, zostanie użyta wartość Domyślna . Zadania korygowania można uruchomić dla zasad deployIfNotExists , nawet jeśli enforcementMode
jest ustawiona na DoNotEnforce.
Wykluczone zakresy
Zakres przypisania obejmuje wszystkie kontenery zasobów podrzędnych i zasoby podrzędne. Jeśli kontener zasobów podrzędnych lub zasób podrzędny nie powinien mieć zastosowanej definicji, każdy z nich można wykluczyć z oceny, ustawiając wartość notScopes
. Ta właściwość jest tablicą umożliwiającą wykluczenie co najmniej jednego kontenera zasobów lub zasobów z oceny. notScopes
można dodać lub zaktualizować po utworzeniu przypisania początkowego.
Uwaga
Wykluczony zasób różni się od wykluczonego zasobu. Aby uzyskać więcej informacji, zobacz Omówienie zakresu w usłudze Azure Policy.
Komunikaty o niezgodności
Aby ustawić niestandardowy komunikat opisujący, dlaczego zasób jest niezgodny z definicją zasad lub inicjatywy, ustaw nonComplianceMessages
w definicji przypisania. Ten węzeł jest tablicą message
wpisów. Ten niestandardowy komunikat jest dodatkiem do domyślnego komunikatu o błędzie dla niezgodności i jest opcjonalny.
Ważne
Niestandardowe komunikaty dotyczące niezgodności są obsługiwane tylko w definicjach lub inicjatywach z definicjami trybów usługi Resource Manager.
"nonComplianceMessages": [
{
"message": "Default message"
}
]
Jeśli przypisanie jest przeznaczone dla inicjatywy, różne komunikaty można skonfigurować dla każdej definicji zasad w inicjatywie. Komunikaty używają policyDefinitionReferenceId
wartości skonfigurowanej w definicji inicjatywy. Aby uzyskać więcej informacji, zobacz właściwości definicji zasad.
"nonComplianceMessages": [
{
"message": "Default message"
},
{
"message": "Message for just this policy definition by reference ID",
"policyDefinitionReferenceId": "10420126870854049575"
}
]
Parametry
Ten segment przypisania zasad zawiera wartości parametrów zdefiniowanych w definicji zasad lub definicji inicjatywy. Ten projekt umożliwia ponowne użycie definicji zasad lub inicjatywy z różnymi zasobami, ale sprawdzenie różnych wartości biznesowych lub wyników.
"parameters": {
"prefix": {
"value": "DeptA"
},
"suffix": {
"value": "-LC"
}
}
W tym przykładzie parametry zdefiniowane wcześniej w definicji zasad to prefix
i suffix
. To konkretne przypisanie zasad ustawia prefix
wartość DeptA i suffix
-LC. Ta sama definicja zasad jest wielokrotnego użytku z innym zestawem parametrów dla innego działu, co zmniejsza duplikację i złożoność definicji zasad przy jednoczesnym zapewnieniu elastyczności.
Tożsamość
W przypadku przypisań zasad z ustawieniem deployIfNotExists
efektu lub modify
wymaganie posiadania właściwości tożsamości w celu korygowania niezgodnych zasobów. Gdy przypisanie używa tożsamości, użytkownik musi również określić lokalizację przypisania.
Uwaga
Pojedyncze przypisanie zasad może być skojarzone tylko z jedną tożsamością zarządzaną przypisaną przez system lub użytkownika. Jednak w razie potrzeby można przypisać tę tożsamość więcej niż jedną rolę.
# System-assigned identity
"identity": {
"type": "SystemAssigned"
}
# User-assigned identity
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/SubscriptionID/resourceGroups/{rgName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
}
},
Następne kroki
- Dowiedz się więcej o strukturze definicji zasad.
- Dowiedz się, jak programowo tworzyć zasady.
- Dowiedz się, jak uzyskać dane zgodności.
- Dowiedz się, jak korygować niezgodne zasoby.
- Sprawdź, co to jest grupa zarządzania za pomocą funkcji Organizowanie zasobów przy użyciu grup zarządzania platformy Azure.