Struktur von Azure Policy-Initiativendefinitionen

Mithilfe von Initiativen können Sie mehrere verwandte Richtliniendefinitionen gruppieren, um Zuweisungen und das Verwalten zu vereinfachen, indem Sie mit einer Gruppe als einzelnes Element arbeiten. Beispielsweise können Sie zusammengehörige Richtliniendefinitionen zum Markieren in einer einzelnen Initiative gruppieren. Anstatt jede Richtlinie einzeln zuzuweisen, wenden Sie die Initiative an.

Eine Richtlinieninitiativendefinition wird mithilfe von JSON erstellt. Die Richtlinieninitiativendefinition enthält Elemente für Folgendes:

Im folgenden Beispiel wird veranschaulicht, wie eine Initiative zur Behandlung der Tags costCenter und productName erstellt werden kann. Es werden zwei integrierte Richtlinien verwendet, um den Standardtagwert anzuwenden.

{
    "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')]"
                    }
                }
            }
        ]
    }
}

Integrierte Richtlinien und Muster von Azure Policy finden Sie unter Azure Policy-Beispiele.

Metadaten

In der optionalen metadata-Eigenschaft werden Informationen zur Richtlinieninitiativendefinition gespeichert. Kunden können alle für ihre Organisation nützlichen Eigenschaften und Werte in metadata definieren. Es gibt jedoch einige allgemeine Eigenschaften, die von Azure Policy und integrierten Richtlinien verwendet werden.

Allgemeine Metadateneigenschaften

  • version (Zeichenfolge): Verfolgt Details zur Version des Inhalts einer Richtlinieninitiativendefinition nach.

  • category (Zeichenfolge): Legt fest, unter welcher Kategorie im Azure-Portal die Richtliniendefinition angezeigt wird.

    Hinweis

    Bei einer Initiative zur Einhaltung gesetzlicher Bestimmungen muss category auf Einhaltung gesetzlicher Bestimmungen festgelegt sein.

  • preview (Boolescher Wert): Flag mit einem der Werte TRUE oder FALSE, das anzeigt, ob sich die Richtlinieninitiativendefinition in der Vorschauphase befindet.

  • deprecated (Boolescher Wert): Flag mit einem der Werte TRUE oder FALSE, das anzeigt, ob die Richtlinieninitiativendefinition als veraltet markiert wurde.

Hinweis

Der Azure Policy-Dienst verwendet die Eigenschaften version, preview und deprecated, um den Grad der Änderung einer integrierten Richtliniendefinition oder Initiative und einen Status zu übermitteln. Das Format von version ist {Major}.{Minor}.{Patch}. Bestimmte Zustände, z. B. veraltet oder Vorschau, werden der version-Eigenschaft angehängt oder in eine andere Eigenschaft als boolescher Wert eingefügt. Weitere Informationen zu der Methodik, mit der Azure Policy die Versionen integrierter Richtlinien verwaltet, finden Sie unter Built-in versioning (Versionsverwaltung für integrierte Richtlinien).

Parameter

Parameter vereinfachen Ihre Richtlinienverwaltung, indem sie die Anzahl von Richtliniendefinitionen reduzieren. Diese Parameter verhalten sich wie Felder in einem Formular: name, address, city, state. Diese Parameter bleiben immer gleich, allerdings ändern sich ihre Werte auf Grundlage der Einträge des Einzelnen. Parameter funktionieren beim Erstellen von Richtlinieninitiativen genauso. Wenn Sie Parameter in eine Richtlinieninitiativendefinition einschließen, können Sie sie in den enthaltenen Richtlinien wiederverwenden.

Hinweis

Sobald eine Initiative zugewiesen wurde, können die Parameter der Initiativenebene nicht mehr geändert werden. Aus diesem Grund wird empfohlen, bei der Definition des Parameters einen defaultValue festzulegen.

Parametereigenschaften

Ein Parameter weist die folgenden Eigenschaften auf, die in der Richtlinieninitiativendefinition verwendet werden:

  • name: Der Name des Parameters. Wird in der Richtlinienregel von der Bereitstellungsfunktion parameters verwendet. Weitere Informationen finden Sie unter Verwenden eines Parameterwerts.
  • type: Bestimmt, ob der Parameter eine Zeichenfolge, ein Array, ein Objekt, ein boolescher Wert, eine ganze Zahl oder vom Typ float oder datetime ist.
  • metadata: Definiert untergeordnete Eigenschaften, die hauptsächlich vom Azure-Portal verwendet werden, um benutzerfreundliche Informationen anzuzeigen:
    • description (optional): Die Erläuterung des Zwecks des Parameters. Kann verwendet werden, um Beispiele zulässiger Werte bereitzustellen.
    • displayName: Der Anzeigename des Parameters im Portal.
    • strongType: (Optional) Wird verwendet, wenn die Richtliniendefinition über das Portal zugewiesen wird. Bietet eine kontextbezogene Liste. Weitere Informationen finden Sie unter strongType.
  • defaultValue: (Optional) Legt den Wert des Parameters in einer Zuweisung fest, wenn kein Wert angegeben ist.
  • allowedValues: (Optional) Stellt ein Array von Werten bereit, die der Parameter bei der Zuweisung akzeptiert.

Beispielsweise können Sie eine Richtlinieninitiativendefinition erstellen, um die Speicherorte von Ressourcen in den verschiedenen enthaltenen Richtliniendefinitionen einzuschränken. Ein Parameter für diese Richtlinieninitiativendefinition kann allowedLocations heißen. Der-Parameter ist dann für jede enthaltene Richtliniendefinition verfügbar und wird bei der Zuweisung der Richtlinieninitiative definiert.

"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"
        ]
    }
}

Übergeben eines Parameterwerts an eine Richtliniendefinition

Sie deklarieren, welche Initiativenparameter Sie an welche Richtliniendefinitionen im Array policyDefinitions der Initiativendefinition übergeben. Der Parametername kann identisch sein, durch die Verwendung unterschiedlicher Namen in den Initiativen als in den Richtliniendefinitionen wird jedoch die Lesbarkeit des Codes verbessert.

Der zuvor definierte Initiativenparameter init_allowedLocations kann beispielsweise wie folgt an mehrere enthaltene Richtliniendefinitionen und ihre Parameter sql_locations und vm_locations übergeben werden:

"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')]"
            }
        }
    }
]

In diesem Beispiel wird auf den Parameter init_allowedLocations verwiesen, der unter Parametereigenschaften vorgestellt wurde.

strongType

Innerhalb der metadata-Eigenschaft können Sie mit strongType im Azure-Portal eine Liste der Optionen mit Mehrfachauswahl angeben. strongType kann ein unterstützter Ressourcentyp oder ein zulässiger Wert sein. Verwenden Sie Get-AzResourceProvider, um festzustellen, ob ein Ressourcentyp für strongType zulässig ist.

Es werden einige Ressourcentypen unterstützt, die von Get-AzResourceProvider nicht zurückgegeben werden. Diese Ressourcentypen sind:

  • Microsoft.RecoveryServices/vaults/backupPolicies

Die zulässigen Werte für strongType, die keine Ressourcentypen sind, umfassen:

  • location
  • resourceTypes
  • storageSkus
  • vmSKUs
  • existingResourceGroups

Richtliniendefinitionen

Der Teil policyDefinitions der Initiativendefinition ist ein Array, dessen vorhandene Richtliniendefinitionen in der Initiative enthalten sind. Wie in Übergeben eines Parameterwerts an eine Richtliniendefinition beschrieben, werden über diese Eigenschaft Initiativenparameter an die Richtliniendefinition übergeben.

Eigenschaften von Richtliniendefinitionen

Jedes Arrayelement, das eine Richtliniendefinition darstellt, weist die folgenden Eigenschaften auf:

  • policyDefinitionId (Zeichenfolge): Die ID der benutzerdefinierten oder integrierten Richtliniendefinition, die eingeschlossen werden soll.
  • policyDefinitionReferenceId (Zeichenfolge): Ein Kurzname für die enthaltene Richtliniendefinition.
  • parameters: (Optional:) Die Name-Wert-Paare für die Übergabe eines Initiativenparameters an die enthaltene Richtliniendefinition als Eigenschaft in dieser Richtliniendefinition. Weitere Informationen finden Sie unter Parameter.
  • groupNames (Array von Zeichenfolgen): (Optional:) Die Gruppe, in der die Richtliniendefinition ein Mitglied ist. Weitere Informationen finden Sie unter Richtliniengruppen.

Im Folgenden finden Sie ein Beispiel für policyDefinitions mit zwei enthaltenen Richtliniendefinitionen, an die jeweils derselbe Initiativenparameter übergeben wird:

