Struktura definicji inicjatywy usługi Azure Policy
Inicjatywy umożliwiają grupowanie kilku powiązanych definicji zasad w celu uproszczenia przypisań i zarządzania, ponieważ pracujesz z grupą jako pojedynczy element. Na przykład można grupować powiązane definicje zasad tagowania w jedną inicjatywę. Zamiast przypisywać poszczególne zasady indywidualnie, należy zastosować inicjatywę.
Kod JSON służy do tworzenia definicji inicjatywy zasad. Definicja inicjatywy zasad zawiera elementy dla:
- nazwa wyświetlana
- description (opis)
- metadane
- version
- parameters
- definicje zasad
- grupy zasad (ta właściwość jest częścią funkcji Zgodności z przepisami (wersja zapoznawcza)
W poniższym przykładzie pokazano, jak utworzyć inicjatywę obsługi dwóch tagów: costCenter
i productName
. Używa dwóch wbudowanych zasad, aby zastosować domyślną wartość tagu.
{
"properties": {
"displayName": "Billing Tags Policy",
"policyType": "Custom",
"description": "Specify cost Center tag and product name tag",
"version" : "1.0.0",
"metadata": {
"version": "1.0.0",
"category": "Tags"
},
"parameters": {
"costCenterValue": {
"type": "String",
"metadata": {
"description": "required value for Cost Center tag"
},
"defaultValue": "DefaultCostCenter"
},
"productNameValue": {
"type": "String",
"metadata": {
"description": "required value for product Name tag"
},
"defaultValue": "DefaultProduct"
}
},
"policyDefinitions": [{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
"definitionVersion": "1.*.*"
"parameters": {
"tagName": {
"value": "costCenter"
},
"tagValue": {
"value": "[parameters('costCenterValue')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
"parameters": {
"tagName": {
"value": "costCenter"
},
"tagValue": {
"value": "[parameters('costCenterValue')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
"parameters": {
"tagName": {
"value": "productName"
},
"tagValue": {
"value": "[parameters('productNameValue')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
"parameters": {
"tagName": {
"value": "productName"
},
"tagValue": {
"value": "[parameters('productNameValue')]"
}
}
}
]
}
}
Wbudowane i wzorce usługi Azure Policy znajdują się w przykładach usługi Azure Policy.
Metadane
Opcjonalna metadata
właściwość przechowuje informacje o definicji inicjatywy 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 i wbudowane.
Typowe właściwości metadanych
version
(ciąg): śledzi szczegółowe informacje o wersji zawartości definicji inicjatywy zasad. W przypadku wbudowanych wersji metadanych ta wersja metadanych jest zgodna z właściwością wersji wbudowanej. Zaleca się używanie właściwości version dla tej wersji metadanych.category
(ciąg): określa, w której kategorii w witrynie Azure Portal jest wyświetlana definicja zasad.Uwaga
W przypadku inicjatywy
category
zgodności z przepisami musi to być zgodność z przepisami.preview
(wartość logiczna): prawda lub fałsz flagi, jeśli definicja inicjatywy zasad jest w wersji zapoznawczej.deprecated
(wartość logiczna): prawda lub fałsz flagi, jeśli definicja inicjatywy zasad została oznaczona jako przestarzała.
Wersja (wersja zapoznawcza)
Wbudowane inicjatywy zasad mogą hostować wiele wersji z tą samą wersją definitionID
. Jeśli nie określono numeru wersji, wszystkie środowiska będą wyświetlać najnowszą wersję definicji. Aby wyświetlić określoną wersję wbudowanej, należy ją określić w interfejsie API, zestawie SDK lub interfejsie użytkownika. Aby odwołać się do określonej wersji definicji w ramach przypisania, zobacz wersję definicji w ramach przypisania
Usługa Azure Policy używa version
właściwości , preview
i deprecated
do przekazywania stanu i poziomu zmiany do wbudowanej definicji lub inicjatywy zasad. Format to version
: {Major}.{Minor}.{Patch}
. Gdy definicja zasad jest w stanie podglądu, podgląd sufiksu jest dołączany do version
właściwości i traktowany jako wartość logiczna. Gdy definicja zasad jest przestarzała, wycofanie jest przechwytywane jako wartość logiczna w metadanych definicji przy użyciu polecenia "deprecated": "true"
.
- Wersja główna (przykład: 2.0.0): wprowadzanie zmian powodujących niezgodność, takich jak główne zmiany logiki reguł, usuwanie parametrów, dodawanie efektu wymuszania domyślnie.
- Wersja pomocnicza (przykład: 2.1.0): wprowadzanie zmian, takich jak drobne zmiany logiki reguł, dodawanie nowych wartości dozwolonych parametrów, zmienianie identyfikatorów definicji ról, dodawanie lub usuwanie definicji w ramach inicjatywy.
- Wersja poprawki (na przykład: 2.1.4): wprowadzenie zmian ciągu lub metadanych i scenariuszy zabezpieczeń szklenia (rzadko).
Wbudowane inicjatywy są wersjonowane, a konkretne wersje wbudowanych definicji zasad można również odwoływać się w ramach wbudowanych lub niestandardowych inicjatyw. Aby uzyskać więcej informacji, zobacz definicję odwołania i wersje.
Podczas tworzenia inicjatywy za pośrednictwem portalu w wersji zapoznawczej nie będzie można określić wersji wbudowanych odwołań definicji zasad. Wszystkie wbudowane odwołania do zasad w inicjatywach niestandardowych utworzonych za pośrednictwem portalu będą domyślne dla najnowszej wersji definicji zasad.
Aby uzyskać więcej informacji na temat wbudowanych wersji usługi Azure Policy, zobacz Wbudowane przechowywanie wersji. Aby dowiedzieć się więcej na temat tego, co oznacza, że zasady mają być przestarzałe lub w wersji zapoznawczej, zobacz Zasady w wersji zapoznawczej i przestarzałe.
Parametry
Parametry ułatwiają zarządzanie zasadami przez zredukowanie liczby definicji zasad. Pomyśl o parametrach, takich jak pola w formularzu — name
, , address
city
, state
. Te parametry zawsze pozostają takie same, jednak ich wartości zmieniają się w oparciu o poszczególne wypełnianie formularza.
Parametry działają tak samo podczas tworzenia inicjatyw zasad. Uwzględniając parametry w definicji inicjatywy zasad, można ponownie użyć tego parametru w uwzględnionych zasadach.
Uwaga
Po przypisaniu inicjatywy nie można zmienić parametrów poziomu inicjatywy. W związku z tym zaleceniem jest ustawienie wartości domyślnej podczas definiowania parametru.
Właściwości parametru
Parametr ma następujące właściwości, które są używane w definicji inicjatywy zasad:
name
: nazwa parametru. Używane przezparameters
funkcję wdrażania w regule zasad. Aby uzyskać więcej informacji, zobacz używanie wartości parametru.type
: określa, czy parametr jest ciągiem, tablicą, obiektem, wartością logiczną, liczbą całkowitą, zmiennoprzecinkową lub datą/godziną.metadata
: Definiuje właściwości podrzędne używane głównie przez witrynę Azure Portal do wyświetlania przyjaznych dla użytkownika informacji:description
: (Opcjonalnie) Wyjaśnienie, dla którego parametru jest używany. Może służyć do podawania przykładów dopuszczalnych wartości.displayName
: przyjazna nazwa wyświetlana w portalu dla parametru .strongType
: (Opcjonalnie) Używane podczas przypisywania definicji zasad za pośrednictwem portalu. Udostępnia listę z rozpoznawaniem kontekstu. Aby uzyskać więcej informacji, zobacz strongType.
defaultValue
: (Opcjonalnie) Ustawia wartość parametru w przypisaniu, jeśli żadna wartość nie jest podana.allowedValues
: (Opcjonalnie) Udostępnia tablicę wartości akceptowanych przez parametr podczas przypisywania.
Na przykład można zdefiniować definicję inicjatywy zasad, aby ograniczyć lokalizacje zasobów w różnych uwzględnionych definicjach zasad. Parametr dla tej definicji inicjatywy zasad może być dozwolonyLokalizacja. Parametr jest następnie dostępny dla każdej dołączonej definicji zasad i zdefiniowany podczas przypisywania inicjatywy zasad.
"parameters": {
"init_allowedLocations": {
"type": "array",
"metadata": {
"description": "The list of allowed locations for resources.",
"displayName": "Allowed locations",
"strongType": "location"
},
"defaultValue": [ "westus2" ],
"allowedValues": [
"eastus2",
"westus2",
"westus"
]
}
}
Przekazywanie wartości parametru do definicji zasad
Deklarujesz, które parametry inicjatywy są przekazywane do których zawarte definicje zasad w tablicy policyDefinitions definicji inicjatywy. Chociaż nazwa parametru może być taka sama, użycie różnych nazw w inicjatywach niż w definicjach zasad upraszcza czytelność kodu.
Na przykład parametr inicjatywy init_allowedLocations zdefiniowany wcześniej można przekazać do kilku dołączonych definicji zasad i ich parametrów, sql_locations i vm_locations, w następujący sposób:
"policyDefinitions": [
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/0ec8fc28-d5b7-4603-8fec-39044f00a92b",
"policyDefinitionReferenceId": "allowedLocationsSQL",
"parameters": {
"sql_locations": {
"value": "[parameters('init_allowedLocations')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/aa09bd0f-aa5f-4343-b6ab-a33a6a6304f3",
"policyDefinitionReferenceId": "allowedLocationsVMs",
"parameters": {
"vm_locations": {
"value": "[parameters('init_allowedLocations')]"
}
}
}
]
Ten przykład odwołuje się do parametru init_allowedLocations , który został przedstawiony we właściwościach parametru.
strongType
W ramach metadata
właściwości można użyć metody strongType , aby udostępnić listę opcji wielokrotnego wyboru w witrynie Azure Portal. strongType może być obsługiwanym typem zasobu lub dozwoloną wartością. Aby określić, czy typ zasobu jest prawidłowy dla elementu strongType, użyj polecenia Get-AzResourceProvider.
Obsługiwane są niektóre typy zasobów, które nie są zwracane przez polecenie Get-AzResourceProvider . Te typy zasobów to:
Microsoft.RecoveryServices/vaults/backupPolicies
Dozwolone wartości typu innego niż zasób dla parametru strongType to:
location
resourceTypes
storageSkus
vmSKUs
existingResourceGroups
Definicje zasad
Część policyDefinitions
definicji inicjatywy to tablica , której istniejące definicje zasad są zawarte w inicjatywie. Jak wspomniano w artykule Przekazywanie wartości parametru do definicji zasad, ta właściwość to miejsce, w którym parametry inicjatywy są przekazywane do definicji zasad.
Właściwości definicji zasad
Każdy element tablicy reprezentujący definicję zasad ma następujące właściwości:
policyDefinitionId
(ciąg): identyfikator niestandardowej lub wbudowanej definicji zasad do uwzględnienia.policyDefinitionReferenceId
(ciąg): krótka nazwa dołączonej definicji zasad.parameters
: (Opcjonalnie) Pary nazw/wartości do przekazywania parametru inicjatywy do dołączonej definicji zasad jako właściwości w tej definicji zasad. Aby uzyskać więcej informacji, zobacz Parametry.definitionVersion
: (Opcjonalnie) Wersja wbudowanej definicji do odwoływania się do. Jeśli żadna z nich nie zostanie określona, odwołuje się do najnowszej wersji głównej w czasie przypisania i automatycznego pozyskiwania wszelkich aktualizacji pomocniczych. Aby uzyskać więcej informacji, zobacz wersję definicjigroupNames
(tablica ciągów): (opcjonalnie) Grupa, do których należy definicja zasad. Aby uzyskać więcej informacji, zobacz Grupy zasad.
Oto przykład policyDefinitions
z dwóch uwzględnionych definicji zasad, które są przekazywane tego samego parametru inicjatywy:
"policyDefinitions": [
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/0ec8fc28-d5b7-4603-8fec-39044f00a92b",
"policyDefinitionReferenceId": "allowedLocationsSQL",
"definitionVersion": "1.2.*"
"parameters": {
"sql_locations": {
"value": "[parameters('init_allowedLocations')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/aa09bd0f-aa5f-4343-b6ab-a33a6a6304f3",
"policyDefinitionReferenceId": "allowedLocationsVMs",
"parameters": {
"vm_locations": {
"value": "[parameters('init_allowedLocations')]"
}
}
}
]
Grupy definicji zasad
Definicje zasad w definicji inicjatywy można grupować i kategoryzować. Funkcja zgodności z przepisami (wersja zapoznawcza) usługi Azure Policy używa tej właściwości do grupowania definicji w domenach kontroli i zgodności. Te informacje są definiowane policyDefinitionGroups
we właściwości tablicy . Więcej szczegółów grupowania można znaleźć w obiekcie policyMetadata utworzonym przez firmę Microsoft. Aby uzyskać informacje, zobacz obiekty metadanych.
Parametry grup definicji zasad
Każdy element tablicy w policyDefinitionGroups
pliku musi mieć obie następujące właściwości:
name
(ciąg) [required]: krótka nazwa grupy. W obszarze Zgodność z przepisami kontrolka. Wartość tej właściwości jest używana przezgroupNames
element w plikupolicyDefinitions
.category
(ciąg): hierarchia, do którego należy grupa. W obszarze Zgodność z przepisami domena zgodności kontrolki.displayName
(ciąg): przyjazna nazwa grupy lub kontrolki. Używany przez portal.description
(ciąg): opis tego, co obejmuje grupa lub kontrolka.additionalMetadataId
(ciąg): lokalizacja obiektu policyMetadata, który zawiera dodatkowe szczegóły dotyczące domeny kontroli i zgodności.Uwaga
Klienci mogą wskazywać istniejący obiekt policyMetadata . Jednak te obiekty są tylko do odczytu i tworzone tylko przez firmę Microsoft.
Przykład policyDefinitionGroups
właściwości z wbudowanej definicji inicjatywy NIST wygląda następująco:
"policyDefinitionGroups": [
{
"name": "NIST_SP_800-53_R4_AC-1",
"additionalMetadataId": "/providers/Microsoft.PolicyInsights/policyMetadata/NIST_SP_800-53_R4_AC-1"
}
]
Obiekty metadanych
Wbudowane funkcje zgodności z przepisami utworzone przez firmę Microsoft zawierają dodatkowe informacje o każdej kontroli. Te informacje są następujące:
- Wyświetlane w witrynie Azure Portal w przeglądzie kontrolki dotyczącej inicjatywy zgodności z przepisami.
- Dostępne za pośrednictwem interfejsu API REST. Zobacz dostawcę
Microsoft.PolicyInsights
zasobów i grupę operacji policyMetadata. - Dostępne za pośrednictwem interfejsu wiersza polecenia platformy Azure. Zobacz polecenie az policy metadata.
Ważne
Obiekty metadanych zgodności z przepisami są tylko do odczytu i nie mogą być tworzone przez klientów.
Metadane grupowania zasad zawierają następujące informacje w węźle properties
:
metadataId
: Identyfikator kontrolki, do którego odnosi się grupowanie.category
(wymagane): domena zgodności, do którego należy kontrolka.title
(wymagane): przyjazna nazwa identyfikatora kontrolki.owner
(wymagane): określa, kto ponosi odpowiedzialność za kontrolę na platformie Azure: Klient, Microsoft, Udostępnione.description
: Dodatkowe informacje o kontrolce.requirements
: szczegółowe informacje o odpowiedzialności za implementację kontroli.additionalContentUrl
: link do dodatkowych informacji o kontrolce. Ta właściwość jest zazwyczaj linkiem do sekcji dokumentacji, która obejmuje tę kontrolę w standardzie zgodności.
Poniżej znajduje się przykład obiektu policyMetadata . Te przykładowe metadane należą do kontrolki NIST SP 800-53 R4 AC-1 .
{
"properties": {
"metadataId": "NIST SP 800-53 R4 AC-1",
"category": "Access Control",
"title": "Access Control Policy and Procedures",
"owner": "Shared",
"description": "**The organization:** \na. Develops, documents, and disseminates to [Assignment: organization-defined personnel or roles]: \n1. An access control policy that addresses purpose, scope, roles, responsibilities, management commitment, coordination among organizational entities, and compliance; and \n2. Procedures to facilitate the implementation of the access control policy and associated access controls; and \n
\nb. Reviews and updates the current: \n1. Access control policy [Assignment: organization-defined frequency]; and \n2. Access control procedures [Assignment: organization-defined frequency].",
"requirements": "**a.** The customer is responsible for developing, documenting, and disseminating access control policies and procedures. The customer access control policies and procedures address access to all customer-deployed resources and customer system access (e.g., access to customer-deployed virtual machines, access to customer-built applications). \n**b.** The customer is responsible for reviewing and updating access control policies and procedures in accordance with FedRAMP requirements.",
"additionalContentUrl": "https://nvd.nist.gov/800-53/Rev4/control/AC-1"
},
"id": "/providers/Microsoft.PolicyInsights/policyMetadata/NIST_SP_800-53_R4_AC-1",
"name": "NIST_SP_800-53_R4_AC-1",
"type": "Microsoft.PolicyInsights/policyMetadata"
}
Następne kroki
- Zobacz strukturę definicji
- Zapoznaj się z przykładami w przykładach usługi Azure Policy.
- Przejrzyj wyjaśnienie działania 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.