Szabályzatok létrehozása programozott módon

Ez a cikk végigvezeti a szabályzatok programozott módon történő létrehozásán és kezelésén. Azure Policy definíciók különböző szabályokat és hatásokat kényszerítenek ki az erőforrásokon. A kényszerítés biztosítja, hogy az erőforrások megfeleljenek a vállalati szabványoknak és a szolgáltatói szerződéseknek.

A megfelelőségről további információt a megfelelőségi adatok lekérése című témakörben talál.

Előfeltételek

Mielőtt hozzákezdene, győződjön meg arról, hogy a következő előfeltételek teljesülnek:

  1. Ha még nem tette meg, telepítse az ARMClient eszközt. Ez egy olyan segédprogram, amely HTTP-kéréseket küld az Azure Resource Manager-alapú API-khoz.

  2. Frissítse a Azure PowerShell modult a legújabb verzióra. Részletes információkért lásd: Azure PowerShell modul telepítése. A legújabb verzióval kapcsolatos további információkért lásd: Azure PowerShell.

  3. Regisztrálja a Azure Policy Insights erőforrás-szolgáltatót a Azure PowerShell használatával annak ellenőrzéséhez, hogy az előfizetése működik-e az erőforrás-szolgáltatóval. Erőforrás-szolgáltató regisztrálásához engedéllyel kell rendelkeznie az erőforrás-szolgáltató regisztrációs műveletének futtatásához. Ezt a műveletet a Közreműködői és Tulajdonosi szerepkörök magukba foglalják. Az erőforrás-szolgáltató regisztrálásához futtassa az alábbi parancsot:

    Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
    

    Az erőforrás-szolgáltatók regisztrálásával és megtekintésével kapcsolatos további információért tekintse meg az erőforrás-szolgáltatókat és típusaikat ismertető cikket.

  4. Ha még nem tette meg, telepítse az Azure CLI-t. A legújabb verziót az Azure CLI telepítése Windows rendszeren című témakörben találja.

Szabályzatdefiníció létrehozása és hozzárendelése

Az erőforrások jobb láthatósága felé az első lépés a szabályzatok létrehozása és hozzárendelése az erőforrásokhoz. A következő lépés a szabályzatok programozott létrehozásának és hozzárendelésének elsajátítása. A példaszabályzat naplóz minden nyilvános hálózat számára megnyitott tárfiókokat a PowerShell, az Azure CLI és a HTTP-kérések használatával.

