{
  "schemaVersion": "1.0",
  "entityFamily": "sub-modules",
  "entityType": "DefinedTerm",
  "entityId": "sub-modules:145",
  "canonicalUrl": "https://babadook.tech/sub-modules/tenant-isolation",
  "machineBaseUrl": "https://babadook.tech/ai/sub-modules/tenant-isolation",
  "name": "Tenant Isolation",
  "aliases": [],
  "summary": "Sleep through the next SaaS breach headline — your rows deny by default.",
  "description": [
    "Every few months another headline: millions of records exposed across tenants by a bug nobody tested for. Tenant Isolation makes that headline structurally impossible here — force-enabled row-level security denies unscoped access at the database itself, so no application defect, however embarrassing, can read another tenant's rows."
  ],
  "sections": [
    {
      "id": "isolation-layers-7f0a77ce-395c-4e25-bdaf-816f6c0fe5cc",
      "heading": "Isolation layers",
      "body": [
        "Each layer below denies by default — access flows only through issued decisions with scope enforced at every boundary including the database itself."
      ],
      "specifications": [],
      "relationships": [],
      "media": [],
      "children": [
        {
          "id": "data-viz-1",
          "heading": "data Viz",
          "body": [],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        },
        {
          "id": "data-view-1",
          "heading": "data View",
          "body": [
            "section: stages"
          ],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        },
        {
          "id": "identity-1",
          "heading": "Identity",
          "body": [
            "Workforce, customer, and service identities federate through one path with sessions centrally issued, scoped, and lifetime-bound."
          ],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        },
        {
          "id": "decision-2",
          "heading": "Decision",
          "body": [
            "Access requests resolve against policy with purpose, scope, and version checked. Denials cite the rule; sensitive grants add redaction and disclosure records."
          ],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        },
        {
          "id": "enforcement-3",
          "heading": "Enforcement",
          "body": [
            "Force-enabled row security denies unscoped database access regardless of application behavior. Telemetry hygiene bars secrets from every observable surface."
          ],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        }
      ],
      "sourceBlockType": "content_block",
      "sourceBlockId": "7f0a77ce-395c-4e25-bdaf-816f6c0fe5cc"
    },
    {
      "id": "isolation-guarantees-2216c9f9-d3c5-4051-a1a5-c9a9e6bd929b",
      "heading": "Isolation guarantees",
      "body": [],
      "specifications": [
        {
          "label": "Force-enabled RLS",
          "value": "Unscoped reads and writes denied at the database on all tenant tables",
          "group": "spec Items"
        },
        {
          "label": "No shadow stores",
          "value": "Zero local user, role, or permission tables capable of drifting",
          "group": "spec Items"
        },
        {
          "label": "Telemetry hygiene",
          "value": "Raw identifiers and secrets barred from metrics, paths, logs, and packages",
          "group": "spec Items"
        },
        {
          "label": "section",
          "value": "capabilities",
          "group": "data View"
        }
      ],
      "relationships": [],
      "media": [],
      "children": [],
      "sourceBlockType": "product_specification",
      "sourceBlockId": "2216c9f9-d3c5-4051-a1a5-c9a9e6bd929b"
    },
    {
      "id": "isolation-by-industry-edef338e-3a22-4cf2-941f-c46fa25153f9",
      "heading": "Isolation by industry",
      "body": [
        "Tenant enforcement bends per industry — same row-level denial, different regulatory stakes."
      ],
      "specifications": [],
      "relationships": [],
      "media": [],
      "children": [
        {
          "id": "data-viz-1",
          "heading": "data Viz",
          "body": [],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        },
        {
          "id": "data-view-1",
          "heading": "data View",
          "body": [
            "section: industries"
          ],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        },
        {
          "id": "healthcare-1",
          "heading": "Healthcare",
          "body": [
            "Patient data isolated per covered entity with HIPAA access logging on every read. Cross-facility analytics run on de-identified projections, never raw rows."
          ],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        },
        {
          "id": "financial-services-2",
          "heading": "Financial Services",
          "body": [
            "Client data segregated per legal entity with Chinese-wall enforcement between advisory and proprietary scopes. Every cross-scope request records its authority."
          ],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        },
        {
          "id": "government-3",
          "heading": "Government",
          "body": [
            "Agency and program isolation with classification handling per data type. Inter-agency sharing flows through governed disclosure decisions, not queries."
          ],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        }
      ],
      "sourceBlockType": "content_block",
      "sourceBlockId": "edef338e-3a22-4cf2-941f-c46fa25153f9"
    },
    {
      "id": "tenant-isolation-questions-12167a80-a25c-48a3-a3da-40a8259f655d",
      "heading": "Tenant Isolation questions",
      "body": [],
      "specifications": [],
      "relationships": [],
      "media": [],
      "children": [
        {
          "id": "section-1-1",
          "heading": "Section 1",
          "body": [
            "Can one tenant ever read another tenant's rows?",
            "No. Force-enabled row-level security denies unscoped access at the database layer, independent of application logic."
          ],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        },
        {
          "id": "section-2-2",
          "heading": "Section 2",
          "body": [
            "What about backups and exports?",
            "Backup and export paths enforce the same tenant scope with purpose, authority, and evidence receipts before any bytes move."
          ],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        },
        {
          "id": "section-3-3",
          "heading": "Section 3",
          "body": [
            "How do we prove isolation to enterprise prospects?",
            "With architecture plus live demonstration: attempt unscoped access in a supervised session and watch the database deny it. Prospects stop asking after that."
          ],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        },
        {
          "id": "data-view-1",
          "heading": "data View",
          "body": [
            "section: faqs"
          ],
          "specifications": [],
          "relationships": [],
          "media": [],
          "children": [],
          "sourceBlockType": "unsupported"
        }
      ],
      "sourceBlockType": "faq_section",
      "sourceBlockId": "12167a80-a25c-48a3-a3da-40a8259f655d"
    },
    {
      "id": "content-section-5",
      "heading": "content section",
      "body": [
        "value: XRP issues no local access tokens and maintains no local permission tables. Every access decision is issued centrally through one authority — and the database enforces scope even if application logic somehow failed to ask."
      ],
      "specifications": [],
      "relationships": [],
      "media": [],
      "children": [],
      "sourceBlockType": "content_section"
    },
    {
      "id": "section-6",
      "heading": "Section 6",
      "body": [
        "Force-enabled row-level security on tenant tables"
      ],
      "specifications": [],
      "relationships": [],
      "media": [],
      "children": []
    },
    {
      "id": "section-7",
      "heading": "Section 7",
      "body": [
        "Single ARGUS-issued access decisions, no local permission tables"
      ],
      "specifications": [],
      "relationships": [],
      "media": [],
      "children": []
    },
    {
      "id": "section-8",
      "heading": "Section 8",
      "body": [
        "No vendor backdoor or hidden authorization paths"
      ],
      "specifications": [],
      "relationships": [],
      "media": [],
      "children": []
    },
    {
      "id": "section-9",
      "heading": "Section 9",
      "body": [
        "Secret and identifier hygiene across telemetry surfaces"
      ],
      "specifications": [],
      "relationships": [],
      "media": [],
      "children": []
    }
  ],
  "specifications": [],
  "claims": [],
  "relationships": [
    {
      "type": "products",
      "targets": [
        {
          "id": "12",
          "family": "products",
          "name": "XRP",
          "slug": "xrp",
          "canonicalUrl": "https://babadook.tech/products/xrp",
          "relationship": "products"
        }
      ]
    },
    {
      "type": "modules",
      "targets": [
        {
          "id": "129",
          "family": "modules",
          "name": "Security and Identity",
          "slug": "security-identity",
          "canonicalUrl": "https://babadook.tech/modules/security-identity",
          "relationship": "modules"
        }
      ]
    }
  ],
  "authors": [],
  "media": [],
  "regulatoryContext": {
    "exportControlAndLicensingReviewRequired": false
  },
  "language": "en",
  "receipt": {
    "sourceBlockCount": 23,
    "projectedBlockCount": 23,
    "sourceValueCount": 36,
    "projectedValueCount": 40,
    "sourceRelationshipCount": 2,
    "projectedRelationshipCount": 2,
    "sourceClaimCount": 0,
    "projectedClaimCount": 0,
    "unknownBlockTypes": [],
    "omittedFields": [],
    "missingValuePaths": [],
    "invalidClaims": [],
    "complete": true
  },
  "contentHash": "aaf2a56f5ced1be91b43fc770297bcf36f5545c80681575a489b646bc257819c"
}