Spara hemliga program inställningar för ett webb program på ett säkert sätt

Översikt

Den här artikeln beskriver hur du säkert sparar konfigurations inställningar för hemliga program för Azure-program.

Traditionellt har alla konfigurations inställningar för webb program sparats i konfigurationsfiler som Web.config. Den här övningen leder till att kontrol lera hemliga inställningar som till exempel moln uppgifter för offentliga käll kontrolls system, t. ex. GitHub. Under tiden kan det vara svårt att följa säkerhets praxis på grund av den omkostnader som krävs för att ändra käll koden och konfigurera om utvecklings inställningarna.

För att säkerställa att utvecklings processen är säker skapas verktygs-och Ramverks bibliotek för att spara inställningar för program hemlighet på ett säkert sätt med minimal eller ingen käll kods ändring.

ASP.NET-och .NET Core-program

Spara hemliga inställningar i användarens hemliga arkiv som ligger utanför käll kontroll mappen

Om du utför en snabb prototyp eller om du inte har till gång till Internet, börjar du med att flytta dina hemliga inställningar utanför käll kontrollens mapp till användarens hemliga arkiv. Användarens hemliga arkiv är en fil som sparats under mappen User profiler, så hemligheterna är inte incheckade i käll kontrollen. Följande diagram visar hur användar hemlighet fungerar.

Användar hemlighet behåller hemliga inställningar utanför käll kontrollen

Om du kör .NET Core-konsolen använder du Key Vault för att spara din hemliga information på ett säkert sätt.

Spara hemliga inställningar i Azure Key Vault

