{
  "format": "cadastre-model",
  "version": 2,
  "cadastre": "0.1.0",
  "name": "Reference",
  "resources": 38,
  "links": 5,
  "kinds": {
    "app": 3,
    "component": 1,
    "data": 2,
    "database": 2,
    "firewall": 1,
    "interface": 4,
    "network": 1,
    "process": 1,
    "rack": 1,
    "router": 1,
    "saas": 1,
    "server": 4,
    "site": 2,
    "subnet": 3,
    "switch": 1,
    "system": 2,
    "team": 3,
    "vpc": 1,
    "vpn_gateway": 2,
    "vpn_tunnel": 2
  },
  "views": [
    {
      "name": "flows",
      "title": "Application flows",
      "description": "Every flow between the apps, databases and SaaS, as written in the registry.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:6:6"
    },
    {
      "name": "network",
      "title": "Network",
      "description": "The servers by site and subnet, with the application flows lifted onto the machines that host them.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:14:6"
    },
    {
      "name": "macro",
      "title": "Subnets",
      "description": "The flows between subnets, merged by port: what the firewall rules must allow.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:22:6"
    },
    {
      "name": "landscape",
      "title": "Landscape",
      "description": "The flows between the systems and the SaaS, in the direction of the data.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:30:6"
    },
    {
      "name": "to-verify",
      "title": "To verify",
      "description": "The resources and flows assumed or doubtful, or with an open question: what remains to confirm.",
      "formats": [
        "text"
      ],
      "declared": "views.cav:38:6"
    },
    {
      "name": "ownership",
      "title": "Ownership",
      "description": "The apps, databases and SaaS by owner team, with their operator.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:46:6"
    },
    {
      "name": "to-complete",
      "title": "To complete",
      "description": "The resources missing something for a complete model.",
      "formats": [
        "text"
      ],
      "declared": "views.cav:53:6"
    },
    {
      "name": "inter-sites",
      "title": "Between the sites",
      "description": "The flows and the connectors between the sites, with the SaaS reached from them.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:60:6"
    },
    {
      "name": "gdpr",
      "title": "Personal data",
      "description": "The flows carrying personal data, in red: where the customer details travel.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:68:6"
    },
    {
      "name": "customer-trail",
      "title": "Customer trail",
      "description": "The customer details followed step by step from the CRM database.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:79:6"
    },
    {
      "name": "fw01-matrix",
      "title": "Firewall matrix",
      "description": "The flows through the datacenter firewall, merged by port: its rule table.",
      "formats": [
        "text"
      ],
      "declared": "views.cav:87:6"
    },
    {
      "name": "security",
      "title": "Security",
      "description": "The servers and firewalls by site and subnet, every flow split at the devices it traverses.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:95:6"
    },
    {
      "name": "physical",
      "title": "Physical",
      "description": "The servers, switches and firewalls by site and rack, with their cabling.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:103:6"
    },
    {
      "name": "deployment",
      "title": "Deployment",
      "description": "What runs where: the apps and databases with the servers hosting them.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:111:6"
    },
    {
      "name": "egress",
      "title": "Egress",
      "description": "The flows to the SaaS and the devices they leave through, deduced from the egress of the VPC.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:120:6"
    },
    {
      "name": "fw01-failure",
      "title": "If fw01 fails",
      "description": "What becomes unavailable when the datacenter firewall fails: the impact analysis.",
      "formats": [
        "svg",
        "text"
      ],
      "declared": "views.cav:129:6"
    },
    {
      "name": "web-servers-failure",
      "title": "If both web servers fail",
      "description": "web01 and web02 down together: in red, the apps and data that become unavailable.",
      "formats": [
        "svg"
      ],
      "declared": "views.cav:137:6"
    },
    {
      "name": "invoicing-process",
      "title": "Monthly invoicing",
      "description": "The monthly invoicing process, its links numbered as its steps, and its sequence diagram.",
      "formats": [
        "svg",
        "sequence"
      ],
      "declared": "views.cav:147:6"
    }
  ],
  "checks": [
    {
      "name": "every-app-has-an-owner",
      "severity": "error",
      "message": "an app has an owner team, written or inherited from its system",
      "declared": "checks.cac:3:7",
      "result": "passed",
      "summary": "no node selected, none expected",
      "selected": 0,
      "failing": []
    },
    {
      "name": "no-personal-data-to-saas",
      "severity": "error",
      "message": "customer details stay in our systems",
      "declared": "checks.cac:9:7",
      "result": "passed",
      "summary": "no edge selected, none expected",
      "selected": 0,
      "failing": []
    },
    {
      "name": "no-direct-db-access",
      "severity": "error",
      "message": "a database is reached through the apps of its own system",
      "declared": "checks.cac:15:7",
      "result": "passed",
      "summary": "no edge selected, none expected",
      "selected": 0,
      "failing": []
    },
    {
      "name": "saas-through-an-egress",
      "severity": "error",
      "message": "a flow to a SaaS leaves through a declared egress (NAT, proxy, firewall)",
      "declared": "checks.cac:21:7",
      "result": "passed",
      "summary": "1 edge selected, all meet the expectation",
      "selected": 1,
      "failing": []
    },
    {
      "name": "erp-behind-fw01",
      "severity": "error",
      "message": "the ERP is only reached through the datacenter firewall",
      "declared": "checks.cac:27:7",
      "result": "passed",
      "summary": "1 edge selected, all meet the expectation",
      "selected": 1,
      "failing": []
    },
    {
      "name": "supported-os",
      "severity": "error",
      "message": null,
      "declared": "checks.cac:34:7",
      "result": "passed",
      "summary": "4 nodes selected, all meet the expectation",
      "selected": 4,
      "failing": []
    },
    {
      "name": "redundant-front",
      "severity": "error",
      "message": null,
      "declared": "checks.cac:39:7",
      "result": "passed",
      "summary": "2 nodes selected, expected count >= 2",
      "selected": 2,
      "failing": []
    },
    {
      "name": "no-open-question",
      "severity": "warning",
      "message": "answer the open questions of the model",
      "declared": "checks.cac:45:7",
      "result": "failed",
      "summary": "1 node selected, none expected",
      "selected": 1,
      "failing": [
        {
          "item": "invoicing.analytics",
          "declared": "apps.ca:59:12"
        }
      ]
    }
  ],
  "modules": [],
  "files": [
    "apps.ca",
    "checks.cac",
    "data.ca",
    "infra.ca",
    "saas.ca",
    "schema.ca",
    "teams.ca",
    "views.cav"
  ],
  "diagnostics": [
    {
      "severity": "warning",
      "message": "check no-open-question failed: 1 node selected, none expected: invoicing.analytics",
      "help": "answer the open questions of the model",
      "at": "checks.cac:45:7"
    }
  ]
}
