Skip to content

Document Updated: Added GCS related Bucket Properties for vending credentials.#3066

Merged
flyrain merged 6 commits intoapache:mainfrom
sakshamratra0106:gcs_storage_properties
Nov 21, 2025
Merged

Document Updated: Added GCS related Bucket Properties for vending credentials.#3066
flyrain merged 6 commits intoapache:mainfrom
sakshamratra0106:gcs_storage_properties

Conversation

@sakshamratra0106
Copy link
Contributor

@sakshamratra0106 sakshamratra0106 commented Nov 17, 2025

==> Document Updated on 18th Nov 2025

  1. Added GCS related Properties for vending credentials.
  2. Added Headers which were missing.
  3. Added line width to 120 char.

==> Edit on 20th Nov 2025

  1. As per the comments, For the changes "Added GCS related Properties for vending credentials" i have added a new sub page "Configuring Cloud Storage" under the existing page "Production Configuration"
  2. Reverted above changes 2 and 3.

Copy link
Contributor

@dimas-b dimas-b left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your contribution, @sakshamratra0106 !

- [ ] Use a durable metastore (JDBC + PostgreSQL)
- [ ] Bootstrap valid realms in the metastore
- [ ] Disable local FILE storage
- [ ] Polaris Server Header
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is Polaris Server Header a critical point for production configuration?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section already exists in the page but there wasnt any header for this. Thought i would just add it as header on the top of the page. But i see the point, will remove it.

image

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the Server header is off by default due to possible security concerns. If a user wishes to enable it, it is possible. However, it does not look like every user has to make a decision about it.


Polaris authentication requires specifying a token broker factory type. Two implementations are
supported out of the box:
Polaris authentication requires specifying a token broker factory type. Two implementations are supported out of the
Copy link
Contributor

@dimas-b dimas-b Nov 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer not to change the formatting on existing lines when the text itself does not change. It complicates reviews and skews line authorship attribution.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes reverting those changes.


### Cloud Storage Specific Configuration

GCS + Polaris: When using token vending for fine-grained access in Google Cloud Storage (GCS) with Apache Iceberg on
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GCS is one of several possible cloud storage implementations. I believe it would be nicer to move this section into a sub-page under https://polaris.apache.org/in-dev/unreleased/configuring-polaris-for-production/

Other cloud storage options can get dedicated pages parallel to that one later. WDYT?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i was thinking the same thing, there could be more of cloud configuration which would come eventually in documentation. Where would it go. I will put that in sub page under this.

Copy link
Contributor

@flyrain flyrain left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @sakshamratra0106 for working on it. Left some comments.

[rsa-key-pair]:
https://github.com/apache/polaris/blob/390f1fa57bb1af24a21aa95fdbff49a46e31add7/service/common/src/main/java/org/apache/polaris/service/auth/JWTRSAKeyPairFactory.java
[symmetric-key]:
https://github.com/apache/polaris/blob/390f1fa57bb1af24a21aa95fdbff49a46e31add7/service/common/src/main/java/org/apache/polaris/service/auth/JWTSymmetricKeyFactory.java
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There seems be a lot of changes not related. Can we revert them?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure


### Cloud Storage Specific Configuration

GCS + Polaris: When using token vending for fine-grained access in Google Cloud Storage (GCS) with Apache Iceberg on
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd suggest a subtitle

Suggested change
GCS + Polaris: When using token vending for fine-grained access in Google Cloud Storage (GCS) with Apache Iceberg on
#### GCS
When using token vending for fine-grained access in Google Cloud Storage (GCS) with Apache Iceberg on

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You mean title of the section could be GCS ? is it ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh ok! Got it!


### Cloud Storage Specific Configuration

GCS + Polaris: When using token vending for fine-grained access in Google Cloud Storage (GCS) with Apache Iceberg on
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we use the term credential vending instead of token vending to be more consistent with other places?

I'd also recommend to not mention fine-grained access to avoid any confusion with table's FGAC. I think the context is pretty clear when it comes to storage credential vending. fine-grained access isn't necessary.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make sense! Removing!

saksham.ratra added 2 commits November 20, 2025 08:16
…-page for "Con figuring polaris for production"
dimas-b
dimas-b previously approved these changes Nov 20, 2025
# specific language governing permissions and limitations
# under the License.
#
title: Configuring Cloud Storage
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: how about Configuring GCS Cloud Storage?

If AWS S3, etc. are added later, it will be a new page, not an edit to this page, which will be easier to maintain, IMHO... but current layout is ok too.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sounds good!!


### Configuring Polaris for Cloud Storages

For guidance on configuring cloud storage providers (such as Google Cloud Storage, Amazon S3, and Azure Blob Storage) for use with Polaris—including credential vending, IAM roles, ACL requirements, and best practices—see [Configuring Cloud Storage](./configuring-cloud-storage-specific/).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: For guidance on configuring cloud storage providers ... see child pages (links in the left-hand pane)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cool!!

