web-dev-qa-db-fra.com

Configuration du coffre-fort à clé NET CORE utilisant Azure.Security.KeyVault.Secrets

J'ai découvert qu'il est facile de se connecter à Azure Keyvault à l'aide de l'identité gérée. La documentation montre comment le faire:

             var azureServiceTokenProvider = new AzureServiceTokenProvider();
            var keyVaultClient = new KeyVaultClient(
                new KeyVaultClient.AuthenticationCallback(
                    azureServiceTokenProvider.KeyVaultTokenCallback));

            config.AddAzureKeyVault(
                $"https://{builtConfig["KeyVaultName"]}.vault.Azure.net/",
                keyVaultClient,
                new DefaultKeyVaultSecretManager());
        

Ensuite, j'ai réalisé qu'il nécessite le package Microsoft.Azure.KeyVault Qui est obsolète. Donc, j'ai du mal à comprendre comment faire ce qui précède avec SDK 4. Toute la documentation que je trouve est liée à la SDK 3.

enter image description here

[EDIT] J'ai découvert que le code suivant fonctionne pour obtenir le secret Azure KeyVault à l'aide d'identification gérée avec SDK 4. Cependant, je ne peux pas voir comment ajouter ceci à ma configuration. Il avait l'habitude d'être fait avec config.AddAzureKeyVault() à partir du package Microsoft.extensions.Configuration.AzUREKeyVault, mais il n'est pas compatible avec le SDK 4 SecretClient:

  return Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((context, config) =>
                {
                    var azureCredentialOptions = new DefaultAzureCredentialOptions();
                
                  
                    var credential = new DefaultAzureCredential(azureCredentialOptions);
                    var secretClient = new SecretClient(new System.Uri("https://mykeyvault.vault.Azure.net/"), credential);
                    var secret = secretClient.GetSecret("StorageConnectionString");
                    config.AddAzureKeyVault()                 
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
        }
7
Sam

J'utilise quelque chose comme ça,

var keyVaultEndpoint = GetKeyVaultEndpoint();
if (!string.IsNullOrEmpty(keyVaultEndpoint))
{
 // Pass appropriate connection string 
 var azureServiceTokenProvider = new 
 AzureServiceTokenProvider(certThumbprintConnectionString);
 var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(
 azureServiceTokenProvider.KeyVaultTokenCallback));
 config.AddAzureKeyVault(keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
}
private static string GetKeyVaultEndpoint() => "https://<<key-vault-name>>.vault.Azure.net";
0
Sajeetharan