- 
                Notifications
    You must be signed in to change notification settings 
- Fork 207
Adding support for Snowflake Workload Identity Federation #1316
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?
Conversation
| Thanks for your pull request, and welcome to our community! We require contributors to sign our Contributor License Agreement and we don't seem to have your signature on file. Check out this article for more information on why we have a CLA. In order for us to review and merge your code, please submit the Individual Contributor License Agreement form attached above above. If you have questions about the CLA, or if you believe you've received this message in error, please reach out through a comment on this PR. CLA has not been signed by users: @roryjbd | 
| CLA now signed | 
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.
A couple questions but this looks good, will work on getting OIDC set up this week to test
| Also can you add the environment variables your tests need to the github action? dbt-adapters/.github/workflows/_integration-tests.yml Lines 329 to 330 in 91b04c4 
 | 
| 
 I've just updated the integration tests to use  | 
| Thank you for your pull request! We could not find a changelog entry for this change in the dbt-snowflake package. For details on how to document a change, see the Contributing Guide. | 
| @colin-rogers-dbt Let me sort the f-string and changelog entry! | 
| Anything else needed to get this over the line? I'm happy to help, very interested in getting this working! | 
| Just waiting for Colin’s review but I think code changes should be all good
now!… On Wed, 17 Sep 2025 at 22:26, Brian Salerno ***@***.***> wrote:
 *bsalerno* left a comment (dbt-labs/dbt-adapters#1316)
 <#1316 (comment)>
 Anything else needed to get this over the line? I'm happy to help, very
 interested in getting this working!
 —
 Reply to this email directly, view it on GitHub
 <#1316 (comment)>,
 or unsubscribe
 <https://github.com/notifications/unsubscribe-auth/AQXVF4QGYBHYHOKRFTQLVAL3THGZRAVCNFSM6AAAAACFUKHIUCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTGMBUGYYTKOBYGY>
 .
 You are receiving this because you were mentioned.Message ID:
 ***@***.***>
 | 
| Hi @colin-rogers-dbt - have you had a chance to look at this again? I've been using my (alter ego roryjbd) fork in work and all is running ok. But keen to get this released. | 
| @sfc-gh-pmansour I'm intrigued by the new parameter, but I read the docs here https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-api and I still don't understand what it is/how it is used Are there more docs somewhere? I'm currently in the process of converting all my project code to use AWS WIF auth | 
| 
 There's a little bit more about this parameter recorded here: https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-api#:~:text=workload_identity_impersonation_path For example, if you have a GCE VM with WIF configured, with an attached service account  What would happen is: 
 Snowflake only sees service account C. All the others are exchanged entirely on the client-side. This lets you support a more dynamic binding of your workloads, without necessarily tying your Snowflake user to your execution identity. For example, a single workload can use WIF to authenticate to Snowflake as many different users (based on different impersonated Service Accounts), and many workloads can authenticate to Snowflake as the same user (based on impersonating that Service Account). | 
| 
 I feel like I'm still missing some important part. It's not clear to me exactly what type of thing the entries in the list are. Is there a concept or feature on the AWS side that this corresponds to? I guess there is something I have to set up there to relate these entries back to the role that was attached to WIF auth in Snowflake? | 
| 
 The actual data type is always a string, but the semantic "type of thing" depends on the WIF provider you're using: 
 | 
| thanks, I am still struggling a bit to understand concretely what this means though you say "Snowflake only sees service account C"... so I guess the prior steps are happening between snowflake-connector-python and AWS ? is it a list of "assumed" roles? i.e. first assume role A, which allows you to assume B, which allows you to assume C, which is the role configured in Snowflake for WIF auth? never mind, I should have looked in the source, yes looks like it's that: and so the benefit is I don't have to be running a task as role C, it just has to be a role which has permission to ultimately assume role C I guess "impersonation" is GCP lingo which was making it a bit obscure as an AWS user | 
| @colin-rogers-dbt should hopefully be good to go now. @sfc-gh-pmansour will get an issue raised for updating to v4.0 and then hopefully can work on that this weekend | 

resolves #1234
Issue raised for updating docs
dbt-labs/docs.getdbt.com#7866
Problem
Allows for authentication to Snowflake using Workload Identity Federation
Solution
Allows the necessary parameters to be passed to the snowflake connector
connectmethod.Updates to latest supported
snowflake-connector-pythonpackage.Checklist