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:
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.
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.
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.
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
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.
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.
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
naNew-AzPolicyAssignment
temat działa z grupą zarządzania, subskrypcją, grupą zasobów lub pojedynczym zasobem. Parametr używa pełnej ścieżki zasobu, którejResourceId
właściwość zwracaGet-AzResourceGroup
. Wzorzec dlaScope
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 jakMicrosoft.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}
- Zasób-
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ę.
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" } } }
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.
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>" } }
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ę:
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.
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.
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
naaz 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 dlascope
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 jakMicrosoft.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}
- Zasób-
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.
- Zasoby interfejsu API REST platformy Azure.
- Moduły programu Azure PowerShell.
- Polecenia zasad interfejsu wiersza polecenia platformy Azure.
- Dokumentacja interfejsu API REST dostawcy zasobów usługi Azure Policy.
- Organizowanie zasobów przy użyciu grup zarządzania platformy Azure.