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
  • 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",
        "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",
                "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.

  • 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.

Uwaga

Usługa Azure Policy używa versionwłaściwości , previewi deprecated do przekazywania poziomu zmiany do wbudowanej definicji zasad lub inicjatywy i stanu. Format to version : {Major}.{Minor}.{Patch}. Określone stany, takie jak przestarzałe lub podgląd, są dołączane do version właściwości lub w innej właściwości jako wartość logiczna. Aby uzyskać więcej informacji na temat sposobu wbudowanych wersji usługi Azure Policy, zobacz Wbudowane przechowywanie wersji.

Parametry

Parametry ułatwiają zarządzanie zasadami przez zredukowanie liczby definicji zasad. Pomyśl o parametrach, takich jak pola w formularzu — name, , addresscity, 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 przez parameters 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.
  • groupNames (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",
        "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 policyDefinitionGroupswe 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 przez groupNames element w pliku policyDefinitions.

  • 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