Speichern von Geheimnissen mit KeyPerFileConfigurationProvider

Umbraco Cloud bietet ein Secrets Management. Sie können Secrets zu Ihren Umbraco Cloud-Umgebungen hinzufügen, wenn Sie einen Standardplan oder höher haben. Aber was macht man mit einem Starter-Plan?

Installieren Sie zunächst das NuGet-Paket Microsoft.Extensions.Configuration.KeyPerFile in Ihrem Website-Projekt, das Sie auf Ihren lokalen Entwicklungscomputer geklont haben. Fügen Sie dann Folgendes zur Program.cs hinzu:

.ConfigureAppConfiguration((hostingContext, config) => {
        var path = Path.Combine(
            Directory.GetCurrentDirectory(), "umbraco/Data/configs");
        config.AddKeyPerFile(path);
    })

Die vollständige Program.cs-Datei sollte wie folgt aussehen:

namespace UmbracoProject.Web
{
    public class Program
    {
        public static void Main(string[] args)
            => CreateHostBuilder(args)
                .Build()
                .Run();

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureUmbracoDefaults()
                .ConfigureAppConfiguration((hostingContext, config) => {
                        var path = Path.Combine(
                            Directory.GetCurrentDirectory(), "umbraco/Data/configs");
                        config.AddKeyPerFile(path);
                    })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStaticWebAssets();
                    webBuilder.UseStartup();
                });
    }
}

Fügen Sie einen neuen Ordner configs in umbraco/Data hinzu, um geheime Schlüssel-Wert-Paare zu speichern.

Aktualisieren Sie die .gitignore-Datei für diesen Ordner, da es hier darum geht, Geheimnisse nicht in ein Repository zu schieben;-)

Sie wissen, dass Schlüssel-Wert-Paare in appsettings.json durch Doppelpunkte wie "Password": "mySuperSecret..." und auch hierarchisch getrennt sind. Beispielsweise würden Sie das SMTP-Passwort mit "Umbraco:CMS:Global:Smtp:Password" adressieren. Der KeyPerFileConfigurationProvider ist dateibasiert, wobei der Schlüssel den Dateiname bildet. Doppelpunkte sind in Dateinamen nicht zulässig. Daher müssen in den Schlüsseldateien, die Sie im konfigurierten Ordner ablegen, die Doppelpunkte durch doppelte Unterstriche __ ersetzt werden. Der Dateiname für den SMTP-Passwortschlüssel muss lauten:

umbraco__cms__global__smtp__passwort

Der Inhalt dieser Datei ist Ihr Passwort. Anders als bei der appsettings.json darf das Passwort nicht in doppelte Anführungszeichen gesetzt werden. Und Sie fügen keine Dateierweiterung wie .json, .txt usw. hinzu.

Wie bekommt man das Geheimnis in die Umbraco Cloud?

Im Umbraco Cloud-Portal können Sie die Kudu-Tools Ihres Projekts verwenden, um den Ordner configs und Ihre Schlüsselwertdateien hinzuzufügen. Der Ordner umbraco/Data wird nicht berührt, wenn Sie Ihre Änderungen in der Cloud bereitstellen.

Speichern von Geheimnissen mit KeyPerFileConfigurationProvider