-
Notifications
You must be signed in to change notification settings - Fork 341
Add support for AWS IAM Roles for Service Accounts (IRSA) #831
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: master
Are you sure you want to change the base?
Add support for AWS IAM Roles for Service Accounts (IRSA) #831
Conversation
Introduce `io.confluent.connect.s3.auth.AwsWebIdentityTokenCredentialsProvider` which can be referenced in the connector property `s3.credentials.provider.class`. `AwsWebIdentityTokenCredentialsProvider` configuration properties: - `irsa.role.arn`: Role ARN to use when starting a session - `irsa.session.name`: Role session name to use when starting a session - `irsa.token.file`: Path to the web identity token file
|
🎉 All Contributor License Agreements have been signed. Ready to merge. |
|
Thanks @rodrigo-molina -
|
|
hey @ashwinpankaj Thanks for the quick response! 🙌
The feature is intended for use in a Self-Hosted Kafka Connect deployment and could be valuable for anyone running Kafka Connect on EKS. Could you please clarify what
I currently don’t have access to that repository. Let me know if there’s a way to proceed or if I should request access. |
|
We're looking forward to this feature here. How can this proceed @ashwinpankaj @tarunjain-confluent ? |
|
Hey @der-eismann, When I submitted this pull request, I also wrote some documentation on the process here: Hope it helps! |
|
A much needed feature, wonder why is it lingering? |
Hey @ashwinpankaj @tarunjain-confluent, Any suggestions on how to move this forward? The change itself respects the current repository structure: it extends an existing |
Problem
AWS IAM roles for service accounts (IRSA) is a recommended approach for applications such as Kubernetes to authenticate with AWS services without managing static credentials.
From AWS's docs:
Solution
Introduce
io.confluent.connect.s3.auth.AwsWebIdentityTokenCredentialsProviderwhich can be set using thes3.credentials.provider.classconnector property.This provider is a wrapper around AWS’s native WebIdentityTokenCredentialsProvider, similar to how AwsAssumeRoleCredentialsProvider is implemented. It enables configuring IRSA credentials directly via connector properties.
AwsWebIdentityTokenCredentialsProviderconfiguration properties:irsa.role.arn: Role ARN to use when starting a session.irsa.session.name: Role session name to use when starting a session.irsa.token.file: Path to the web identity token file.Does this solution apply anywhere else?
If yes, where?
Any connector that supports instances of
AWSCredentialsProviderandConfigurablein its configurations.Test Strategy
The Confluent S3 Sink connector allows custom AWS credential providers via configuration. We have tested this change by deploying a JAR containing the proposed class and using it within the connector's classpath (confluentinc-kafka-connect-avro-converter-7.8.0/lib).
Testing done:
Release Plan
This change has no external release dependencies.