Beispiel: Tag und dessen Standardwert anwendenSample - Apply tag and its default value

Diese Richtlinie fügt einen angegebenen Tagnamen und -wert an, wenn dieses Tag nicht bereitgestellt wird.This policy appends a specified tag name and value, if that tag is not provided. Sie geben den anzuwendenden Tagnamen und -wert an.You specify the tag name and value to apply.

Sie können für die Bereitstellung dieser Beispielrichtlinie Folgendes verwenden:You can deploy this sample policy using:

Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.If you don't have an Azure subscription, create a free account before you begin.

BeispielrichtlinieSample policy

RichtliniendefinitionPolicy definition

Die vollständige erstellte JSON-Richtliniendefinition, die von der REST-API, den Schaltflächen zum Bereitstellen in Azure und manuell im Portal verwendet wird:The complete composed JSON policy definition, used by the REST API, 'Deploy to Azure' buttons, and manually in the portal.

{
   "properties": {
      "displayName": "Apply tag and its default value",
      "policyType": "BuiltIn",
      "description": "Applies a required tag and its default value if it is not specified by the user.",
      "parameters": {
         "tagName": {
            "type": "String",
            "metadata": {
               "description": "Name of the tag, such as costCenter"
            }
         },
         "tagValue": {
            "type": "String",
            "metadata": {
               "description": "Value of the tag, such as headquarter"
            }
         }
      },
      "policyRule": {
         "if": {
            "field": "[concat('tags[', parameters('tagName'), ']')]",
            "exists": "false"
         },
         "then": {
            "effect": "append",
            "details": [
               {
                  "field": "[concat('tags[', parameters('tagName'), ']')]",
                  "value": "[parameters('tagValue')]"
               }
            ]
         }
      }
   },
   "id": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
   "type": "Microsoft.Authorization/policyDefinitions",
   "name": "2a0e14a6-b0a6-4fab-991a-187a4f81c498"
}

Hinweis

Verwenden Sie zum manuellen Erstellen einer Richtlinie im Portal die Abschnitte properties.parameters und properties.policyRule der obigen Definition.If manually creating a policy in the portal, use the properties.parameters and properties.policyRule portions of the above. Umschließen Sie die beiden Abschnitte mit geschweiften Klammern ({}), damit sie gültigen JSON-Code darstellen.Wrap the two sections together with curly braces {} to make it valid JSON.

RichtlinienregelnPolicy rules

Der JSON-Code, der die Regeln der Richtlinie definiert und von der Azure-Befehlszeilenschnittstelle und Azure PowerShell verwendet wird:The JSON defining the rules of the policy, used by Azure CLI and Azure PowerShell.

{
   "if": {
      "field": "[concat('tags[', parameters('tagName'), ']')]",
      "exists": "false"
   },
   "then": {
      "effect": "append",
      "details": [
         {
            "field": "[concat('tags[', parameters('tagName'), ']')]",
            "value": "[parameters('tagValue')]"
         }
      ]
   }
}

RichtlinienparameterPolicy parameters

Der JSON-Code, der die Richtlinienparameter definiert und von der Azure-Befehlszeilenschnittstelle und Azure PowerShell verwendet wird:The JSON defining the policy parameters, used by Azure CLI and Azure PowerShell.

{
    "tagName": {
        "type": "String",
        "metadata": {
            "description": "Name of the tag, such as costCenter"
        }
    },
    "tagValue": {
        "type": "String",
        "metadata": {
            "description": "Value of the tag, such as headquarter"
        }
    }
}
NAMEName TypeType FeldField BESCHREIBUNGDescription
tagNametagName ZeichenfolgeString tagstags Name des Tags, etwa „costCenter“Name of the tag, such as costCenter
tagValuetagValue ZeichenfolgeString tagstags Wert des Tags, etwa „headquarter“Value of the tag, such as headquarter