"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')]"
            }
        }
    }
]

Richtliniendefinitionsgruppen

Richtliniendefinitionen in einer Initiativdefinition können gruppiert und kategorisiert werden. Die Azure Policy-Funktion Einhaltung gesetzlicher Bestimmungen (Vorschauversion) verwendet diese Eigenschaft zum Gruppieren von Definitionen in Kontrollen und Compliancedomänen. Diese Informationen sind in der ArrayeigenschaftpolicyDefinitionGroups definiert. Weitere Gruppierungsdetails finden Sie in einem von Microsoft erstellten policyMetadata-Objekt. Weitere Informationen finden Sie unter Metadatenobjekte.

Parameter von Richtliniendefinitionsgruppen

Jedes Arrayelement in policyDefinitionGroups muss die beiden folgenden Eigenschaften aufweisen:

  • name (Zeichenfolge) [erforderlich]: Der Kurzname der Gruppe. Bei der Einhaltung gesetzlicher Bestimmungen die Kontrolle. Der Wert dieser Eigenschaft wird von groupNames in policyDefinitions verwendet.

  • category (Zeichenfolge): Die Hierarchie, der die Gruppe angehört. Bei der Einhaltung gesetzlicher Bestimmungen die Compliancedomäne der Kontrolle.

  • displayName (Zeichenfolge): Der Anzeigename für die Gruppe oder Kontrolle. Wird im Portal verwendet.

  • description (Zeichenfolge): Eine Beschreibung des Umfangs der Gruppe oder Kontrolle.

  • additionalMetadataId (Zeichenfolge): Der Speicherort des policyMetadata-Objekts, das weitere Details zur Kontrolle und zur Compliancedomäne enthält.

    Hinweis

    Kunden können auf ein vorhandenes policyMetadata-Objekt verweisen. Diese Objekte sind jedoch schreibgeschützt und werden nur von Microsoft erstellt.

Ein Beispiel für die policyDefinitionGroups-Eigenschaft aus der vordefinierten NIST-Initiativendefinition sieht wie folgt aus:

"policyDefinitionGroups": [
    {
        "name": "NIST_SP_800-53_R4_AC-1",
        "additionalMetadataId": "/providers/Microsoft.PolicyInsights/policyMetadata/NIST_SP_800-53_R4_AC-1"
    }
]

Metadatenobjekte

Die von Microsoft erstellten integrierten Richtlinien zur Einhaltung gesetzlicher Bestimmungen enthalten zusätzliche Informationen zu den einzelnen Kontrollen. Für diese Informationen gilt:

  • Sie werden im Azure-Portal in der Übersicht einer Kontrolle für eine Initiative zur Einhaltung gesetzlicher Bestimmungen angezeigt.
  • Sie sind über eine REST-API verfügbar. Weitere Informationen finden Sie unter dem Ressourcenanbieter Microsoft.PolicyInsights und der policyMetadata-Vorgangsgruppe.
  • Sie sind über die Azure-Befehlszeilenschnittstelle verfügbar. Weitere Informationen finden Sie unter dem Befehl az policy metadata.

Wichtig

Metadatenobjekte zur Einhaltung gesetzlicher Bestimmungen sind schreibgeschützt und können nicht von Kunden erstellt werden.

Die Metadaten für eine Richtliniengruppierung weisen die folgenden Informationen im Knoten properties auf:

  • metadataId: Die Kontrollen-ID, auf die sich die Gruppierung bezieht.
  • category (erforderlich): Die Compliancedomäne, der die Kontrolle angehört.
  • title (erforderlich): Der Anzeigename für die Kontrollen-ID.
  • owner (erforderlich): Gibt an, wer in Azure für die Kontrolle zuständig ist: Kunde, Microsoft, Freigegeben.
  • description: Weitere Informationen zur Kontrolle.
  • requirements: Details zur Zuständigkeit für die Implementierung der Kontrolle.
  • additionalContentUrl: Ein Link zu weiteren Informationen zur Kontrolle. Diese Eigenschaft ist in der Regel ein Link zum Abschnitt der Dokumentation, der diese Kontrolle im Compliancestandard behandelt.

Nachstehend finden Sie ein Beispiel für das policyMetadata-Objekt. Diese Beispielmetadaten gehören zur Kontrolle 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"
}

Nächste Schritte