Szabályzatdefiníció létrehozása és hozzárendelése a PowerShell-lel

  1. Az alábbi JSON-kódrészlettel hozzon létre egy AuditStorageAccounts.json nevű JSON-fájlt.

    {
        "if": {
            "allOf": [{
                    "field": "type",
                    "equals": "Microsoft.Storage/storageAccounts"
                },
                {
                    "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                    "equals": "Allow"
                }
            ]
        },
        "then": {
            "effect": "audit"
        }
    }
    

    További információ a szabályzatdefiníciók készítéséről: Azure Policy Definícióstruktúra.

  2. Futtassa a következő parancsot egy szabályzatdefiníció létrehozásához az AuditStorageAccounts.json fájllal.

    New-AzPolicyDefinition -Name 'AuditStorageAccounts' -DisplayName 'Audit Storage Accounts Open to Public Networks' -Policy 'AuditStorageAccounts.json'
    

    A parancs létrehoz egy Audit Storage Accounts Open to Public Networks nevű szabályzatdefiníciót. További információ a használható egyéb paraméterekről: New-AzPolicyDefinition.

    Helyparaméterek New-AzPolicyDefinition nélkül hívva a rendszer alapértelmezés szerint menti a szabályzatdefiníciót a munkamenet-környezet kiválasztott előfizetésében. Ha a definíciót egy másik helyre szeretné menteni, használja az alábbi paramétereket:

    • SubscriptionId – Mentés másik előfizetésbe. GUID-értéket igényel.
    • ManagementGroupName – Mentés felügyeleti csoportba. Sztringértéket igényel.
  3. A szabályzatdefiníció létrehozása után a következő parancsok futtatásával hozhat létre szabályzat-hozzárendelést:

    $rg = Get-AzResourceGroup -Name 'ContosoRG'
    $Policy = Get-AzPolicyDefinition -Name 'AuditStorageAccounts'
    New-AzPolicyAssignment -Name 'AuditStorageAccounts' -PolicyDefinition $Policy -Scope $rg.ResourceId
    

    Cserélje le a ContosoRG elemet a kívánt erőforráscsoport nevére.

    A Hatókör paraméter felügyeleti New-AzPolicyAssignment csoporttal, előfizetéssel, erőforráscsoporttal vagy egyetlen erőforrással működik. A paraméter egy teljes erőforrásútvonalat használ, amelyet a ResourceId tulajdonság ad Get-AzResourceGroup vissza. Az egyes tárolók hatókörének mintája a következő. Cserélje le {rName}a , {rgName}, {subId}és {mgName} elemet az erőforrás nevére, az erőforráscsoport nevére, az előfizetés-azonosítóra és a felügyeleti csoport nevére. {rType} az erőforrás erőforrástípusára lesz lecserélve, például Microsoft.Compute/virtualMachines egy virtuális gép esetében.

    • Erőforrás- /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Erőforráscsoport – /subscriptions/{subId}/resourceGroups/{rgName}
    • Előfizetés- /subscriptions/{subId}
    • Felügyeleti csoport – /providers/Microsoft.Management/managementGroups/{mgName}

Az erőforrás-szabályzatok Resource Manager PowerShell-modullal történő kezeléséről az Az.Resources című témakörben talál további információt.

Szabályzatdefiníció létrehozása és hozzárendelése az ARMClient használatával

Az alábbi eljárással hozhat létre szabályzatdefiníciót.

  1. Másolja a következő JSON-kódrészletet egy JSON-fájl létrehozásához. A fájlt a következő lépésben fogja meghívni.

    "properties": {
        "displayName": "Audit Storage Accounts Open to Public Networks",
        "policyType": "Custom",
        "mode": "Indexed",
        "description": "This policy ensures that storage accounts with exposure to Public Networks are audited.",
        "parameters": {},
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "type",
                        "equals": "Microsoft.Storage/storageAccounts"
                    },
                    {
                        "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                        "equals": "Allow"
                    }
                ]
            },
            "then": {
                "effect": "audit"
            }
        }
    }
    
  2. Hozza létre a szabályzatdefiníciót az alábbi hívások egyikével:

    # For defining a policy in a subscription
    armclient PUT "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2021-09-01" @<path to policy definition JSON file>
    
    # For defining a policy in a management group
    armclient PUT "/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2021-09-01" @<path to policy definition JSON file>
    

    Cserélje le az előző {subscriptionId} értéket az előfizetés azonosítójára, vagy a {managementGroupId} kifejezést a felügyeleti csoport azonosítójára.

    A lekérdezés szerkezetével kapcsolatos további információkért lásd: Azure Policy Definíciók – Létrehozás vagy frissítés és szabályzatdefiníciók – Létrehozás vagy frissítés a felügyeleti csoportban.

Az alábbi eljárással szabályzat-hozzárendelést hozhat létre, és hozzárendelheti a szabályzatdefiníciót az erőforráscsoport szintjén.

  1. Másolja a következő JSON-kódrészletet egy JSON-szabályzat-hozzárendelési fájl létrehozásához. Cserélje le a <> példaadatokat szimbólumokban a saját értékeire.

    {
        "properties": {
            "description": "This policy assignment makes sure that storage accounts with exposure to Public Networks are audited.",
            "displayName": "Audit Storage Accounts Open to Public Networks Assignment",
            "parameters": {},
            "policyDefinitionId": "/subscriptions/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks",
            "scope": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>"
        }
    }
    
  2. Hozza létre a szabályzat-hozzárendelést a következő hívással:

    armclient PUT "/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Authorization/policyAssignments/Audit Storage Accounts Open to Public Networks?api-version=2021-09-01" @<path to Assignment JSON file>
    

    Cserélje le a <> példaadatokat szimbólumokban a saját értékeire.

    További információ a HTTP-hívások REST API-hoz való indításáról: Azure REST API-erőforrások.

