Konfigurowanie automatycznego obrotu klucza kryptograficznego w usłudze Azure Key Vault

Omówienie

Automatyczna rotacja kluczy kryptograficznych w Key Vault umożliwia użytkownikom skonfigurowanie Key Vault automatycznego generowania nowej wersji klucza z określoną częstotliwością. Aby skonfigurować rotację, można użyć zasad rotacji kluczy, które można zdefiniować dla każdego klucza.

Naszym zaleceniem jest rotacja kluczy szyfrowania co najmniej co dwa lata w celu spełnienia najlepszych rozwiązań kryptograficznych.

Aby uzyskać więcej informacji na temat sposobu przechowywania obiektów w Key Vault, zobacz Key Vault obiektów, identyfikatorów i wersji.

Integracja z usługami Azure

Ta funkcja umożliwia kompleksową rotację bezdotykową na potrzeby szyfrowania magazynowanych usług platformy Azure przy użyciu klucza zarządzanego przez klienta (CMK) przechowywanego w usłudze Azure Key Vault. Zapoznaj się z konkretną dokumentacją usługi platformy Azure, aby sprawdzić, czy usługa obejmuje kompleksową rotację.

Aby uzyskać więcej informacji na temat szyfrowania danych na platformie Azure, zobacz:

Cennik

Za zaplanowaną rotację kluczy jest naliczany dodatkowy koszt. Aby uzyskać więcej informacji, zobacz stronę cennika usługi Azure Key Vault

Wymagane uprawnienia

Key Vault funkcja rotacji kluczy wymaga uprawnień do zarządzania kluczami. Rolę "Key Vault Crypto Officer" można przypisać do zarządzania zasadami rotacji i rotacją na żądanie.

Aby uzyskać więcej informacji na temat używania modelu uprawnień RBAC Key Vault i przypisywania ról platformy Azure, zobacz Używanie kontroli dostępu opartej na rolach platformy Azure w celu kontrolowania dostępu do kluczy, certyfikatów i wpisów tajnych

Uwaga

Jeśli używasz modelu uprawnień zasad dostępu, wymagane jest ustawienie uprawnień "Obróć", "Ustaw zasady rotacji" i "Pobierz zasady rotacji", aby zarządzać zasadami rotacji kluczy.

Zasady rotacji kluczy

Zasady rotacji kluczy umożliwiają użytkownikom konfigurowanie powiadomień dotyczących rotacji i usługi Event Grid w pobliżu powiadomienia o wygaśnięciu.

Ustawienia zasad rotacji kluczy:

  • Czas wygaśnięcia: interwał wygaśnięcia klucza. Służy do ustawiania daty wygaśnięcia dla nowo obróconego klucza. Nie ma to wpływu na bieżący klucz.
  • Włączone/wyłączone: flaga włączania lub wyłączania rotacji klucza
  • Typy rotacji:
    • Automatyczne odnawianie w danym momencie po utworzeniu (ustawienie domyślne)
    • Automatyczne odnawianie w danym momencie przed wygaśnięciem. Wymaga ono ustawienia "Czas wygaśnięcia" dla zasad rotacji i "Data wygaśnięcia" ustawionego na kluczu.
  • Czas rotacji: interwał rotacji klucza, minimalna wartość wynosi siedem dni od utworzenia i siedem dni od czasu wygaśnięcia
  • Czas powiadomienia: interwał zdarzeń w pobliżu wygaśnięcia dla powiadomienia usługi Event Grid. Wymaga ono ustawienia "Czas wygaśnięcia" dla zasad rotacji i "Data wygaśnięcia" ustawionego na kluczu.

Ważne

Rotacja kluczy generuje nową wersję klucza istniejącego klucza z nowym materiałem klucza. Usługi docelowe powinny używać identyfikatora URI klucza bez wersji, aby automatycznie odświeżyć do najnowszej wersji klucza. Upewnij się, że rozwiązanie do szyfrowania danych przechowuje identyfikator URI klucza w wersji z danymi, aby wskazać ten sam materiał klucza do odszyfrowywania/odpakowywania, jak użyto do operacji szyfrowania/zawijania, aby uniknąć zakłóceń w usługach. Wszystkie usługi platformy Azure są obecnie następujące zgodnie ze wzorcem szyfrowania danych.

Konfiguracja zasad rotacji

Konfigurowanie zasad rotacji kluczy

Skonfiguruj zasady rotacji kluczy podczas tworzenia klucza.

Konfigurowanie rotacji podczas tworzenia klucza

Skonfiguruj zasady rotacji dla istniejących kluczy.

Konfigurowanie rotacji na istniejącym kluczu

Interfejs wiersza polecenia platformy Azure

Zapisz zasady rotacji kluczy w pliku. Przykład zasad rotacji kluczy:

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

Ustaw zasady rotacji klucza przekazującego wcześniej zapisany plik za pomocą polecenia az keyvault 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

Ustaw zasady rotacji przy użyciu polecenia cmdlet 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)}

Rotacja na żądanie

Rotacja kluczy może być wywoływana ręcznie.

Portal

Kliknij pozycję "Obróć teraz", aby wywołać rotację.

Rotacja na żądanie

Interfejs wiersza polecenia platformy Azure

Użyj polecenia az keyvault key rotate interfejsu wiersza polecenia platformy Azure, aby obrócić klucz.

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

Azure PowerShell

Użyj polecenia cmdlet Azure PowerShell Invoke-AzKeyVaultKeyRotation.

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

Konfigurowanie powiadomienia o wygaśnięciu klucza w pobliżu wygaśnięcia

Konfiguracja powiadomienia o wygaśnięciu klucza usługi Event Grid w pobliżu zdarzenia wygaśnięcia. Powiadomienie można skonfigurować z dniami, miesiącami i latami przed wygaśnięciem, aby wyzwolić zdarzenie zbliżające się do wygaśnięcia.

Konfigurowanie powiadomienia

Aby uzyskać więcej informacji na temat powiadomień usługi Event Grid w Key Vault, zobacz Azure Key Vault jako źródło usługi Event Grid

Konfigurowanie rotacji kluczy przy użyciu szablonu usługi ARM

Zasady rotacji kluczy można również skonfigurować przy użyciu szablonów usługi ARM.

Uwaga

Wymaga ona roli "Key Vault Współautor" w Key Vault skonfigurowanej przy użyciu kontroli dostępu opartej na rolach platformy Azure w celu wdrożenia klucza za pośrednictwem płaszczyzny zarządzania.

{
    "$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')]"
                    }
                }
            }
        }
    ]
}

Zasoby