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

Producer OSIRIS JSON pour Microsoft Azure

Le producer OSIRIS JSON Azure se connecte à Microsoft Azure via l’Azure CLI (az) et génère des snapshots OSIRIS JSON de la topologie de vos abonnements : réseaux virtuels, sous-réseaux, NIC, NSG, load balancers, firewalls, VM, et plus encore.

Pour commencer à utiliser OSIRIS JSON pour Microsoft Azure, installez le core dispatcher et le producer Azure :

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

Le core dispatcher vous permet d’exécuter osirisjson-producer azure .... Sans lui, invoquez directement le binaire du fournisseur sous la forme osirisjson-producer-azure ....

Assurez-vous que $GOPATH/bin (ou $HOME/go/bin) se trouve dans votre PATH. Consultez la page Premiers pas pour voir d’autres options d’installation.

Prérequis

  1. Installez l’Azure CLI
  2. Authentifiez-vous : az login
  3. L’utilisateur authentifié doit disposer d’une autorisation de lecture sur un ou plusieurs abonnements cibles. Vous pouvez exécuter le producer sur votre machine locale ou décider de l’invoquer via une tâche planifiée avec un compte de service à l’aide de votre logiciel ou plateforme préféré.

Utilisation de la CLI

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

Mode unique

Commencez par collecter un abonnement qui sera automatiquement enregistré sous microsoft-azure-<timestamp>-<name>.json :

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

Mode interactif

Exécutez sans flags pour obtenir un sélecteur interactif d’abonnements :

osirisjson-producer azure

Le producer découvre tous les abonnements accessibles et présente une liste numérotée. Sélectionnez-en un ou plusieurs (séparés par des virgules) ou tapez all.

Mode multi-abonnements

Collectez plusieurs abonnements dans un répertoire de sortie :

# 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 batch (CSV)

Générez un modèle CSV :

osirisjson-producer azure template --generate

Collectez à partir d’un fichier CSV :

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

Le modèle CSV utilise ces colonnes :

ColonneObligatoireDescription
subscription_idouiUUID de l’abonnement Azure
subscription_nameouiLibellé lisible par un humain (utilisé comme nom du fichier de sortie)
tenant_idUUID du tenant Azure AD / Entra ID
environmentÉtape de déploiement : dv, np, pr (développement, préproduction, production)
regionFiltrer par région Azure (vide = toutes les régions)
notesNotes en texte libre (ignorées par le producer)

Hiérarchie de sortie

Mode unique : enregistre dans microsoft-azure-<timestamp>-<name>.json dans le répertoire courant.

Modes multi/batch/all : organisés par tenant et timestamp :

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

Chaque abonnement produit un document OSIRIS autonome. Les références inter-abonnements (par exemple les peerings VNet vers des abonnements distants) utilisent des identifiants de ressource déterministes que les consommateurs peuvent corréler entre les documents.

Environnements multi-tenant

Exécutez le producer une fois par tenant. Chaque az login authentifie sur un tenant. Utilisez az login --tenant <tenant-id> pour changer. La hiérarchie de sortie regroupe automatiquement les documents par tenant.

Référence des flags

FlagAbrégéDescription
--subscription-SID d’abonnement Azure, séparés par des virgules
--allDécouvrir automatiquement tous les abonnements accessibles
--source-sFichier CSV avec les cibles d’abonnement
--output-oRépertoire de sortie (obligatoire pour le mode multi/all/CSV)
--tenantID du tenant Azure AD / Entra ID (optionnel)
--regionFiltrer sur une région Azure spécifique (optionnel)
--detailNiveau de détail : minimal (par défaut) ou detailed
--safe-failure-modeGestion des secrets : fail-closed (par défaut), log-and-redact, off
--version / -vAfficher la version et quitter
--helpAfficher l’aide et quitter

Ce qu’il collecte

Le producer Azure interroge les types de ressources suivants via l’Azure CLI :

Mode minimal :

