Konfigurera automatisk rotation av kryptografiska nycklar i Azure Key Vault

Översikt

Automatisk rotation av kryptografiska nycklar i Key Vault gör att användare kan konfigurera Key Vault att automatiskt generera en ny nyckelversion med en angiven frekvens. Om du vill konfigurera rotation kan du använda en princip för nyckelrotation, som kan definieras för varje enskild nyckel.

Vi rekommenderar att du roterar krypteringsnycklar minst vartannat år (bästa praxis).

Mer information om hur versionshanteringen av objekt i Key Vault fungerar finns i Key Vault-objekt, identifierare och versionshantering.

Integrering med Azure-tjänster

Den här funktionen möjliggör nolltouch-rotation från slutpunkt till slutpunkt för kryptering i vila för Azure-tjänster med kundhanterad nyckel (CMK) lagrad i Azure Key Vault. Se specifik dokumentation om Azure-tjänsten för att se om tjänsten omfattar rotation från slutpunkt till slutpunkt.

Mer information om datakryptering i Azure finns i:

Prissättning

Det tillkommer en extra kostnad per schemalagd nyckelrotation. Mer information finns på sidan med Azure Key Vault-priser

Behörigheter som krävs

Key Vault nyckelroteringsfunktionen kräver nyckelhanteringsbehörigheter. Du kan tilldela rollen "Key Vault Crypto Officer" för att hantera rotationsprincip och rotation på begäran.

Mer information om hur du använder Key Vault RBAC-behörighetsmodell och tilldelar Azure-roller finns i Använda en Azure RBAC för att styra åtkomsten till nycklar, certifikat och hemligheter

Anteckning

Om du använder en behörighetsmodell för åtkomstprinciper måste du ange nyckelbehörigheterna Rotera, Ange rotationsprincip och Hämta rotationsprincip för att hantera rotationsprincipen på nycklar.

Princip för nyckelrotation

Med nyckelroteringsprincipen kan användare konfigurera rotations- och Event Grid-meddelanden nära förfallodatum.

Principinställningar för nyckelrotation:

  • Förfallotid: nyckelns förfallointervall. Den används för att ange förfallodatum för den nyligen roterade nyckeln. Den påverkar inte en aktuell nyckel.
  • Aktiverad/inaktiverad: flagga för att aktivera eller inaktivera rotation för nyckeln
  • Rotationstyper:
    • Förnya automatiskt vid en viss tidpunkt efter skapandet (standard)
    • Förnya automatiskt vid en viss tidpunkt innan den upphör att gälla. Den kräver "Förfallotid" som angetts för rotationsprincipen och "Förfallodatum" som angetts för nyckeln.
  • Rotationstid: nyckelrotationsintervall, minimivärdet är sju dagar från skapandet och sju dagar från förfallotiden
  • Meddelandetid: nyckel nära förfallohändelseintervall för Event Grid-meddelande. Den kräver "Förfallotid" som angetts för rotationsprincipen och "Förfallodatum" som angetts för nyckeln.

Viktigt

Nyckelrotation genererar en ny nyckelversion av en befintlig nyckel med nytt nyckelmaterial. Måltjänster bör använda versionslös nyckel-URI för att automatiskt uppdatera till den senaste versionen av nyckeln. Se till att din datakrypteringslösning lagrar versionshanterad nyckel-URI med data så att de pekar på samma nyckelmaterial för dekryptering/avskrivning som användes för krypterings-/wrap-åtgärder för att undvika avbrott i dina tjänster. Alla Azure-tjänster följer för närvarande det mönstret för datakryptering.

Konfiguration av rotationsprincip

Konfigurera princip för nyckelrotering

Konfigurera nyckelroteringsprincipen när nyckeln skapas.

Konfigurera rotation när nyckeln skapas

Konfigurera rotationsprincip för befintliga nycklar.

Konfigurera rotation på befintlig nyckel

Azure CLI

Spara nyckelroteringsprincipen i en fil. Exempel på nyckelroteringsprincip:

{
  "lifetimeActions": [
    {
      "trigger": {
        "timeAfterCreate": "P18M",
        "timeBeforeExpiry": null
      },
      "action": {
        "type": "Rotate"
      }
    },
    {
      "trigger": {
        "timeBeforeExpiry": "P30D"
      },
      "action": {
        "type": "Notify"
      }
    }
  ],
  "attributes": {
    "expiryTime": "P2Y"
  }
}

Ange rotationsprincip för en nyckel som skickar en tidigare sparad fil med hjälp av Azure CLI az keyvault key rotation-policy update command .

az keyvault key rotation-policy update --vault-name <vault-name> --name <key-name> --value </path/to/policy.json>

Azure PowerShell

