Skip to content
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

Using ManagedIdentityCredential in Microsoft.DotNet.Monitoring.Sdk #4172

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

fhnaseer
Copy link
Member

Fixes #2702

}
}

ChainedTokenCredential tokenCredential = TokenCredentialHelper.GetChainedTokenCredential(ManagedIdentityId);
Copy link
Member Author

@fhnaseer fhnaseer Sep 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@garath @mmitche How can I get ManagedIdentityId here? Should it be passed in a similar fashion like ServiceConnectionId/KeyVaultServicePrincipalId?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It depends on what the token credential is actually used for here. @garath may know more, but it looks like it's used to access a KV and replace secret sentinels in a config file with the actual secrets.

If this is the case, then most likely we want to use workload identity federation. This is the pattern where you execute the deployment set in AzureCLI with a service connection that is attached to a managed identity that has access to the vault. Looks sorta like: https://github.com/dotnet/arcade/blob/main/eng/publishing/v3/publish.yml#L87-L95

In that case, then I think the managed identity would be the value provided by the AzureCLI: https://github.com/dotnet/arcade/blob/main/eng/publishing/v3/publish.yml#L111

You may not need that though. You may just need AzureCliCredential and _defaultCredential as part of the chain.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The user assigned managed identity would be placed alongside the service in Azure, and FR knows how to set up the service connection using federated credentials if you don't.

Copy link
Member

@garath garath Oct 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I believe you want to keep the AzurePipelinesCredential use. This tool is most often run during an Azure Pipeline run, so managed identities won't work.

The DefaultAzureCredential is meant to cover use by a dev on their own machine (which is also a common way its run).

If you actually need to configure use for managed identity, I recommend following the current pattern of seeing which flags are passed in to the app and then configuring a Credential instance specifically for it. (Though, I'm not sure about cases where MI would be helpful here. Please describe the use case.)

Copy link
Member

@garath garath left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Marking as "Request Changes" just to prevent merging these changes as it will break existing builds.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Update JSON Setting Parsing Logic Provided In DotNet SDKs
3 participants