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

Productor OSIRIS JSON per a Microsoft Azure

El productor OSIRIS JSON per a Azure es connecta a Microsoft Azure mitjançant l’Azure CLI (az) i genera snapshots OSIRIS JSON de la topologia de les teves subscripcions: xarxes virtuals, subxarxes, NIC, NSG, balancejadors de càrrega, firewalls, VM i més.

Per començar a utilitzar OSIRIS JSON per a Microsoft Azure, instal·la el dispatcher principal i el productor d’Azure:

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

El dispatcher principal et permet executar osirisjson-producer azure .... Sense ell, invoca directament el binari del proveïdor com a osirisjson-producer-azure ....

Assegura’t que $GOPATH/bin (o $HOME/go/bin) sigui al teu PATH. Consulta la pàgina primers passos per veure més opcions d’instal·lació.

Requisits previs

  1. Instal·la l’Azure CLI
  2. Autentica’t: az login
  3. L’usuari autenticat ha de tenir permís de lectura sobre una o diverses subscripcions objectiu; pots executar el productor a la teva màquina local o decidir invocar-lo mitjançant una feina programada fent servir un compte de servei amb el teu programari o plataforma preferits.

Ús de la CLI

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

Mode únic

Comença recopilant una subscripció que es desarà automàticament com a microsoft-azure-<timestamp>-<name>.json:

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

Mode interactiu

Executa sense flags per obtenir un selector interactiu de subscripcions:

osirisjson-producer azure

El productor descobreix totes les subscripcions accessibles i presenta una llista numerada. Selecciona’n una o més (separades per comes) o escriu all.

Mode multi-subscripció

Recopila diverses subscripcions en un directori de sortida:

# 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

Mode per lots (CSV)

Genera una plantilla CSV:

osirisjson-producer azure template --generate

Recopila des d’un fitxer CSV:

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

La plantilla CSV utilitza aquestes columnes:

ColumnaObligatoriDescripció
subscription_idUUID de la subscripció d’Azure
subscription_nameEtiqueta llegible per humans (utilitzada com a nom del fitxer de sortida)
tenant_idUUID del tenant d’Azure AD / Entra ID
environmentEtapa de desplegament: dv, np, pr (desenvolupament, no producció, producció)
regionFiltra per regió d’Azure (buit = totes les regions)
notesNotes de text lliure (ignorades pel productor)

Jerarquia de sortida

Mode únic: desa a microsoft-azure-<timestamp>-<name>.json al directori actual.

Modes multi/lots/all: organitzats per tenant i marca temporal:

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

Cada subscripció produeix un document OSIRIS autocontingut. Les referències entre subscripcions (per exemple, peerings de VNet a subscripcions remotes) fan servir identificadors de recurs deterministes que els consumidors poden correlacionar entre documents.

Entorns multi-tenant

Executa el productor una vegada per tenant. Cada az login autentica en un tenant. Fes servir az login --tenant <tenant-id> per canviar. La jerarquia de sortida agrupa automàticament els documents per tenant.

Referència de flags

FlagCurtDescripció
--subscription-SID de subscripció d’Azure, separats per comes
--allDescobreix automàticament totes les subscripcions accessibles
--source-sFitxer CSV amb els objectius de subscripció
--output-oDirectori de sortida (obligatori per al mode multi/all/CSV)
--tenantID del tenant d’Azure AD / Entra ID (opcional)
--regionFiltra per una regió específica d’Azure (opcional)
--detailNivell de detall: minimal (per defecte) o detailed
--safe-failure-modeGestió de secrets: fail-closed (per defecte), log-and-redact, off
--version / -vMostra la versió i surt
--helpMostra l’ajuda i surt

Què recopila

El productor d’Azure consulta els tipus de recursos següents mitjançant l’Azure CLI:

Mode mínim:

