Skip to content

delta_scan ignores GCS secrets and uses anonymous access #255

@ik8

Description

@ik8

Problem

delta_scan ignores properly configured GCS secrets and attempts anonymous access, while read_parquet with the same secrets works correctly.

Environment

  • DuckDB version: 1.4.1
  • duckdb-delta extension: Latest
  • Platform: macOS
  • Authentication: Google Cloud Application Default Credentials + Bearer Token

Working vs Not Working

✅ WORKS: read_parquet with GCS secret

import duckdb
import subprocess

# Get access token
result = subprocess.run(['gcloud', 'auth', 'application-default', 'print-access-token'], 
                       capture_output=True, text=True)
access_token = result.stdout.strip()

con = duckdb.connect()
con.execute("INSTALL httpfs")
con.execute("LOAD httpfs")
con.execute("DROP SECRET IF EXISTS gcs_secret")
con.execute(f"CREATE SECRET gcs_secret (TYPE GCS, bearer_token '{access_token}')")

# This works perfectly
result = con.execute("SELECT count(*) FROM read_parquet('gs://bucket/path/*.parquet')").fetchone()
print(f"Success: {result[0]} rows")

❌ FAILS: delta_scan with same GCS secret

# Same setup as above, but using delta_scan
con.execute("INSTALL delta")
con.execute("LOAD delta")

# This fails with anonymous access error
result = con.execute("SELECT count(*) FROM delta_scan('gs://bucket/path/delta-table')").fetchone()

Error Message

IO Error: DeltaKernel ObjectStoreError (8): Error interacting with object store: 
The operation lacked the necessary privileges to complete for path [...]: 
Error performing GET https://storage.googleapis.com/[...] - Server returned 
non-2xx status code: 403 Forbidden: Access denied. Anonymous caller does not 
have storage.objects.get access to the Google Cloud Storage object.

Key Observations

  1. GCS secret is created successfully - verified with SELECT * FROM duckdb_secrets()
  2. Individual file access works - read_parquet uses the secret correctly
  3. Delta table structure is valid - gsutil ls gs://bucket/path/_delta_log/ shows proper Delta log files
  4. Authentication is valid - gsutil and gcloud commands work fine
  5. delta_scan attempts anonymous access - ignores the configured secret

Related Issues

Expected Behavior

delta_scan should use the configured GCS secret for authentication, just like read_parquet does.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions