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

Producer OSIRIS JSON per Microsoft Azure

Il producer OSIRIS JSON per Azure si connette a Microsoft Azure tramite Azure CLI (az) e genera snapshot OSIRIS JSON della topologia delle tue sottoscrizioni: reti virtuali, subnet, NIC, NSG, bilanciatori di carico, firewall, VM e altro.

Per iniziare a usare OSIRIS JSON per Microsoft Azure, installa il core dispatcher e il producer Azure:

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

Il core dispatcher ti consente di eseguire osirisjson-producer azure .... Senza di esso, invoca direttamente il binario del vendor come osirisjson-producer-azure ....

Assicurati che $GOPATH/bin (o $HOME/go/bin) sia nel tuo PATH. Consulta la pagina Introduzione per altre opzioni di installazione.

Prerequisiti

  1. Installa Azure CLI
  2. Autenticati: az login
  3. L’utente autenticato deve avere un permesso di lettura su una o più sottoscrizioni di destinazione; puoi eseguire il producer sulla tua macchina locale oppure decidere di invocarlo tramite un job pianificato usando un account di servizio con il software o la piattaforma che preferisci.

Utilizzo della CLI

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

Modalità singola

Inizia raccogliendo una sottoscrizione che verrà salvata automaticamente come microsoft-azure-<timestamp>-<name>.json:

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

Modalità interattiva

Esegui senza flag per ottenere un selettore interattivo delle sottoscrizioni:

osirisjson-producer azure

Il producer rileva tutte le sottoscrizioni accessibili e presenta un elenco numerato. Selezionane una o più (separate da virgole) oppure digita all.

Modalità multi-sottoscrizione

Raccogli più sottoscrizioni in una directory di output:

# 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

Modalità batch (CSV)

Genera un template CSV:

osirisjson-producer azure template --generate

Raccogli da un file CSV:

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

Il template CSV usa queste colonne:

ColonnaObbligatorioDescrizione
subscription_idUUID della sottoscrizione Azure
subscription_nameEtichetta leggibile (usata come nome del file di output)
tenant_idUUID del tenant Azure AD / Entra ID
environmentFase di deployment: dv, np, pr (development, non-production, production)
regionFiltra per regione Azure (vuoto = tutte le regioni)
notesNote in testo libero (ignorate dal producer)

Gerarchia di output

Modalità singola: salva in microsoft-azure-<timestamp>-<name>.json nella directory corrente.

Modalità multi/batch/all: organizzate per tenant e timestamp:

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

Ogni sottoscrizione produce un documento OSIRIS autonomo. I riferimenti tra sottoscrizioni (ad esempio, i peering VNet verso sottoscrizioni remote) usano ID risorsa deterministici che i consumer possono correlare tra documenti diversi.

Ambienti multi-tenant

Esegui il producer una volta per tenant. Ogni az login autentica verso un tenant. Usa az login --tenant <tenant-id> per cambiare. La gerarchia di output raggruppa automaticamente i documenti per tenant.

Riferimento dei flag

FlagForma breveDescrizione
--subscription-SID delle sottoscrizioni Azure, separati da virgole
--allRileva automaticamente tutte le sottoscrizioni accessibili
--source-sFile CSV con gli obiettivi di sottoscrizione
--output-oDirectory di output (obbligatoria per la modalità multi/all/CSV)
--tenantID del tenant Azure AD / Entra ID (opzionale)
--regionFiltra per una specifica regione Azure (opzionale)
--detailLivello di dettaglio: minimal (predefinito) o detailed
--safe-failure-modeGestione dei segreti: fail-closed (predefinito), log-and-redact, off
--version / -vMostra la versione ed esce
--helpMostra l’aiuto ed esce

Cosa raccoglie

Il producer Azure interroga i seguenti tipi di risorse tramite Azure CLI:

Modalità minimale:

Tipo di risorsa AzureTipo OSIRISDescrizione
Virtual Networksnetwork.vpcVNet con spazio di indirizzamento, DNS e peering
Subnetsnetwork.subnetSubnet con prefissi di indirizzi e service endpoint
Network Interfacesnetwork.interfaceNIC con configurazioni IP
Network Security Groupsnetwork.security.groupNSG con riepiloghi delle regole
Route Tablesosiris.azure.routetableUDR con conteggio delle rotte
Public IP Addressesosiris.azure.publicipIP pubblici con metodo di allocazione
Load Balancersnetwork.loadbalancerBilanciatori di carico L4
Application Gatewaysnetwork.loadbalancerBilanciatori di carico L7 (application gateway)
Private Endpointsosiris.azure.privateendpointEndpoint private link
VNet Gatewaysosiris.azure.gateway.vnetGateway ExpressRoute / VPN
NAT Gatewaysosiris.azure.gateway.natGateway NAT in uscita
Azure Firewallsnetwork.firewallIstanze di Azure Firewall
DNS Zonesosiris.azure.dns.zoneZone DNS pubbliche
Private DNS Zonesosiris.azure.dns.privatezoneZone DNS private con link VNet
ExpressRoute Circuitsosiris.azure.expressrouteCircuiti ExpressRoute
Virtual Machinescompute.vmVM con dimensione e stato di alimentazione
Resource Groupscontainer.resourcegroupGruppi di risorse come risorse contenitore

La modalità dettagliata aggiunge dettagli delle rotte delle route table, regole dei bilanciatori di carico e proprietà estese.

Struttura di output OSIRIS JSON per 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": [ ... ]
  }
}

Tipi di risorsa

I tipi di risorsa seguono la specifica OSIRIS JSON v1.0. I tipi standard vengono usati dove definiti; i tipi specifici di Azure usano il namespace osiris.azure.*.

Tipi standard:

  • container.resourcegroup - Gruppi di risorse
  • network.vpc - Reti virtuali
  • network.subnet - Subnet
  • network.interface - Interfacce di rete
  • network.security.group - Gruppi di sicurezza di rete
  • network.loadbalancer - Bilanciatori di carico (L4 e L7)
  • network.firewall - Azure Firewall
  • compute.vm - Macchine virtuali

Tipi personalizzati (osiris.azure.*):

  • osiris.azure.routetable - Route table
  • osiris.azure.publicip - Indirizzi IP pubblici
  • osiris.azure.privateendpoint - Endpoint privati
  • osiris.azure.gateway.vnet - Gateway VNet (VPN/ExpressRoute)
  • osiris.azure.gateway.nat - Gateway NAT
  • osiris.azure.dns.zone - Zone DNS
  • osiris.azure.dns.privatezone - Zone DNS private
  • osiris.azure.expressroute - Circuiti ExpressRoute

Tipi di connessione

  • network - Connettività di rete (peering VNet, NIC-to-subnet, associazioni NSG, link DNS, connessioni gateway)
  • contains - Contenimento (appartenenza della subnet alla VNet)

Tipi di gruppi

  • logical.subscription - Gruppo di sottoscrizione di primo livello
  • logical.resourcegroup - Gruppi di resource group (figli della sottoscrizione)

Metadati del provider

Ogni risorsa include provider.type con il tipo di risorsa ARM nativo (ad esempio Microsoft.Network/virtualNetworks, Microsoft.Compute/virtualMachines). Gli stub di peering cross-subscription includono provider.subscription con l’ID della sottoscrizione remota.

ID risorsa

Gli ID risorsa di Azure seguono il pattern azure::<ARM-resource-id>, usando l’ID completo della risorsa ARM come identificatore nativo. Questo garantisce ID deterministici e globalmente univoci.

Esempi

Sottoscrizione singola

Esploreremo una singola sottoscrizione nel nostro tenant e genereremo da Microsoft Azure un documento OSIRIS JSON.

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

Documento di output OSIRIS JSON (ridotto):

{
  "$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.