Saját kulcsok (BYOK) használata azure-beli felügyelt lemezekkel az Azure Kubernetes Service-ben (AKS)

Az Azure egy inaktív felügyelt lemez összes adatát titkosítja. Alapértelmezés szerint az adatok a Microsoft által felügyelt kulcsokkal lesznek titkosítva. A titkosítási kulcsok hatékonyabb szabályozásához az ügyfél által felügyelt kulcsokat is megadhatja, amelyek inaktív állapotban történő titkosításhoz használhatók mind az operációs rendszer, mind az AKS-fürtök adatlemezei számára.

További információ az ügyfél által felügyelt kulcsokról Linuxon és Windowson.

Előfeltételek

  • A felügyelt lemezek titkosításához a Key Vault használatakor engedélyeznie kell az Azure Key Vault helyreállítható törlési és törlési védelmét.
  • Az Azure CLI 2.11.1-es vagy újabb verziójára van szüksége.
  • Az adatlemez titkosítása és az ügyfél által felügyelt kulcsok támogatottak a Kubernetes 1.24-s és újabb verzióiban.
  • Ha úgy dönt, hogy rendszeresen elforgatja (módosítja) a kulcsokat, további információért tekintse meg az ügyfél által felügyelt kulcsokat és az Azure-beli felügyelt lemez titkosítását.

Korlátozások

  • Az ügyfél által felügyelt kulcsokkal rendelkező operációsrendszer-lemezek titkosítása csak AKS-fürt létrehozásakor engedélyezhető.

  • A virtuális csomópontok nem támogatottak.

  • Ha egy rövid élettartamú operációsrendszer-lemezt használó csomópontkészletet ügyfél által felügyelt kulcsokkal titkosít, ha el szeretné forgatni a kulcsot az Azure Key Vaultban, a következőkre van szükség:

    • A csomópontkészletek számának leskálázása 0-ra
    • A kulcs elforgatása
    • Skálázza fel a csomópontkészletet az eredeti darabszámra.

Azure Key Vault-példány létrehozása

Egy Azure Key Vault-példány használatával tárolja a kulcsokat. Az Azure Portal használatával igény szerint konfigurálhatja az ügyfél által felügyelt kulcsokat az Azure Key Vaulttal

Hozzon létre egy új erőforráscsoportot, majd hozzon létre egy új Key Vault-példányt, és engedélyezze a helyreállítható törlési és törlési védelmet. Győződjön meg arról, hogy minden parancshoz ugyanazokat a régió- és erőforráscsoportneveket használja.

# Optionally retrieve Azure region short names for use on upcoming commands
az account list-locations
# Create new resource group in a supported Azure region
az group create -l myAzureRegionName -n myResourceGroup

# Create an Azure Key Vault resource in a supported Azure region
az keyvault create -n myKeyVaultName -g myResourceGroup -l myAzureRegionName  --enable-purge-protection true

DiskEncryptionSet-példány létrehozása

Cserélje le a myKeyVaultName nevet a kulcstartó nevére. Az alábbi lépések végrehajtásához az Azure Key Vaultban tárolt kulcsra is szüksége van. Tárolja a meglévő kulcsot az előző lépések során létrehozott Key Vaultban, vagy hozzon létre egy új kulcsot , és cserélje le a myKeyName nevet a kulcs nevére.

# Retrieve the Key Vault Id and store it in a variable
keyVaultId=$(az keyvault show --name myKeyVaultName --query "[id]" -o tsv)

# Retrieve the Key Vault key URL and store it in a variable
keyVaultKeyUrl=$(az keyvault key show --vault-name myKeyVaultName --name myKeyName --query "[key.kid]" -o tsv)

# Create a DiskEncryptionSet
az disk-encryption-set create -n myDiskEncryptionSetName  -l myAzureRegionName  -g myResourceGroup --source-vault $keyVaultId --key-url $keyVaultKeyUrl

Fontos

Győződjön meg arról, hogy a DiskEncryptionSet ugyanabban a régióban található, mint az AKS-fürt, és hogy az AKS-fürt identitása olvasási hozzáféréssel rendelkezik a DiskEncryptionSethez.

A DiskEncryptionSet hozzáférésének biztosítása a Key Vaulthoz

Használja az előző lépésekben létrehozott DiskEncryptionSet és erőforráscsoportokat, és adjon hozzáférést a DiskEncryptionSet erőforrásnak az Azure Key Vaulthoz.

# Retrieve the DiskEncryptionSet value and set a variable
desIdentity=$(az disk-encryption-set show -n myDiskEncryptionSetName  -g myResourceGroup --query "[identity.principalId]" -o tsv)

# Update security policy settings
az keyvault set-policy -n myKeyVaultName -g myResourceGroup --object-id $desIdentity --key-permissions wrapkey unwrapkey get

Új AKS-fürt létrehozása és az operációsrendszer-lemez titkosítása

