Skip to content

Snowflake data sharing & exposure security checks

External sharing, public links, guest access, retention and data-protection settings that quietly push company data outside the tenant.

On Snowflake, Black Cat runs 6 checks in this area on every scan. Each one below lists its severity, how to fix it, and the compliance controls it satisfies where a control applies. See what access the Snowflake connector needs.

Checks (6)

severity: high No Storage Integration Required fix difficulty: medium #

Enforce storage integrations for external stage creation to prevent unauthorized cloud storage access

  1. Connect to Snowflake as ACCOUNTADMIN
  2. Enable the requirement: ALTER ACCOUNT SET REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATION = TRUE;
  3. Verify the setting: SHOW PARAMETERS LIKE 'REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATION' IN ACCOUNT;
  4. Ensure existing external stages are already using storage integrations; audit with: SHOW STAGES IN ACCOUNT;
  5. For any stages not using integrations, create the appropriate storage integration and update the stage
  6. Communicate the policy change to data engineers who create external stages

Vendor docs ↗

Satisfies: ISO 27001:2022 A.8.12 SOC 2 Type II CC6.7 CIS Controls v8 CIS-03.1 NIST CSF 2.0 PR.DS-01 GDPR (SaaS Security) GDPR-5.1f.iii HIPAA (SaaS Security) HIPAA-308.a4 NIS2 Directive NIS2-21.a.3 DORA (SaaS Security) DORA-9.11

severity: high Unload To Inline URL fix difficulty: easy #

Prevent data unloading to inline cloud storage URLs to block unauthorized data exfiltration

  1. Connect to Snowflake as ACCOUNTADMIN
  2. Enable the restriction: ALTER ACCOUNT SET PREVENT_UNLOAD_TO_INLINE_URL = TRUE;
  3. Verify the setting: SHOW PARAMETERS LIKE 'PREVENT_UNLOAD_TO_INLINE_URL' IN ACCOUNT;
  4. Ensure any legitimate data unload workflows use named external stages with storage integrations
  5. Update existing COPY INTO statements that reference inline URLs to use named stages
  6. Communicate this requirement to the data engineering and analytics teams

Vendor docs ↗

Satisfies: ISO 27001:2022 A.8.12 SOC 2 Type II CC6.7 CIS Controls v8 CIS-03.1 NIST CSF 2.0 PR.DS-01 GDPR (SaaS Security) GDPR-5.1f.iii HIPAA (SaaS Security) HIPAA-308.a4 NIS2 Directive NIS2-21.a.3 DORA (SaaS Security) DORA-9.11

severity: medium Unload To Internal Stages fix difficulty: medium #

Prevent data unloading to Snowflake internal stages to reduce data exfiltration risk

  1. Connect to Snowflake as ACCOUNTADMIN
  2. Enable the restriction: ALTER ACCOUNT SET PREVENT_UNLOAD_TO_INTERNAL_STAGES = TRUE;
  3. Verify the setting: SHOW PARAMETERS LIKE 'PREVENT_UNLOAD_TO_INTERNAL_STAGES' IN ACCOUNT;
  4. Identify any existing workflows that unload to internal stages: SHOW STAGES IN ACCOUNT;
  5. Migrate affected workflows to use external stages with storage integrations
  6. Test all data export pipelines after enabling to confirm no breakage

Vendor docs ↗

Satisfies: ISO 27001:2022 A.8.12 SOC 2 Type II CC6.7 CIS Controls v8 CIS-03.1 NIST CSF 2.0 PR.DS-01 GDPR (SaaS Security) GDPR-5.1f.iii HIPAA (SaaS Security) HIPAA-308.a4 NIS2 Directive NIS2-21.a.3 DORA (SaaS Security) DORA-9.11

severity: medium Outbound Share Review fix difficulty: medium #

Review and validate all outbound data shares to confirm they are still necessary and appropriately scoped

  1. Connect to Snowflake as ACCOUNTADMIN
  2. List all outbound shares: SHOW SHARES;
  3. For each share, review the shared objects: SHOW OBJECTS IN SHARE <share_name>;
  4. Verify the list of consuming accounts: SHOW GRANTS OF SHARE <share_name>;
  5. Remove any accounts that no longer need access: ALTER SHARE <share_name> REMOVE ACCOUNTS = '<account_identifier>';
  6. Drop shares that are no longer needed: DROP SHARE <share_name>;

Vendor docs ↗

Satisfies: ISO 27001:2022 A.8.12 SOC 2 Type II CC6.7 CIS Controls v8 CIS-03.1 NIST CSF 2.0 PR.DS-01 GDPR (SaaS Security) GDPR-28.3 HIPAA (SaaS Security) HIPAA-308.a4 NIS2 Directive NIS2-21.a.3 DORA (SaaS Security) DORA-9.11

severity: medium Share To Many Accounts fix difficulty: easy #

Reduce the number of accounts consuming a data share to the minimum necessary

  1. Connect to Snowflake as ACCOUNTADMIN
  2. List accounts consuming the share: SHOW GRANTS OF SHARE <share_name>;
  3. Contact consuming account owners to verify ongoing need
  4. Revoke access from accounts that no longer require it: ALTER SHARE <share_name> REMOVE ACCOUNTS = '<account_identifier>';
  5. Verify the updated consumer list: SHOW GRANTS OF SHARE <share_name>;
  6. Document the remaining consumers and their business justification

Vendor docs ↗

Satisfies: ISO 27001:2022 A.8.12 SOC 2 Type II CC6.7 CIS Controls v8 CIS-03.1 NIST CSF 2.0 PR.DS-01 GDPR (SaaS Security) GDPR-28.3 HIPAA (SaaS Security) HIPAA-308.a4 NIS2 Directive NIS2-21.a.3 DORA (SaaS Security) DORA-9.11

severity: medium Share Listing Unrestricted fix difficulty: easy #

Enable listing restrictions on outbound data shares

  1. Log in to Snowsight as an ACCOUNTADMIN
  2. Navigate to Data > Shared Data > Outbound Shares
  3. Select the flagged share
  4. Under Listing Settings, set restrictions to limit share visibility
  5. Confirm the change

Vendor docs ↗

Satisfies: ISO 27001:2022 A.8.12 SOC 2 Type II CC6.7 NIS2 Directive NIS2-21.a.3 DORA (SaaS Security) DORA-9.11

More Snowflake checks

The information on this page is provided for general informational purposes and is believed to be accurate as of its most recent update. Product names, logos, and trademarks are the property of their respective owners and are used for identification purposes only; their use does not imply any affiliation with or endorsement by those owners. Descriptions of third-party applications and of compliance frameworks are based on publicly available documentation and may change over time.

See these checks run on your stack

Start a free 14-day trial — no credit card required.

Start Free Trial