Udostępnij za pośrednictwem


Programowe tworzenie zasad

Ten artykuł przeprowadzi Cię przez programowe tworzenie zasad i zarządzanie nimi. Definicje usługi Azure Policy wymuszają różne reguły i efekty dotyczące zasobów. Wymuszanie zapewnia, że zasoby pozostają zgodne ze standardami firmowymi i umowami dotyczącymi poziomu usług.

Aby uzyskać informacje na temat zgodności, zobacz pobieranie danych zgodności.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że zostały spełnione następujące wymagania wstępne:

  1. Jeśli ta czynność nie została jeszcze wykonana, zainstaluj klienta ARMClient. Jest to narzędzie, które wysyła żądania HTTP do interfejsów API opartych na usłudze Azure Resource Manager.

  2. Zaktualizuj moduł programu Azure PowerShell do najnowszej wersji. Zobacz Instalowanie modułu Azure PowerShell, aby uzyskać szczegółowe informacje. Aby uzyskać więcej informacji na temat najnowszej wersji, zobacz Azure PowerShell.

  3. Zarejestruj dostawcę zasobów usługi Azure Policy Insights przy użyciu programu Azure PowerShell, aby sprawdzić, czy subskrypcja współpracuje z dostawcą zasobów. Aby zarejestrować dostawcę zasobów, musisz mieć uprawnienia do uruchamiania operacji rejestrowania dla dostawcy zasobów. Ta operacja jest uwzględniona w rolach Współautor i Właściciel. Uruchom następujące polecenie, aby zarejestrować dostawcę zasobów:

    Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
    

    Aby uzyskać więcej informacji na temat rejestrowania i przeglądania dostawców zasobów, zobacz Dostawcy zasobów i ich typy.

  4. Jeśli jeszcze tego nie zrobiono, zainstaluj interfejs wiersza polecenia platformy Azure. Najnowszą wersję można uzyskać na stronie Instalowanie interfejsu wiersza polecenia platformy Azure w systemie Windows.

Tworzenie i przypisywanie definicji zasad

Pierwszym krokiem w kierunku lepszego wglądu zasobów jest utworzenie i przypisanie zasad dotyczących zasobów. Następnym krokiem jest nauczenie się programowego tworzenia i przypisywania zasad. Przykładowe zasady przeprowadzają inspekcję kont magazynu, które są otwarte dla wszystkich sieci publicznych przy użyciu programu PowerShell, interfejsu wiersza polecenia platformy Azure i żądań HTTP.

Tworzenie i przypisywanie definicji zasad za pomocą programu PowerShell

  1. Użyj poniższego fragmentu kodu JSON, aby utworzyć plik JSON o nazwie AuditStorageAccounts.json.

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

    Aby uzyskać więcej informacji na temat tworzenia definicji zasad, zobacz Struktura definicji usługi Azure Policy.

  2. Uruchom następujące polecenie, aby utworzyć definicję zasad przy użyciu pliku AuditStorageAccounts.json .

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

    Polecenie tworzy definicję zasad o nazwie Audit Storage Accounts Open to Public Networks (Inspekcja kont magazynu otwartych w sieciach publicznych). Aby uzyskać więcej informacji na temat innych parametrów, których można użyć, zobacz New-AzPolicyDefinition.

    Po wywołaniu bez parametrów New-AzPolicyDefinition lokalizacji domyślnie zapisuje definicję zasad w wybranej subskrypcji kontekstu sesji. Aby zapisać definicję w innej lokalizacji, użyj następujących parametrów:

    • SubscriptionId — zapisz w innej subskrypcji. Wymaga wartości identyfikatora GUID .
    • ManagementGroupName — zapisz w grupie zarządzania. Wymaga wartości ciągu.
  3. Po utworzeniu definicji zasad można utworzyć przypisanie zasad, uruchamiając następujące polecenia:

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

    Zastąp ciąg ContosoRG nazwą zamierzonej grupy zasobów.

    Parametr Scope na New-AzPolicyAssignment temat działa z grupą zarządzania, subskrypcją, grupą zasobów lub pojedynczym zasobem. Parametr używa pełnej ścieżki zasobu, której ResourceId właściwość zwraca Get-AzResourceGroup . Wzorzec dla Scope każdego kontenera jest następujący. Zastąp {rName}wartości , {rgName}, {subId}i {mgName} nazwą zasobu, nazwą grupy zasobów, identyfikatorem subskrypcji i nazwą grupy zarządzania. {rType} element zostanie zastąpiony typem zasobu, takim jak Microsoft.Compute/virtualMachines dla maszyny wirtualnej.

    • Zasób- /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Grupa zasobów — /subscriptions/{subId}/resourceGroups/{rgName}
    • Subskrypcja- /subscriptions/{subId}
    • Grupa zarządzania — /providers/Microsoft.Management/managementGroups/{mgName}

