Skip to main content

Bridge: Snowflake Data Dictionary → ODGS Runtime Enforcement Schemas

Project description

ODGS Snowflake Bridge

License ODGS PyPI Python

Transform your Snowflake Data Dictionary into active ODGS runtime enforcement schemas.

Snowflake stores your data. ODGS enforces the rules.

The ODGS Snowflake Bridge is an institutional connector that reads Snowflake INFORMATION_SCHEMA metadata and transforms table and column definitions into cryptographically addressable ODGS enforcement schemas. Column constraints, nullability rules, and type assertions become mechanically executable governance rules enforced at pipeline runtime — with full audit trail support via the ODGS S-Cert Registry.

Architecturally aligned with federated data sovereignty principles, and on a path toward standardization.

See it in action

Watch the Snowflake bridge sync a real schema and enforce a signed rule pack

Real bridge, real engine, real ES256-signed rule pack, real Ed25519 audit seal — click to watch on GitHub. Only the snowflake.connector DBAPI boundary is mocked (Snowflake has no REST surface); see examples/marketplace-demo/ for the full honest-accounting demo rig.


Architecture

flowchart LR
    subgraph SF["Snowflake"]
        IS["INFORMATION_SCHEMA"]
        TBL["Tables & Columns"]
        CON["Constraints\n(NOT NULL, Types, VARCHAR lengths)"]
    end

    subgraph Bridge["odgs-snowflake-bridge"]
        T["SnowflakeBridge\n.sync()"]
        TR["Transformer\n→ ODGS Schema"]
    end

    subgraph ODGS["ODGS Protocol (odgs>=5.1.0)"]
        I["Universal Interceptor\nHARD_STOP / SOFT_STOP / WARNING / INFO"]
        WB["Write-Back\n→ Snowflake Table Comments"]
    end

    subgraph MP["Metric Provenance (Commercial)"]
        SC["S-Cert Registry\n(JWS Audit Seal)"]
    end

    IS & TBL & CON --> T --> TR --> I
    I -->|"sovereign_audit.log"| WB --> SF
    I -->|"Certified S-Cert"| SC

Three Rule Types Generated

Column Property Rule Type Example Severity
NOT NULL constraint NOT_NULL TXN_ID != None Your --severity flag
Data type TYPE_CHECK type(AMOUNT) == 'numeric' Always INFO
VARCHAR(N) length MAX_LENGTH len(CURRENCY) <= 3 Your --severity flag

Note on TYPE_CHECK severity: always INFO regardless of --severity — its logic_expression uses type(), which the ODGS engine's sandboxed evaluator doesn't allow, so it can't actually block a pipeline today (unlike MAX_LENGTH's len(), which the engine does support). Binding TYPE_CHECK for real enforcement needs a custom evaluator extension.

Supports 33+ Snowflake data types including VARIANT, OBJECT, and ARRAY semi-structured types.


Install

pip install odgs-snowflake-bridge

Quick Start

Python API

from odgs_snowflake import SnowflakeBridge

bridge = SnowflakeBridge(
    account="xy12345.eu-west-1",
    user="odgs_service",
    password="...",
    organization="acme_corp",
)

# Sync all tables → ODGS metric definitions
bridge.sync(
    database="PRODUCTION",
    output_dir="./schemas/custom/",
    output_type="metrics",
)

# Sync column constraints → enforcement rules
bridge.sync(
    database="PRODUCTION",
    schema_filter="FINANCE",
    output_dir="./schemas/custom/",
    output_type="rules",
    severity="HARD_STOP",
)

CLI

# Using environment variables
export SNOWFLAKE_ACCOUNT=xy12345.eu-west-1
export SNOWFLAKE_USER=odgs_service
export SNOWFLAKE_PASSWORD=...

odgs-snowflake sync \
    --org acme_corp \
    --database PRODUCTION \
    --schema FINANCE \
    --type rules \
    --severity HARD_STOP

# SSO / Browser authentication
odgs-snowflake sync \
    --account xy12345.eu-west-1 \
    --user user@company.com \
    --authenticator externalbrowser \
    --org acme_corp \
    --database PRODUCTION

# Push compliance results back to Snowflake table comments
odgs-snowflake write-back \
    --log-path ./sovereign_audit.log \
    --account xy12345.eu-west-1 \
    --user odgs_service \
    --password YOUR_PASSWORD

Output Schema

A real table_to_rules() output (--type rules):

