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

Productor OSIRIS JSON para Microsoft Azure

El productor OSIRIS JSON para Azure se conecta a Microsoft Azure mediante Azure CLI (az) y genera instantáneas OSIRIS JSON de la topología de sus suscripciones: redes virtuales, subredes, NIC, NSG, balanceadores de carga, firewalls, VM y más.

Para comenzar a usar OSIRIS JSON para Microsoft Azure, instale el despachador principal y el productor de Azure:

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

El despachador principal le permite ejecutar osirisjson-producer azure .... Sin él, invoque directamente el binario del proveedor como osirisjson-producer-azure ....

Asegúrese de que $GOPATH/bin (o $HOME/go/bin) esté en su PATH. Consulte la página primeros pasos para ver más opciones de instalación.

Requisitos previos

  1. Instale Azure CLI
  2. Autentíquese: az login
  3. El usuario autenticado debe tener permiso de lectura sobre una o varias suscripciones objetivo; puede ejecutar el productor en su máquina local o decidir invocarlo mediante un trabajo programado usando una cuenta de servicio con el software o la plataforma de su preferencia.

Uso de la CLI

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

Modo individual

Comience recopilando una suscripción que se guardará automáticamente como microsoft-azure-<timestamp>-<name>.json:

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

Modo interactivo

Ejecute sin flags para obtener un selector interactivo de suscripciones:

osirisjson-producer azure

El productor detecta todas las suscripciones accesibles y presenta una lista numerada. Seleccione una o varias (separadas por comas) o escriba all.

Modo multi-suscripción

Recopile varias suscripciones en un directorio de salida:

# 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

Modo por lotes (CSV)

Genere una plantilla CSV:

osirisjson-producer azure template --generate

Recopile desde un archivo CSV:

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

La plantilla CSV usa estas columnas:

ColumnaObligatorioDescripción
subscription_idUUID de la suscripción de Azure
subscription_nameEtiqueta legible para humanos (usada como nombre del archivo de salida)
tenant_idUUID del tenant de Azure AD / Entra ID
environmentEtapa de despliegue: dv, np, pr (desarrollo, no producción, producción)
regionFiltrar por región de Azure (vacío = todas las regiones)
notesNotas en texto libre (ignoradas por el productor)

Jerarquía de salida

Modo individual: guarda en microsoft-azure-<timestamp>-<name>.json en el directorio actual.

Modos multi/lotes/all: organizados por tenant y marca de tiempo:

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

Cada suscripción produce un documento OSIRIS autocontenido. Las referencias entre suscripciones (por ejemplo, peerings de VNet a suscripciones remotas) usan identificadores de recursos deterministas que los consumidores pueden correlacionar entre documentos.

Entornos multi-tenant

Ejecute el productor una vez por tenant. Cada az login autentica en un tenant. Use az login --tenant <tenant-id> para cambiar. La jerarquía de salida agrupa automáticamente los documentos por tenant.

Referencia de flags

FlagCortoDescripción
--subscription-SID de suscripción de Azure, separadas por comas
--allDetectar automáticamente todas las suscripciones accesibles
--source-sArchivo CSV con los objetivos de suscripción
--output-oDirectorio de salida (obligatorio para modo multi/all/CSV)
--tenantID del tenant de Azure AD / Entra ID (opcional)
--regionFiltrar por una región específica de Azure (opcional)
--detailNivel de detalle: minimal (predeterminado) o detailed
--safe-failure-modeManejo de secretos: fail-closed (predeterminado), log-and-redact, off
--version / -vMostrar la versión y salir
--helpMostrar la ayuda y salir

Qué recopila

El productor de Azure consulta los siguientes tipos de recursos mediante Azure CLI:

Modo mínimo:

Tipo de recurso de AzureTipo OSIRISDescripción
Virtual Networksnetwork.vpcVNet con espacio de direcciones, DNS y peerings
Subnetsnetwork.subnetSubredes con prefijos de direcciones y service endpoints
Network Interfacesnetwork.interfaceNIC con configuraciones IP
Network Security Groupsnetwork.security.groupNSG con resúmenes de reglas
Route Tablesosiris.azure.routetableUDR con conteo de rutas
Public IP Addressesosiris.azure.publicipIP públicas con método de asignación
Load Balancersnetwork.loadbalancerBalanceadores de carga L4
Application Gatewaysnetwork.loadbalancerBalanceadores de carga L7 (application gateways)
Private Endpointsosiris.azure.privateendpointEndpoints de private link
VNet Gatewaysosiris.azure.gateway.vnetGateways de ExpressRoute / VPN
NAT Gatewaysosiris.azure.gateway.natGateways NAT de salida
Azure Firewallsnetwork.firewallInstancias de Azure Firewall
DNS Zonesosiris.azure.dns.zoneZonas DNS públicas
Private DNS Zonesosiris.azure.dns.privatezoneZonas DNS privadas con enlaces a VNet
ExpressRoute Circuitsosiris.azure.expressrouteCircuitos ExpressRoute
Virtual Machinescompute.vmVM con tamaño y estado de energía
Resource Groupscontainer.resourcegroupGrupos de recursos como recursos contenedores

El modo detallado agrega detalles de rutas de tablas de enrutamiento, reglas de balanceadores de carga y propiedades extendidas.

Estructura de salida OSIRIS JSON para 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": [ ... ]
  }
}

Tipos de recursos

Los tipos de recursos siguen la especificación OSIRIS JSON v1.0. Los tipos estándar se usan donde están definidos; los tipos específicos de Azure usan el espacio de nombres osiris.azure.*.

Tipos estándar:

  • container.resourcegroup - Grupos de recursos
  • network.vpc - Redes virtuales
  • network.subnet - Subredes
  • network.interface - Interfaces de red
  • network.security.group - Grupos de seguridad de red
  • network.loadbalancer - Balanceadores de carga (L4 y L7)
  • network.firewall - Azure Firewalls
  • compute.vm - Máquinas virtuales

Tipos personalizados (osiris.azure.*):

  • osiris.azure.routetable - Tablas de rutas
  • osiris.azure.publicip - Direcciones IP públicas
  • osiris.azure.privateendpoint - Endpoints privados
  • osiris.azure.gateway.vnet - Gateways de VNet (VPN/ExpressRoute)
  • osiris.azure.gateway.nat - Gateways NAT
  • osiris.azure.dns.zone - Zonas DNS
  • osiris.azure.dns.privatezone - Zonas DNS privadas
  • osiris.azure.expressroute - Circuitos ExpressRoute

Tipos de conexión

  • network - Conectividad de red (peerings de VNet, NIC a subred, asociaciones de NSG, enlaces DNS, conexiones de gateway)
  • contains - Contención (pertenencia de subred a VNet)

Tipos de grupos

  • logical.subscription - Grupo de suscripción de nivel superior
  • logical.resourcegroup - Grupos de grupos de recursos (hijos de la suscripción)

Metadatos del proveedor

Cada recurso incluye provider.type con el tipo de recurso ARM nativo (por ejemplo, Microsoft.Network/virtualNetworks, Microsoft.Compute/virtualMachines). Los stubs de peering entre suscripciones incluyen provider.subscription con el ID de la suscripción remota.

IDs de recursos

Los IDs de recursos de Azure siguen el patrón azure::<ARM-resource-id>, usando el ID completo del recurso ARM como identificador nativo. Esto garantiza IDs globalmente únicos y deterministas.

Ejemplos

Suscripción individual

Vamos a explorar una sola suscripción en nuestro tenant y generar desde Microsoft Azure un documento OSIRIS JSON.

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

Documento de salida OSIRIS JSON (recortado):

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