Beim Erstellen einer Zuweisung über PowerShell oder die Azure CLI können die Parameterwerte mithilfe von -PolicyParameter (PowerShell) bzw. --params (Azure CLI) als JSON-Code in einer Zeichenfolge oder über eine Datei übergeben werden.When creating an assignment via PowerShell or Azure CLI, the parameter values can be passed as JSON in either a string or via a file using -PolicyParameter (PowerShell) or --params (Azure CLI). PowerShell unterstützt darüber hinaus das -PolicyParameterObject-Element. Dafür muss an das Cmdlet eine Name-Wert-Hashtabelle übergeben werden. Dabei steht Name für den Parameternamen und Wert für den einzelnen Wert bzw. das Array von Werten, der bzw. das während der Zuweisung übergeben wird.PowerShell also supports -PolicyParameterObject which requires passing the cmdlet a Name/Value hashtable where Name is the parameter name and Value is the single value or array of values being passed during assignment.

In diesem Beispielparameter wird für tagName der Name costCenter und für tagValue der Wert headquarter festgelegt.In this example parameter, a tagName of costCenter and tagValue of headquarter is defined.

{
    "tagName": {
        "value": "costCenter"
    },
    "tagValue": {
        "value": "headquarter"
    }
}

Azure-PortalAzure portal

Bereitstellen des Policy-Beispiels in Azure Bereitstellen des Policy-Beispiels in Azure GovDeploy the Policy sample to Azure Deploy the Policy sample to Azure Gov

Azure PowerShellAzure PowerShell

Für dieses Beispiel ist Azure PowerShell erforderlich.This sample requires Azure PowerShell. Führen Sie Get-Module -ListAvailable Az aus, um die Version zu finden.Run Get-Module -ListAvailable Az to find the version. Wenn Sie eine Installation oder ein Upgrade ausführen müssen, finden Sie unter Install and configure Azure PowerShell (Installieren des Azure PowerShell-Moduls) Informationen dazu.If you need to install or upgrade, see Install Azure PowerShell module.

Führen Sie das Cmdlet Connect-AzAccount aus, um eine Verbindung mit Azure herzustellen.Run the Connect-AzAccount cmdlet to connect to Azure.

Bereitstellen mit Azure PowerShellDeploy with Azure PowerShell

# Create the Policy Definition (Subscription scope)
$definition = New-AzPolicyDefinition -Name 'allowed-custom-images' -DisplayName 'Approved VM images' -description 'This policy governs the approved VM images' -Policy 'https://raw.githubusercontent.com/Azure/azure-policy/master/samples/built-in-policy/apply-default-tag-value/azurepolicy.rules.json' -Parameter 'https://raw.githubusercontent.com/Azure/azure-policy/master/samples/built-in-policy/apply-default-tag-value/azurepolicy.parameters.json' -Mode All

# Set the scope to a resource group; may also be a resource, subscription, or management group
$scope = Get-AzResourceGroup -Name 'YourResourceGroup'

# Set the Policy Parameter (JSON format)
$policyparam = '{ "tagName": { "value": "costCenter" }, "tagValue": { "value": "headquarter" } }'

# Create the Policy Assignment
$assignment = New-AzPolicyAssignment -Name 'apply-default-tag-value' -DisplayName 'Apply tag and its default value Assignment' -Scope $scope.ResourceId -PolicyDefinition $definition -PolicyParameter $policyparam

Entfernen mit Azure PowerShellRemove with Azure PowerShell

Führen Sie die folgenden Befehle aus, um die vorherige Zuweisung und Definition zu entfernen:Run the following commands to remove the previous assignment and definition:

# Remove the Policy Assignment
Remove-AzPolicyAssignment -Id $assignment.ResourceId

# Remove the Policy Definition
Remove-AzPolicyDefinition -Id $definition.ResourceId

Azure PowerShell: ErläuterungAzure PowerShell explanation

In den Skripts zum Bereitstellen und Entfernen werden die folgenden Befehle verwendet.The deploy and remove scripts use the following commands. Jeder Befehl in der folgenden Tabelle ist mit der zugehörigen Dokumentation verknüpft:Each command in the following table links to command-specific documentation:

