Hinzufügen der KMS-etcd-Verschlüsselung zu einem Azure Kubernetes Service(AKS)-Cluster (Vorschau)

In diesem Artikel erfahren Sie, wie Sie die Verschlüsselung für Ihre ruhenden Kubernetes-Daten in etcd mithilfe von Azure Key Vault mit dem Key Management Service(KMS)-Plug-In aktivieren. Das KMS-Plug-In ermöglicht Ihnen Folgendes:

  • Verwenden eines Schlüssels im Key Vault für die etcd-Verschlüsselung
  • Verwenden eigener Schlüssel
  • Verschlüsselung im Ruhezustand für in etcd gespeicherte Geheimnisse

Weitere Informationen zur Verwendung des KMS-Plug-Ins finden Sie unter Verschlüsseln ruhender Geheimnisdaten.

Wichtig

AKS-Previewfunktionen stehen gemäß dem Self-Service- und Aktivierungsprinzip zur Verfügung. Vorschauversionen werden „wie besehen“ und „wie verfügbar“ bereitgestellt und sind von den Vereinbarungen zum Service Level und der eingeschränkten Garantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:

Voraussetzungen

  • Ein Azure-Abonnement. Falls Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen.
  • Die Azure CLI muss installiert sein.

Installieren der Azure-Befehlszeilenschnittstelle aks-preview

Sie benötigen außerdem die Azure CLI-Erweiterung aks-preview ab Version 0.5.58. Installieren Sie die Erweiterung aks-preview der Azure-Befehlszeilenschnittstelle mithilfe des Befehls az extension add. Alternativ können Sie verfügbare Updates mithilfe des Befehls az extension update installieren.

# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview

Registrieren der Previewfunktion AzureKeyVaultKmsPreview

Sie müssen darüber hinaus das Featureflag AzureKeyVaultKmsPreview in Ihrem Abonnement aktivieren, um dieses Feature zu verwenden.

Registrieren Sie das Featureflag AzureKeyVaultKmsPreview mithilfe des Befehls AzureKeyVaultKmsPreview, wie im folgenden Beispiel gezeigt:

az feature register --namespace "Microsoft.ContainerService" --name "AzureKeyVaultKmsPreview"

Es dauert einige Minuten, bis der Status Registered (Registriert) angezeigt wird. Überprüfen Sie den Registrierungsstatus mithilfe des Befehls az feature list:

az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/AzureKeyVaultKmsPreview')].{Name:name,State:properties.state}"

Wenn der Vorgang abgeschlossen ist, können Sie die Registrierung des Microsoft.ContainerService-Ressourcenanbieters mit dem Befehl az provider register aktualisieren:

az provider register --namespace Microsoft.ContainerService

Einschränkungen

Die folgenden Einschränkungen gelten, wenn Sie KMS-etcd-Verschlüsselung mit AKS integrieren:

  • Deaktivieren der KMS-etcd-Verschlüsselungsfunktion.
  • Ändern der Schlüssel-ID, einschließlich Schlüsselname und Schlüsselversion.
  • Löschen des Schlüssels, Key Vault oder der zugehörigen Identität.
  • KMS-etcd-Verschlüsselung funktioniert nicht mit systemseitig zugewiesenen verwalteten Identitäten. Die Key Vault-Zugriffsrichtlinie muss festgelegt werden, bevor das Feature aktiviert wird. Darüber hinaus sind systemseitig zugewiesene verwaltete Identitäten erst verfügbar, wenn der Cluster erstellt wurde. Daher besteht eine Zyklusabhängigkeit.
  • Verwenden von mehr als 2000 Geheimnissen in einem Cluster.
  • Mitbringen Ihres eignen Azure Key Vault von einem anderen Mandanten

Erstellen eines Schlüsseltresors und Schlüssels

Warnung

Das Löschen des Schlüssels oder des Azure Key Vault wird nicht unterstützt und führt dazu, dass Ihr Cluster instabil wird.

Wenn Sie Ihren Key Vault oder Schlüssel wiederherstellen müssen, lesen Sie den Artikel zur Azure Key Vault-Wiederherstellungsverwaltung mit Schutz durch vorläufiges Löschen und Bereinigungsschutz.

Verwenden Sie az keyvault create zum Erstellen eines Key Vault.

az keyvault create --name MyKeyVault --resource-group MyResourceGroup

Verwenden Sie az keyvault key create zum Erstellen eines Schlüssels.

az keyvault key create --name MyKeyName --vault-name MyKeyVault

Verwenden Sie az keyvault key show zum Exportieren der Schlüssel-ID.

export KEY_ID=$(az keyvault key show --name MyKeyName --vault-name MyKeyVault --query 'key.kid' -o tsv)
echo $KEY_ID

Im obigen Beispiel wird die Schlüssel-ID in KEY_ID gespeichert.

Erstellen einer benutzerseitig zugewiesenen verwalteten Identität

Erstellen Sie mit az identity create eine benutzerseitig zugewiesene verwaltete Identität.

az identity create --name MyIdentity --resource-group MyResourceGroup

Verwenden Sie az identity show zum Abrufen der Objekt-ID der Identität.

IDENTITY_OBJECT_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'principalId' -o tsv)
echo $IDENTITY_OBJECT_ID

Im obigen Beispiel wird der Wert der Objekt-ID der Identität in IDENTITY_OBJECT_ID gespeichert.

Verwenden Sie az identity show zum Abrufen der Ressourcen-ID der Identität.

IDENTITY_RESOURCE_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'id' -o tsv)
echo $IDENTITY_RESOURCE_ID

Im obigen Beispiel wird der Wert der Ressourcen-ID der Identität in IDENTITY_RESOURCE_ID gespeichert.

Zuweisen von Berechtigungen (Entschlüsseln und Verschlüsseln) für den Zugriff auf den Schlüsseltresor

Verwenden Sie az keyvault set-policy zum Erstellen einer Azure KeyVault-Richtlinie.

az keyvault set-policy -n MyKeyVault --key-permissions decrypt encrypt --object-id $IDENTITY_OBJECT_ID

Erstellen eines AKS-Clusters mit aktivierter KMS-etcd-Verschlüsselung

Erstellen Sie einen AKS-Cluster mithilfe des az aks create-Befehls mit den Parametern --enable-azure-keyvault-kms und --azure-keyvault-kms-key-id, um die KMS-etcd-Verschlüsselung zu aktvieren.

az aks create --name myAKSCluster --resource-group MyResourceGroup --assign-identity $IDENTITY_RESOURCE_ID --enable-azure-keyvault-kms --azure-keyvault-kms-key-id $KEY_ID

Aktivieren der KMS-etcd-Verschlüsselung für einen bestehenden AKS-Cluster

Verwenden Sie az aks update mit den Parametern --enable-azure-keyvault-kms und --azure-keyvault-kms-key-id, um die KMS-etcd-Verschlüsselung auf einem bestehenden Cluster zu aktvieren.

az aks update --name myAKSCluster --resource-group MyResourceGroup --enable-azure-keyvault-kms --azure-keyvault-kms-key-id $KEY_ID

Verwenden Sie den folgenden Befehl, um alle Geheimnisse zu aktualisieren. Andernfalls werden die alten Geheimnisse nicht verschlüsselt.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -