This guide describes how to prepare a Snowflake Open Catalog (Polaris) for use with StreamNative Ursa as an Iceberg catalog on Google Cloud Platform (GCP).Documentation Index
Fetch the complete documentation index at: https://docs.streamnative.io/llms.txt
Use this file to discover all available pages before exploring further.
Important: Polaris does not support reading buckets from a different region. The StreamNative Ursa cluster, the GCS bucket, and the Polaris catalog must all reside in the same region.
Prerequisites
- A Snowflake standard account
- A GCP project with permissions to create GCS buckets and IAM roles
- Access to the Snowflake Open Catalog feature
1. Create a Snowflake Open Catalog Account
The Snowflake Open Catalog console requires a dedicated Open Catalog account. From the standard Snowflake console, navigate to Admin -> Accounts and use the toggle to Create Snowflake Open Catalog Account.

- Cloud: GCP
- Region: the region in which your GCS bucket resides
- Edition: any




2. Create the Polaris Catalog
In the Snowflake Open Catalog console, create a new catalog.
- External: disabled
- Storage provider: GCS
- Default base location: the GCS path used by the Ursa cluster (
gs://<bucket>/<subpath>)



3. Grant Bucket Permissions to the Polaris Service Account
3.1 Create a Custom IAM Role
In the GCP console, navigate to IAM & Admin -> Roles -> Create role and add the following permissions:storage.buckets.getstorage.objects.createstorage.objects.deletestorage.objects.getstorage.objects.list




3.2 Assign the Role to the Polaris Service Account
Open the bucket, navigate to PERMISSIONS -> View BY PRINCIPALS -> GRANT ACCESS.

4. Create a Connection (Service Principal)
In the Open Catalog console, create a new connection that StreamNative Ursa will use to authenticate.
- Name: any name
- Create new principal role: enabled
- Principal Role Name: any name


5. Create a Catalog Role and Grant Privileges
Navigate to Catalogs -> [your catalog] -> Roles -> + Catalog Role and create a role with the following privileges:NAMESPACE_CREATENAMESPACE_LISTNAMESPACE_READ_PROPERTIESNAMESPACE_WRITE_PROPERTIESTABLE_LISTTABLE_CREATETABLE_WRITE_DATATABLE_READ_DATATABLE_READ_PROPERTIESTABLE_WRITE_PROPERTIES




Catalog Information Summary
When the steps above are complete, collect the following values for the StreamNative Ursa compaction service:| Value | Description |
|---|---|
iceberg.uri | Polaris REST endpoint (e.g., https://<account>.<region>.gcp.snowflakecomputing.com/polaris/api/catalog). The format follows the URL of your Polaris console. |
iceberg.warehouse | The Polaris catalog name created in step 3 |
iceberg.credential | <client-id>:<client-secret> from step 5 |
iceberg.scope | PRINCIPAL_ROLE:ALL |