-
Notifications
You must be signed in to change notification settings - Fork 528
Fix STS AssumeRole 501 error on S3-compatible storage by making inline policy optional #5425
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
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -154,6 +154,14 @@ public URI getInternalEndpointUri() { | |
| */ | ||
| public abstract @Nullable Boolean getKmsUnavailable(); | ||
|
|
||
| /** | ||
| * Flag indicating whether to omit the inline session policy from STS AssumeRole requests. Set to | ||
| * {@code true} for S3-compatible STS implementations (e.g. VAST Data) that do not support inline | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we confirm that Policy is the unsupported field on the reported VAST build before making its omission the compatibility switch? The successful CLI request in #5099 also uses a different role ARN format from the catalog config and omits ExternalId. VAST’s current guide for the 5.4.3+ flow lists Policy as supported. That does not prove the reported hotfix behaves the same, but it leaves the root cause unresolved. Do we have a request capture or controlled reproduction that holds the other fields constant and shows the 501 disappears when only Policy is removed?
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @flyingImer we don't have a request capture from the reporter's VAST build beyond what's in #5099, and we can't reproduce against their deployed version ourselves, so we can't fully confirm |
||
| * session policies. When enabled, the temporary credentials inherit the full permissions of the | ||
| * assumed role; ensure the IAM role has appropriate permissions for the required operations. | ||
| */ | ||
| public abstract @Nullable Boolean getNoInlinePolicy(); | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This property is not yet integrated into the
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks @vigneshio — agreed, the flag isn't effective until it's wired end-to-end. I'll add |
||
|
|
||
| /** Endpoint URI for STS API calls */ | ||
| @Nullable | ||
| public abstract String getStsEndpoint(); | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Once
CatalogEntityactually copies the field,getNoInlinePolicy()will return the configured value; until then it’s always null, so the inline policy is still included. After the wiring is in place, please add a test that verifiesAssumeRoleRequestomits the policy field when the no-inline-policy flag is true.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @vigneshio — agreed, the flag isn't effective until it's wired end-to-end. I'll add
noInlinePolicyto theAwsStorageConfigInfoOpenAPI schema next tokmsUnavailable, map it bidirectionally inCatalogEntity.getAwsStorageConfigInfo()/getAwsStorageConfigurationInfo(), and add theAssumeRoleRequesttest verifyingPolicyis omitted when the flag is true.