Type de ressource AzureType OSIRISDescription
Virtual Networksnetwork.vpcVNet avec espace d’adressage, DNS et peerings
Subnetsnetwork.subnetSous-réseaux avec préfixes d’adresses et service endpoints
Network Interfacesnetwork.interfaceNIC avec configurations IP
Network Security Groupsnetwork.security.groupNSG avec résumés des règles
Route Tablesosiris.azure.routetableUDR avec nombre de routes
Public IP Addressesosiris.azure.publicipIP publiques avec méthode d’allocation
Load Balancersnetwork.loadbalancerLoad balancers L4
Application Gatewaysnetwork.loadbalancerLoad balancers L7 (application gateways)
Private Endpointsosiris.azure.privateendpointEndpoints private link
VNet Gatewaysosiris.azure.gateway.vnetGateways ExpressRoute / VPN
NAT Gatewaysosiris.azure.gateway.natGateways NAT sortants
Azure Firewallsnetwork.firewallInstances Azure Firewall
DNS Zonesosiris.azure.dns.zoneZones DNS publiques
Private DNS Zonesosiris.azure.dns.privatezoneZones DNS privées avec liens VNet
ExpressRoute Circuitsosiris.azure.expressrouteCircuits ExpressRoute
Virtual Machinescompute.vmVM avec taille et état d’alimentation
Resource Groupscontainer.resourcegroupGroupes de ressources en tant que ressources conteneur

Le mode détaillé ajoute les détails des routes des tables de routage, les règles de load balancer et les propriétés étendues.

Structure de sortie OSIRIS JSON pour 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": [ ... ]
  }
}

Types de ressources

Les types de ressources suivent la spécification OSIRIS JSON v1.0. Les types standard sont utilisés lorsqu’ils sont définis ; les types spécifiques à Azure utilisent l’espace de noms osiris.azure.*.

Types standard :

  • container.resourcegroup - Groupes de ressources
  • network.vpc - Réseaux virtuels
  • network.subnet - Sous-réseaux
  • network.interface - Interfaces réseau
  • network.security.group - Groupes de sécurité réseau
  • network.loadbalancer - Load balancers (L4 et L7)
  • network.firewall - Azure Firewalls
  • compute.vm - Machines virtuelles

Types personnalisés (osiris.azure.*) :

  • osiris.azure.routetable - Tables de routage
  • osiris.azure.publicip - Adresses IP publiques
  • osiris.azure.privateendpoint - Endpoints privés
  • osiris.azure.gateway.vnet - Gateways VNet (VPN/ExpressRoute)
  • osiris.azure.gateway.nat - Gateways NAT
  • osiris.azure.dns.zone - Zones DNS
  • osiris.azure.dns.privatezone - Zones DNS privées
  • osiris.azure.expressroute - Circuits ExpressRoute

Types de connexions

  • network - Connectivité réseau (peerings VNet, NIC-to-subnet, associations NSG, liens DNS, connexions de gateway)
  • contains - Contenance (appartenance du sous-réseau au VNet)

Types de groupes

  • logical.subscription - Groupe d’abonnement de niveau supérieur
  • logical.resourcegroup - Groupes de groupes de ressources (enfants de l’abonnement)

Métadonnées du fournisseur

Chaque ressource inclut provider.type avec le type de ressource ARM natif (par exemple Microsoft.Network/virtualNetworks, Microsoft.Compute/virtualMachines). Les stubs de peering inter-abonnements incluent provider.subscription avec l’ID de l’abonnement distant.

ID de ressources

Les ID de ressources Azure suivent le modèle azure::<ARM-resource-id>, en utilisant l’ID complet de la ressource ARM comme identifiant natif. Cela garantit des ID déterministes et globalement uniques.

Exemples

Abonnement unique

Nous allons explorer un abonnement unique dans notre tenant et générer depuis Microsoft Azure un document OSIRIS JSON.

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

Document de sortie OSIRIS JSON (tronqué) :

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