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 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 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 Azure Key Vault-priser

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

Kommentar

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

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 tidigare sparad fil med 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 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.

Kommentar

Det kräver rollen "Key Vault-deltagare" i 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 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 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 efterlevnadsresultat som nedan.

Skärmbild av principefterlevnad för nyckelrotation.

Resurser