Ange rotationsprincip med hjälp av cmdleten Azure Powershell Set-AzKeyVaultKeyRotationPolicy .

Set-AzKeyVaultKeyRotationPolicy -VaultName <vault-name> -KeyName <key-name> -ExpiresIn (New-TimeSpan -Days 720) -KeyRotationLifetimeAction @{Action="Rotate";TimeAfterCreate= (New-TimeSpan -Days 540)}

Rotation på begäran

Nyckelrotation kan anropas manuellt.

Portalen

Klicka på Rotera nu för att anropa rotation.

Rotation på begäran

Azure CLI

Använd Azure CLI az keyvault key rotate-kommandot för att rotera nyckeln.

az keyvault key rotate --vault-name <vault-name> --name <key-name>

Azure PowerShell

Använd Azure PowerShell cmdleten Invoke-AzKeyVaultKeyRotation.

Invoke-AzKeyVaultKeyRotation -VaultName <vault-name> -Name <key-name>

Konfigurera meddelande om att nyckeln snart upphör att gälla

Konfiguration av förfallomeddelande för Event Grid-nyckel nära förfallohändelse. Om automatiserad rotation inte kan användas, till exempel när en nyckel importeras från lokal HSM, kan du konfigurera meddelanden som snart upphör att gälla som en påminnelse om manuell rotation eller som en utlösare för anpassad automatiserad rotation via integrering med Event Grid. Du kan konfigurera aviseringar med dagar, månader och år före förfallodatum för att utlösa en händelse som snart upphör att gälla.

Konfigurera meddelande

Mer information om Event Grid-meddelanden i Key Vault finns i Azure Key Vault som Event Grid-källa

Konfigurera nyckelrotation med ARM-mall

Nyckelroteringsprincipen kan också konfigureras med ARM-mallar.

Anteckning

Den kräver rollen "Key Vault deltagare" på Key Vault som konfigurerats med Azure RBAC för att distribuera nyckeln via hanteringsplanet.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vaultName": {
            "type": "String",
            "metadata": {
                "description": "The name of the key vault to be created."
            }
        },
        "keyName": {
            "type": "String",
            "metadata": {
                "description": "The name of the key to be created."
            }
        },
        "rotatationTimeAfterCreate": {
            "defaultValue": "P18M",
            "type": "String",
            "metadata": {
                "description": "Time duration to trigger key rotation. i.e. P30D, P1M, P2Y"
            }
        },
        "expiryTime": {
            "defaultValue": "P2Y",
            "type": "String",
            "metadata": {
                "description": "The expiry time for new key version. i.e. P90D, P2M, P3Y"
            }
        },
        "notifyTime": {
            "defaultValue": "P30D",
            "type": "String",
            "metadata": {
                "description": "Near expiry Event Grid notification. i.e. P30D"
            }
        }

    },
    "resources": [
        {
            "type": "Microsoft.KeyVault/vaults/keys",
            "apiVersion": "2021-06-01-preview",
            "name": "[concat(parameters('vaultName'), '/', parameters('keyName'))]",
            "location": "[resourceGroup().location]",
            "properties": {
                "vaultName": "[parameters('vaultName')]",
                "kty": "RSA",
                "rotationPolicy": {
                    "lifetimeActions": [
                        {
                            "trigger": {
                                "timeAfterCreate": "[parameters('rotatationTimeAfterCreate')]",
                                "timeBeforeExpiry": ""
                            },
                            "action": {
                                "type": "Rotate"
                            }
                        },
                        {
                            "trigger": {
                                "timeBeforeExpiry": "[parameters('notifyTime')]"
                            },
                            "action": {
                                "type": "Notify"
                            }
                        }

                    ],
                    "attributes": {
                        "expiryTime": "[parameters('expiryTime')]"
                    }
                }
            }
        }
    ]
}

Konfigurera principstyrning för nyckelrotation

Med hjälp av Azure Policy-tjänsten kan du styra nyckellivscykeln och se till att alla nycklar är konfigurerade att rotera inom ett angivet antal dagar.

Skapa och tilldela principdefinition

  1. Gå till Principresurs
  2. Välj Tilldelningar under Redigering till vänster på sidan Azure Policy.
  3. Välj Tilldela princip överst på sidan. Den här knappen öppnas på sidan Principtilldelning.
  4. Ange följande information:
  5. Fyll i ytterligare fält. Gå till flikarna och klicka på knapparna Föregående och Nästa längst ned på sidan.
  6. Välj Granska + skapa
  7. Välj Skapa

När den inbyggda principen har tilldelats kan det ta upp till 24 timmar att slutföra genomsökningen. När genomsökningen är klar kan du se kompatibilitetsresultat som nedan.

Skärmbild av principefterlevnad för nyckelrotation.

Resurser