Pangolin supports role-based authentication for cloud storage, allowing you to avoid storing static credentials. Instead of distributing long-lived keys, Pangolin can assume IAM roles (AWS) or use Managed Identities (Azure/GCP) to vend temporary credentials to clients like Spark, Dremio, and PyIceberg.
When configuring a Warehouse, you select a vending_strategy that defines how credentials are provisioned.
Pangolin assumes a specified IAM Role and vends a temporary AccessKey, SecretKey, and SessionToken.
- Best for: Production environments on AWS.
- Config: Requires
role_arnand optionalexternal_id.
Pangolin vends the static credentials configured in the warehouse.
- Best for: Centralizing credentials so they don't have to be shared with every developer or tool individually.
- Config: Uses the
access_keyandsecret_keyfrom the warehouse config.
Pangolin generates a Shared Access Signature (SAS) token for the specific storage container.
- Best for: Azure Blob Storage users.
Pangolin vends a downscoped OAuth2 token with access restricted to specific buckets/prefixes.
- Best for: Google Cloud Storage users.
Creating a warehouse with an AWS STS strategy using the Admin CLI:
pangolin-admin create-warehouse --name "prod-s3" --type "s3"
# Then update with strategy (or use the interactive wizard)Using the API directly:
{
"name": "s3-iam-warehouse",
"storage_config": {
"s3.bucket": "acme-data",
"s3.region": "us-east-1",
"s3.role-arn": "arn:aws:iam::123456789012:role/PangolinDataAccess"
},
"vending_strategy": {
"AwsSts": {
"role_arn": "arn:aws:iam::123456789012:role/PangolinDataAccess"
}
}
}| Strategy | Status | Notes |
|---|---|---|
| AwsStatic | ✅ Implemented | Full support for S3/MinIO |
| AwsSts | ✅ Implemented | Full support for temporary credential vending |
| AzureSas | 📝 Planned | Awaiting Azure SDK integration |
| GcpDownscoped | 📝 Planned | Awaiting GCP SDK integration |
Important
For providers/strategies marked as Planned, clients must provide their own storage credentials (e.g., via environment variables or Spark properties) even if the warehouse is configured in Pangolin.
- Principle of Least Privilege: Ensure the IAM role assumed by Pangolin only has access to the specific buckets/prefixes used by the warehouse.
- Short Session Durations: Prefer shorter TTLs for vended credentials (e.g., 1 hour) to minimize the impact of token leakage.
- Use External IDs: When configuring cross-account
AwsStsroles, always use anexternal_idto prevent the "confused deputy" problem.