Padrão Aberto para o Esquema de Intercâmbio de Recursos de Infraestrutura
OSIRIS JSON produz documentos JSON independentes de fornecedor para descrever recursos de infraestrutura e suas relações topológicas em ambientes heterogêneos de IT e OT. Um formato de intercâmbio projetado para portabilidade, clareza de ponta a ponta e inclusão OT desde a sua concepção.
O problema
A infraestrutura moderna abrange múltiplos stacks e fornecedores: hyperscalers (AWS, Azure, GCP, etc.), provedores de nuvem pública, datacenters on-prem e integração com ambientes OT complexos.
Embora algumas plataformas exportem inventários (frequentemente como JSON), as representações são inconsistentes entre fornecedores mesmo para conceitos equivalentes como identidade, propriedades e relacionamentos.
A solução
OSIRIS JSON define um esquema JSON independente de fornecedor para descrever recursos de infraestrutura e relações topológicas em ambientes heterogêneos.
O objetivo do OSIRIS JSON é normalizar as exportações de hyperscalers e provedores cloud, assim como de dispositivos em datacenters on-prem (computação, armazenamento, rede).
Desde a primeira versão da Especificação, o OSIRIS JSON suporta a inclusão de OT por design.
O que você obtém
Seis capacidades fundamentais que fazem do OSIRIS JSON um padrão aberto para o intercâmbio de recursos de infraestrutura e topologia.
Design unificado
Construído para ambientes IT heterogêneos, com um caminho claro de extensão para OT e outros domínios conforme a adoção cresce.
Relacionamentos explícitos
Representação de primeira classe de conexões, dependências, contenção e outros relacionamentos topológicos.
Agrupamento flexível
Suporte para agrupamento lógico e físico que reflete estruturas organizacionais e arquitetônicas reais sem forçar uma taxonomia única.
Atribuição de fornecedor
Os recursos preservam a rastreabilidade até seu sistema/fornecedor de origem usando uma representação padronizada e independente de fornecedor.
Projetado para extensibilidade
Um mecanismo definido para propriedades específicas de fornecedor e tipos de recursos personalizados sem quebrar a compatibilidade.
Validação em três níveis
Validação estrutural (esquema), semântica e de domínio que melhora a consistência e qualidade dos dados quando ferramentas de validação são aplicadas.
Princípios de design
OSIRIS JSON é um formato de intercâmbio de snapshots estáticos. Captura o que existe e como se relaciona em um determinado momento. Não foi projetado como um sistema de monitoramento em tempo real, uma ferramenta de deploy ou um motor de Infrastructure-as-Code.
block OSIRIS JSON NÃO É
check_circle OSIRIS JSON É
Otimizado para cenários onde documentação e topologia precisam ser trocadas entre sistemas e equipes.
Experimente os exemplos do OSIRIS JSON
Explore snapshots reais de topologia OSIRIS JSON com relacionamentos, fornecedores e agrupamentos capturados em um documento JSON portável.
Aplicação em execução no Azure com serviços API na AWS
1{
2 "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
3 "version": "1.0.0",
4 "metadata": {
5 "timestamp": "2026-01-08T15:45:00Z",
6 "generator": {
7 "name": "manual",
8 "version": "1.0.0"
9 },
10 "scope": {
11 "name": "Multi-cloud web application",
12 "description": "Three-tier application with frontend and database in Azure East US, API backend in AWS US-East-1",
13 "providers": ["aws", "azure"],
14 "regions": ["us-east-1", "eastus"],
15 "accounts": ["123456789012"],
16 "environments": ["production"]
17 }
18 },
19 "topology": {
20 "resources": [
21 {
22 "id": "azure::app-web-frontend",
23 "type": "compute.container",
24 "name": "web-frontend-prod",
25 "description": "Azure App Service hosting React frontend",
26 "provider": {
27 "name": "azure",
28 "type": "Microsoft.Web/sites",
29 "native_id": "/subscriptions/sub-001/resourceGroups/prod-rg/providers/Microsoft.Web/sites/web-frontend-prod",
30 "region": "eastus",
31 "subscription": "sub-001",
32 "tenant": "tenant-001"
33 },
34 "status": "active",
35 "state": "running",
36 "properties": {
37 "kind": "app,linux",
38 "runtime_stack": "NODE|18-lts",
39 "default_hostname": "web-frontend-prod.azurewebsites.net",
40 "https_only": true,
41 "ftps_state": "Disabled",
42 "reserved": true
43 },
44 "tags": {
45 "Environment": "production",
46 "Tier": "frontend",
47 "Platform": "azure"
48 }
49 },
50 {
51 "id": "aws::i-0xyz789abc123",
52 "type": "compute.vm",
53 "name": "api-server-prod-01",
54 "description": "AWS EC2 instance running API backend",
55 "provider": {
56 "name": "aws",
57 "type": "AWS::EC2::Instance",
58 "native_id": "i-0xyz789abc123",
59 "region": "us-east-1",
60 "account": "123456789012",
61 "zone": "us-east-1b"
62 },
63 "status": "active",
64 "state": "running",
65 "properties": {
66 "instance_type": "c5.xlarge",
67 "platform": "linux",
68 "image_id": "ami-0c55b159cbfafe1f0",
69 "private_ip": "10.0.2.78",
70 "public_ip": "203.0.113.10",
71 "vpc_id": "vpc-0def456",
72 "subnet_id": "subnet-0ghi789"
73 },
74 "tags": {
75 "Environment": "production",
76 "Tier": "backend",
77 "Platform": "aws"
78 }
79 },
80 {
81 "id": "azure::sql-prod-db",
82 "type": "application.database",
83 "name": "prod-sql-database",
84 "description": "Azure SQL Database for application data",
85 "provider": {
86 "name": "azure",
87 "type": "Microsoft.Sql/servers/databases",
88 "native_id": "/subscriptions/sub-001/resourceGroups/prod-rg/providers/Microsoft.Sql/servers/prod-sql-srv/databases/prod-db",
89 "region": "eastus",
90 "subscription": "sub-001"
91 },
92 "status": "active",
93 "state": "online",
94 "properties": {
95 "edition": "Standard",
96 "service_tier": "S2",
97 "max_size_bytes": 268435456000,
98 "server_name": "prod-sql-srv.database.windows.net",
99 "collation": "SQL_Latin1_General_CP1_CI_AS",
100 "zone_redundant": false
101 },
102 "tags": {
103 "Environment": "production",
104 "Engine": "mssql",
105 "Platform": "azure"
106 }
107 },
108 {
109 "id": "azure::redis-cache-prod",
110 "type": "application.cache",
111 "name": "prod-redis-cache",
112 "description": "Azure Redis Cache for session storage",
113 "provider": {
114 "name": "azure",
115 "type": "Microsoft.Cache/Redis",
116 "native_id": "/subscriptions/sub-001/resourceGroups/prod-rg/providers/Microsoft.Cache/Redis/prod-redis",
117 "region": "eastus",
118 "subscription": "sub-001"
119 },
120 "status": "active",
121 "state": "running",
122 "properties": {
123 "sku": "Standard",
124 "family": "C",
125 "capacity": 1,
126 "redis_version": "6.0",
127 "port": 6379,
128 "ssl_port": 6380,
129 "hostname": "prod-redis.redis.cache.windows.net"
130 },
131 "tags": {
132 "Environment": "production",
133 "Purpose": "session-cache",
134 "Platform": "azure"
135 }
136 }
137 ],
138 "connections": [
139 {
140 "id": "conn-frontend-to-api",
141 "type": "dependency",
142 "source": "azure::app-web-frontend",
143 "target": "aws::i-0xyz789abc123",
144 "direction": "forward",
145 "name": "Frontend to API",
146 "description": "Cross-cloud API calls from Azure frontend to AWS backend",
147 "status": "active",
148 "properties": {
149 "protocol": "https",
150 "port": 443,
151 "endpoint": "https://api.example.com/v1",
152 "authentication": "oauth2"
153 },
154 "tags": {
155 "type": "cross-cloud",
156 "critical": "true"
157 }
158 },
159 {
160 "id": "conn-api-to-db",
161 "type": "dependency",
162 "source": "aws::i-0xyz789abc123",
163 "target": "azure::sql-prod-db",
164 "direction": "forward",
165 "name": "API to Database",
166 "description": "Database connection from AWS API to Azure SQL",
167 "status": "active",
168 "properties": {
169 "protocol": "tds",
170 "port": 1433,
171 "connection_string_encrypted": true,
172 "connection_pool_size": 20
173 },
174 "tags": {
175 "type": "cross-cloud",
176 "critical": "true"
177 }
178 },
179 {
180 "id": "conn-frontend-to-cache",
181 "type": "dependency",
182 "source": "azure::app-web-frontend",
183 "target": "azure::redis-cache-prod",
184 "direction": "bidirectional",
185 "name": "Frontend session cache",
186 "description": "Session data storage and retrieval",
187 "status": "active",
188 "properties": {
189 "protocol": "redis",
190 "port": 6380,
191 "ssl": true,
192 "use_case": "session-storage"
193 }
194 },
195 {
196 "id": "conn-api-to-cache",
197 "type": "dependency",
198 "source": "aws::i-0xyz789abc123",
199 "target": "azure::redis-cache-prod",
200 "direction": "bidirectional",
201 "name": "API cache access",
202 "description": "API response caching",
203 "status": "active",
204 "properties": {
205 "protocol": "redis",
206 "port": 6380,
207 "ssl": true,
208 "use_case": "response-cache"
209 }
210 }
211 ]
212 }
213}
Participe da comunidade
GitHub Discussions
Faça perguntas, compartilhe ideias e ajude a moldar a especificação
Repositório GitHub
Contribua código, reporte problemas e envie pull requests
Formas de contribuir
Código
Construa produtores/parsers para hyperscalers, plataformas cloud e sistemas IT/OT on-prem.
Documentação
Melhore guias, escreva tutoriais e casos de uso reais para ajudar outros a adotar o OSIRIS JSON.
Testes
Valide a especificação e o esquema com topologias de infraestrutura reais e casos-limite.
Feedback
Reporte problemas, sugira melhorias ou proponha extensões e novas funcionalidades.
Ferramentas
Crie SDKs, ferramentas CLI, validadores, exportadores e ferramentas de documentação/diagramação.
Espalhe a palavra
Escreva posts, dê palestras, grave demos e compartilhe o OSIRIS JSON com sua rede.
Design e templates
Projete templates de diagramas de alta qualidade, layouts gráficos para docs e site, ícones, datasets de exemplo e recursos reutilizáveis para a comunidade.
Roteiro
OSIRIS JSON é impulsionado pela comunidade
OSIRIS JSON nasceu enfrentando problemas do mundo real e continua crescendo através de feedback, novas ideias e contribuições práticas. Se você tem sugestões ou quer ajudar, participe: sua contribuição ajuda a moldar tanto o roteiro quanto o padrão.
Apoie o OSIRIS JSON
O OSIRIS JSON está nos seus primeiros dias. Neste momento, adoção e feedback importam mais do que financiamento. Experimente as ferramentas, teste-as contra infraestrutura real e diga-nos o que falta.
Use e reporte
Execute um producer na sua infraestrutura, valide a saída e abra uma issue quando algo não funcionar.
Contribua
Envie exemplos reais, melhore a documentação ou construa um producer para a sua plataforma.
Espalhe a palavra
Compartilhe o OSIRIS com sua equipe, escreva sobre sua experiência ou mencione-o em comunidades relevantes.