Szabályzatdefiníció létrehozása és hozzárendelése az Azure CLI-vel

Szabályzatdefiníció létrehozásához kövesse az alábbi eljárást:

  1. Másolja a következő JSON-kódrészletet egy JSON-szabályzat-hozzárendelési fájl létrehozásához.

    {
        "if": {
            "allOf": [{
                    "field": "type",
                    "equals": "Microsoft.Storage/storageAccounts"
                },
                {
                    "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                    "equals": "Allow"
                }
            ]
        },
        "then": {
            "effect": "audit"
        }
    }
    

    További információ a szabályzatdefiníciók készítéséről: Azure Policy Definícióstruktúra.

  2. Szabályzatdefiníció létrehozásához futtassa a következő parancsot:

    az policy definition create --name 'audit-storage-accounts-open-to-public-networks' --display-name 'Audit Storage Accounts Open to Public Networks' --description 'This policy ensures that storage accounts with exposures to public networks are audited.' --rules '<path to json file>' --mode All
    

    A parancs létrehoz egy Audit Storage Accounts Open to Public Networks nevű szabályzatdefiníciót. További információt az egyéb használható paraméterekről az az policy definition create (az policy definition create) című témakörben talál.

    Helyparaméterek az policy definition creation nélkül hívva a rendszer alapértelmezés szerint menti a szabályzatdefiníciót a munkamenet-környezet kiválasztott előfizetésében. Ha a definíciót egy másik helyre szeretné menteni, használja az alábbi paramétereket:

    • előfizetés – Mentés másik előfizetésbe. Az előfizetés azonosítójának GUID-értékét vagy az előfizetés nevének sztringértékét kell megadnia.
    • management-group – Mentés felügyeleti csoportba. Sztringértéket igényel.
  3. Szabályzat-hozzárendelés létrehozásához használja az alábbi parancsot. Cserélje le a <> példaadatokat szimbólumokban a saját értékeire.

    az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'
    

    A hatókör paramétere az policy assignment create felügyeleti csoporttal, előfizetéssel, erőforráscsoporttal vagy egyetlen erőforrással működik. A paraméter egy teljes erőforrás-elérési utat használ. Az egyes tárolók hatókörének mintája a következő. Cserélje le {rName}a , {rgName}, {subId}és {mgName} elemet az erőforrás nevére, az erőforráscsoport nevére, az előfizetés-azonosítóra és a felügyeleti csoport nevére. {rType} az erőforrás erőforrástípusára lesz lecserélve, például Microsoft.Compute/virtualMachines egy virtuális gép esetében.

    • Erőforrás- /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Erőforráscsoport – /subscriptions/{subID}/resourceGroups/{rgName}
    • Előfizetés- /subscriptions/{subID}
    • Felügyeleti csoport – /providers/Microsoft.Management/managementGroups/{mgName}

A Azure Policy definícióazonosítóját a PowerShell használatával szerezheti be a következő paranccsal:

az policy definition show --name 'Audit Storage Accounts with Open Public Networks'

A létrehozott szabályzatdefiníció szabályzatdefiníció-azonosítójának az alábbi példához kell hasonlítania:

"/subscription/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks"

Az erőforrás-szabályzatok Azure CLI-vel való kezelésével kapcsolatos további információkért lásd: Azure CLI erőforrás-szabályzatok.

Következő lépések

A cikkben található parancsokkal és lekérdezésekkel kapcsolatos további információkért tekintse át az alábbi cikkeket.