Titkosított titkos kódok kezelése a Service Fabric-alkalmazásokban
Ez az útmutató végigvezeti a titkos kódok Service Fabric-alkalmazásokban való kezelésének lépésein. A titkos kódok lehetnek bizalmas információk, például a tárkapcsolati sztringek, jelszavak vagy más értékek, amelyeket nem szabad egyszerű szövegben kezelni.
A titkosított titkos kódok Service Fabric-alkalmazásokban való használata három lépésből áll:
- Állítson be egy titkosítási tanúsítványt, és titkosítsa a titkos kulcsokat.
- Titkosított titkos kulcsok megadása egy alkalmazásban.
- Titkosított titkos kódok visszafejtése a szolgáltatáskódból.
Titkosítási tanúsítvány beállítása és titkos kódok titkosítása
A titkosítási tanúsítvány beállítása és a titkos kódok titkosítására való használata Windows és Linux rendszeren változhat.
- Állítson be egy titkosítási tanúsítványt, és titkos kulcsokat titkosítson Windows-fürtökön.
- Állítson be egy titkosítási tanúsítványt, és titkos kulcsokat titkosítson Linux-fürtökön.
Titkosított titkos kódok megadása egy alkalmazásban
Az előző lépés azt ismerteti, hogyan titkosíthat titkos kulcsokat egy tanúsítvánnyal, és hogyan hozhat létre egy base-64 kódolású sztringet egy alkalmazásban való használatra. Ez az alap-64 kódolású sztring megadható titkosított paraméterként egy szolgáltatás Settings.xml vagy egy szolgáltatás ServiceManifest.xml titkosított környezeti változójaként .
Adjon meg egy titkosított paramétert a szolgáltatás Settings.xml konfigurációs fájljában, amelynek attribútuma a IsEncrypted
következő:true
<?xml version="1.0" encoding="utf-8" ?>
<Settings xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Section Name="MySettings">
<Parameter Name="MySecret" IsEncrypted="true" Value="I6jCCAeYCAxgFhBXABFxzAt ... gNBRyeWFXl2VydmjZNwJIM=" />
</Section>
</Settings>
Adjon meg egy titkosított környezeti változót a szolgáltatás ServiceManifest.xml fájljában, amelynek attribútuma a Type
következő:Encrypted
<CodePackage Name="Code" Version="1.0.0">
<EnvironmentVariables>
<EnvironmentVariable Name="MyEnvVariable" Type="Encrypted" Value="I6jCCAeYCAxgFhBXABFxzAt ... gNBRyeWFXl2VydmjZNwJIM=" />
</EnvironmentVariables>
</CodePackage>
A titkos kulcsokat a Service Fabric-alkalmazásnak is tartalmaznia kell, ha meg kell adnia egy tanúsítványt az alkalmazásjegyzékben. Adjon hozzá egy SecretsCertificate elemet a ApplicationManifest.xml , és adja hozzá a kívánt tanúsítvány ujjlenyomatát.
<ApplicationManifest … >
...
<Certificates>
<SecretsCertificate Name="MyCert" X509FindType="FindByThumbprint" X509FindValue="[YourCertThumbrint]"/>
</Certificates>
</ApplicationManifest>
Megjegyzés
Amikor aktivál egy olyan alkalmazást, amely egy SecretsCertificate értéket ad meg, a Service Fabric megkeresi az egyező tanúsítványt, és megadja az alkalmazás által futtatott identitást a tanúsítvány titkos kulcsának teljes engedélyekkel. A Service Fabric emellett figyeli a tanúsítvány módosításait, és ennek megfelelően alkalmazza újra az engedélyeket. A köznapi névvel deklarált tanúsítványok változásainak észleléséhez a Service Fabric egy rendszeres feladatot futtat, amely megkeresi az összes egyező tanúsítványt, és összehasonlítja az ujjlenyomatok gyorsítótárazott listájával. Új ujjlenyomat észlelésekor az azt jelenti, hogy az adott tulajdonos tanúsítványa megújult. A feladat percenként egyszer fut a fürt minden csomópontján.
Bár a SecretsCertificate lehetővé teszi a tulajdonosalapú deklarációkat, vegye figyelembe, hogy a titkosított beállítások az ügyfélen a beállítás titkosításához használt kulcspárhoz vannak kötve. Győződjön meg arról, hogy az eredeti titkosítási tanúsítvány (vagy azzal egyenértékű) megegyezik a tulajdonosalapú deklarációval, és hogy telepítve van az alkalmazás üzemeltetésére képes fürt minden csomópontján, beleértve a megfelelő titkos kulcsot is. A tulajdonosalapú deklarációnak megfelelő és az eredeti titkosítási tanúsítványsal azonos kulcspárból létrehozott összes érvényes tanúsítvány egyenértékűnek minősül.
Alkalmazás titkos kulcsainak injektálása alkalmazáspéldányokba
Ideális esetben a különböző környezetekben való üzembe helyezésnek a lehető legautomizálhatónak kell lennie. Ez úgy valósítható meg, hogy titkos titkosítást végez egy buildkörnyezetben, és paraméterekként adja meg a titkosított titkos kódokat az alkalmazáspéldányok létrehozásakor.
Felülírható paraméterek használata Settings.xml
A Settings.xml konfigurációs fájl lehetővé teszi az alkalmazás létrehozásakor megadható felülírható paramétereket. Használja az MustOverride
attribútumot a paraméter értékének megadása helyett:
<?xml version="1.0" encoding="utf-8" ?>
<Settings xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Section Name="MySettings">
<Parameter Name="MySecret" IsEncrypted="true" Value="" MustOverride="true" />
</Section>
</Settings>
A Settings.xml értékeinek felülbírálásához deklaráljon egy felülbírálási paramétert a szolgáltatáshoz a ApplicationManifest.xml:
<ApplicationManifest ... >
<Parameters>
<Parameter Name="MySecret" DefaultValue="" />
</Parameters>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="Stateful1Pkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
<Section Name="MySettings">
<Parameter Name="MySecret" Value="[MySecret]" IsEncrypted="true" />
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>
</ServiceManifestImport>
Most az érték megadható alkalmazásparaméterként az alkalmazás példányának létrehozásakor. Az alkalmazáspéldányok létrehozása szkriptelhető a PowerShell használatával, vagy C#-ban írható a buildelési folyamat egyszerű integrációja érdekében.
A PowerShell használatával a paraméter kivonattáblaként lesz megadva a New-ServiceFabricApplication
parancsnak:
New-ServiceFabricApplication -ApplicationName fabric:/MyApp -ApplicationTypeName MyAppType -ApplicationTypeVersion 1.0.0 -ApplicationParameter @{"MySecret" = "I6jCCAeYCAxgFhBXABFxzAt ... gNBRyeWFXl2VydmjZNwJIM="}
A C# használatával az alkalmazásparaméterek a ApplicationDescription
következő formátumban NameValueCollection
vannak megadva:
FabricClient fabricClient = new FabricClient();
NameValueCollection applicationParameters = new NameValueCollection();
applicationParameters["MySecret"] = "I6jCCAeYCAxgFhBXABFxzAt ... gNBRyeWFXl2VydmjZNwJIM=";
ApplicationDescription applicationDescription = new ApplicationDescription(
applicationName: new Uri("fabric:/MyApp"),
applicationTypeName: "MyAppType",
applicationTypeVersion: "1.0.0",
applicationParameters: applicationParameters)
);
await fabricClient.ApplicationManager.CreateApplicationAsync(applicationDescription);
Titkosított titkos kódok visszafejtése a szolgáltatáskódból
A paraméterek és környezeti változók elérésére szolgáló API-k lehetővé teszik a titkosított értékek egyszerű visszafejtését. Mivel a titkosított sztring információkat tartalmaz a titkosításhoz használt tanúsítványról, nem kell manuálisan megadnia a tanúsítványt. A tanúsítványt csak azon a csomóponton kell telepíteni, amelyen a szolgáltatás fut.
// Access decrypted parameters from Settings.xml
ConfigurationPackage configPackage = FabricRuntime.GetActivationContext().GetConfigurationPackageObject("Config");
bool MySecretIsEncrypted = configPackage.Settings.Sections["MySettings"].Parameters["MySecret"].IsEncrypted;
if (MySecretIsEncrypted)
{
SecureString MySecretDecryptedValue = configPackage.Settings.Sections["MySettings"].Parameters["MySecret"].DecryptValue();
}
// Access decrypted environment variables from ServiceManifest.xml
// Note: you do not have to call any explicit API to decrypt the environment variable.
string MyEnvVariable = Environment.GetEnvironmentVariable("MyEnvVariable");
Következő lépések
- Service Fabric titkos kulcsok tárolója
- További információ az alkalmazás- és szolgáltatásbiztonságról