Hozzon létre egy új erőforráscsoportot, vagy válasszon ki egy meglévő erőforráscsoportot, amely más AKS-fürtöket üzemeltet, majd a kulccsal titkosítja a hálózathoz csatlakoztatott operációsrendszer-lemezeket vagy rövid élettartamú operációsrendszer-lemezeket. A fürtök alapértelmezés szerint rövid élettartamú operációsrendszer-lemezt használnak, ha lehetséges, a virtuális gép méretével és az operációsrendszer-lemez méretével együtt.

Futtassa a következő parancsot a DiskEncryptionSet érték lekéréséhez és egy változó beállításához:

diskEncryptionSetId=$(az disk-encryption-set show -n mydiskEncryptionSetName -g myResourceGroup --query "[id]" -o tsv)

Ha új erőforráscsoportot szeretne létrehozni a fürthöz, futtassa a következő parancsot:

az group create -n myResourceGroup -l myAzureRegionName

Ha a kulccsal titkosított hálózati operációsrendszer-lemezek használatával szeretne normál fürtöt létrehozni, ezt az --node-osdisk-type=Managed argumentum megadásával teheti meg.

az aks create -n myAKSCluster -g myResourceGroup --node-osdisk-diskencryptionset-id $diskEncryptionSetId --generate-ssh-keys --node-osdisk-type Managed

Ha rövid élettartamú operációsrendszer-lemezzel rendelkező fürtöt szeretne létrehozni a kulccsal titkosítva, ezt az --node-osdisk-type=Ephemeral argumentum megadásával teheti meg. Az argumentumot --node-vm-size is meg kell adnia, mert az alapértelmezett virtuálisgép-méret túl kicsi, és nem támogatja a rövid élettartamú operációsrendszer-lemezt.

az aks create -n myAKSCluster -g myResourceGroup --node-osdisk-diskencryptionset-id $diskEncryptionSetId --generate-ssh-keys --node-osdisk-type Ephemeral --node-vm-size Standard_DS3_v2

Amikor új csomópontkészleteket ad hozzá a fürthöz, a létrehozási folyamat során megadott ügyfél által felügyelt kulcsot használja az operációsrendszer-lemez titkosítására. Az alábbi példa bemutatja, hogyan helyezhet üzembe egy új csomópontkészletet rövid élettartamú operációsrendszer-lemezzel.

az aks nodepool add --cluster-name $CLUSTER_NAME -g $RG_NAME --name $NODEPOOL_NAME --node-osdisk-type Ephemeral

Az AKS-fürt adatlemezének titkosítása

Ha már biztosított egy lemeztitkosítási csoportot a fürt létrehozása során, az adatlemezek titkosítása ugyanazzal a lemeztitkosítási készlettel az alapértelmezett beállítás. Ezért ez a lépés nem kötelező. Ha azonban más lemeztitkosítási csoporttal szeretné titkosítani az adatlemezeket, kövesse az alábbi lépéseket.

Fontos

Győződjön meg arról, hogy rendelkezik a megfelelő AKS-hitelesítő adatokkal. A felügyelt identitásnak közreműködői hozzáféréssel kell rendelkeznie ahhoz az erőforráscsoporthoz, amelyben a diskencryptionset üzembe helyezi. Ellenkező esetben hibaüzenet jelenik meg, amely arra utal, hogy a felügyelt identitás nem rendelkezik engedélyekkel.

Az AKS-fürt identitásának a diskencryptionset közreműködői szerepköréhez való hozzárendeléséhez hajtsa végre a következő parancsokat:

aksIdentity=$(az aks show -g $RG_NAME -n $CLUSTER_NAME --query "identity.principalId")
az role assignment create --role "Contributor" --assignee $aksIdentity --scope $diskEncryptionSetId

Hozzon létre egy byok-azure-disk.yaml nevű fájlt, amely az alábbi információkat tartalmazza. Cserélje le a myAzureSubscriptionId, a myResourceGroup és a myDiskEncrptionSetName értéket az értékekre, és alkalmazza a yaml-et. Mindenképpen használja azt az erőforráscsoportot, amelyben a DiskEncryptionSet telepítve van.

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: byok
provisioner: disk.csi.azure.com # replace with "kubernetes.io/azure-disk" if aks version is less than 1.21
parameters:
  skuname: StandardSSD_LRS
  kind: managed
  diskEncryptionSetID: "/subscriptions/{myAzureSubscriptionId}/resourceGroups/{myResourceGroup}/providers/Microsoft.Compute/diskEncryptionSets/{myDiskEncryptionSetName}"

Ezután futtassa a következő parancsokat az AKS-fürt frissítéséhez:

# Get credentials
az aks get-credentials --name myAksCluster --resource-group myResourceGroup --output table

# Update cluster
kubectl apply -f byok-azure-disk.yaml

Következő lépések

Az AKS-fürtbiztonság ajánlott eljárásainak áttekintése