Get-HelpCommand NotizenNotes
New-AzPolicyDefinitionNew-AzPolicyDefinition Erstellt eine neue Azure Policy-Definition.Creates a new Azure Policy definition.
Get-AzResourceGroupGet-AzResourceGroup Ruft eine einzelne Ressourcengruppe ab.Gets a single resource group.
New-AzPolicyAssignmentNew-AzPolicyAssignment Erstellt eine neue Azure Policy-Zuweisung.Creates a new Azure Policy assignment. In diesem Beispiel wird eine Definition bereitgestellt, eine Initiative ist aber ebenfalls zulässig.In this example, we provide it a definition, but it can also take an initiative.
Remove-AzPolicyAssignmentRemove-AzPolicyAssignment Entfernt eine vorhandene Azure Policy-Zuweisung.Removes an existing Azure Policy assignment.
Remove-AzPolicyDefinitionRemove-AzPolicyDefinition Entfernt eine vorhandene Azure Policy-Definition.Removes an existing Azure Policy definition.

Azure-BefehlszeilenschnittstelleAzure CLI

Installieren Sie zum Ausführen dieses Beispiels die aktuelle Version der Azure-Befehlszeilenschnittstelle.To run this sample, install the latest version of the Azure CLI. Führen Sie zum Starten az login aus, um eine Verbindung mit Azure herzustellen.To start, run az login to create a connection with Azure.

Beispiele für die Azure-Befehlszeilenschnittstelle sind für die bash-Shell geschrieben.Samples for the Azure CLI are written for the bash shell. Wenn Sie dieses Beispiel in Windows PowerShell oder an der Eingabeaufforderung ausführen möchten, müssen Sie unter Umständen Elemente des Skripts ändern.To run this sample in Windows PowerShell or Command Prompt, you may need to change elements of the script.

Bereitstellen über die Azure-BefehlszeilenschnittstelleDeploy with Azure CLI

# Create the Policy Definition (Subscription scope)
definition=$(az policy definition create --name 'apply-default-tag-value' --display-name 'Apply tag and its default value' --description 'Applies a required tag and its default value if it is not specified by the user' --rules 'https://raw.githubusercontent.com/Azure/azure-policy/master/samples/built-in-policy/apply-default-tag-value/azurepolicy.rules.json' --params 'https://raw.githubusercontent.com/Azure/azure-policy/master/samples/built-in-policy/apply-default-tag-value/azurepolicy.parameters.json' --mode All)

# Set the scope to a resource group; may also be a resource, subscription, or management group
scope=$(az group show --name 'YourResourceGroup')

# Set the Policy Parameter (JSON format)
policyparam='{ "tagName": { "value": "costCenter" }, "tagValue": { "value": "headquarter" } }'

# Create the Policy Assignment
assignment=$(az policy assignment create --name 'apply-default-tag-value' --display-name 'Apply tag and its default value Assignment' --scope `echo $scope | jq '.id' -r` --policy `echo $definition | jq '.name' -r` --params "$policyparam")

Entfernen über die Azure-BefehlszeilenschnittstelleRemove with Azure CLI

Führen Sie die folgenden Befehle aus, um die vorherige Zuweisung und Definition zu entfernen:Run the following commands to remove the previous assignment and definition:

# Remove the Policy Assignment
az policy assignment delete --name `echo $assignment | jq '.name' -r`

# Remove the Policy Definition
az policy definition delete --name `echo $definition | jq '.name' -r`

Azure-Befehlszeilenschnittstelle: ErläuterungAzure CLI explanation

