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
- Instal·la l’Azure CLI
- Autentica’t:
az login - 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:
| Columna | Obligatori | Descripció |
|---|---|---|
subscription_id | sí | UUID de la subscripció d’Azure |
subscription_name | sí | Etiqueta llegible per humans (utilitzada com a nom del fitxer de sortida) |
tenant_id | UUID del tenant d’Azure AD / Entra ID | |
environment | Etapa de desplegament: dv, np, pr (desenvolupament, no producció, producció) | |
region | Filtra per regió d’Azure (buit = totes les regions) | |
notes | Notes 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
| Flag | Curt | Descripció |
|---|---|---|
--subscription | -S | ID de subscripció d’Azure, separats per comes |
--all | Descobreix automàticament totes les subscripcions accessibles | |
--source | -s | Fitxer CSV amb els objectius de subscripció |
--output | -o | Directori de sortida (obligatori per al mode multi/all/CSV) |
--tenant | ID del tenant d’Azure AD / Entra ID (opcional) | |
--region | Filtra per una regió específica d’Azure (opcional) | |
--detail | Nivell de detall: minimal (per defecte) o detailed | |
--safe-failure-mode | Gestió de secrets: fail-closed (per defecte), log-and-redact, off | |
--version / -v | Mostra la versió i surt | |
--help | Mostra 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’Azure | Tipus OSIRIS | Descripció |
|---|---|---|
| Virtual Networks | network.vpc | VNet amb espai d’adreces, DNS i peerings |
| Subnets | network.subnet | Subxarxes amb prefixos d’adreces i service endpoints |
| Network Interfaces | network.interface | NIC amb configuracions IP |
| Network Security Groups | network.security.group | NSG amb resums de regles |
| Route Tables | osiris.azure.routetable | UDR amb recompte de rutes |
| Public IP Addresses | osiris.azure.publicip | IP públiques amb mètode d’assignació |
| Load Balancers | network.loadbalancer | Balancejadors de càrrega L4 |
| Application Gateways | network.loadbalancer | Balancejadors de càrrega L7 (application gateways) |
| Private Endpoints | osiris.azure.privateendpoint | Endpoints de private link |
| VNet Gateways | osiris.azure.gateway.vnet | Gateways d’ExpressRoute / VPN |
| NAT Gateways | osiris.azure.gateway.nat | Gateways NAT de sortida |
| Azure Firewalls | network.firewall | Instàncies d’Azure Firewall |
| DNS Zones | osiris.azure.dns.zone | Zones DNS públiques |
| Private DNS Zones | osiris.azure.dns.privatezone | Zones DNS privades amb enllaços de VNet |
| ExpressRoute Circuits | osiris.azure.expressroute | Circuits ExpressRoute |
| Virtual Machines | compute.vm | VM amb mida i estat d’energia |
| Resource Groups | container.resourcegroup | Grups 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 recursosnetwork.vpc- Xarxes virtualsnetwork.subnet- Subxarxesnetwork.interface- Interfícies de xarxanetwork.security.group- Grups de seguretat de xarxanetwork.loadbalancer- Balancejadors de càrrega (L4 i L7)network.firewall- Azure Firewallscompute.vm- Màquines virtuals
Tipus personalitzats (osiris.azure.*):
osiris.azure.routetable- Taules de rutesosiris.azure.publicip- Adreces IP públiquesosiris.azure.privateendpoint- Endpoints privatsosiris.azure.gateway.vnet- Gateways de VNet (VPN/ExpressRoute)osiris.azure.gateway.nat- Gateways NATosiris.azure.dns.zone- Zones DNSosiris.azure.dns.privatezone- Zones DNS privadesosiris.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 superiorlogical.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"
]
}
]
}
}