[RFC] Support for ACR authentication #3751
Draft
+213
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Putting this in as a potential design after some more thinking about our discussion in #2372
This manages more or less the same functionality as there is for AWS and GCP with assuming identities, but because Azure requires you have a Client ID to do a token exchange you still have to get it for a target identity somehow.
This proposes we simply ask that operators deploying Kargo put managed identities into a dedicated resource group, grant the Kargo identity RBAC permissions to read managed identities in the resource group (either using the built in Reader role or creating a more restrictive one that only has the Microsoft.ManagedIdentities/Read action). From there, operators would created User-assigned Managed Identities inside this resource group with a name "kargo-{project}" (like AWS IAM roles), and then configure them with Federated identities for the Kargo controller identity.
If Kargo is able to get an identity with the right name in this resource group it will attempt to "impersonate" it (standard token exchange), otherwise it falls back to the controller identity.