Skip to content

Initial SigV4 Auth Support for Catalog Federation #1489

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

XJDKC
Copy link
Member

@XJDKC XJDKC commented Apr 29, 2025

Context

Prior Catalog Federation work:

SigV4 Auth

Details about AWS SigV4 protocol can be found here: https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html

Description

This PR adds the SigV4 Auth Support so that Polaris can federate to Glue IRC / S3Tables / catalog server hosted behind the AWS API Gateway.

Details

User-provided properties:

  • roleArn: the AWS IAM role urn, polaris will assume the role to get a tmp aws session credential
  • externalId: An optional external id used to establish a trust relationship with AWS in the trust policy
  • signingRegion: Region to be used by the SigV4 protocol for signing requests
  • signingName: The service name to be used by the SigV4 protocol for signing requests, the default signing name is "execute-api" is if not provided
    • AWS Glue: glue
    • AWS S3Tables: s3tables
    • AWS API Gateway: execute-api

Service-provided properties:

  • userArn: The aws user arn used to assume the aws role, this represents the polaris service itself, overall steps:
    • Step 1: Polaris will use an user aws credential to assume the IAM role, this aws credential is configured for polaris, usually polaris will read it from environment variable
    • Step 2: After assuming the role, polaris will get the tmp aws credential, polaris will put these credentials into the prop map, this prop map will be used to initialize the REST Catalog Client, properties can be found in AwsProperties:
      • rest.signing-region
      • rest.signing-name
    • Step 3: RESTSigV4Signer will sign the requests based on SigV4 protocol

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.

1 participant