Productor OSIRIS JSON per a Microsoft Azure
El productor OSIRIS JSON per a Azure es connecta a Microsoft Azure mitjançant Azure CLI (az) i genera snapshots OSIRIS JSON de la topologia de la teva subscripció. A partir de v0.5.0, el productor cobreix xarxes, computació, emmagatzematge, identitat, bases de dades, contenidors, integració, observabilitat, backup, automatització i nivells de grups de gestió, incloent-hi les seves arestes de dependència entre recursos (Private Endpoint cap a destinacions PaaS, App Service cap a App Insights, Log Analytics, RSV, Backup Vault cap a elements protegits, AKS cap a subxarxes i pools de nodes, etc.).
Requisits previs
- Installeu el productor OSIRIS JSON. Consulteu la pàgina Installació per obtenir més opcions d’installació.
- Autentica’t:
az login - L’usuari autenticat ha de tenir el rol Reader (o un permís de lectura equivalent) a les subscripcions de destinació. Per a la recollida completa de dades, incloses les rutes efectives, l’usuari també necessita el permís
Microsoft.Network/networkInterfaces/effectiveRouteTable/action(inclòs a Network Contributor i superiors). Si aquest permís no és present, el productor omet la recollida de rutes efectives amb un log INFO i continua normalment.
Pots executar el productor a la teva màquina local o invocar-lo mitjançant un job programat amb un compte de servei a la plataforma que prefereixis.
Ús de la CLI
osirisjson-producer azure [flags]
osirisjson-producer azure template --generate
Mode únic
Comença recollint una subscripció que es desarà automàticament com 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 amb números individuals (1,3,5), intervals (30-55), combinacions (1,3,30-55) o escriu all.
Mode multisubscripció
Recull 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 batch (CSV)
Genera una plantilla CSV:
osirisjson-producer azure template --generate
Recull 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ó Azure |
subscription_name | sí | Etiqueta llegible per humans (utilitzada com a nom del fitxer de sortida) |
tenant_id | UUID del tenant Azure AD / Entra ID | |
environment | Fase de desplegament: dv, np, pr (desenvolupament, no producció, producció) | |
region | Filtra per regió 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/batch/all: organitzats per tenant i timestamp:
output/
<TenantID>/
<timestamp>/
<SubscriptionName>.json
Cada subscripció produeix un document OSIRIS autocontingut. Les referències entre subscripcions (per exemple, peerings de VNet o connexions ExpressRoute cap a subscripcions remotes) s’emeten com a recursos stub amb provider.subscription establert a l’ID de la subscripció remota, de manera que l’aresta de topologia sobreviu al límit mentre el document continua sent vàlid.
Entorns multi-tenant
Executa el productor una vegada per tenant. Cada az login autentica en un tenant. Utilitza az login --tenant <tenant-id> per canviar. La jerarquia de sortida agrupa automàticament els documents per tenant.
Referència de flags
| Flag | Curta | Descripció |
|---|---|---|
--subscription | -S | ID de subscripció Azure, separats per comes |
--all | Descobreix automàticament totes les subscripcions accessibles | |
--source | -s | Fitxer CSV amb les subscripcions de destinació |
--output | -o | Directori de sortida (obligatori per al mode multi/all/CSV) |
--tenant | ID del tenant Azure AD / Entra ID (opcional) | |
--region | Filtra per una regió Azure específica (opcional) | |
--purpose | Grau de detall de la sortida: documentation (predeterminat) o audit. Consulta Propòsit més avall | |
--safe-failure-mode | Tractament de secrets: fail-closed (predeterminat), log-and-redact, off | |
--version / -v | Mostra la versió i surt | |
--help | Mostra l’ajuda i surt |
Propòsit
La flag --purpose implementa el capítol 13.1.3 de l’especificació OSIRIS JSON (minimització de dades). La recollida sempre és exhaustiva; l’emissió s’ajusta al propòsit declarat perquè la mateixa execució del productor pugui servir tant casos d’ús de visualització lleugera com casos d’ús d’auditoria / compliment.
| Valor | Comportament |
|---|---|
documentation (predeterminat) | Camps mínims: identitat, tipus, traçabilitat del provider, noms, tags i relacions d’alt nivell. Els mapes properties i extensions per recurs s’eliminen. Adequat per a diagrames, dashboards d’inventari i documentació d’alt nivell. |
audit | Tots els camps llegibles, després de redactar els camps sensibles. Mapes properties i extensions complets per a cada recurs, connexió i grup. Adequat per a revisions de compliment, auditories, deriva de configuració o documentació profunda i disseny precís de topologia. |
El valor seleccionat es registra al document sota metadata.scope.purpose, perquè els consumidors puguin identificar quin grau de detall estan llegint.
[!IMPORTANT] Els secrets sempre es redacten independentment del propòsit. La projecció d’auditoria afegeix detalls (adreces IP, regles NSG, subcamps SKU, detalls BGP, etc.); no afegeix mai material d’autenticació. Les contrasenyes d’administrador de base de dades, les claus d’accés de Cosmos / Redis / Service Bus / Event Hubs, les claus d’instrumentació d’App Insights i les claus compartides de Log Analytics no es recopilen mai.
# Default: documentation (minimal projection)
osirisjson-producer azure -S a1b2c3d4-e5f6-7890-abcd-ef1234567890
# Audit: full ARM fidelity
osirisjson-producer azure -S a1b2c3d4-e5f6-7890-abcd-ef1234567890 --purpose audit
Què recopila el productor OSIRIS JSON per a Microsoft Azure
El productor OSIRIS JSON per a Microsoft Azure recopila a cada execució un inventari complet dels tipus de recurs compatibles mitjançant Azure CLI. Les taules següents agrupen allò que es consulta.
Xarxa
| Recurs Microsoft Azure | Tipus OSIRIS JSON |
|---|---|
| Virtual Networks | network.vpc |
| Subnets | network.subnet |
| Network Interfaces | network.interface |
| Network Security Groups | network.security.group |
| Application Security Groups | osiris.azure.asg |
| Route Tables | osiris.azure.routetable |
| Public IP Addresses | osiris.azure.publicip |
| Public IP Prefixes | osiris.azure.publicipprefix |
| Load Balancers (L4) | network.loadbalancer |
| Application Gateways (L7) | osiris.azure.applicationgateway |
| Azure Firewalls | network.firewall |
| NAT Gateways | osiris.azure.gateway.nat |
| VNet Gateways (VPN / ExpressRoute) | osiris.azure.gateway.vnet |
| Route Servers | osiris.azure.routeserver |
| ExpressRoute Circuits | osiris.azure.expressroute |
| VPN Gateway Connections | osiris.azure.vpnconnection |
| Private Endpoints | osiris.azure.privateendpoint |
| DNS Zones | osiris.azure.dns.zone |
| Private DNS Zones | osiris.azure.dns.privatezone |
| DNS Private Resolvers | osiris.azure.dns.resolver |
| DNS Forwarding Rulesets | osiris.azure.dns.forwardingruleset |
| Azure Bastion | osiris.azure.bastion |
| Traffic Manager Profiles | osiris.azure.trafficmanager |
| Availability Sets | osiris.azure.availabilityset |
Computació
| Recurs Microsoft Azure | Tipus OSIRIS JSON |
|---|---|
| Virtual Machines | compute.vm |
| VM Scale Sets | osiris.azure.vmss |
| Managed Disks | osiris.azure.disk |
| Managed Snapshots | osiris.azure.snapshot |
| Azure Arc Machines | osiris.azure.arc.machine |
Emmagatzematge
| Recurs Microsoft Azure | Tipus OSIRIS JSON |
|---|---|
| Storage Accounts | osiris.azure.storage |
App Service / capa web
| Recurs Microsoft Azure | Tipus OSIRIS JSON |
|---|---|
| App Service Plan | osiris.azure.appserviceplan |
| Web App | osiris.azure.webapp |
| Web App Deployment Slot | osiris.azure.webapp.slot |
| Function App | osiris.azure.functionapp |
Encaminament d’App Service: els llocs el kind dels quals conté functionapp s’emeten com osiris.azure.functionapp; tots els altres llocs s’emeten com osiris.azure.webapp.
Identitat i seguretat
| Recurs Microsoft Azure | Tipus OSIRIS JSON |
|---|---|
| Key Vault | osiris.azure.keyvault |
| Container Registry | osiris.azure.containerregistry |
| User-Assigned Managed Identity | osiris.azure.managedidentity |
Backup i recuperació davant desastres
| Recurs Microsoft Azure | Tipus OSIRIS JSON |
|---|---|
| Recovery Services Vault | osiris.azure.recoveryservicesvault |
| Backup Vault (Azure Backup) | osiris.azure.backupvault |
Bases de dades
| Recurs Microsoft Azure | Tipus OSIRIS JSON |
|---|---|
| SQL Server | osiris.azure.sqlserver |
| SQL Database | osiris.azure.sqldatabase |
| SQL Elastic Pool | osiris.azure.sql.elasticpool |
| SQL Managed Instance | osiris.azure.sqlmi |
| SQL MI Database | osiris.azure.sqlmidatabase |
| SQL Virtual Machine | osiris.azure.sqlvm |
| PostgreSQL Flexible Server | osiris.azure.postgresqlserver |
| MySQL Flexible Server | osiris.azure.mysqlserver |
| Cosmos DB account | osiris.azure.cosmosaccount |
| Redis Cache | osiris.azure.redis |
Contenidors
| Recurs Microsoft Azure | Tipus OSIRIS JSON |
|---|---|
| AKS Cluster | osiris.azure.aks.cluster |
| AKS Agent Pool | osiris.azure.aks.nodepool |
| Container App Managed Environment | osiris.azure.containerapp.environment |
| Container App | osiris.azure.containerapp |
| Container Group / ACI | osiris.azure.containergroup |
Integració i missatgeria
| Recurs Microsoft Azure | Tipus OSIRIS JSON |
|---|---|
| Service Bus Namespace | osiris.azure.servicebus.namespace |
| Event Hubs Namespace | osiris.azure.eventhubs.namespace |
| API Management Service | osiris.azure.apim |
| Front Door (Standard / Premium) | osiris.azure.frontdoor.profile |
| Stream Analytics | osiris.azure.streamanalytics |
| Event Grid System Topic | osiris.azure.eventgrid.systemtopic |
Automatització i workflows
| Recurs Microsoft Azure | Tipus OSIRIS JSON |
|---|---|
| Logic Workflow | osiris.azure.logic.workflow |
| Logic API Connection | osiris.azure.logic.apiconnection |
| Data Factory | osiris.azure.datafactory |
| Synapse Workspace | osiris.azure.synapse.workspace |
| Automation Account | osiris.azure.automation.account |
| Communication Service | osiris.azure.communicationservice |
| Email Communication Service | osiris.azure.emailservice |
| Email Communication Domain | osiris.azure.emailservice.domain |
Observabilitat
| Recurs Microsoft Azure | Tipus OSIRIS JSON | Nota |
|---|---|---|
| Application Insights | osiris.azure.applicationinsights | |
| Log Analytics Workspace | osiris.azure.loganalytics | |
| Data Collection Rule | osiris.azure.monitor.datacollectionrule | |
| Data Collection Endpoint | osiris.azure.monitor.datacollectionendpoint | |
| Autoscale Setting | osiris.azure.monitor.autoscale | |
| Metric Alert | osiris.azure.monitor.metricalert | només --purpose audit |
| Action Group | osiris.azure.monitor.actiongroup | només --purpose audit |
Els recursos Metric Alert i Action Group estan restringits a --purpose audit perquè són construccions de política d’observabilitat, no recursos de topologia; amb el propòsit predeterminat documentation no s’emeten.
Contenció
| Recurs Microsoft Azure | Tipus OSIRIS JSON |
|---|---|
| Grups de recursos | container.resourcegroup |
Què no es recopila intencionadament
OSIRIS JSON defineix un format JSON neutral respecte al proveïdor per descriure recursos d’infraestructura, les seves propietats i les seves relacions topològiques - no és un format Infrastructure-as-Code ni similar. Pots llegir-ne més aquí: Què és OSIRIS JSON. El següent queda intencionadament fora d’abast:
- Polítiques de backup / retenció sota Recovery Services Vault i Backup Vault (s’emeten els vaults i les arestes cap a elements protegits; els cossos de les polítiques no).
- Política de capa de base de dades: auditoria SQL, detecció d’amenaces, TDE, regles de firewall, security-alert-policy.
- Polítiques, productes, operacions i valors amb nom d’API Management.
- Rutes, rule sets, endpoints i associacions de polítiques WAF de Front Door (s’emet el perfil; l’encaminament no).
- Secrets de Container App i variables d’entorn d’ACI.
- Enumeració de diagnostic settings per recurs (afegiria una crida
azper recurs). - Azure Front Door clàssic (
Microsoft.Network/frontDoors, obsolet). Microsoft.DBforPostgreSQL/serversheretat (single server, fi de vida al roadmap d’Azure).
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.5.0",
"url": "https://osirisjson.org/en/docs/producers/hyperscalers/microsoft-azure"
},
"scope": {
"name": "<subscription-id> - <subscription-name>",
"purpose": "documentation",
"providers": ["azure"],
"accounts": ["<tenant-id>"],
"subscriptions": ["<subscription-id>"],
"regions": ["westeurope", "eastus2"]
}
},
"topology": {
"resources": [ ... ],
"connections": [ ... ],
"groups": [ ... ]
}
}
Tipus de connexió
Les arestes de connexió utilitzen subtipus estàndard d’OSIRIS JSON v1.0 segons el capítol 5.2.3 de l’especificació, perquè els consumidors puguin distingir les capes de topologia.
| Tipus de connexió OSIRIS JSON | Utilitzat per |
|---|---|
contains | Contenció (Subnet dins de VNet, App Service Plan dins de site, AKS Cluster dins de node pool, RG dins de Subscription, SQL Server dins de SQL Database, SQL MI dins de SQL MI Database, Disk d’origen dins de Snapshot, VM dins de Disk adjunt) |
network | Connectivitat de xarxa genèrica (NIC cap a subnet, associacions NSG, enllaços DNS, connexions de gateway, App Insights cap a workspace, Web App cap a App Insights, AKS / Redis / ACI cap a subnet, APIM cap a subnet) |
network.peering | Peerings de VNet |
network.vpn | Connexions de gateway VPN |
network.bgp | Connexions de circuit ExpressRoute |
dependency | Private Endpoint cap a destinació PaaS (Web App, Function App, Key Vault, Container Registry, Recovery Services Vault, clúster AKS, Service Bus, Event Hubs, APIM) |
dependency.storage | Private Endpoint cap a Storage Account |
dependency.database | Private Endpoint cap a base de dades (SQL Server, Cosmos DB, Redis) |
Tipus de grup
| Tipus de grup OSIRIS JSON | Utilitzat per |
|---|---|
logical.subscription | Grup de subscripció de nivell superior. Amb --purpose audit obté extensions.osiris.azure.management_group_path (array JSON de noms de visualització, de l’arrel a la fulla). |
logical.resourcegroup | Grups de resource group (fills de la subscripció) |
logical.managementgroup | Un grup per cada management group a la cadena d’ancestres del tenant (de l’arrel al pare de la subscripció). Cada grup llista les seves subscripcions filles directes i management groups fills com children. |
container.region | Un grup per cada provider.region distint observat a la subscripció, incloent-hi com a membres tots els recursos d’aquesta regió. La regió global i els recursos sense regió s’ometen. El token de límit és <subscription-id>/<region>, per tant els grups no collideixen mai entre subscripcions. |
Tipus de recurs
Els tipus de recurs segueixen l’especificació OSIRIS JSON v1.0. S’utilitzen tipus estàndard on estan definits; els tipus específics d’Azure utilitzen el namespace osiris.azure.*.
Tipus estàndard:
container.resourcegroup- Grups de recursosnetwork.vpc- Xarxes virtualsnetwork.subnet- Subxarxesnetwork.interface- Interfícies de xarxanetwork.security.group- Network security groupsnetwork.loadbalancer- Load balancers (només L4; Application Gateways utilitzaosiris.azure.applicationgateway)network.firewall- Azure Firewallscompute.vm- Màquines virtuals
Extensions (osiris.azure)
Les dades específiques d’Azure que no es mapegen a propietats portables d’OSIRIS JSON s’emeten sota el namespace d’extensió osiris.azure. Això segueix l’especificació OSIRIS JSON: properties conté dades comunes / portables, extensions conté dades detallades específiques del proveïdor. Les extensions només s’emeten amb --purpose audit.
Les extensions representatives inclouen:
| Tipus de recurs OSIRIS JSON | Camps d’extensió seleccionats |
|---|---|
network.interface | enable_accelerated_networking, effective_routes[] |
network.security.group | default_security_rules[] |
osiris.azure.expressroute | sku, sku_tier, service_provider, peerings[] (tipus de peering BGP, estat, ASN del peer, ID de VLAN, prefixos d’adreça) |
osiris.azure.webapp / osiris.azure.functionapp | managed_identity, outbound_vnet_routing, private_endpoint_connection_ids[], app_insights_id |
osiris.azure.storage / osiris.azure.keyvault / osiris.azure.containerregistry / osiris.azure.recoveryservicesvault / osiris.azure.sqlserver / osiris.azure.cosmosaccount | private_endpoint_connection_ids[] |
osiris.azure.applicationinsights | workspace_resource_id (workspace Log Analytics vinculat) |
osiris.azure.loganalytics | customer_id (UUID del workspace utilitzat per KQL; no és un secret) |
logical.subscription | osiris.azure.management_group_path (array de noms de visualització de MG, de l’arrel a la fulla; només auditoria) |
[!NOTE]
network.security.groupsecurity_rules[](regles definides per l’usuari) s’emeten aproperties, no aextensions, perquè són un senyal primari de topologia. Nomésdefault_security_rules[](regles baseline administrades per Azure) van aextensions.
network.interfaceprivate_iptambé s’emet apropertiespel mateix motiu.
Metadades del provider
Cada recurs inclou provider.type amb el tipus de recurs ARM natiu (per exemple, Microsoft.Network/virtualNetworks, Microsoft.Compute/virtualMachines). Els stubs entre subscripcions inclouen provider.subscription amb l’ID de la subscripció remota. Tots els recursos inclouen provider.source establert a azure-cli.
IDs de recurs
Els IDs de recurs d’Azure segueixen el patró azure::<ARM-resource-id>, utilitzant l’ID de recurs ARM complet com a identificador natiu. Això garanteix IDs globalment únics i deterministes que sobreviuen a la correlació entre subscripcions.
Canonicalització de regions
provider.region i metadata.scope.regions es canonicalitzen a la forma slug d’Azure (minúscules, sense espais). La CLI az retorna location de manera inconsistent entre tipus de recurs: la majoria de recursos ARM utilitzen westeurope / eastus2, mentre que App Service Plans i Web Apps exposen la forma de visualització (West Europe). El productor normalitza al slug perquè una subscripció d’una sola regió no aparegui com dues regions a metadata.scope.regions.
Requisits RBAC
| Nivell de permís | Què es recopila |
|---|---|
| Reader | Tots els tipus de recurs, propietats, extensions (regles NSG, peerings ER, connexions de gateway, peerings VNet, enllaços DNS, arestes de Private Endpoint cap a destinació, App Service cap a App Insights, AKS, recursos de contenidor, base de dades, missatgeria i observabilitat) |
Reader + effectiveRouteTable/action | Tot l’anterior + rutes efectives de NIC |
| Network Contributor / Owner | Dataset complet sense restriccions |
El productor prova el permís a la primera NIC i omet de manera controlada la recollida de rutes efectives si el permís és denegat. Totes les altres dades es recopilen igualment.
Exemples
Subscripció única
Explorarem una única subscripció al nostre tenant i generarem des de Microsoft Azure un document OSIRIS JSON.
osirisjson-producer azure -S a1b2c3d4-e5f6-7890-abcd-ef1234567890 --purpose audit
Document de sortida OSIRIS JSON (retallat, --purpose audit):
{
"$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
"version": "1.0.0",
"metadata": {
"generator": {
"name": "osirisjson-producer-azure",
"version": "0.5.0",
"url": "https://osirisjson.org/en/docs/producers/hyperscalers/microsoft-azure"
},
"scope": {
"name": "a1b2c3d4-e5f6-7890-abcd-ef1234567890 - my-nonprod-subscription",
"purpose": "audit",
"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",
"source": "azure-cli",
"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"],
"subnet_count": 4,
"enable_ddos_protection": false,
"peerings": [
{
"name": "hub-to-spoke",
"peering_state": "Connected",
"remote_vnet_id": "/subscriptions/a1b2c3d4/.../spoke-vnet",
"allow_gateway_transit": true,
"allow_forwarded_traffic": true
}
]
}
},
{
"id": "azure::/subscriptions/a1b2c3d4/resourceGroups/data-rg/providers/Microsoft.Storage/storageAccounts/mystg",
"type": "osiris.azure.storage",
"name": "mystg",
"status": "active",
"provider": {
"name": "azure",
"native_id": "/subscriptions/a1b2c3d4/resourceGroups/data-rg/providers/Microsoft.Storage/storageAccounts/mystg",
"type": "Microsoft.Storage/storageAccounts",
"region": "westeurope",
"source": "azure-cli",
"subscription": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"tenant": "f1e2d3c4-b5a6-9078-fedc-ba9876543210"
},
"properties": {
"resource_group": "data-rg",
"sku_tier": "Standard",
"sku_name": "Standard_LRS",
"kind": "StorageV2",
"access_tier": "Hot",
"https_only": true,
"min_tls_version": "TLS1_2",
"public_network_access": "Disabled",
"allow_blob_public_access": false
},
"extensions": {
"osiris.azure": {
"private_endpoint_connection_ids": [
"/subscriptions/a1b2c3d4/.../privateEndpoints/pe-mystg"
]
}
}
}
],
"connections": [
{
"source": "azure::/subscriptions/a1b2c3d4/.../subnets/default",
"target": "azure::/subscriptions/a1b2c3d4/.../virtualNetworks/hub-vnet",
"type": "contains",
"direction": "forward"
},
{
"source": "azure::/subscriptions/a1b2c3d4/.../privateEndpoints/pe-mystg",
"target": "azure::/subscriptions/a1b2c3d4/.../storageAccounts/mystg",
"type": "dependency.storage",
"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::data-rg"
],
"extensions": {
"osiris.azure": {
"management_group_path": ["Tenant Root Group", "Corp", "NonProd"]
}
}
},
{
"id": "azure::managementgroup::NonProd",
"type": "logical.managementgroup",
"name": "NonProd",
"children": [
"azure::subscription::a1b2c3d4-e5f6-7890-abcd-ef1234567890"
]
},
{
"id": "azure::region::a1b2c3d4-e5f6-7890-abcd-ef1234567890/westeurope",
"type": "container.region",
"name": "westeurope",
"members": [
"azure::/subscriptions/a1b2c3d4/.../virtualNetworks/hub-vnet",
"azure::/subscriptions/a1b2c3d4/.../storageAccounts/mystg"
]
}
]
}
}
La mateixa execució amb el valor predeterminat --purpose documentation retorna el graf de recursos idèntic, però amb els mapes properties i extensions eliminats de cada recurs, connexió i grup, fet que el fa adequat per a vistes de topologia d’alt nivell i documentació.