@github-project-automation github-project-automation bot moved this from PRs In Progress to Ready to merge in Basic Kanban Board Nov 20, 2025
…-page for "Con figuring polaris for production"
@sakshamratra0106
Copy link
Contributor Author

@dimas-b please review again!


### Configuring Polaris for Cloud Storages

For guidance on configuring cloud storage providers ... see child pages (links in the left-hand pane) for use with Polaris—including credential vending, IAM roles, ACL requirements, and best practices—see [Configuring GCS Cloud Storage](./configuring-gcs-cloud-storage-specific/).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For guidance on configuring cloud storage providers ... see child pages (links in the left-hand pane) for use with Polaris—including credential vending, IAM roles, ACL requirements, and best practices—see [Configuring GCS Cloud Storage](./configuring-gcs-cloud-storage-specific/).
For guidance on configuring specific cloud storage providers see child pages (links in the left-hand pane).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh ok!

…-page for "Con figuring polaris for production"
dimas-b
dimas-b previously approved these changes Nov 20, 2025
Copy link
Contributor

@flyrain flyrain left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for keeping working on it. We are getting close!

This page provides guidance for Configuring GCS Cloud Storage provider for use with Polaris.
It covers credential vending, IAM roles, ACL requirements, and best practices to ensure secure and reliable integration.

#### GCS
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need this title as this page is dedicated for GCS config

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fair enough!!

#### GCS

When using credential vending for Google Cloud Storage (GCS) with Apache Iceberg on
Polaris, ensure that both IAM roles and HNS ACLs (if HNS is enabled) are properly configured. Even with the correct IAM
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does HNS refer to Hierarchical namespace described here, https://docs.cloud.google.com/storage/docs/hns-overview? We might add the full name and links so that reader arent' confused the by the acronym.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Polaris, ensure that both IAM roles and HNS ACLs (if HNS is enabled) are properly configured. Even with the correct IAM
role (e.g., `roles/storage.objectAdmin`), access to paths such as `gs://<bucket>/idsp_ns/sample_table4/` may fail with
403 errors if HNS ACLs are missing for scoped tokens. The original access token may work, but scoped (vended) tokens
require HNS ACLs on the base path or relevant subpath. Polaris does not require HNS to be enabled for basic operation,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are basic operations? Can we clarify that? My impression is that we cannot disable credential vending when a catalog based on GCS. In that case, HNS seems mandatory.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually no. HNS is not mandatory with Credential Vending. We can disable HNS and use Credential vending as is with bare min permissions[object Read and Write]. And that works, i am currently doing the same thing in my project.

Where as with HNS enabled we need to another of permissions in ACLs, refference https://docs.cloud.google.com/storage/docs/uniform-bucket-level-access. i still need to explore that territory. Will keep adding more information as and when i know more about it. If thats fine ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have made some changes again to make more sense and details about HNS is not mandatory.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@flyrain please review again!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct one dead internal link to "admin-tool" page

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@flyrain also could you confirm if these dead link issues to external location are bound to happen and we can merge anyways ?

https://github.com/apache/polaris/actions/runs/19544276537/job/55967194931?pr=3066

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merged, the markdown issue isn't related.

2. Corrected one broken link in "Polaris Configurtion Page"
Copy link
Contributor

@flyrain flyrain left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks @sakshamratra0106 !

@flyrain flyrain merged commit c1c9227 into apache:main Nov 21, 2025
14 of 15 checks passed
@github-project-automation github-project-automation bot moved this from Ready to merge to Done in Basic Kanban Board Nov 21, 2025

This page provides guidance for configuring GCS Cloud Storage provider for use with Polaris. It covers credential vending, IAM roles, ACL requirements, and best practices to ensure secure and reliable integration.

All catalog operations in Polaris for Google Cloud Storage (GCS)—including listing, reading, and writing objects—are performed using credential vending, which issues scoped (vended) tokens for secure access.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not 100% accurate, the SKIP_CREDENTIAL_SUBSCOPING_INDIRECTION flag (if set) can turn off credential vending.