Tipus de recurs d’AzureTipus OSIRISDescripció
Virtual Networksnetwork.vpcVNet amb espai d’adreces, DNS i peerings
Subnetsnetwork.subnetSubxarxes amb prefixos d’adreces i service endpoints
Network Interfacesnetwork.interfaceNIC amb configuracions IP
Network Security Groupsnetwork.security.groupNSG amb resums de regles
Route Tablesosiris.azure.routetableUDR amb recompte de rutes
Public IP Addressesosiris.azure.publicipIP públiques amb mètode d’assignació
Load Balancersnetwork.loadbalancerBalancejadors de càrrega L4
Application Gatewaysnetwork.loadbalancerBalancejadors de càrrega L7 (application gateways)
Private Endpointsosiris.azure.privateendpointEndpoints de private link
VNet Gatewaysosiris.azure.gateway.vnetGateways d’ExpressRoute / VPN
NAT Gatewaysosiris.azure.gateway.natGateways NAT de sortida
Azure Firewallsnetwork.firewallInstàncies d’Azure Firewall
DNS Zonesosiris.azure.dns.zoneZones DNS públiques
Private DNS Zonesosiris.azure.dns.privatezoneZones DNS privades amb enllaços de VNet
ExpressRoute Circuitsosiris.azure.expressrouteCircuits ExpressRoute
Virtual Machinescompute.vmVM amb mida i estat d’energia
Resource Groupscontainer.resourcegroupGrups de recursos com a recursos contenidor

El mode detallat afegeix detalls de rutes de taules d’encaminament, regles de balancejadors de càrrega i propietats ampliades.

Estructura de sortida OSIRIS JSON per a 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": [ ... ]
  }
}

Tipus de recursos

Els tipus de recursos segueixen l’especificació OSIRIS JSON v1.0. Els tipus estàndard s’utilitzen on estan definits; els tipus específics d’Azure fan servir l’espai de noms osiris.azure.*.

Tipus estàndard:

  • container.resourcegroup - Grups de recursos
  • network.vpc - Xarxes virtuals
  • network.subnet - Subxarxes
  • network.interface - Interfícies de xarxa
  • network.security.group - Grups de seguretat de xarxa
  • network.loadbalancer - Balancejadors de càrrega (L4 i L7)
  • network.firewall - Azure Firewalls
  • compute.vm - Màquines virtuals

Tipus personalitzats (osiris.azure.*):

  • osiris.azure.routetable - Taules de rutes
  • osiris.azure.publicip - Adreces IP públiques
  • osiris.azure.privateendpoint - Endpoints privats
  • osiris.azure.gateway.vnet - Gateways de VNet (VPN/ExpressRoute)
  • osiris.azure.gateway.nat - Gateways NAT
  • osiris.azure.dns.zone - Zones DNS
  • osiris.azure.dns.privatezone - Zones DNS privades
  • osiris.azure.expressroute - Circuits ExpressRoute

Tipus de connexió

  • network - Connectivitat de xarxa (peerings de VNet, NIC a subxarxa, associacions de NSG, enllaços DNS, connexions de gateway)
  • contains - Contenció (pertinença de subxarxa a VNet)

Tipus de grups

  • logical.subscription - Grup de subscripció de nivell superior
  • logical.resourcegroup - Grups de grups de recursos (fills de la subscripció)

Metadades del proveïdor

Cada recurs inclou provider.type amb el tipus de recurs ARM natiu (per exemple, Microsoft.Network/virtualNetworks, Microsoft.Compute/virtualMachines). Els stubs de peering entre subscripcions inclouen provider.subscription amb l’ID de la subscripció remota.

IDs de recursos

Els IDs de recursos d’Azure segueixen el patró azure::<ARM-resource-id>, fent servir l’ID complet del recurs ARM com a identificador natiu. Això garanteix IDs globalment únics i deterministes.

Exemples

Subscripció única

Explorarem una sola subscripció del nostre tenant i generarem des de Microsoft Azure un document OSIRIS JSON.

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

Document de sortida OSIRIS JSON (retallat):

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