Dodawanie szyfrowania usługa zarządzania kluczami itp. do klastra usługi Azure Kubernetes Service
W tym artykule pokazano, jak włączyć szyfrowanie magazynowane dla wpisów tajnych usługi Azure Kubernetes Service (AKS) w magazynie wartości klucza etcd przy użyciu usługi Azure Key Vault i wtyczki usługa zarządzania kluczami (KMS). Możesz użyć wtyczki KMS, aby:
- Użyj klucza w magazynie kluczy na potrzeby szyfrowania etcd.
- Przynieś własne klucze.
- Podaj szyfrowanie magazynowanych wpisów tajnych przechowywanych w plikach itp.
- Obracanie kluczy w magazynie kluczy.
Aby uzyskać więcej informacji na temat korzystania z usługi KMS, zobacz Używanie dostawcy usługi KMS do szyfrowania danych.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Interfejs wiersza polecenia platformy Azure w wersji 2.39.0 lub nowszej. Uruchom polecenie
az --version
, aby znaleźć swoją wersję. Jeśli konieczna będzie instalacja lub uaktualnienie interfejsu, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Ostrzeżenie
Od 15 września 2024 r. konnectivity nie jest już obsługiwana w przypadku prywatnych magazynów kluczy dla nowych subskrypcji lub subskrypcji, które nie były wcześniej używane w tej konfiguracji. W przypadku subskrypcji, które obecnie korzystają z tej konfiguracji lub które korzystały z niej w ciągu ostatnich 60 dni, pomoc techniczna będzie kontynuowana do momentu, aż usługa AKS w wersji 1.30 osiągnie koniec życia pomocy technicznej społeczności.
Usługa KMS obsługuje konnectivity lub api Server VNet Integration (wersja zapoznawcza) dla publicznych magazynów kluczy.
Usługa KMS obsługuje integrację z siecią wirtualną serwera API (wersja zapoznawcza) zarówno dla magazynów kluczy prywatnych, jak i publicznych.
Możesz użyć kubectl get po -n kube-system
polecenia , aby zweryfikować wyniki i pokazać, że zasobnik konnectivity-agent jest uruchomiony. Jeśli zasobnik jest uruchomiony, klaster usługi AKS używa konnectivity. W przypadku korzystania z integracji z siecią wirtualną az aks show -g -n
programu API Server można uruchomić polecenie , aby sprawdzić, czy enableVnetIntegration
ustawienie ma wartość true
.
Ograniczenia
Podczas integrowania szyfrowania KMS itp. z usługą AKS obowiązują następujące ograniczenia:
- Usunięcie klucza, magazynu kluczy lub skojarzonej tożsamości nie jest obsługiwane.
- Szyfrowanie usługi KMS itp. nie działa z tożsamością zarządzaną przypisaną przez system. Przed włączeniem funkcji należy ustawić zasady dostępu do magazynu kluczy. Tożsamość zarządzana przypisana przez system nie jest dostępna do momentu utworzenia klastra. Rozważ zależność cyklu.
- Usługa Azure Key Vault z ustawieniem zapory "zezwalaj na dostęp publiczny z określonych sieci wirtualnych i adresów IP" lub "wyłącz dostęp publiczny" nie jest obsługiwana, ponieważ blokuje ruch z wtyczki USŁUGI KMS do magazynu kluczy.
- Maksymalna liczba wpisów tajnych obsługiwanych przez klaster z włączoną usługą KMS wynosi 2000. Należy jednak pamiętać, że usługa KMS v2 nie jest ograniczona przez to ograniczenie i może obsługiwać większą liczbę wpisów tajnych.
- Usługa Bring Your Own (BYO) Azure Key Vault z innej dzierżawy nie jest obsługiwana.
- Po włączeniu usługi KMS nie można zmienić skojarzonego trybu magazynu kluczy (publicznego i prywatnego). Aby zaktualizować tryb magazynu kluczy, należy najpierw wyłączyć usługę KMS, a następnie ponownie ją włączyć.
- Jeśli klaster ma włączoną usługę KMS i ma prywatny magazyn kluczy, musi użyć tunelu integracja z siecią wirtualną (wersja zapoznawcza) interfejsu API Server. Konnectivity nie jest obsługiwana.
- Użycie interfejsu API zestawów skalowania maszyn wirtualnych w celu skalowania węzłów w klastrze w dół do zera cofa przydział węzłów. Klaster przechodzi w dół i staje się nieodwracalny.
- Po wyłączeniu usługi KMS nie można zniszczyć kluczy. Zniszczenie kluczy powoduje, że serwer interfejsu API przestanie działać.
Usługa KMS obsługuje publiczny magazyn kluczy lub prywatny magazyn kluczy.
Włączanie usługi KMS dla publicznego magazynu kluczy
W poniższych sekcjach opisano sposób włączania usługi KMS dla publicznego magazynu kluczy.
Tworzenie publicznego magazynu kluczy i klucza
Ostrzeżenie
Usunięcie klucza lub magazynu kluczy nie jest obsługiwane i powoduje, że wpisy tajne w klastrze są nieodwracalne.
Jeśli musisz odzyskać magazyn kluczy lub klucz, zobacz Zarządzanie odzyskiwaniem usługi Azure Key Vault przy użyciu funkcji usuwania nietrwałego i ochrony przed przeczyszczeniem.
Tworzenie magazynu kluczy i klucza dla publicznego magazynu kluczy RBAC
Użyj az keyvault create
polecenia , aby utworzyć magazyn kluczy bez używania kontroli dostępu opartej na rolach platformy Azure (Azure RBAC):
az keyvault create --name MyKeyVault --resource-group MyResourceGroup
Użyj az keyvault key create
polecenia , aby utworzyć klucz:
az keyvault key create --name MyKeyName --vault-name MyKeyVault
Użyj az keyvault key show
polecenia , aby wyeksportować identyfikator klucza:
export KEY_ID=$(az keyvault key show --name MyKeyName --vault-name MyKeyVault --query 'key.kid' -o tsv)
echo $KEY_ID
W tym przykładzie identyfikator klucza jest przechowywany w pliku KEY_ID
.
Tworzenie magazynu kluczy i klucza dla publicznego magazynu kluczy RBAC
Użyj az keyvault create
polecenia , aby utworzyć magazyn kluczy przy użyciu kontroli dostępu opartej na rolach platformy Azure:
export KEYVAULT_RESOURCE_ID=$(az keyvault create --name MyKeyVault --resource-group MyResourceGroup --enable-rbac-authorization true --query id -o tsv)
Przypisz sobie uprawnienia, aby utworzyć klucz:
az role assignment create --role "Key Vault Crypto Officer" --assignee-object-id $(az ad signed-in-user show --query id -o tsv) --assignee-principal-type "User" --scope $KEYVAULT_RESOURCE_ID
Użyj az keyvault key create
polecenia , aby utworzyć klucz:
az keyvault key create --name MyKeyName --vault-name MyKeyVault
Użyj az keyvault key show
polecenia , aby wyeksportować identyfikator klucza:
export KEY_ID=$(az keyvault key show --name MyKeyName --vault-name MyKeyVault --query 'key.kid' -o tsv)
echo $KEY_ID
W tym przykładzie identyfikator klucza jest przechowywany w pliku KEY_ID
.
Tworzenie tożsamości zarządzanej przypisanej przez użytkownika dla publicznego magazynu kluczy
Użyj az identity create
polecenia , aby utworzyć tożsamość zarządzaną przypisaną przez użytkownika:
az identity create --name MyIdentity --resource-group MyResourceGroup
Użyj az identity show
polecenia , aby uzyskać identyfikator obiektu tożsamości:
IDENTITY_OBJECT_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'principalId' -o tsv)
echo $IDENTITY_OBJECT_ID
Powyższy przykład przechowuje wartość identyfikatora obiektu tożsamości w pliku IDENTITY_OBJECT_ID
.
Użyj az identity show
polecenia , aby uzyskać identyfikator zasobu tożsamości:
IDENTITY_RESOURCE_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'id' -o tsv)
echo $IDENTITY_RESOURCE_ID
W tym przykładzie jest przechowywana wartość identyfikatora zasobu tożsamości w pliku IDENTITY_RESOURCE_ID
.
Przypisywanie uprawnień do odszyfrowywania i szyfrowania publicznego magazynu kluczy
W poniższych sekcjach opisano sposób przypisywania uprawnień odszyfrowywania i szyfrowania dla prywatnego magazynu kluczy.
Przypisywanie uprawnień dla publicznego magazynu kluczy RBAC innego niż RBAC
Jeśli magazyn kluczy nie jest ustawiony za pomocą --enable-rbac-authorization
usługi , możesz użyć az keyvault set-policy
polecenia , aby utworzyć zasady usługi Azure Key Vault.
az keyvault set-policy --name MyKeyVault --key-permissions decrypt encrypt --object-id $IDENTITY_OBJECT_ID
Przypisywanie uprawnień dla publicznego magazynu kluczy RBAC
Jeśli magazyn kluczy jest ustawiony za pomocą --enable-rbac-authorization
polecenia , przypisz rolę użytkownika kryptograficznego usługi Key Vault, aby udzielić uprawnień odszyfrowywania i szyfrowania.
az role assignment create --role "Key Vault Crypto User" --assignee-object-id $IDENTITY_OBJECT_ID --assignee-principal-type "ServicePrincipal" --scope $KEYVAULT_RESOURCE_ID
Tworzenie klastra usługi AKS z magazynem kluczy publicznych i włączanie szyfrowania KMS itp.
Aby włączyć szyfrowanie KMS itp., utwórz klaster usługi AKS przy użyciu polecenia az aks create . Możesz użyć parametrów --enable-azure-keyvault-kms
, --azure-keyvault-kms-key-vault-network-access
i --azure-keyvault-kms-key-id
z parametrami az aks create
.
az aks create \
--name myAKSCluster \
--resource-group MyResourceGroup \
--assign-identity $IDENTITY_RESOURCE_ID \
--enable-azure-keyvault-kms \
--azure-keyvault-kms-key-vault-network-access "Public" \
--azure-keyvault-kms-key-id $KEY_ID \
--generate-ssh-keys
Aktualizowanie istniejącego klastra usługi AKS w celu włączenia szyfrowania KMS itp. dla publicznego magazynu kluczy
Aby włączyć szyfrowanie KMS itp. dla istniejącego klastra, użyj polecenia az aks update . Możesz użyć parametrów --enable-azure-keyvault-kms
, --azure-keyvault-kms-key-vault-network-access
i --azure-keyvault-kms-key-id
z parametrami az-aks-update
.
az aks update --name myAKSCluster --resource-group MyResourceGroup --enable-azure-keyvault-kms --azure-keyvault-kms-key-vault-network-access "Public" --azure-keyvault-kms-key-id $KEY_ID
Użyj następującego polecenia, aby zaktualizować wszystkie wpisy tajne. Jeśli to polecenie nie zostanie uruchomione, wpisy tajne, które zostały utworzone wcześniej, nie będą już szyfrowane. W przypadku większych klastrów warto rozdzielić wpisy tajne według przestrzeni nazw lub utworzyć skrypt aktualizacji.
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
Obracanie istniejących kluczy w publicznym magazynie kluczy
Po zmianie identyfikatora klucza (w tym zmianie nazwy klucza lub wersji klucza), możesz użyć polecenia az aks update . Aby obrócić istniejące klucze w usłudze KMS, możesz użyć --enable-azure-keyvault-kms
parametrów az-aks-update
, --azure-keyvault-kms-key-vault-network-access
i --azure-keyvault-kms-key-id
.
Ostrzeżenie
Pamiętaj, aby zaktualizować wszystkie wpisy tajne po rotacji klucza. Jeśli nie zaktualizujesz wszystkich wpisów tajnych, wpisy tajne będą niedostępne, jeśli utworzone wcześniej klucze nie istnieją lub już nie działają.
Usługa KMS używa jednocześnie 2 kluczy. Po pierwszej rotacji kluczy należy upewnić się, że zarówno stare, jak i nowe klucze są prawidłowe (nie wygasły) do następnej rotacji klucza. Po drugiej rotacji klucza najstarszy klucz można bezpiecznie usunąć/wygasł
az aks update --name myAKSCluster --resource-group MyResourceGroup --enable-azure-keyvault-kms --azure-keyvault-kms-key-vault-network-access "Public" --azure-keyvault-kms-key-id $NEW_KEY_ID
Użyj następującego polecenia, aby zaktualizować wszystkie wpisy tajne. Jeśli to polecenie nie zostanie uruchomione, wpisy tajne, które zostały utworzone wcześniej, będą nadal szyfrowane przy użyciu poprzedniego klucza. W przypadku większych klastrów warto rozdzielić wpisy tajne według przestrzeni nazw lub utworzyć skrypt aktualizacji.
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
Włączanie usługi KMS dla prywatnego magazynu kluczy
Jeśli włączysz usługę KMS dla prywatnego magazynu kluczy, usługa AKS automatycznie utworzy prywatny punkt końcowy i link prywatny w grupie zasobów węzła. Magazyn kluczy jest dodawany do prywatnego połączenia punktu końcowego z klastrem usługi AKS.
Ostrzeżenie
Usługa KMS obsługuje tylko integrację z siecią wirtualną serwera API (wersja zapoznawcza) dla prywatnego magazynu kluczy.
Tworzenie prywatnego magazynu kluczy i klucza
Ostrzeżenie
Usunięcie klucza lub magazynu kluczy nie jest obsługiwane i powoduje, że wpisy tajne w klastrze są nieodwracalne.
Jeśli musisz odzyskać magazyn kluczy lub klucz, zobacz Zarządzanie odzyskiwaniem usługi Azure Key Vault przy użyciu funkcji usuwania nietrwałego i ochrony przed przeczyszczeniem.
Użyj az keyvault create
polecenia , aby utworzyć prywatny magazyn kluczy:
az keyvault create --name MyKeyVault --resource-group MyResourceGroup --public-network-access Disabled
Użyj az keyvault key create
polecenia , aby utworzyć klucz:
az keyvault key create --name MyKeyName --vault-name MyKeyVault
Tworzenie lub aktualizowanie kluczy w prywatnym magazynie kluczy, który nie ma prywatnego punktu końcowego, nie jest obsługiwane. Aby dowiedzieć się, jak zarządzać magazynami kluczy prywatnych, zobacz Integrowanie magazynu kluczy przy użyciu usługi Azure Private Link.
Tworzenie tożsamości zarządzanej przypisanej przez użytkownika dla prywatnego magazynu kluczy
Użyj az identity create
polecenia , aby utworzyć tożsamość zarządzaną przypisaną przez użytkownika:
az identity create --name MyIdentity --resource-group MyResourceGroup
Użyj az identity show
polecenia , aby uzyskać identyfikator obiektu tożsamości:
IDENTITY_OBJECT_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'principalId' -o tsv)
echo $IDENTITY_OBJECT_ID
Powyższy przykład przechowuje wartość identyfikatora obiektu tożsamości w pliku IDENTITY_OBJECT_ID
.
Użyj az identity show
polecenia , aby uzyskać identyfikator zasobu tożsamości:
IDENTITY_RESOURCE_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'id' -o tsv)
echo $IDENTITY_RESOURCE_ID
W tym przykładzie jest przechowywana wartość identyfikatora zasobu tożsamości w pliku IDENTITY_RESOURCE_ID
.
Przypisywanie uprawnień do odszyfrowywania i szyfrowania prywatnego magazynu kluczy
W poniższych sekcjach opisano sposób przypisywania uprawnień odszyfrowywania i szyfrowania dla prywatnego magazynu kluczy.
Przypisywanie uprawnień dla prywatnego magazynu kluczy RBAC innego niż RBAC
Uwaga
W przypadku korzystania z prywatnego magazynu kluczy usługa AKS nie może zweryfikować uprawnień tożsamości. Przed włączeniem usługi KMS upewnij się, że udzielono tożsamości uprawnień dostępu do magazynu kluczy.
Jeśli magazyn kluczy nie jest ustawiony za pomocą --enable-rbac-authorization
usługi , możesz użyć az keyvault set-policy
polecenia , aby utworzyć zasady magazynu kluczy na platformie Azure:
az keyvault set-policy --name MyKeyVault --key-permissions decrypt encrypt --object-id $IDENTITY_OBJECT_ID
Przypisywanie uprawnień dla prywatnego magazynu kluczy RBAC
Jeśli magazyn kluczy jest ustawiony za pomocą --enable-rbac-authorization
polecenia , przypisz rolę RBAC platformy Azure obejmującą uprawnienia odszyfrowywania i szyfrowania:
az role assignment create --role "Key Vault Crypto User" --assignee-object-id $IDENTITY_OBJECT_ID --assignee-principal-type "ServicePrincipal" --scope $KEYVAULT_RESOURCE_ID
Przypisywanie uprawnień do tworzenia łącza prywatnego
W przypadku magazynów kluczy prywatnych rola Współautor usługi Key Vault jest wymagana do utworzenia łącza prywatnego między prywatnym magazynem kluczy a klastrem.
az role assignment create --role "Key Vault Contributor" --assignee-object-id $IDENTITY_OBJECT_ID --assignee-principal-type "ServicePrincipal" --scope $KEYVAULT_RESOURCE_ID
Tworzenie klastra usługi AKS z prywatnym magazynem kluczy i włączanie szyfrowania KMS itp.
Aby włączyć szyfrowanie usługi KMS itp. dla prywatnego magazynu kluczy, utwórz klaster usługi AKS przy użyciu polecenia az aks create . Możesz użyć parametrów --enable-azure-keyvault-kms
, --azure-keyvault-kms-key-id
, --azure-keyvault-kms-key-vault-network-access
i --azure-keyvault-kms-key-vault-resource-id
z parametrami az-aks-create
.
az aks create \
--name myAKSCluster \
--resource-group MyResourceGroup \
--assign-identity $IDENTITY_RESOURCE_ID \
--enable-azure-keyvault-kms \
--azure-keyvault-kms-key-id $KEY_ID \
--azure-keyvault-kms-key-vault-network-access "Private" \
--azure-keyvault-kms-key-vault-resource-id $KEYVAULT_RESOURCE_ID \
--generate-ssh-keys
Aktualizowanie istniejącego klastra usługi AKS w celu włączenia szyfrowania KMS itp. dla prywatnego magazynu kluczy
Aby włączyć szyfrowanie usługi KMS itp. w istniejącym klastrze z prywatnym magazynem kluczy, użyj polecenia az aks update . Możesz użyć parametrów --enable-azure-keyvault-kms
, --azure-keyvault-kms-key-id
, --azure-keyvault-kms-key-vault-network-access
i --azure-keyvault-kms-key-vault-resource-id
z parametrami az-aks-update
.
az aks update --name myAKSCluster --resource-group MyResourceGroup --enable-azure-keyvault-kms --azure-keyvault-kms-key-id $KEY_ID --azure-keyvault-kms-key-vault-network-access "Private" --azure-keyvault-kms-key-vault-resource-id $KEYVAULT_RESOURCE_ID
Użyj następującego polecenia, aby zaktualizować wszystkie wpisy tajne. Jeśli to polecenie nie zostanie uruchomione, wpisy tajne, które zostały utworzone wcześniej, nie są szyfrowane. W przypadku większych klastrów warto rozdzielić wpisy tajne według przestrzeni nazw lub utworzyć skrypt aktualizacji.
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
Obracanie istniejących kluczy w prywatnym magazynie kluczy
Po zmianie identyfikatora klucza (w tym nazwy klucza i wersji klucza) możesz użyć polecenia az aks update . Aby obrócić istniejące klucze usługi KMS, możesz użyć --enable-azure-keyvault-kms
parametrów az-aks-update
, --azure-keyvault-kms-key-id
--azure-keyvault-kms-key-vault-network-access
, i --azure-keyvault-kms-key-vault-resource-id
.
Ostrzeżenie
Pamiętaj, aby zaktualizować wszystkie wpisy tajne po rotacji klucza. Jeśli nie zaktualizujesz wszystkich wpisów tajnych, wpisy tajne będą niedostępne, jeśli utworzone wcześniej klucze nie istnieją lub już nie działają.
Po obróceniu klucza poprzedni klucz (klucz1) jest nadal buforowany i nie należy go usuwać. Jeśli chcesz natychmiast usunąć poprzedni klucz (klucz1), musisz dwukrotnie obrócić klucz. Następnie klucz2 i klucz3 są buforowane, a klucz1 można usunąć bez wpływu na istniejący klaster.
az aks update --name myAKSCluster --resource-group MyResourceGroup --enable-azure-keyvault-kms --azure-keyvault-kms-key-id $NewKEY_ID --azure-keyvault-kms-key-vault-network-access "Private" --azure-keyvault-kms-key-vault-resource-id $KEYVAULT_RESOURCE_ID
Użyj następującego polecenia, aby zaktualizować wszystkie wpisy tajne. Jeśli nie zaktualizujesz wszystkich wpisów tajnych, utworzone wcześniej wpisy tajne są szyfrowane przy użyciu poprzedniego klucza. W przypadku większych klastrów warto rozdzielić wpisy tajne według przestrzeni nazw lub utworzyć skrypt aktualizacji.
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
Aktualizowanie trybu magazynu kluczy
Uwaga
Aby zmienić inny magazyn kluczy w innym trybie (publicznym lub prywatnym), można uruchomić az aks update
bezpośrednio. Aby zmienić tryb dołączonego magazynu kluczy, należy najpierw wyłączyć usługę KMS, a następnie włączyć ją ponownie przy użyciu nowych identyfikatorów magazynu kluczy.
W poniższych sekcjach opisano sposób migrowania dołączonego publicznego magazynu kluczy do trybu prywatnego. Te kroki mogą być również używane do migracji z prywatnej do publicznej.
Wyłączanie usługi KMS w klastrze
Wyłącz usługę KMS w istniejącym klastrze i zwolnij magazyn kluczy:
az aks update --name myAKSCluster --resource-group MyResourceGroup --disable-azure-keyvault-kms
Użyj następującego polecenia, aby zaktualizować wszystkie wpisy tajne. Jeśli to polecenie nie zostanie uruchomione, wpisy tajne, które zostały utworzone wcześniej, będą nadal szyfrowane przy użyciu poprzedniego klucza. W przypadku większych klastrów warto rozdzielić wpisy tajne według przestrzeni nazw lub utworzyć skrypt aktualizacji.
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
Zmienianie trybu magazynu kluczy
Zaktualizuj magazyn kluczy z publicznego na prywatny:
az keyvault update --name MyKeyVault --resource-group MyResourceGroup --public-network-access Disabled
Aby przeprowadzić migrację z prywatnego do publicznego ustawionego --public-network-access
na Enabled
wartość w poleceniu powyżej.
Włączanie usługi KMS dla klastra przy użyciu zaktualizowanego magazynu kluczy
Włącz usługę KMS przy użyciu zaktualizowanego prywatnego magazynu kluczy:
az aks update --name myAKSCluster --resource-group MyResourceGroup --enable-azure-keyvault-kms --azure-keyvault-kms-key-id $NewKEY_ID --azure-keyvault-kms-key-vault-network-access "Private" --azure-keyvault-kms-key-vault-resource-id $KEYVAULT_RESOURCE_ID
Po skonfigurowaniu usługi KMS możesz włączyć ustawienia diagnostyczne dla magazynu kluczy, aby sprawdzić dzienniki szyfrowania.
Wyłączanie usługi KMS
Przed wyłączeniem usługi KMS możesz użyć następującego polecenia interfejsu wiersza polecenia platformy Azure, aby sprawdzić, czy usługa KMS jest włączona:
az aks list --query "[].{Name:name, KmsEnabled:securityProfile.azureKeyVaultKms.enabled, KeyId:securityProfile.azureKeyVaultKms.keyId}" -o table
Jeśli wyniki potwierdzają, że usługa KMS jest włączona, uruchom następujące polecenie, aby wyłączyć usługę KMS w klastrze:
az aks update --name myAKSCluster --resource-group MyResourceGroup --disable-azure-keyvault-kms
Użyj następującego polecenia, aby zaktualizować wszystkie wpisy tajne. Jeśli nie uruchomisz tego polecenia, wpisy tajne, które zostały utworzone wcześniej, są nadal szyfrowane przy użyciu poprzedniego klucza, a uprawnienia szyfrowania i odszyfrowywania w magazynie kluczy są nadal wymagane. W przypadku większych klastrów warto rozdzielić wpisy tajne według przestrzeni nazw lub utworzyć skrypt aktualizacji.
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
Obsługa usługi KMS w wersji 2
Począwszy od usługi AKS w wersji 1.27, włączenie funkcji usługi KMS powoduje skonfigurowanie usługi KMS w wersji 2. Usługa KMS w wersji 2 nie jest ograniczona do 2000 wpisów tajnych, które są obsługiwane przez wcześniejsze wersje. Aby uzyskać więcej informacji, zobacz Ulepszenia usługi KMS w wersji 2.
Migrowanie do usługi KMS w wersji 2
Jeśli wersja klastra jest starsza niż 1.27 i jest już włączona usługa KMS, uaktualnienie do klastra w wersji 1.27 lub nowszej jest zablokowane. Wykonaj następujące kroki, aby przeprowadzić migrację do usługi KMS w wersji 2:
- Wyłącz usługę KMS w klastrze.
- Przeprowadź migrację magazynu.
- Uaktualnij klaster do wersji 1.27 lub nowszej.
- Włącz usługę KMS w klastrze.
- Przeprowadź migrację magazynu.
Wyłączanie usługi KMS w celu migracji magazynu
Aby wyłączyć usługę KMS w istniejącym klastrze, użyj az aks update
polecenia z argumentem --disable-azure-keyvault-kms
:
az aks update --name myAKSCluster --resource-group MyResourceGroup --disable-azure-keyvault-kms
Migrowanie magazynu
Aby zaktualizować wszystkie wpisy tajne, użyj kubectl get secrets
polecenia z argumentem --all-namespaces
:
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
Uaktualnianie klastra usługi AKS
Aby uaktualnić klaster usługi AKS, użyj az aks upgrade
polecenia . Ustaw wersję na 1.27.x
lub nowszą, używając argumentu --kubernetes-version
.
az aks upgrade --resource-group myResourceGroup --name myAKSCluster --kubernetes-version <AKS version>
Oto przykład:
az aks upgrade --resource-group myResourceGroup --name myAKSCluster --kubernetes-version 1.27.1
Włączanie usługi KMS po migracji magazynu
Możesz ponownie włączyć funkcję usługi KMS w klastrze, aby zaszyfrować wpisy tajne. Następnie klaster usługi AKS używa usługi KMS w wersji 2. Jeśli nie chcesz migrować do usługi KMS w wersji 2, możesz utworzyć nowy klaster w wersji 1.27 lub nowszej z włączonym usługą KMS.
Migrowanie magazynu dla usługi KMS w wersji 2
Aby ponownie zaszyfrować wszystkie wpisy tajne w usłudze KMS w wersji 2, użyj kubectl get secrets
polecenia z argumentem --all-namespaces
:
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
Azure Kubernetes Service