How to get connection string aus der Azure KeyVault?
Einer hypothetischen web-site verbindet derzeit mit:
public SqlConnection CreateConnection()
{
DbConnection connection = new SqlConnection();
connection.ConnectionString = GetConnectionString();
connection.Open();
return connection;
}
Wo die Magische Verbindung Zeichenfolge gespeichert wird in web.config
:
String GetConnectionString()
{
//Get the connection string info from web.config
ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["db"];
if (cs == null)
throw new Exception("Could not locate DB connection string");
return cs.ConnectionString;
}
Nun, ich würde gerne verschieben Sie die Verbindungszeichenfolge aus der web.config-Datei in Azure KeyVault. Wie Holen Sie alles aus dem Azure key vault?
String GetConnectionString()
{
//Get the connection string info from Azure KeyVault
String connectionString = GetAzureSecret("dbConnectionString");
if (String.IsNullOrWhitespace(connectionString)
throw new Exception.Create("Could not connection string of Azure Key Vault");
return connectionString;
}
Außer, dass ich nur mit dem einfach-zu-verwenden Sie Azure API. Was ist die tatsächlichen api?
Ungetestet Versuch
string GetAzureSecret(string key)
{
KeyVaultClient vault = new KeyVaultClient();
vault.OnAuthenticate += VaultClientAuthenticate;
var sec = await vault.GetSecretAsync(Key);
return sec.Value;
}
public static async Task<string> VaultClientAuthenticate(string authority, string resource, string scope)
{
String clientID = "8675209";
String clientSecret = "correct battery horse pencil";
var authContext = new AuthenticationContext(authority);
ClientCredential clientCred = new ClientCredential(clientID, clientSecret);
AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred);
if (result == null)
throw new Exception("Could not acquire token");
return result.AccessToken;
}
Bonus Lesen
- MSDN-Foren: die Speicherung der sql-Verbindungszeichenfolge Passwörter in Key Vault für meine Cloud-Dienste
- Wie man richtig speichern von Verbindungszeichenfolgen in Azure?
- Einfach Umschalten ConnectionStrings auf veröffentlichen auf Azure
- Beziehen Sie sich auf Azure KeyVault? Würde docs.microsoft.com/en-us/azure/key-vault/... helfen?
- Ja, in der Tat; geändert lingo-store zum Tresor.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konnten wir das GetSecret API Wert zu erhalten.
Zubereitung:
Registry Azure Active Directory application und Rolle zuweisen
Schritte:
1.Erstellen KeyVault und fügen Geheimnis von Azure portal
2.Config-Access-policy
3.Get Access-token
Hinweis: die Ressource, Die für die Keyvault ist
https://vault.azure.net
4.Test mit Fiddler'
Wir auch tun können, die leicht mit SDK:
1.Erstellen Sie ein konsolenprojekt und eine Utils.cs-Datei
2.Fügen Sie Folgen code in der main-Funktion und testen Sie es.
Pakete.config-Datei
Können wir auch weitere Informationen erhalten Sie von CtrlDot erwähnt Dokument.
Ich habe nichts gegen Key Vault (ich denke, es ist ein großartiges Produkt!), aber ich kann mir nicht helfen, aber denke, Sie sind overengineering diese.
Ich würde einfach die integrierte Anwendungseinstellungen - Funktionen in Azure App Service:
Web-App → Anwendungseinstellungen → Verbindungs-Zeichenfolgen → Hinzufügen einer Verbindung Zeichenfolge, und nennen es
db
.Was ist der Unterschied zwischen der WebConfigurationManager und der ConfigurationManager?
Mai 2018 aktualisieren:
Seit Managed-Service-Identität wurde zu einem Ding, Erwerb einer access-token nicht mehr verlangt Geheimnisse (service principal Anmeldeinformationen) gespeichert, die in Ihrem Dienst für den Zugriff auf Schlüssel-Vault, welches ist ein viel besserer Vorschlag. Hier ist eine Node.js Probe, nur um spice up dieser Antwort ein wenig:
dann: