Hi Dmitri,

Thanks for the thoughtful questions!

1. Does this assume the use of STS?

Yes, the current spec changes assume the use of STS. Polaris acts as a service 
provider and assumes IAM roles provided by users to access AWS resources like 
Glue Catalogs. This model avoids long-lived credentials and enables secure, 
temporary access via STS-issued credentials.

2. Why is plain key/secret SigV4 not an option?

We can support plain key/secret credentials for SigV4, particularly in 
self-managed deployments where users own both the Polaris deployment and AWS 
accounts. However, to reduce security risks, we don't want to store long-lived 
credentials directly in the catalog entity. A more secure approach is to 
reference them using `UserSecretReference` (added by @dennishuo) and retrieve 
them through `UserSecretsManager`.

3. Where is Polaris expected to get credentials for STS requests?

Polaris obtains credentials for STS calls from its own runtime environment, 
such as server config, environment variables, or cloud-native options like 
instance profiles. These are used to call AssumeRole on the user-provided IAM 
role.

To support both temporary and static credential workflows, I'm planning to 
introduce a `PolarisConnectionCredentialVendor` (or `PolarisCredentialManager`) 
interface. This class will:
* Provide Polaris-generated service info (what we call vendor info) such as 
`userArn`, `externalId`, , `consentUrl`, or `gcsServiceAccount`, which will be 
injected into the catalog entity's connection config / storage config. This 
info is exposed to users when they load the catalog entity and is needed for 
setting up the appropriate permissions (e.g., allowing Polaris to assume roles).
* Retrieve temporary credentials from cloud providers (e.g., AWS STS, Azure 
identity services) when needed to perform authenticated operations.

The goal is to draw a clear boundary between user-provided input and 
Polaris-generated service info (something that's currently unclear in storage 
configs). In the long term, we're aiming to unify both connection and storage 
credential handling in this interface to simplify the overall architecture and 
improve security.

Best,
Rulin

On 2025/05/01 22:02:32 Dmitri Bourlatchkov wrote:
> Hi Rulin,
> 
> Thanks for the informative description in the PR!
> 
> It looks like the authentication method relies on STS. As such it is a
> sub-case of SigV4, I believe, because SigV4 can be used with plain
> key/secret credentials without assuming a role.
> 
> If that is so, could you clarify that in the description?
> 
> Is there any particular reason for not supporting plain key/secret
> credentials?
> 
> When STS is in use, where is Polaris expected to get credentials for STS
> requests?
> 
> Thanks,
> Dmitri.
> 
> On Thu, May 1, 2025 at 5:37 PM Rulin Xing <ru...@apache.org> wrote:
> 
> > Hi folks,
> >
> > Just wanted to surface a new API spec update proposal related to Catalog
> > Federation:
> >
> > https://github.com/apache/polaris/pull/1506
> >
> > This adds support for AWS SigV4 authentication, enabling Polaris to
> > federate to external Iceberg REST catalogs hosted behind services like AWS
> > Glue, S3Tables, or API Gateway.
> >
> > It builds on earlier federation work and introduces a set of properties to
> > support role assumption and request signing via SigV4.
> >
> > Feedback on the spec or implementation is welcome!
> >
> > Best,
> > Rulin
> >
> 

Reply via email to