person Tia Zanella
calendar_add_on Created April 5, 2026
update Updated April 5, 2026
Share
download Download MD

OSIRIS JSON Producer für Microsoft Azure

Der OSIRIS JSON Azure Producer verbindet sich über die Azure CLI (az) mit Microsoft Azure und erzeugt OSIRIS-JSON-Snapshots Ihrer Abonnement-Topologie - virtuelle Netzwerke, Subnetze, NICs, NSGs, Load Balancer, Firewalls, VMs und mehr.

Um OSIRIS JSON für Microsoft Azure zu verwenden, installieren Sie den Core-Dispatcher und den Azure Producer:

go install go.osirisjson.org/producers/cmd/osirisjson-producer@latest
go install go.osirisjson.org/producers/cmd/osirisjson-producer-azure@latest

Mit dem Core-Dispatcher können Sie osirisjson-producer azure ... ausführen. Ohne ihn rufen Sie die Anbieter-Binärdatei direkt als osirisjson-producer-azure ... auf.

Stellen Sie sicher, dass $GOPATH/bin (oder $HOME/go/bin) in Ihrem PATH enthalten ist. Weitere Installationsoptionen finden Sie auf der Seite Erste Schritte.

Voraussetzungen

  1. Installieren Sie die Azure CLI
  2. Authentifizieren Sie sich: az login
  3. Der authentifizierte Benutzer muss über eine Leseberechtigung für ein oder mehrere Ziel-Abonnements verfügen. Sie können den Producer auf Ihrem lokalen Rechner ausführen oder ihn per geplantem Job mit einem Servicekonto über Ihre bevorzugte Software oder Plattform aufrufen.

CLI-Verwendung

osirisjson-producer azure [flags]
osirisjson-producer azure template --generate

Einzelmodus

Beginnen Sie mit dem Erfassen eines Abonnements, das automatisch als microsoft-azure-<timestamp>-<name>.json gespeichert wird:

osirisjson-producer azure -S a1b2c3d4-e5f6-7890-abcd-ef1234567890

Interaktiver Modus

Führen Sie den Befehl ohne Flags aus, um eine interaktive Auswahl für Abonnements zu erhalten:

osirisjson-producer azure

Der Producer erkennt alle zugänglichen Abonnements und zeigt eine nummerierte Liste an. Wählen Sie eines oder mehrere aus (durch Kommas getrennt) oder geben Sie all ein.

Mehrfach-Abonnement-Modus

Erfassen Sie mehrere Abonnements in einem Ausgabeverzeichnis:

# Specific subscriptions
osirisjson-producer azure -S sub-id-1,sub-id-2,sub-id-3 -o ./output

# All accessible subscriptions (auto-discover)
osirisjson-producer azure --all -o ./output

# All subscriptions in a specific tenant
osirisjson-producer azure --all --tenant f1e2d3c4-b5a6-9078-fedc-ba9876543210 -o ./output

Batch-Modus (CSV)

Erzeugen Sie eine CSV-Vorlage:

osirisjson-producer azure template --generate

Erfassen Sie Daten aus einer CSV-Datei:

osirisjson-producer azure -s subscriptions.csv -o ./output

Die CSV-Vorlage verwendet diese Spalten:

SpalteErforderlichBeschreibung
subscription_idjaUUID des Azure-Abonnements
subscription_namejaMenschenlesbare Bezeichnung (wird als Ausgabedateiname verwendet)
tenant_idUUID des Azure AD / Entra ID Tenants
environmentBereitstellungsstufe: dv, np, pr (Entwicklung, Nicht-Produktion, Produktion)
regionNach Azure-Region filtern (leer = alle Regionen)
notesFreitextnotizen (werden vom Producer ignoriert)

Ausgabehierarchie

Einzelmodus: speichert als microsoft-azure-<timestamp>-<name>.json im aktuellen Verzeichnis.

Multi-/Batch-/All-Modi: nach Tenant und Zeitstempel organisiert:

output/
  <TenantID>/
    <timestamp>/
      <SubscriptionName>.json

Jedes Abonnement erzeugt ein eigenständiges OSIRIS-Dokument. Abonnementübergreifende Referenzen (z. B. VNet-Peerings zu entfernten Abonnements) verwenden deterministische Ressourcen-IDs, die von Konsumenten über Dokumente hinweg korreliert werden können.

Multi-Tenant-Umgebungen

