Nasazení tajných kódů aplikací do spravovaného clusteru Service Fabric

Tajné kódy můžou být jakékoli citlivé informace, jako jsou připojovací řetězec úložiště, hesla nebo jiné hodnoty, které by neměly být zpracovávány ve formátu prostého textu. Ke správě klíčů a tajných kódů pro spravované clustery Service Fabric a jeho využití pro tento článek doporučujeme použít Azure Key Vault. Použití tajných kódů v aplikaci je však nezávislé na cloudové platformě, aby bylo možné aplikace nasadit do clusteru hostovaného kdekoli.

Doporučený způsob správy nastavení konfigurace služby je prostřednictvím balíčků konfigurace služby. Konfigurační balíčky jsou verze a aktualizovatelné prostřednictvím spravovaných kumulativních upgradů s ověřováním stavu a automatickým vrácením zpět. Tato možnost se upřednostňuje pro globální konfiguraci, protože snižuje riziko výpadku globální služby. Šifrované tajné kódy nejsou výjimkou. Service Fabric má integrované funkce pro šifrování a dešifrování hodnot v konfiguračním balíčku Nastavení.xml soubor pomocí šifrování certifikátu.

Následující diagram znázorňuje základní tok správy tajných kódů v aplikaci Service Fabric:

Přehled správy tajných kódů

V tomto toku jsou čtyři hlavní kroky:

  1. Získejte certifikát šifrování dat.
  2. Nainstalujte certifikát do clusteru.
  3. Šifrování hodnot tajných kódů při nasazování aplikace pomocí certifikátu a jejich vložení do konfiguračního souboru služby Nastavení.xml.
  4. Čtení šifrovaných hodnot z Nastavení.xml dešifrováním pomocí stejného certifikátu šifrování.

Azure Key Vault se zde používá jako bezpečné umístění úložiště pro certifikáty a jako způsob, jak získat certifikáty nainstalované na uzlech clusteru spravovaném Service Fabric v Azure.

Příklad implementace tajných kódů aplikací najdete v tématu Správa tajných kódů aplikací.

Alternativně podporujeme také KeyVaultReference. Podpora Service Fabric KeyVaultReference usnadňuje nasazování tajných kódů do vašich aplikací jednoduše odkazováním na adresu URL tajného kódu uloženého ve službě Key Vault.

Vytvoření certifikátu šifrování dat

Pokud chcete vytvořit vlastní trezor klíčů a nastavit certifikáty, postupujte podle pokynů ve službě Azure Key Vault pomocí Azure CLI, PowerShellu, portálu a dalších.

Poznámka:

Trezor klíčů musí být povolený pro nasazení šablony, aby z něj mohl poskytovatel výpočetních prostředků získat certifikáty a nainstalovat ho na uzly clusteru.

Instalace certifikátu v clusteru

Tento certifikát musí být nainstalovaný na každém uzlu v clusteru a spravovaných clusterech Service Fabric to usnadňuje. Spravovaná clusterová služba může do uzlů odesílat tajné kódy specifické pro konkrétní verzi, aby pomohla nainstalovat tajné kódy, které se často nemění, jako je instalace privátní kořenové certifikační autority do uzlů. Pro většinu produkčních úloh doporučujeme použít rozšíření KeyVault. Rozšíření virtuálního počítače služby Key Vault poskytuje automatickou aktualizaci certifikátů uložených ve službě Azure Key Vault vs. Statická verze.

Pro spravované clustery budete potřebovat tři hodnoty, dvě ze služby Azure Key Vault a jednu, o které se rozhodnete pro název místního úložiště na uzlech.

Parametry:

  • Source Vault: Toto je
    • například /subscriptions/{subscriptionid}/resourceGroups/myrg1/providers/Microsoft.KeyVault/vaults/mykeyvault1
  • Certificate URL: Toto je úplný identifikátor tajného kódu služby Key Vault, který nerozlišuje velká a malá písmena a je neměnný.
  • Certificate Store: Toto je místní úložiště certifikátů na uzlech, kde se certifikát umístí.
    • název úložiště certifikátů na uzlech, například "MY"

Spravované clustery Service Fabric podporují dvě metody pro přidání tajných kódů specifických pro verzi do uzlů.

  1. Portál během počátečního vytvoření clusteru vložte do této oblasti pouze hodnoty z výše uvedeného:

Vstup tajných kódů portálu

  1. Azure Resource Manager během vytváření nebo kdykoli
{
  "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}"
          }
        ]
      }
    ]
  }
}