
Mitigating Risks Of Adversarial Perturbations On Computer Vision Models
October 28, 2026
Hardening Identity Providers (IdPs) Against MFA Fatigue And Push Harassment
October 28, 2026A misconfigured Snowflake role with ACCOUNTADMIN privileges sat unreviewed for eleven months before a security audit uncovered it — attached to a service account whose original project had been decommissioned two years prior. The account had query access to every table in a 47-terabyte production data warehouse, including PII, financial records, and health data subject to HIPAA. No breach occurred, but the exposure window was real, silent, and entirely preventable. Incidents like this are not anomalies. According to the Cloud Security Alliance’s 2025 State of Cloud Data Security report, 63% of organizations running cloud data warehouses have at least one overprivileged role or user account active in their environment at any given time. The technical surface area of platforms like Snowflake and Google BigQuery is vast, and the access governance controls available within them are sophisticated — but only when deliberately configured and continuously monitored. This post breaks down exactly how to do that.
Understanding the Access Governance Challenge in Cloud Data Warehouses
Cloud data warehouses are not just storage. They are analytical engines that ingest petabytes of business-critical data from dozens of upstream systems — CRMs, ERPs, payment processors, IoT feeds, and marketing platforms. Every data pipeline, BI tool, and data science notebook that connects to Snowflake or BigQuery introduces an identity with permissions. Over time, without rigorous lifecycle management, those identities accumulate like sediment: former contractors, deprecated service accounts, over-scoped roles granted “temporarily” for a sprint that ended eighteen months ago.
The governance problem is fundamentally a least-privilege enforcement problem compounded by scale, velocity, and organizational friction. Data teams move fast. Security teams are often brought in late. The result is a permission sprawl that creates exactly the kind of static, high-value targets that threat actors look for when they achieve initial access through phishing, credential stuffing, or supply chain compromise.
Why Traditional IAM Falls Short in the Warehouse Layer
Enterprise IAM platforms — whether Okta, Azure AD, or AWS IAM — manage authentication and coarse-grained authorization well. But they typically do not govern what happens inside a Snowflake database or BigQuery dataset after a user authenticates. Column-level security, row-level access policies, dynamic data masking, and role hierarchies are warehouse-native constructs. A CISO who assumes that their identity provider’s group memberships translate cleanly into warehouse-layer data access controls is operating on a dangerous assumption. The two layers must be explicitly bridged, audited, and synchronized.
The Shared Responsibility Blind Spot
Both Snowflake and Google operate under shared responsibility models. The platform secures the infrastructure, network, and core availability. The customer is responsible for data access governance, role configuration, key management, and audit logging. Misunderstanding where cloud provider responsibility ends — and where the security team’s begins — is consistently cited by Gartner as the root cause of the majority of cloud security failures through at least 2026. The warehouse layer is unambiguously customer territory.
Snowflake Access Governance: Role-Based Control at Depth
Snowflake’s security model is built on a hierarchical Role-Based Access Control (RBAC) system. Roles are granted to users or other roles, privileges are granted to roles, and the effective permission set of any session is determined by the active role — not the user’s full role inventory. This design is powerful but creates a governance paradox: a user who can activate a role with broad privileges will, under pressure or convenience, do exactly that.
In 2024, a notable incident involving a SaaS analytics vendor exposed customer data because a developer had been granted the SYSADMIN role for a debugging session and the role was never revoked. When the developer’s credentials were compromised via a phishing attack three months later, the attacker inherited SYSADMIN access across the entire Snowflake account. The vendor’s own audit logs captured every query — but only after the fact, because alerting on privileged role activation had not been configured.
Implementing Least Privilege with Custom Role Hierarchies
The governance baseline for Snowflake should start with a deliberate role architecture that avoids granting Snowflake’s system-defined roles (ACCOUNTADMIN, SYSADMIN, SECURITYADMIN) to human users as their operational roles. Instead, organizations should build custom role hierarchies scoped to specific databases, schemas, or even tables. A practical tiered structure looks like this:
- Functional roles — tied to job function (e.g., ANALYST_MARKETING, ENGINEER_PIPELINE), granting only the SELECT, INSERT, or EXECUTE privileges needed for that function
- Object roles — tied to specific data assets (e.g., ROLE_FINANCE_DB_READ), encapsulating access to a particular database or schema
- Access roles — intermediate roles that combine object roles and are granted to functional roles, keeping the hierarchy auditable
- Admin roles — reserved exclusively for privileged operations, activated through a just-in-time (JIT) access workflow, never granted persistently
Dynamic Data Masking should be applied at the schema level to mask PII columns (SSN, email, date of birth) by default, with unmasking policies attached to roles that have documented business justification and approval. Snowflake’s native masking policies support conditional logic, so an ANALYST role sees ***-**-XXXX while a DATA_GOVERNANCE_OFFICER role with explicit masking policy grant sees the real value — creating an auditable, policy-driven control rather than an honor system.
Auditing and Alerting with Snowflake’s Access History
Snowflake’s ACCESS_HISTORY view (available in the ACCOUNT_USAGE schema) records every query’s base objects accessed — including tables, views, and columns — along with the executing role and whether data was returned or modified. This is the authoritative source of truth for data access governance. Organizations should be exporting this data continuously to their SIEM (Splunk, Microsoft Sentinel, or Chronicle) and building alerts for: privileged role activation outside business hours, first-time access to sensitive schemas by any principal, bulk SELECT operations exceeding row thresholds, and failed authentication spikes against service accounts.
BigQuery Access Governance: IAM Meets Data Mesh Complexity
Google BigQuery’s access model integrates tightly with Google Cloud IAM, meaning that principal identities (users, service accounts, groups) are managed at the Google Cloud project level, with permissions flowing down through dataset-level and table-level IAM bindings. This integration is a double-edged sword: it enables centralized identity management, but it also means that a compromise of a Google Cloud IAM binding has direct warehouse-layer consequences.
A 2025 penetration test commissioned by a Fortune 500 retailer found that a compromised Google service account with the roles/bigquery.dataViewer binding on a production project had read access to 23 datasets containing customer transaction data, loyalty program records, and A/B test results — none of which were in the original scope of the service account’s intended function. The service account had been created two years prior and its IAM binding had never been scoped down as the project expanded.
Dataset-Level and Column-Level Security Patterns
BigQuery supports access control at four distinct granularities: project, dataset, table, and column. Most organizations default to dataset-level bindings because they are the most operationally convenient — but convenience is the enemy of least privilege. Effective BigQuery governance requires:
- Table-level ACLs for datasets where different tables have materially different sensitivity classifications (e.g., raw PII tables versus pre-aggregated analytics tables in the same dataset)
- Column-level security using BigQuery’s Policy Tags (integrated with Data Catalog) to classify sensitive columns and enforce access based on tag-bound IAM conditions
- Row-level security via BigQuery Row Access Policies, which filter query results dynamically based on the caller’s identity or group membership — critical for multi-tenant analytics environments
- Authorized views and authorized routines to expose aggregated or transformed data to downstream consumers without granting direct table access
Policy Tags deserve particular emphasis. When a column is tagged with a sensitive data category (e.g., policyTags/healthcare/phi), only principals with the Fine-Grained Reader role on that tag can query the raw value. All others see NULL automatically, without any application-layer logic required. This is a governance control that survives schema changes, view updates, and new user additions — making it inherently more durable than access controls maintained in application code.
VPC Service Controls and Exfiltration Prevention
Access governance is not only about who can read data — it is also about where data can go after it is read. BigQuery’s integration with VPC Service Controls allows organizations to define a security perimeter around BigQuery resources, preventing data from being exported, copied, or shared outside that perimeter without explicit policy exceptions. This is particularly relevant for preventing authorized insiders from exfiltrating data through the BigQuery Data Transfer Service or via unauthorized dataset sharing to external Google accounts. Organizations handling regulated data (GDPR, CCPA, HIPAA, PCI-DSS) should treat VPC Service Controls as a mandatory control, not an optional enhancement.
Cross-Platform Governance: Unified Policy Management
Enterprises that run both Snowflake and BigQuery — a common pattern in organizations that have grown through acquisition or maintain multi-cloud strategies — face the additional challenge of enforcing consistent governance policies across platforms with different native control models. Manual synchronization between the two is operationally unsustainable and audit-unfriendly.
Third-party data governance platforms have matured significantly to address this. Tools such as Immuta, Privacera, and Alation offer policy abstraction layers that translate a single governance policy (e.g., “mask all SSN columns for users not in the PII_AUTHORIZED group”) into platform-native enforcement mechanisms — Snowflake masking policies and BigQuery Policy Tags, simultaneously. According to Forrester’s 2026 Data Governance Wave, organizations using unified governance platforms reduce time-to-policy-enforcement by an average of 68% and achieve 40% higher audit pass rates compared to those managing policies natively in each platform.
Just-In-Time Access and Privileged Session Recording
For privileged operations — schema changes, data exports, role modifications — both Snowflake and BigQuery should integrate with a Privileged Access Management (PAM) solution that enforces JIT access. The workflow: a principal requests elevated access through the PAM portal, approval is obtained from a data owner or security reviewer, access is provisioned for a time-bounded session (e.g., two hours), and the session — including all queries executed — is recorded and linked to the change ticket. Solutions like CyberArk Conjur, HashiCorp Boundary, and StrongDM support this pattern for cloud data warehouse endpoints. The session recording capability is particularly valuable for post-incident forensics and SOC 2 Type II evidence collection.
Monitoring, Detection, and Incident Response for Warehouse Threats
Access governance without continuous monitoring is a policy document, not a security control. The threat scenarios specific to cloud data warehouses require detection logic tuned to warehouse behavior patterns — not generic network-level anomaly detection.
Key detection scenarios that every security operations team should have coverage for in their SIEM include:
- Credential stuffing against Snowflake authentication endpoints — unusually high failed login rates against a single account or across accounts from a narrow IP range
- Abnormal query volume — a user or service account that typically runs 50 queries per day suddenly executing 5,000 queries in a two-hour window
- Large result set exports — queries returning more than a configurable row threshold (e.g., 1 million rows) to a STAGE or external destination
- Off-hours privileged role activation in Snowflake or IAM binding modifications in BigQuery outside of approved change windows
- New service account accessing sensitive datasets for the first time, particularly service accounts created within the last 30 days
- Cross-region data movement inconsistent with data residency requirements or approved architecture patterns
Integrating Warehouse Audit Logs with Your SIEM
Snowflake’s ACCOUNT_USAGE schema and BigQuery’s Cloud Audit Logs (Data Access logs, Admin Activity logs) should both be treated as tier-1 log sources with the same ingestion priority as firewall and endpoint logs. For Snowflake, enable the LOGIN_HISTORY, QUERY_HISTORY, ACCESS_HISTORY, and POLICY_HISTORY views. For BigQuery, ensure that Data Read, Data Write, and Data Admin audit log types are enabled at the project level — they are not enabled by default. Both log sources should feed into a detection rule library that is reviewed and updated at least quarterly as warehouse usage patterns evolve.
Compliance Alignment: GDPR, HIPAA, and SOC 2 in the Warehouse Layer
Regulatory compliance frameworks increasingly scrutinize cloud data warehouse access controls explicitly. GDPR’s data minimization and purpose limitation principles map directly onto column-level security and row-level access policies. HIPAA’s minimum necessary standard requires that any workforce member or business associate can access only the specific PHI needed for their function — a requirement that dynamic data masking and authorized views are purpose-built to enforce. SOC 2 Trust Services Criteria CC6.3 and CC6.6 require that logical access is restricted to authorized users and that access is removed promptly upon termination or role change.
Organizations seeking SOC 2 Type II certification should document their Snowflake role hierarchy and BigQuery IAM bindings as part of their logical access control evidence. Access reviews — quarterly at minimum for privileged roles, semi-annually for standard roles — should be conducted through a formal process with documented approval. Automated access review workflows in tools like Vanta, Drata, or Tugboat Logic can pull current role assignments directly from Snowflake and BigQuery APIs, presenting them to data owners for review and generating timestamped evidence artifacts automatically.
Data Classification as the Foundation of Governance
No access governance program is sustainable without a data classification layer underneath it. If you do not know which tables contain PII, PHI, or financial data, you cannot apply appropriate controls — you can only apply uniform controls, which either over-restrict benign data or under-protect sensitive data. Both Snowflake and BigQuery integrate with automated data discovery and classification tools: BigQuery’s sensitive data protection (formerly DLP API) can scan datasets on a schedule and automatically apply Policy Tags based on detected content. Snowflake integrates with tools like Informatica CDGC and Collibra for similar automated tagging. Classification should drive access policy — not the reverse.
Key Takeaways
- Least privilege is not a one-time configuration — it requires continuous access reviews, automated role lifecycle management, and just-in-time provisioning for privileged operations in both Snowflake and BigQuery environments.
- Native platform controls are powerful but require deliberate activation — Snowflake’s dynamic data masking, row access policies, and ACCESS_HISTORY view, along with BigQuery’s Policy Tags, column-level security, and VPC Service Controls, must be explicitly configured; they are not on by default.
- Unified governance platforms reduce inconsistency and audit overhead — for multi-platform environments, policy abstraction
💡 Enjoyed this article?
Subscribe for more expert insights delivered to your inbox.
Follow us or subscribe below xe2x80x94 free, no spam.