@sakshamratra0106 sakshamratra0106 deleted the gcs_storage_properties branch November 22, 2025 04:37
snazy added a commit to snazy/polaris that referenced this pull request Feb 11, 2026
* Docs: update Helm Chart page to show usage without cloning Polaris github repo (apache#2939)

* Docs: update Helm Chart page to show usage without cloning Polaris github repo

* Apply suggestions from code review

* Add separate flows in Helm Chart doc for installing released chart and images vs building from source

---------

Co-authored-by: Alexandre Dutra <adutra@apache.org>

* docs: improve getting started and README documentation (apache#2267)

* The outdated config snippets and health-checks are removed from the index

* The binary guide stays focused and concise

* Update changelog with missing 1.3.0 features (apache#3087)

* Update registry.access.redhat.com/ubi9/openjdk-21-runtime Docker tag to v1.23-6.1763034977 (apache#3092)

* Update docker.io/jaegertracing/all-in-one Docker tag to v1.75.0 (apache#3093)

* feat: Make generate_clients.py windows compatible (apache#3084)

* Make generate_clients.py windows compatible

* Updated CHANGELOG.md

* PRs: Remove markdown-links-check from required checks (apache#3102)

The "Check Markdown links" workflow is known to produce false failures, leading to apache#3097.

This change is intended to unblock PRs due to these false failures.

* Update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.1.0 (apache#3083)

* Update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.1.0

* spotlessApply

---------

Co-authored-by: Robert Stupp <snazy@snazy.de>

* chore(deps): update gradle to v9.2.1 (apache#3069)

* chore(deps): update gradle to v9.2.1

* Fix Grale wrapper SHA

---------

Co-authored-by: Robert Stupp <snazy@snazy.de>

* chore(deps): update mongo docker tag to v8.2.2 (apache#3100)

* chore(deps): update docker.io/mongo docker tag to v8.2.2 (apache#3099)

* Source-tarball - eliminate git-gzip risk (apache#3075)

Details in the `git archive` chapter in https://reproducible-builds.org/docs/archives/

* NoSQL: Allow `null` IndexKey (de)serialization (apache#3076)

This change adopts the implementation to the API specification.

* PRs: Re-add markdown-links-check step (apache#3103)

The step was disabled in apache#3102 to pass CI and enable merging.

* NoSQL: Add maintenance implementation (apache#3077)

* Inject DefaultFileIOFactory in tests (apache#3043)

* Inject DefaultFileIOFactory in tests

also simplify `TaskFileIOSupplier` usage in tests, which allows removal
of `TestFileIOFactory`.

* Update Quarkus Platform and Group to v3.29.4 (apache#3094)

* Site: Replace feather logo (apache#3101)

The ASF has a new logo, a leaf. There is sadly no free icon that matches the new logo, so replacing the feather-ASF with "The ASF" in the top-bar navigation.

* Update actions/checkout action to v6 (apache#3106)

* Core: resolveAll() must be called before reading resolution results (apache#3064)

* Site: Added GCS related Bucket Properties for vending credentials. (apache#3066)

* Publish/pom: don't include test-fixtures dependencies as runtime (apache#3085)

The list of dependencies in pom's includes the api/runtime elements of the test-fixtures, which is not what should be published, as it "pulls up" deps like junit, mockito and assertj as Maven runtime scope dependencies.
This change fixes this.

* Increase javadoc visibility in `persistence/nosql/persistence/cdi/weld` (apache#3110)

This is to fix javadoc error: `No public or protected classes found to document`

* Disable cloud storage tests that would use @tempdir (apache#3095)

Disable tests from ViewCatalogTests for cloud storage integration tests
(S3, ADLS, GCS) that would otherwise use @tempdir. Since @tempdir internally
uses Paths.get, it cannot point to cloud storage paths. These tests remain
enabled for file-based integration tests.

* Remove 'beta' label for Generic Table (apache#3096)

* remove beta label

* address comments for change log

---------

Co-authored-by: Pierre Laporte <pierre@pingtimeout.fr>

* Update dependency jupyterlab to v4.5.0 (apache#3074)

* chore: Fix md link check in GH action (apache#3128)

* Fix md link check in GH action

* Fix md link check in GH action

* Update dependency pre-commit to v4.5.0 (apache#3123)

* Update dependency software.amazon.awssdk:bom to v2.39.2 (apache#3127)

* NoSQL: authZ API, SPI, impl and store (apache#3078)

NoSQL base functionality for ACLs

* NoSQL: Quarkus distributed cache invalidation (apache#3105)

Adds support for distributed NoSQL cache invalidation leveraging Quarkus.

* NoSQL: adjustments / merge fixes

* Last merged commit e124348

---------

Co-authored-by: Oleg Soloviov <40199597+olsoloviov@users.noreply.github.com>
Co-authored-by: Alexandre Dutra <adutra@apache.org>
Co-authored-by: Subham <subham.sangwan@adypu.edu.in>
Co-authored-by: Pierre Laporte <pierre@pingtimeout.fr>
Co-authored-by: Mend Renovate <bot@renovateapp.com>
Co-authored-by: Yong Zheng <yongzheng0809@gmail.com>
Co-authored-by: Christopher Lambert <xn137@gmx.de>
Co-authored-by: Yufei Gu <yufei@apache.org>
Co-authored-by: Saksham Ratra <sakshamratra.0106@gmail.com>
Co-authored-by: Dmitri Bourlatchkov <dmitri.bourlatchkov@gmail.com>
Co-authored-by: Tamas Mate <50709850+tmater@users.noreply.github.com>
Co-authored-by: Yun Zou <yunzou.colostate@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants