Ga naar inhoud

Managed initiative op een management group

Standaardwijziging: Een managed policy initiative toewijzen aan een management group

Effect: een ingebouwde of door het platform beheerde initiative wordt toegewezen op een management group, en elke subscription daaronder erft de initiative.

Afbakening. Een initiative toewijzen op één spoke is de verantwoordelijkheid van het workloadteam en geen standaardwijziging. Doe je dit toch in deze repository, gebruik dan de map 02_subscriptions (Policy-toewijzingen).

Aanvraagvelden

Veld Gebruik
Policy definition/initiative Name Ingebouwde naam of GUID, of de name van de custom initiative
Onderbouwing pull request; properties.description
Scope Doel-management group, bijvoorbeeld cloudplatform-landingzones-corp
Opmerkingen parameters, enforcement mode

De initiatives die het platform al toewijst

Deze zijn hard-coded in infra/deploy/postdeployment/main.tf (module "landing_zone_policies") en worden toegewezen op de management group cloudplatform. Elke platformomgeving krijgt ze.

Weergavenaam van de toewijzing Initiative
Platform Default - Compliance - ISO 27001:2013 built-in 89c6cddc-1c73-4ac1-b19c-54d1a15a42f2
Platform Default - Compliance - CIS 1.4.0 built-in c3f5c4d9-9a1d-4a99-85c0-7f93e384d5c5
Platform Default - Compliance - CIS 3.0.0 built-in 470a962c-86a0-433b-803a-3c176b5ce79c
Platform Default - Compliance - ASC built-in 1f3afdf9-d0c9-4c3d-847f-89da613e70a8 (Microsoft cloud security benchmark)
Platform Default - Compliance - NIS2 built-in 32ff9e30-4725-4ca7-ba3a-904a7721ee87
Platform Default - Diagnostic Settings - v2 - <region> built-in 0884adba-2312-4468-abeb-5422caed1038, één per actieve regio
Xebia Default - Defender for Cloud v2 - Landing Zones alleen als enable_defender_for_cloud_for_spokes = true; scope landingzones

Er is geen tfvars-schakelaar om de vijf compliance-initiatives te verwijderen. Ze wijzigen is een codewijziging. De uitzonderingen die het platform erop toepast staan beschreven in docs/policy_exemptions/current-platform-exemptions.md en in ADR-0001 t/m ADR-0005 en ADR-0013.

Een andere initiative toewijzen aan een management group

1. Haal de initiative-ID op

  • Built-in: Azure portal → Policy → Definitions → filter Initiative → open de initiative → kopieer de Definition ID, bijvoorbeeld /providers/Microsoft.Authorization/policySetDefinitions/06f19060-9e68-4070-92ca-f15cc126059e.
  • Custom (door het platform beheerd): zie Een custom definition of initiative toevoegen. De ID hiervan is /providers/Microsoft.Management/managementGroups/<cloudplatform id>/providers/Microsoft.Authorization/policySetDefinitions/<name>.

2. Maak het toewijzingsbestand aan

Maak <env-folder>/policies/policy_assignments/01_management_groups/<name>.json aan, in het formaat uit Policy-toewijzingen:

{
  "name": "cis-v2-corp",
  "policy_definition_id": "/providers/Microsoft.Authorization/policySetDefinitions/06f19060-9e68-4070-92ca-f15cc126059e",
  "enforce": true,
  "identityType": "SystemAssigned",
  "location": "westeurope",
  "notScopes": null,
  "managementGroupId": "/providers/Microsoft.Management/managementGroups/cloudplatform-landingzones-corp",
  "non_compliance_message": null,
  "properties": {
    "displayName": "CIS Microsoft Azure Foundations Benchmark v2.0.0 - Corp",
    "description": "Change <ticket>",
    "metadata": { "assignedBy": "Infrastructure as Code (IaC)" },
    "parameters": null
  }
}

De voorbeeldconfiguratie bevat twee volledige, uitgeschakelde voorbeelden (.json.ignore) van dit patroon, met alle parameters uitgeschreven: CIS v2.0.0 en de Microsoft cloud security benchmark, beide onder config/Demo/canary/policies/policy_assignments/01_management_groups/.

3. Uitrollen

Draai hub.

  • Verwachte postdeployment plan (primaire regio): + de policy-toewijzing op de management group.
  • Met een identity: + role assignments.
  • Met automatically_start_policy_remediation = true: + één remediation per initiative-onderdeel.

Een custom definition of initiative toevoegen

Custom definitions en initiatives worden uitgerold door de foundation-layer (alleen primaire regio) op de management group cloudplatform. De mappen worden ingesteld in <env-folder>/<primary region>/foundation.auto.tfvars:

policy_definition_json_file_relative_path     = "policies/policy_definitions"
policy_definition_json_file_pattern           = "/**/*.json"
policy_set_definition_json_file_relative_path = "policies/policy_set_definitions"
policy_set_definition_json_file_pattern       = "/**/*.json"

Het bestandsformaat is het Azure-exportformaat: name plus properties.{policyType, mode, displayName, description, metadata, parameters, policyRule} voor een definition, en properties.{policyType, parameters, metadata, policyDefinitions[], policyDefinitionGroups[]} voor een initiative. In een initiative kun je ${root_scope_resource_id} gebruiken in een policyDefinitionId; die wordt vervangen door de ID van de management group cloudplatform (infra/modules/policy/main.tf).

De weergavenaam van de initiative in Azure is de name. display_name = each.value.name in infra/modules/policy/main.tf, dus properties.displayName wordt niet gebruikt voor initiatives.

Definitions en toewijzingen kunnen in dezelfde pull request: foundation draait vóór postdeployment binnen één hub-run.

Controleren

Azure portal → Policy → Assignments → scope = de management group. De toewijzing staat in de lijst en Compliance vult zich na de eerste evaluatie.

Terugdraaien

Verwijder het toewijzingsbestand (en de definitionbestanden, als die voor deze wijziging zijn toegevoegd) en draai daarna hub.