Führen Sie den Producer einmal pro Tenant aus. Jede az login-Anmeldung authentifiziert sich für einen Tenant. Verwenden Sie az login --tenant <tenant-id>, um zu wechseln. Die Ausgabehierarchie gruppiert Dokumente automatisch nach Tenant.

Flag-Referenz

FlagKurzformBeschreibung
--subscription-SAzure-Abonnement-ID(s), durch Kommas getrennt
--allAlle zugänglichen Abonnements automatisch erkennen
--source-sCSV-Datei mit Abonnement-Zielen
--output-oAusgabeverzeichnis (erforderlich für Multi-/All-/CSV-Modus)
--tenantAzure AD / Entra ID Tenant-ID (optional)
--regionNach einer bestimmten Azure-Region filtern (optional)
--detailDetailgrad: minimal (Standard) oder detailed
--safe-failure-modeUmgang mit Geheimnissen: fail-closed (Standard), log-and-redact, off
--version / -vVersion anzeigen und beenden
--helpHilfe anzeigen und beenden

Was er erfasst

Der Azure Producer fragt über die Azure CLI die folgenden Ressourcentypen ab:

Minimalmodus:

Azure-RessourcentypOSIRIS-TypBeschreibung
Virtual Networksnetwork.vpcVNets mit Adressraum, DNS und Peerings
Subnetsnetwork.subnetSubnetze mit Adresspräfixen und Service Endpoints
Network Interfacesnetwork.interfaceNICs mit IP-Konfigurationen
Network Security Groupsnetwork.security.groupNSGs mit Regelzusammenfassungen
Route Tablesosiris.azure.routetableUDRs mit Anzahl der Routen
Public IP Addressesosiris.azure.publicipÖffentliche IPs mit Zuweisungsmethode
Load Balancersnetwork.loadbalancerL4-Load-Balancer
Application Gatewaysnetwork.loadbalancerL7-Load-Balancer (Application Gateways)
Private Endpointsosiris.azure.privateendpointPrivate-Link-Endpunkte
VNet Gatewaysosiris.azure.gateway.vnetExpressRoute- / VPN-Gateways
NAT Gatewaysosiris.azure.gateway.natAusgehende NAT-Gateways
Azure Firewallsnetwork.firewallAzure-Firewall-Instanzen
DNS Zonesosiris.azure.dns.zoneÖffentliche DNS-Zonen
Private DNS Zonesosiris.azure.dns.privatezonePrivate DNS-Zonen mit VNet-Links
ExpressRoute Circuitsosiris.azure.expressrouteExpressRoute-Circuits
Virtual Machinescompute.vmVMs mit Größe und Energiezustand
Resource Groupscontainer.resourcegroupRessourcengruppen als Container-Ressourcen

Der detaillierte Modus ergänzt Details zu Routen in Routentabellen, Load-Balancer-Regeln und erweiterten Eigenschaften.

OSIRIS JSON-Ausgabestruktur für Microsoft Azure

{
  "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
  "version": "1.0.0",
  "metadata": {
    "generator": {
      "name": "osirisjson-producer-azure",
      "version": "0.1.0"
    },
    "scope": {
      "providers": ["azure"],
      "accounts": ["<tenant-id>"],
      "subscriptions": ["<subscription-id>"],
      "regions": ["westeurope", "eastus"]
    }
  },
  "topology": {
    "resources": [ ... ],
    "connections": [ ... ],
    "groups": [ ... ]
  }
}

Ressourcentypen

Die Ressourcentypen folgen der OSIRIS JSON v1.0-Spezifikation. Standardtypen werden verwendet, sofern definiert; Azure-spezifische Typen verwenden den Namespace osiris.azure.*.

Standardtypen:

  • container.resourcegroup - Ressourcengruppen
  • network.vpc - Virtuelle Netzwerke
  • network.subnet - Subnetze
  • network.interface - Netzwerkschnittstellen
  • network.security.group - Netzwerksicherheitsgruppen
  • network.loadbalancer - Load Balancer (L4 und L7)
  • network.firewall - Azure Firewalls
  • compute.vm - Virtuelle Maschinen

Benutzerdefinierte Typen (osiris.azure.*):

  • osiris.azure.routetable - Routentabellen
  • osiris.azure.publicip - Öffentliche IP-Adressen
  • osiris.azure.privateendpoint - Private Endpunkte
  • osiris.azure.gateway.vnet - VNet-Gateways (VPN/ExpressRoute)
  • osiris.azure.gateway.nat - NAT-Gateways
  • osiris.azure.dns.zone - DNS-Zonen
  • osiris.azure.dns.privatezone - Private DNS-Zonen
  • osiris.azure.expressroute - ExpressRoute-Circuits

