Dela via


Konfigurera automatisk rotation av kryptografiska nycklar i Azure Key Vault

Översikt

Automatiserad krypteringsnyckelrotation i Key Vault gör det möjligt för användare att konfigurera Key Vault för att automatiskt generera en ny nyckelversion med en angiven frekvens. Om du vill konfigurera rotation kan du använda en nyckelroteringsprincip som kan definieras för varje enskild nyckel.

Vår rekommendation är att rotera krypteringsnycklar minst vartannat år för att uppfylla kryptografiska metodtips.

Mer information om hur objekt i Key Vault är versionshanterade finns i Key Vault-objekt, identifierare och versionshantering. En omfattande förståelse av autorotationsbegrepp för olika tillgångstyper i Azure Key Vault finns i Förstå autorotation i Azure Key Vault.

Integrering med Azure-tjänster

Den här funktionen möjliggör nolltouchrotering 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 priser för Azure Key Vault

Behörigheter som krävs

Nyckelroteringsfunktionen i Key Vault 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örighetsmodellen och tilldelar Azure-roller finns i Använda en Azure RBAC för att styra åtkomsten till nycklar, certifikat och hemligheter

Anmärkning

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 rotationsprincip för nycklar.

Princip för nyckelrotation

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

Principinställningar för nyckelrotation:

  • Förfallotid: nyckel förfallointervall. Den används för att ange förfallodatum för den nyligen roterade nyckeln. Det 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. Det 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 utgångshändelseintervall för Event Grid-meddelande. Det 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 versionsnyckel-URI med data för att peka 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 nyckelrotation

Konfigurera nyckelroteringsprincip när nyckeln skapas.

Konfigurera rotation när nyckeln skapas

Konfigurera rotationsprincip för befintliga nycklar.

Konfigurera rotation på befintlig nyckel

Azure CLI (kommandoradsgränssnittet för Azure)

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 på en nyckel genom en tidigare sparad fil med Azure CLI-kommandot az keyvault key rotation-policy update.

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.

Portal

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

Rotation på begäran

Azure CLI (kommandoradsgränssnittet för Azure)

Använd azure CLI az keyvault key rotate command för att rotera nyckeln.

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

Azure PowerShell

Använd cmdleten Invoke-AzKeyVaultKeyRotation i Azure PowerShell.

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

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

Konfiguration av meddelande om förfallodatum 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 nästan förfallomeddelande 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 händelse nära förfallodatum.

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.

Anmärkning

Det kräver rollen "Key Vault-deltagare" i Key Vault som konfigurerats med Azure RBAC för att distribuera nyckeln via kontrollplanet.

{
    "$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 policy överst på sidan. Den här knappen öppnas på sidan Principtilldelning.
  4. Ange följande information:
  5. Fyll i eventuella ytterligare fält. Navigera i flikarna och klicka på knapparna Föregående och Nästa längst ned på sidan.
  6. Välj Review + create
  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 efterlevnadsresultat som nedan.

Skärmbild av principefterlevnad för nyckelrotation.

Resurser