Prioritized controls, all implementable with Snowflake's native tooling.
Tier and owner conventions.P0 — must close before any new feature work touches the account;
P1 — sequenced within the next quarter;
P2 — sustained governance, owned in steady state.
Owner labels point to the team most likely to hold the control day-to-day in a typical
enterprise org (Identity, Platform, SOC, Data Eng,
Governance/Legal); adjust to local org structure.
Immediate — close the UNC5537 gap pattern and the post-patch window
Control
Implementation
P0Enforce MFA on all human usersIdentity · low effort
Set AUTHENTICATION POLICY with MFA_ENROLLMENT = REQUIRED at account level. Verify no user bypass exceptions exist in LOGIN_HISTORY.
P0Network policy on every service and key-pair userIdentity · medium effort
Key-pair users without a network policy are the most realistic 2026 credential-exfil target (Chain F). Apply per-user network policies limiting source IPs to known CI / orchestration ranges. Use Trust Center's "missing network policy" finding to enumerate gaps.
P0Rotate all credentials older than 90 daysData Eng · high effort
Focus first on key-pair private keys in CI runners, dbt profiles, and Airflow connections — the highest-value exfil targets most likely to appear in old infostealer logs. Use the IR-style key-rotation-age query on the detection page to drive the work.
P0Update connectors and the Cortex Code CLIPlatform · low effort
P0Disable debug logging in production connectorsPlatform · low effort
Debug-level connector logging writes encryption master keys and cached tokens to log files (CVE-2025-27496 cohort). Set log_level = INFO in all production configurations.
P0SIEM-side scanning for secret patterns in connector logsSOC · medium effort
Even after disabling debug logging, historical SIEM indices may still contain key material from the CVE-2025-27496 / -46329 cohort. Add SIEM rules flagging BEGIN PRIVATE KEY, JWT prefixes, and Snowflake session-token shapes in connector log streams. Triage and purge as needed.
P0Retrospective hunt for CVE-2026-6442 exposureSOC · medium effort
The Cortex Code CLI patch shipped 2026-02-28. For every host that ran Cortex Code prior to that date, hunt the chain B retrospective steps: EDR egress correlation during Cortex sessions, Snowflake LOGIN_HISTORY anomalies across the window, and token rotation for any host that cannot be cleared.
Short-term — reduce blast radius and cross-cloud exposure
Control
Implementation
P1Scope Storage Integration IAM rolesPlatform · medium effort
Every Storage Integration should bind to an IAM role with access scoped to the minimum necessary bucket prefix. Tag-based access policies on S3 are the recommended enforcement mechanism.
P1Audit External Functions for over-privileged backend rolesPlatform · medium effort
Review the execution role of every Lambda or Cloud Function backing an External Function. Any role with iam:*, secretsmanager:GetSecretValue, or broad EC2 permissions is a privilege-escalation path from any Snowflake user with USAGE on that function.
P1Inventory Native Apps and disable auto-update on sensitive accountsPlatform · low effort
Query ACCOUNT_USAGE.APPLICATIONS and review every app's granted privileges. For sensitive production accounts, disable auto-update and require manual approval for version bumps.
P1Baseline SHARES / REPLICATION_GROUPS and alert on diffsSOC · low effort
Direct Share creation and Replication Group setup (Chain G) bypass query-level audit at data motion. The only chance to catch this path is the DDL event and the ACCOUNT_USAGE object inventory diff. Maintain a baseline of documented partner / replication accounts and alert on every additive change.
P1SPCS — review every EXTERNAL ACCESS INTEGRATIONPlatform · medium effort
Wildcard ALLOWED_NETWORK_RULES (Chain H) are the realistic SPCS exfil channel. Enumerate every integration; require explicit hostname allow-listing; remove or scope any wildcard rule (*.amazonaws.com, *.azurewebsites.net, generic CDN endpoints).
P1Enable ACCOUNT_USAGE streaming to SIEMSOC · medium effort
The ~45-minute Account Usage latency is too slow for real-time response. Configure Snowflake Trail export or Kafka-based streaming ingest of INFORMATION_SCHEMA for sub-minute alerting.
P1PAT inventory and rotation policyIdentity · medium effort
Treat Programmatic Access Tokens like any other long-lived bearer token: maximum lifetime ≤ 90 days, mandatory network policy attachment, and an automated review of ACCOUNT_USAGE.PROGRAMMATIC_ACCESS_TOKENS for PATs older than policy or with no recent use.
P1SCIM token rotation and IdP-side access reviewIdentity · low effort
The SCIM bearer token sits on the IdP side and grants user / role manipulation on Snowflake. Rotate on the same cadence as the IdP's admin credentials; restrict SCIM administration on the IdP to a minimal admin population.
Ongoing — AI, agentic, and audit-replication governance
Control
Implementation
P2Enable Cortex AI Guardrails in Horizon CatalogSOC · low effort
Configure prompt-injection and jailbreak prevention policies. Treat Guardrails as a detection layer, not a prevention boundary — human review of flagged events is required.
P2Classify data before indexing into Cortex SearchData Eng · high effort
Any document indexed by Cortex Search becomes a potential injection delivery channel for downstream agents (Chain I). Exclude PHI/PII documents from Cortex Search until injection-resistant pipelines are validated.
P2Use ALLOWED_INTERFACES to segregate Snowflake Intelligence accessIdentity · low effort
Restrict ai.snowflake.com to roles that have been approved for AI use. Users with broad data access but no AI use case should not hold the CORTEX_USER role.
P2Treat Cortex inference as data leaving the boundaryGovernance/Legal · medium effort
Cortex final-response generation passes prompts and grounding context through Anthropic or Azure-OpenAI models. Update the data-classification policy to state explicitly which protected data classes may pass through Cortex inference; audit which tables are accessible to Cortex Analyst against that policy.
P2MCP tool descriptor allowlisting and version pinningPlatform · medium effort
Maintain an explicit allowlist of MCP servers Cortex Agents may call. Pin each entry to a specific descriptor hash; alert on any new MCP server or descriptor churn (Chain I). Treat MCP tool output as untrusted context.
An attacker targeting a secondary region can leave forensics in a region the SOC doesn't routinely query. Configure replication of audit databases across all regions the account uses; verify with the audit-replication-health query in the detection page.
Controls grouped by realistic execution window for a
mid-size enterprise (single platform team, single SOC, single
identity team). Effort estimates are wall-clock weeks of
focused engineering work, not calendar duration — a control
listed as “1 week” expects one engineer's
focused attention for that week. Parallel execution across
teams collapses the calendar; sequential execution within a
team extends it. The phasing assumes parallel execution
within each window.
Reading the timeline. Each row names the
control, its
chain
(or "cross-cutting"), the team that owns the change, and the
estimated effort. The “Why this window” column
explains the sequencing: some P0s genuinely cannot wait
(mandatory MFA gating the human-credential surface); some P1s
sequence after P0s because the detection rules require the
controls to be in place first (the enrichment pipeline depends
on the watchlists the inventory steps populate).
Days 0–30 — close the highest-velocity gaps
Control
Chain
Owner
Effort
Why this window
Enforce MFA on all human users (AUTHENTICATION POLICY with MFA_ENROLLMENT = REQUIRED)
A, D
Identity
1–2 days
Single account-level setting; gates the human-credential surface that drove UNC5537. No upstream dependency.
Inventory all service and key-pair users without a bound network policy (Trust Center "missing network policy" scanner)
A, F, J
SOC + Identity
1 week
Inventory must come before the lock-down step so the team knows the population. Trust Center surfaces this directly.
Bind network policy to every service / key-pair user (allow-list of documented CI / orchestration egress)
A, F
Identity
1–2 weeks
The single largest residual-risk reduction post-UNC5537. Per-user policy enables phased rollout (start with the highest-grant users).
Pin Cortex Code CLI ≥ 1.0.25 across all developer endpoints (package-manager rollout + EDR check)
B
Platform + Endpoint
1–2 weeks
Closes CVE-2026-6442. Retrospective hunt across the pre-patch exposure window is a parallel SOC effort, not a blocker.
Enumerate every SPCS EXTERNAL ACCESS INTEGRATION; remove any wildcard ALLOWED_NETWORK_RULES
H
Platform + Data Eng
1–2 weeks
Chain H residual drops to Low once wildcards are gone. The chain's necessary condition is the wildcard; once removed, the chain no longer applies.
Deploy the 4 production-ready Sigma rules (no enrichment dependency)
A (pair), F, H
SOC
1 week
Day-one detection coverage for the chains whose rules are production_ready. No upstream dependency.
Days 31–60 — close blast-radius and inventory gaps
Control
Chain
Owner
Effort
Why this window
Enumerate every Storage Integration; remove wildcard storage_allowed_locations; bind IAM role with bucket-policy-side controls
E
Platform + Cloud Sec
2–3 weeks
Configuration-level fix; cross-cloud blast-radius reduction. Sequencing after the day-30 inventory because the customer must know which integrations exist before scoping them.
Disable auto-update on every Native App with grants on PHI-bearing schemas; require manual review per version bump
C
Platform + Governance
1 week
Closes the Chain C auto-upgrade vector. Manual version pinning is the compensating control while the manifest-diff detection rules are wired up.
Deploy the streaming-ingest sidecar (detection/snowflake/streaming-ingest/) to bypass ACCOUNT_USAGE 45-min latency
A, F, J
Platform + SOC
2 weeks
The streaming pipeline turns minute-scale latency into seconds-scale for the chains that depend on real-time detection. Terraform + Function App ship as concrete config.
Unblocks federated_login_anomaly.yml and oauth_integration_scope_drift.yml. The synthetic-event validation step in ENRICHMENT.md is the gate before promoting to alert.
Populate OPS.SECURITY.APPROVED_SHARE_CONSUMERS and OPS.SECURITY.APPROVED_REPLICATION_TARGETS watchlists; switch the Chain G rules to alert mode
G
Platform + Governance
1–2 weeks
The Chain G rules are watchlist-gated; populating the watchlist is the unblock. Joint Platform + Governance ownership because legitimate consumers come from the BAA inventory.
The largest single deployment lift in the program. Unblocks 20 rules across 9 chains. The enrichment-templates directory ships SQL + lookup definitions; the work is per-tenant adaptation.
Deploy the Cortex Agent per-step trace sidecar (Snowpark wrapper or Trail cortex_agent.* event family)
I
Platform + SOC
2–3 weeks
Unblocks all 5 Chain I rules. Until deployed, Chain I detection coverage is zero; the policy-layer compensating control (row-access policies on PHI tables) is load-bearing.
Inventory partner integrations; cross-reference against BAA registry; bind network policy where partner publishes stable egress CIDRs
J
Vendor Risk + Identity
2–3 weeks
Chain J residual drops to Medium with this work. Vendors without stable egress CIDRs are themselves a finding — escalate to the architectural move (scoped Direct Share with partner-as-consumer).
Connector-stack SBOM scan + driver-version rollout (JDBC, Python, Node.js, .NET, Go, C/C++ on every CI / orchestration host)
cross-cutting
Platform + Endpoint
2–3 weeks
Closes the secret-leakage cohort (CVE-2025-27496, CVE-2025-46329, etc.) and the transitive-dependency CVEs that surface via SBOM scans.
Days 91–180 — close structural gaps (covered entity-specific)
The default Guardrails policy is not tuned for healthcare-specific abuse. The repository's harness family=Healthcare tier characterizes residual delta; the customer-side action is enabling and tuning.
Row-access and masking policies on every PHI-bearing table (per-role minimum-necessary scope)
A, I (and any Cortex agent reading PHI)
Data Eng + Privacy
4–6 weeks
The load-bearing technical control for HIPAA §164.502(b) Minimum Necessary. Sequencing late because it requires the privacy office's per-role classification (an upstream governance prerequisite, not a technical one).
OCR-grade audit retention pipeline (6-year retention sink for ACCOUNT_USAGE projections and Trail events)
cross-cutting
Platform + SOC
3–4 weeks
Snowflake's first-party retention (365 days) is insufficient for the OCR reconstruction window. The streaming-ingest sidecar from Day 31–60 is the producer side; the customer owns the long-retention sink.
Chain G's source-side audit blind spot is structural — only the consumer's audit shows the reads. Pre-arranging the acquisition path in the BAA closes the IR gap before it is needed.
Architectural move: scoped Direct Share with partner-as-consumer (replacing partner-held-credentials where feasible)
J
Platform + Data Eng + Vendor Risk
multi-quarter
The complete close for Chain J. Multi-quarter because each partner integration is an independent contract + technical change. Sequence by partner-held credential risk — partners with ACCOUNTADMIN-adjacent users first.
Stale watchlists are silent detection gaps. A quarterly cadence balances thoroughness against operational overhead.
SBOM scan of connector stack pinned versions across CI / orchestration hosts
Platform + Endpoint
Quarterly + on CVE disclosure
Driver releases bundle dependency-CVE rollups; quarterly catches the routine cohort, on-disclosure catches the urgent ones.
OCR reconstruction tabletop — can the org produce a full audit trail of who accessed PHI table X between dates Y and Z (Y ≥ 18 months back)?
Privacy + SOC + Legal
Annual
The tabletop surfaces audit-retention gaps before OCR asks. Any gap is a §164.312(b) finding regardless of whether any chain has been exercised.
FP/FN harness rerun on the bulk-exfil baseline (and any rule whose enrichment changes)
SOC
Semi-annual
The fp_fn_harness/ directory ships the corpus. Re-measure sensitivity / specificity when baselines shift (new pipelines, new approved roles, new business-hours windows).