Aby uzyskać więcej informacji na temat zarządzania zasadami zasobów przy użyciu modułu programu PowerShell usługi Resource Manager, zobacz Az.Resources.

Tworzenie i przypisywanie definicji zasad przy użyciu elementu ARMClient

Aby utworzyć definicję zasad, wykonaj poniższą procedurę.

  1. Skopiuj poniższy fragment kodu JSON, aby utworzyć plik JSON. W następnym kroku wywołasz plik.

    "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. Utwórz definicję zasad przy użyciu jednego z następujących wywołań:

    # 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>
    

    Zastąp poprzedni {subscriptionId} identyfikatorem subskrypcji lub {managementGroupId} identyfikatorem grupy zarządzania.

    Aby uzyskać więcej informacji na temat struktury zapytania, zobacz Definicje usługi Azure Policy — Tworzenie lub aktualizowanie i definicje zasad — tworzenie lub aktualizowanie w grupie zarządzania.

Poniższa procedura umożliwia utworzenie przypisania zasad i przypisanie definicji zasad na poziomie grupy zasobów.

  1. Skopiuj poniższy fragment kodu JSON, aby utworzyć plik przypisania zasad JSON. Zastąp przykładowe informacje w <> symbolach własnymi wartościami.

    {
      "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. Utwórz przypisanie zasad przy użyciu następującego wywołania:

    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>
    

    Zastąp przykładowe informacje w <> symbolach własnymi wartościami.

    Aby uzyskać więcej informacji na temat wykonywania wywołań HTTP do interfejsu API REST, zobacz Zasoby interfejsu API REST platformy Azure.

Tworzenie i przypisywanie definicji zasad za pomocą interfejsu wiersza polecenia platformy Azure

Aby utworzyć definicję zasad, wykonaj następującą procedurę:

  1. Skopiuj poniższy fragment kodu JSON, aby utworzyć plik przypisania zasad JSON.

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

    Aby uzyskać więcej informacji na temat tworzenia definicji zasad, zobacz Struktura definicji usługi Azure Policy.

  2. Uruchom następujące polecenie, aby utworzyć definicję zasad:

    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
    

    Polecenie tworzy definicję zasad o nazwie Audit Storage Accounts Open to Public Networks (Inspekcja kont magazynu otwartych w sieciach publicznych). Aby uzyskać więcej informacji na temat innych parametrów, których można użyć, zobacz az policy definition create.

    Po wywołaniu bez parametrów az policy definition creation lokalizacji domyślnie zapisuje definicję zasad w wybranej subskrypcji kontekstu sesji. Aby zapisać definicję w innej lokalizacji, użyj następujących parametrów:

    • subskrypcja — zapisz w innej subskrypcji. Wymaga wartości identyfikatora GUID dla identyfikatora subskrypcji lub wartości ciągu dla nazwy subskrypcji.
    • management-group — zapisywanie w grupie zarządzania. Wymaga wartości ciągu.
  3. Użyj następującego polecenia, aby utworzyć przypisanie zasad. Zastąp przykładowe informacje w symbolach nawiasów kątowych < > własnymi wartościami.

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

    Parametr scope na az policy assignment create temat działa z grupą zarządzania, subskrypcją, grupą zasobów lub pojedynczym zasobem. Parametr używa pełnej ścieżki zasobu. Wzorzec dla scope każdego kontenera jest następujący. Zastąp {rName}wartości , {rgName}, {subId}i {mgName} nazwą zasobu, nazwą grupy zasobów, identyfikatorem subskrypcji i nazwą grupy zarządzania. {rType} element zostanie zastąpiony typem zasobu, takim jak Microsoft.Compute/virtualMachines dla maszyny wirtualnej.

    • Zasób- /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Grupa zasobów — /subscriptions/{subID}/resourceGroups/{rgName}
    • Subskrypcja- /subscriptions/{subID}
    • Grupa zarządzania — /providers/Microsoft.Management/managementGroups/{mgName}

Identyfikator definicji usługi Azure Policy można uzyskać przy użyciu programu PowerShell za pomocą następującego polecenia:

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

Identyfikator definicji zasad dla utworzonej definicji zasad powinien przypominać następujący przykład:

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

Aby uzyskać więcej informacji na temat zarządzania zasadami zasobów za pomocą interfejsu wiersza polecenia platformy Azure, zobacz Zasady zasobów interfejsu wiersza polecenia platformy Azure.

Następne kroki

Zapoznaj się z następującymi artykułami, aby uzyskać więcej informacji na temat poleceń i zapytań w tym artykule.