Share via

Storage firewall blocking Snowflake stage access for ADF Oracle to Snowflake pipeline

Vashishtha, Kritika 0 Reputation points
2026-06-01T09:32:54.8766667+00:00

Hi Azure Team,

Our ADF pipeline (Oracle to Snowflake) is failing during Snowflake load with stage access error.

Observed error:

Operation on target Oracle to Snowflake_2024_v1 failed with SnowflakeOperationError.

Failure using stage area.

Status Code: 403

Error Code: AuthorizationFailure

VendorCode: 91003

What changed:

Storage account network setting was changed from:

Enabled from all networks

to

Enabled from selected networks

Current understanding:

ADF source extraction from Oracle works.

Snowflake sink fails at stage access due to storage authorization/network restriction.

Managed private endpoint exists, but Snowflake stage access still gets denied (403).

Need Azure team help with:

  1. Confirming which source IP(s) are being denied by storage firewall for the failed stage requests.
  2. Enabling and validating correct storage diagnostics ingestion for transaction logs (so 403 caller IP can be identified).
  3. Verifying storage firewall and network rules needed for Snowflake stage access.
  4. Verifying if any NSG/private endpoint/DNS routing settings are blocking this path.
  5. Suggesting least-privilege permanent fix while keeping storage restricted.

Thanks.

Azure Data Factory
Azure Data Factory

An Azure service for ingesting, preparing, and transforming data at scale.


2 answers

Sort by: Most helpful
  1. Manoj Kumar Boyini 16,725 Reputation points Microsoft External Staff Moderator
    2026-06-02T20:41:47.4066667+00:00

    Hi @Vashishtha, Kritika

    Kindly check and validate the following on your end:

    • Ensure Snowflake public IP ranges are allowed in the storage account firewall
    • Validate and add the required IP ranges based on your Snowflake region/account using Snowflake documentation
    • Optionally enable Storage diagnostics (Transaction logs) to identify and confirm the denied caller IPs

    This will help ensure Snowflake can access the staging area successfully while keeping the storage account restricted.

    Was this answer helpful?

    0 comments No comments

  2. AI answer

    2026-06-01T09:33:43.6433333+00:00

    The 403 AuthorizationFailure on the Snowflake stage is caused by the storage account firewall/network rules blocking Snowflake’s access, or by insufficient SAS/authorization permissions on the Blob Storage used as the stage.

    Below is guidance aligned to each requested item, based only on the available context.

    1. Identify which IPs are being denied (403) by the storage firewall
    • Use the storage account’s diagnostic logs to see 403 events and the caller details.
    • The comprehensive checklist for 403 errors notes that authorization failures occur when clients have valid credentials but insufficient permissions or are blocked by network rules. Logs will show:
      • The operation
      • The error code (e.g., AuthorizationFailure, AuthorizationPermissionMismatch)
      • The caller (source) IP
    • Ensure diagnostic logging is enabled for the storage account so that 403 events are captured and can be queried.
    1. Enable and validate diagnostics for transaction logs
    • The 403 troubleshooting guidance recommends enabling resource logs to identify which rule is causing the issue, especially when network security perimeter or firewall rules are involved.
    • Configure diagnostic settings on the storage account to send logs to Log Analytics/Event Hub/Storage.
    • After enabling, reproduce the failing Snowflake load and query logs for:
      • StatusCode = 403
      • ErrorCode = AuthorizationFailure or AuthorizationPermissionMismatch
      • Caller IP and rule that blocked the request.
    1. Verify storage firewall and network rules for Snowflake stage access
    • When the storage account is set to “Selected networks,” only explicitly allowed sources can access it. The 403 guidance highlights:
      • Public network endpoint: If firewall rules are enabled, ensure the client (Snowflake) is making requests from an allowed IP address or subnet.
      • Source and destination access: For operations that copy data between storage accounts, the client must have network access to both source and destination accounts.
      • Azure service access / trusted services: If 403 originates from other services that need to interact with the storage backend, confirm they are added as allowed resource instances or via trusted Azure services.
    • For Snowflake specifically (ADF Snowflake connector):
      • The Snowflake connector troubleshooting for SnowflakeFailToAccess states that the error is caused by missing access permission on the source/sink when Snowflake executes its internal COPY commands.
      • For direct copy or staged copy, the staging Azure Blob Storage must use SAS authentication, and the SAS must allow Snowflake’s IPs and required permissions.
      • Ensure the SAS token used by Snowflake includes:
        • Correct permissions (sp field) for read/write/delete/list as required.
        • Correct service type (ss field) for Blob (b).
      • If IP restrictions (sip) are used in the SAS, they must include the IPs Snowflake uses; otherwise, 403 AuthorizationFailure will occur.
    1. Check NSG/private endpoint/DNS routing
    • The 403 checklist calls out several network layers that can cause 403 or access failures:
      • Firewall rules: IP and virtual network rules on the storage account.
      • Network security perimeter rules: These can override firewall settings; restrictive rules can still result in 403 even if firewall appears to allow access. Enable resource logs to identify which rule is causing the issue.
      • Service endpoint policies: If defined, ensure the storage account is included; otherwise, access can be blocked.
      • Private endpoints:
        • Verify DNS resolves the storage account name to the private IP (not the public endpoint).
        • Ensure there are private endpoints for both Blob and Data Lake resources if needed.
        • Ensure network connectivity from the client path to the private endpoint.
    • If Snowflake is accessing via public endpoint, ensure no NSG or private endpoint configuration forces traffic to a path that cannot reach the storage account.
    1. Least-privilege permanent fix while keeping storage restricted
    • From the Snowflake connector and 403 guidance, a least-privilege pattern is:
      • Keep the storage account on “Selected networks.”
      • Allow only:
        • The specific IP ranges or subnets used by Snowflake for stage access (via IP rules or virtual network rules, as applicable).
        • Any required Azure services as trusted services or resource instances if they must interact with the storage account.
      • Ensure SAS tokens used by Snowflake:
        • Have only the minimal permissions required (read/write/delete/list as needed for staging).
        • Are scoped to the specific container or blob path used as the stage.
        • Do not include overly broad IP ranges unless necessary.
    • For 403 AuthorizationPermissionMismatch or AuthorizationServiceMismatch:
      • Verify SAS permissions (sp) and service (ss) fields match the required operation and service.
      • Ensure any Azure RBAC roles (e.g., Storage Blob Data Reader/Contributor) are assigned only at the minimal scope needed.

    Additionally, the Snowflake connector troubleshooting explicitly notes that when using Azure Blob Storage with SAS for Snowflake stages, the SAS must be generated with the correct allowed permissions and IP addresses for Snowflake. If these are too restrictive or misconfigured, the Snowflake COPY command will fail with the observed 403.


    References:

    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.