Om du utvecklar ett projekt och behöver dela käll koden på ett säkert sätt, använder du Azure Key Vault.

  1. Skapa en Key Vault i din Azure-prenumeration. Fyll i alla obligatoriska fält i användar gränssnittet och klicka på skapa längst ned på bladet

    Skapa Azure Key Vault

  2. Ge dig och ditt team medlemmar åtkomst till Key Vault. Om du har ett stort team kan du skapa en Azure Active Directory-grupp och lägga till den säkerhets gruppen till Key Vault. I list rutan hemliga behörigheter kontrollerar du Hämta och lista under hemliga hanterings åtgärder. Om du redan har skapat din webbapp ger du webbappen åtkomst till den Key Vault så att den kan komma åt nyckel valvet utan att lagra hemlig konfiguration i appinställningar eller filer. Sök efter din webbapp med sitt namn och Lägg till den på samma sätt som du beviljar användarna åtkomst.

    Lägg till Key Vault åtkomst princip

  3. Lägg till din hemlighet i Key Vault på Azure Portal. För kapslade konfigurations inställningar ersätter du ":" med "-", så att Key Vault hemliga namnet är giltigt. ":" får inte vara i namnet på en Key Vault hemlighet.

    Lägg till Key Vault hemlighet

    Anteckning

    Före Visual Studio 2017 V-15,6 vi vi använde för att rekommendera att installera Azure-tjänstens autentiserings-tillägg för Visual Studio. Men det är föråldrat nu när funktionen är integrerad i Visual Studio. Om du använder en äldre version av Visual Studio 2017, rekommenderar vi att du uppdaterar till minst VS 2017 15,6 eller upp så att du kan använda den här funktionen internt och komma åt nyckel valvet från att använda Visual Studio-inloggning identiteten.

  4. Lägg till följande NuGet-paket i projektet:

    Microsoft.Azure.KeyVault
    Microsoft.Azure.Services.AppAuthentication
    Microsoft.Extensions.Configuration.AzureKeyVault
    
  5. Lägg till följande kod i Program.cs-filen:

    public static IHostBuilder CreateHostBuilder(string[] args) =>
             Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((ctx, builder) =>
                {
                    var keyVaultEndpoint = GetKeyVaultEndpoint();
                    if (!string.IsNullOrEmpty(keyVaultEndpoint))
                    {
                        var azureServiceTokenProvider = new AzureServiceTokenProvider();
                        var keyVaultClient = new KeyVaultClient(
                            new KeyVaultClient.AuthenticationCallback(
                                azureServiceTokenProvider.KeyVaultTokenCallback));
                        builder.AddAzureKeyVault(
                        keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
                    }
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    
        private static string GetKeyVaultEndpoint() => Environment.GetEnvironmentVariable("KEYVAULT_ENDPOINT");
    
  6. Lägg till din Key Vault-URL i launchsettings.jspå filen. Miljö variabel namnet KEYVAULT_ENDPOINT definieras i den kod som du lade till i steg 6.

    Lägg till Key Vault URL som en projekt miljö variabel

  7. Starta fel sökningen av projektet. Den bör kunna köras.

ASP.NET-och .NET-program

.NET 4.7.1 stöder Key Vault-och hemligheter för konfigurations verktyg, som säkerställer att hemligheter kan flyttas utanför käll kontrolls-mappen utan kod ändringar. Fortsätt genom att Ladda ned .NET-4.7.1 och migrera ditt program om det använder en äldre version av .NET Framework.

Spara hemliga inställningar i en hemlig fil utanför käll kontroll mappen

Om du skriver en snabb prototyp och inte vill etablera Azure-resurser går du till det här alternativet.

  1. Högerklicka på projektet och välj hantera användar hemligheter. Detta kommer att installera ett NuGet-paket Microsoft.Configuration.ConfigurationBuilders. UserSecrets , skapa en fil för att spara hemliga inställningar utanför web.config-filen och lägga till en avsnitts- ConfigBuilders i web.configs filen.

  2. Lägg till hemliga inställningar under rot element. nedan visas ett exempel

    <?xml version="1.0" encoding="utf-8"?>
    <root>
      <secrets ver="1.0">
        <secret name="secret" value="foo"/>
        <secret name="secret1" value="foo_one" />
        <secret name="secret2" value="foo_two" />
      </secrets>
    </root>
    
  3. Avsnittet appSettings använder det hemliga konfigurations verktyget. Se till att det finns en post för den hemliga inställningen med ett dummy-värde.

        <appSettings configBuilders="Secrets">
            <add key="webpages:Version" value="3.0.0.0" />
            <add key="webpages:Enabled" value="false" />
            <add key="ClientValidationEnabled" value="true" />
            <add key="UnobtrusiveJavaScriptEnabled" value="true" />
            <add key="secret" value="" />
        </appSettings>
    
  4. Felsök din app. Den bör kunna köras.

Spara hemliga inställningar i en Azure Key Vault

Följ anvisningarna från avsnittet ASP.NET Core om du vill konfigurera ett Key Vault för projektet.

  1. Installera följande NuGet-paket i projektet

    Microsoft.Configuration.ConfigurationBuilders.Azure
    
  2. Definiera Key Vault Configuration Builder i Web.config. Lägg till det här avsnittet i avsnittet appSettings . Ersätt vaultName som Key Vault namn om ditt Key Vault finns i Global Azure eller en fullständig URI om du använder det suveräna molnet.

     <configBuilders>
        <builders>
            <add name="Secrets" userSecretsId="695823c3-6921-4458-b60b-2b82bbd39b8d" type="Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.UserSecrets, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
            <add name="AzureKeyVault" vaultName="[VaultName]" type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        </builders>
      </configBuilders>
    
  3. Ange appSettings-avsnittet använder Key Vault Configuration Builder. Se till att det finns en post för den hemliga inställningen med ett värde för provdocka.

    <appSettings configBuilders="AzureKeyVault">
        <add key="webpages:Version" value="3.0.0.0" />
        <add key="webpages:Enabled" value="false" />
        <add key="ClientValidationEnabled" value="true" />
        <add key="UnobtrusiveJavaScriptEnabled" value="true" />
        <add key="secret" value="" />
    </appSettings>
    
  4. Starta fel sökningen av projektet. Den bör kunna köras.