CODE ODER KONSOLE

Was sich ändert, wenn dein Tenant in Git lebt.

TerraProvider verwaltet Intune und Entra ID als Terraform-Code in deinem Repository, sodass jede Änderung als Plan vorliegt, den dein Team prüfen kann, bevor er den Tenant erreicht. Hier siehst du, wie das im Vergleich zum Klicken in den Microsoft Intune- und Microsoft Entra-Admin-Centern aussieht, und wann eine Management-Konsole besser zu deinem Team passt.

  • terraprovider/microsoft365wp
  • Terraform and OpenTofu
  • Business Source License 1.1
terraform plan
  # microsoft365wp_conditional_access_policy.require_mfa_admins will be updated in-place  ~ resource "microsoft365wp_conditional_access_policy" "require_mfa_admins" {      ~ conditions = {          ~ users = {              ~ exclude_users = [                  - "7c1e4a90-3f2b-4d8e-9a61-0b5c2e8f1d47",                ]                # (8 unchanged attributes hidden)            }            # (6 unchanged attributes hidden)        }        id           = "2b7f9c3e-8d41-4f6a-b0e2-5c9a1d7e3f80"        # (3 unchanged attributes hidden)    }Plan: 0 to add, 1 to change, 0 to destroy.

Beispieldaten.

SIDE BY SIDE

Dieselbe Änderung in den Admin-Centern und als Code

Eine Conditional-Access-Richtlinie, eine Compliance-Regel, ein zweiter Tenant: Was passiert jeweils beim Klicken, und was passiert, wenn es eine Datei in deinem Repository ist.

Dieselbe Änderung in den Admin-Centern und als Code
SituationIn den Admin-CenternMit TerraProvider
Bevor eine Änderung live gehtEine Conditional-Access-Änderung ist live, sobald jemand auf Speichern klickt.Die Änderung ist ein Pull Request. Der Plan zeigt, welches Attribut sich von was zu was verändert, bevor irgendetwas den Tenant berührt.
Wer zugestimmt hat, und warumDas Audit-Log nennt das Konto, das die Richtlinie gespeichert hat. Das Ticket und der Grund stehen irgendwo anders, wenn überhaupt.Commit-Message, Pull Request und Freigabe liegen direkt neben der Änderung. Ein Rollback ist ein Revert.
Test und ProduktionJeder Tenant wird einzeln durchgeklickt, und die beiden driften im Laufe der Monate auseinander.Ein Modul, auf beide Tenants angewendet. Wo sie sich unterscheiden, sagt eine Variable es.
Eine Änderung außerhalb des ProzessesDie Dokumentation beschreibt den Tenant weiterhin so, wie er vorher war.Der nächste Plan listet sie auf, einschließlich Einstellungen, die in deinen Dateien nie erwähnt werden. Du übernimmst sie oder machst sie rückgängig.
Ein neuer TenantJede Richtlinie wird erneut durchgeklickt, mit dem alten Tenant im Nachbar-Tab.Importiere den vorhandenen Tenant (der Export des Quickstarts ist ein Ausgangspunkt) und wende denselben Code auf den neuen an.
Änderungen aus einer PipelineJemand meldet sich in einem Browser an und nimmt die Änderung manuell vor.GitHub Actions und Azure DevOps melden sich per OpenID Connect an, ohne ein gespeichertes Secret.
Wo die Konfiguration liegtIm Tenant selbst.In deinem eigenen Git-Repository, als HCL, das Terraform und OpenTofu beide ausführen. Der Quellcode des Providers ist öffentlich unter der Business Source License 1.1.
WAS PASST

Code passt zu Teams, die Änderungen bereits in Pull Requests reviewen

Welcher Weg passt, hängt weniger vom Tenant ab als vom Team: Wer nimmt eine Änderung vor, und wo wird sie geprüft.

  • TerraProvider passt, wenn

    • Dein Team schreibt bereits Terraform für Azure und reviewed es in Pull Requests.
    • Eine Conditional-Access-Änderung braucht ein zweites Augenpaar, bevor sie live geht.
    • Test und Produktion müssen konsistent bleiben, und wo sie sich unterscheiden, muss das lesbar sein.
    • Änderungen sollen aus GitHub Actions oder Azure DevOps heraus laufen, nicht aus dem Browser von jemandem.
  • Eine Management-Konsole passt besser, wenn

    • Niemand im Team schreibt HCL, und das plant auch niemand.
    • Änderungen werden von Personen im Browser vorgenommen, und das Team möchte das so beibehalten.
TENANT-TEAMS UND MSPS

Ein Provider für den eigenen Tenant und für die Tenants deiner Kunden

Ein Team, das seinen eigenen Tenant betreibt, legt Test und Produktion unter ein gemeinsames Modul. Ein Managed-Service-Provider gibt jedem Kunden-Tenant seinen eigenen Provider-Block und ruft für alle dasselbe Baseline-Modul auf; die Ausnahmen sind Variablen, die ein Reviewer lesen kann.
  • Eigener Tenant: Die Community Edition ist für Organisationen mit bis zu 99 Nutzern kostenlos, und Enterprise ergänzt Support ab 100 Nutzern.
  • Kunden-Tenants: Die Community Edition deckt sie nicht ab, sie brauchen daher einen eigenen Plan. Vertrieb kontaktieren
main.tf
provider "microsoft365wp" {  alias     = "contoso"  tenant_id = "8a1f3c2e-5b7d-4e90-a6c4-2d9e7f1b0c35"}provider "microsoft365wp" {  alias     = "fabrikam"  tenant_id = "e4c27b91-0d3a-4f86-b5e2-7a1c9d0f6b48"}module "baseline_contoso" {  source    = "./baseline"  providers = { microsoft365wp = microsoft365wp.contoso }}module "baseline_fabrikam" {  source     = "./baseline"  providers  = { microsoft365wp = microsoft365wp.fabrikam }  allow_byod = true}

Beispieldaten.

Sieh deinen eigenen Tenant als Plan.

Fordere eine Testversion von Enterprise an, oder starte mit der Community Edition, kostenlos für Organisationen mit bis zu 99 Nutzern.