Distribuera programhemligheter till ett Service Fabric hanterat kluster
Hemligheter kan vara känslig information, till exempel lagringsanslutningssträngar, lösenord eller andra värden som inte ska hanteras i oformaterad text. Vi rekommenderar att Azure Key Vault för att hantera nycklar och hemligheter Service Fabric hanterade kluster och utnyttja dem för den här artikeln. Att använda hemligheter i ett program är dock molnplattformsoberoende så att program kan distribueras till ett kluster som finns var som helst.
Det rekommenderade sättet att hantera inställningar för tjänstkonfiguration är via tjänstkonfigurationspaket. Konfigurationspaket är versionsbaserade och kan uppdateras via hanterade löpande uppgraderingar med hälsovalidering och automatisk återställning. Detta är att föredra framför global konfiguration eftersom det minskar risken för ett avbrott i den globala tjänsten. Krypterade hemligheter är inget undantag. Service Fabric har inbyggda funktioner för kryptering och dekryptering av värden i ett konfigurationspaket som Settings.xml med hjälp av certifikatkryptering.
Följande diagram illustrerar det grundläggande flödet för hemlighetshantering i ett Service Fabric program:

Det finns fyra huvudsteg i det här flödet:
- Hämta ett certifikat för datachiffrering.
- Installera certifikatet i klustret.
- Kryptera hemliga värden när du distribuerar ett program med certifikatet och matar in dem i en tjänsts Settings.xml konfigurationsfil.
- Läs krypterade värden Settings.xml genom att dekryptera med samma chiffercertifikat.
Azure Key Vault används här som en säker lagringsplats för certifikat och som ett sätt att installera certifikat på de Service Fabric hanterade klusternoderna i Azure.
Ett exempel på hur du implementerar programhemligheter finns i Hantera programhemligheter.
Alternativt har vi även stöd för KeyVaultReference. Service Fabric KeyVaultReference-stöd gör det enkelt att distribuera hemligheter till dina program genom att referera till URL:en för den hemlighet som lagras i Key Vault
Skapa ett datachiffreringscertifikat
Om du vill skapa ett eget nyckelvalv och konfigurera certifikat följer du anvisningarna från Azure Key Vault med hjälp av Azure CLI, PowerShell, Portal med mera.
Anteckning
Nyckelvalvet måste vara aktiverat för malldistribution så att beräkningsresursprovidern kan hämta certifikat från det och installera det på klusternoder.
Installera certifikatet i klustret
Det här certifikatet måste installeras på varje nod i klustret och Service Fabric kluster gör detta enkelt. Den hanterade klustertjänsten kan skicka versionsspecifika hemligheter till noderna för att installera hemligheter som inte ändras ofta, till exempel installation av en privat rotcertifikatutfärdare till noderna. För de flesta produktionsarbetsbelastningar rekommenderar vi att du använder KeyVault-tillägget. Tillägget Key Vault virtuell dator tillhandahåller automatisk uppdatering av certifikat som lagras i ett Azure-nyckelvalv jämfört med en statisk version.
För hanterade kluster behöver du tre värden, två från Azure Key Vault och ett som du väljer för det lokala butiksnamnet på noderna.
Parametrar:
Source Vault: Det här är- t.ex.: /subscriptions/{subscriptionid}/resourceGroups/myrg1/providers/Microsoft.KeyVault/vaults/mykeyvault1
Certificate URL: Det här är den fullständiga objektidentifieraren och är okänslig och oföränderligCertificate Store: Det här är det lokala certifikatarkivet på noderna där certifikatet kommer att placeras- certifikatarkivnamnet på noderna, t.ex.: "MY"
Service Fabric hanterade kluster har stöd för två metoder för att lägga till versionsspecifika hemligheter till noderna.
- Portalen när klustret skapades infogar endast värden från ovan i till det här området:

- Azure Resource Manager skapas eller när som helst
{
"apiVersion": "2021-05-01",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"properties": {
"vmSecrets": [
{
"sourceVault": {
"id": "/subscriptions/{subscriptionid}/resourceGroups/myrg1/providers/Microsoft.KeyVault/vaults/mykeyvault1"
},
"vaultCertificates": [
{
"certificateStore": "MY",
"certificateUrl": "https://mykeyvault1.vault.azure.net/certificates/{certificatename}/{secret-version}"
}
]
}
]
}
}