Get-HelpCommand NotizenNotes
az policy definition createaz policy definition create Erstellt eine neue Azure Policy-Definition.Creates a new Azure Policy definition.
az group showaz group show Ruft eine einzelne Ressourcengruppe ab.Gets a single resource group.
az policy assignment createaz policy assignment create Erstellt eine neue Azure Policy-Zuweisung.Creates a new Azure Policy assignment. In diesem Beispiel wird eine Definition bereitgestellt, eine Initiative ist aber ebenfalls zulässig.In this example, we provide it a definition, but it can also take an initiative.
az policy assignment deleteaz policy assignment delete Entfernt eine vorhandene Azure Policy-Zuweisung.Removes an existing Azure Policy assignment.
az policy definition deleteaz policy definition delete Entfernt eine vorhandene Azure Policy-Definition.Removes an existing Azure Policy definition.

Es gibt mehrere Tools, die für die Interaktion mit der Resource Manager-REST-API verwendet werden können, etwa ARMClient oder PowerShell.There are several tools that can be used to interact with the Resource Manager REST API such as ARMClient or PowerShell. Ein Beispiel zum Aufrufen der REST-API über PowerShell finden Sie unter Struktur von Azure Policy-Definitionen im Abschnitt Aliase.An example of calling REST API from PowerShell can be found in the Aliases section of Policy definition structure.

REST-APIREST API

Bereitstellen über die REST-APIDeploy with REST API

  • Erstellen Sie die Richtliniendefinition (Abonnementbereich).Create the Policy Definition (Subscription scope). Verwenden Sie als Anforderungstext den JSON-Code der Richtliniendefinition.Use the policy definition JSON for the Request Body.

    PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyDefinitions/apply-default-tag-value?api-version=2016-12-01
    
  • Erstellen Sie die Richtlinienzuweisung (Ressourcengruppenbereich).Create the Policy Assignment (Resource Group scope)

    PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/YourResourceGroup/providers/Microsoft.Authorization/policyAssignments/apply-default-tag-value-assignment?api-version=2017-06-01-preview
    

    Verwenden Sie als Anforderungstext das folgende JSON-Beispiel:Use the following JSON example for the Request Body:

    {
        "properties": {
            "displayName": "Apply tag and its default value Assignment",
            "policyDefinitionId": "/subscriptions/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/apply-default-tag-value",
            "parameters": {
                "tagName": {
                    "value": "costCenter"
                },
                "tagValue": {
                    "value": "headquarter"
                }
            }
        }
    }
    

Entfernen mit der REST-APIRemove with REST API

  • Entfernen der RichtlinienzuweisungRemove the Policy Assignment

    DELETE https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/apply-default-tag-value-assignment?api-version=2017-06-01-preview
    
  • Entfernen der RichtliniendefinitionRemove the Policy Definition

    DELETE https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyDefinitions/apply-default-tag-value?api-version=2016-12-01
    

REST-API: ErläuterungREST API explanation

DienstService GroupGroup VorgangOperation NotizenNotes
RessourcenverwaltungResource Management RichtliniendefinitionenPolicy Definitions ErstellenCreate Erstellt eine neue Azure Policy-Definition in einem Abonnement.Creates a new Azure Policy definition at a subscription. Alternative: Erstellen einer VerwaltungsgruppeAlternative: Create at management group
RessourcenverwaltungResource Management RichtlinienzuweisungenPolicy Assignments ErstellenCreate Erstellt eine neue Azure Policy-Zuweisung.Creates a new Azure Policy assignment. In diesem Beispiel wird eine Definition bereitgestellt, eine Initiative ist aber ebenfalls zulässig.In this example, we provide it a definition, but it can also take an initiative.
RessourcenverwaltungResource Management RichtlinienzuweisungenPolicy Assignments LöschenDelete Entfernt eine vorhandene Azure Policy-Zuweisung.Removes an existing Azure Policy assignment.
RessourcenverwaltungResource Management RichtliniendefinitionenPolicy Definitions LöschenDelete Entfernt eine vorhandene Azure Policy-Definition.Removes an existing Azure Policy definition. Alternative: Löschen einer VerwaltungsgruppeAlternative: Delete at management group

Nächste SchritteNext steps