Verbindungstypen

  • network - Netzwerkkonnektivität (VNet-Peerings, NIC-zu-Subnetz, NSG-Zuordnungen, DNS-Links, Gateway-Verbindungen)
  • contains - Enthaltensein (Zugehörigkeit von Subnetz zu VNet)

Gruppentypen

  • logical.subscription - Abonnementgruppe auf oberster Ebene
  • logical.resourcegroup - Ressourcengruppengruppen (untergeordnete Elemente des Abonnements)

Anbieter-Metadaten

Jede Ressource enthält provider.type mit dem nativen ARM-Ressourcentyp (z. B. Microsoft.Network/virtualNetworks, Microsoft.Compute/virtualMachines). Abonnementübergreifende Peering-Stubs enthalten provider.subscription mit der ID des entfernten Abonnements.

Ressourcen-IDs

Azure-Ressourcen-IDs folgen dem Muster azure::<ARM-resource-id> und verwenden die vollständige ARM-Ressourcen-ID als nativen Bezeichner. Dies stellt global eindeutige, deterministische IDs sicher.

Beispiele

Einzelnes Abonnement

Wir werden ein einzelnes Abonnement in unserem Tenant untersuchen und aus Microsoft Azure ein OSIRIS-JSON-Dokument erzeugen.

osirisjson-producer azure -S a1b2c3d4-e5f6-7890-abcd-ef1234567890

OSIRIS JSON-Ausgabedokument (gekürzt):

{
  "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
  "version": "1.0.0",
  "metadata": {
    "generator": {
      "name": "osirisjson-producer-azure",
      "version": "0.1.0"
    },
    "scope": {
      "providers": ["azure"],
      "accounts": ["f1e2d3c4-b5a6-9078-fedc-ba9876543210"],
      "subscriptions": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"],
      "regions": ["westeurope"]
    }
  },
  "topology": {
    "resources": [
      {
        "id": "azure::/subscriptions/a1b2c3d4/resourceGroups/network-rg/providers/Microsoft.Network/virtualNetworks/hub-vnet",
        "type": "network.vpc",
        "name": "hub-vnet",
        "status": "active",
        "provider": {
          "name": "azure",
          "native_id": "/subscriptions/a1b2c3d4/resourceGroups/network-rg/providers/Microsoft.Network/virtualNetworks/hub-vnet",
          "type": "Microsoft.Network/virtualNetworks",
          "region": "westeurope",
          "subscription": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
          "tenant": "f1e2d3c4-b5a6-9078-fedc-ba9876543210"
        },
        "properties": {
          "resource_group": "network-rg",
          "address_space": ["10.0.0.0/16"],
          "dns_servers": ["10.0.0.4"]
        }
      },
      {
        "id": "azure::/subscriptions/a1b2c3d4/resourceGroups/compute-rg/providers/Microsoft.Compute/virtualMachines/web-vm-01",
        "type": "compute.vm",
        "name": "web-vm-01",
        "status": "active",
        "provider": {
          "name": "azure",
          "native_id": "/subscriptions/a1b2c3d4/resourceGroups/compute-rg/providers/Microsoft.Compute/virtualMachines/web-vm-01",
          "type": "Microsoft.Compute/virtualMachines",
          "region": "westeurope",
          "subscription": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
          "tenant": "f1e2d3c4-b5a6-9078-fedc-ba9876543210"
        },
        "properties": {
          "resource_group": "compute-rg",
          "vm_size": "Standard_D2s_v3",
          "power_state": "VM running"
        }
      }
    ],
    "connections": [
      {
        "source": "azure::/subscriptions/a1b2c3d4/.../subnets/default",
        "target": "azure::/subscriptions/a1b2c3d4/.../virtualNetworks/hub-vnet",
        "type": "contains",
        "direction": "forward"
      }
    ],
    "groups": [
      {
        "id": "azure::subscription::a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "type": "logical.subscription",
        "name": "my-nonprod-subscription",
        "children": [
          "azure::resourcegroup::network-rg",
          "azure::resourcegroup::compute-rg"
        ]
      },
      {
        "id": "azure::resourcegroup::network-rg",
        "type": "logical.resourcegroup",
        "name": "network-rg",
        "members": [
          "azure::/subscriptions/a1b2c3d4/.../virtualNetworks/hub-vnet"
        ]
      }
    ]
  }
}
edit_note

Help improve this page

Found an issue or want to contribute? Open an issue.