{
  "$schema": "https://metricprovenance.com/schemas/odgs/v5",
  "metadata": {
    "source": "snowflake",
    "organization": "acme_corp",
    "bridge": "odgs-snowflake-bridge",
    "bridge_version": "0.4.3",
    "generated_at": "2026-07-23T10:00:00+00:00",
    "tables_processed": 8,
    "items_generated": 47
  },
  "items": [
    {
      "rule_id": "transactions_amount_not_null",
      "rule_urn": "urn:odgs:custom:acme_corp:rule:transactions_amount_not_null",
      "name": "TRANSACTIONS.AMOUNT NOT NULL",
      "description": "Column AMOUNT must not be null",
      "domain": "PRODUCTION.FINANCE",
      "severity": "HARD_STOP",
      "logic_expression": "AMOUNT != None",
      "constraint_type": "NOT_NULL",
      "target_column": "AMOUNT",
      "target_table": "PRODUCTION.FINANCE.TRANSACTIONS",
      "source_authority": "snowflake:PRODUCTION",
      "legislative_source": "BRIDGE_GENERATED_UNATTESTED",
      "semantic_hash": "UNATTESTED",
      "verdict_on_pass": "PASS",
      "content_hash": "a1b2c3...",
      "provenance": {
        "bridge": "odgs-snowflake-bridge",
        "bridge_version": "0.4.3",
        "synced_at": "2026-07-23T10:00:00+00:00",
        "source_url": "snowflake://PRODUCTION.FINANCE.TRANSACTIONS/AMOUNT"
      }
    }
  ]
}

Bi-Directional Write-Backs

The bridge supports Bi-Directional Sync: it parses your sovereign_audit.log offline and pushes compliance results back into Snowflake table comments using ALTER TABLE ... SET COMMENT — creating a deterministic feedback loop for Data Stewards without compromising the air-gapped nature of the core ODGS protocol.


Authentication

Method CLI Flags Environment Variables
Password --user + --password SNOWFLAKE_USER + SNOWFLAKE_PASSWORD
SSO / Browser --authenticator externalbrowser
Account --account SNOWFLAKE_ACCOUNT

Regulatory Alignment

This bridge is designed for organisations governed by:

Regulation Relevance
DORA (Regulation EU 2022/2554) ICT operational resilience — data integrity and lineage traceability across Snowflake workloads
EU AI Act (2024/1689) Articles 10 & 12 Training data governance and audit trail for High-Risk AI Systems using Snowflake as a data source
Basel Committee BCBS 239 Risk data aggregation — accuracy and completeness of financial data stored in Snowflake
GDPR Article 5(2) Accountability principle — demonstrable, auditable data governance

For cryptographic legal indemnity (Ed25519 JWS audit seals, certified Sovereign Packs for DORA/EU AI Act), see the Metric Provenance Enterprise Platform.

Get started: metricprovenance.com/start (guided walkthrough) · Certified packs: metricprovenance.com/pricing


Requirements

  • Python ≥ 3.9
  • odgs ≥ 5.1.0 (core protocol — v6.0 compatible)
  • snowflake-connector-python ≥ 3.0.0
  • Snowflake account with INFORMATION_SCHEMA access

Related


License

Apache 2.0 — Metric Provenance | The Hague, NL 🇳🇱

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

odgs_snowflake_bridge-0.4.3.tar.gz (37.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

odgs_snowflake_bridge-0.4.3-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file odgs_snowflake_bridge-0.4.3.tar.gz.

File metadata

  • Download URL: odgs_snowflake_bridge-0.4.3.tar.gz
  • Upload date:
  • Size: 37.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for odgs_snowflake_bridge-0.4.3.tar.gz
Algorithm Hash digest
SHA256 08ef14bbb8d5def803f6441d1a424103e6503f84ee38f8037b15d332b85ea6b3
MD5 e29bfc2348bc86160daecfaebb45d479
BLAKE2b-256 31689cc9a1535bd097b896ba4eb06c47e15333add90e8c440cd51ddf7c692ef1

See more details on using hashes here.

File details

Details for the file odgs_snowflake_bridge-0.4.3-py3-none-any.whl.

File metadata

File hashes

Hashes for odgs_snowflake_bridge-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ebcfe37b5118ebd13bb69bdb39a7e14fb3bbf2e7d42f988fed0abb16744084ba
MD5 2bf4ec01de6be2fc3ec80bc6826c6f56
BLAKE2b-256 42ad713bc312a55a7553ddf4be6e41edbb9ebc44fae91dcc773d2abf73815f4e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page