Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Elastik SAN birimine yazılan tüm veriler, dinlenme hâlindeyken veri şifreleme anahtarı (DEK) ile şifrelenir. Azure, DEK'yi bir anahtar şifreleme anahtarı (KEK) ile şifrelemek için zarf şifrelemesi kullanır. Azure varsayılan olarak platform tarafından yönetilen bir KEK kullanır. Azure Key Vault'ta depolanan müşteri tarafından yönetilen anahtarı (CMK) kullanabilirsiniz.
Bu makalede, Azure Key Vault'ta CMK kullanarak Elastik SAN birim grubu için şifrelemeyi yapılandırma adımları gösterilmektedir.
Önkoşullar
Eğer bir Azure aboneliğiniz yoksa, başlamadan önce ücretsiz bir hesap oluşturun.
Bu makale, Azure CLI sürüm v2.83.0 veya üzerini gerektirir. Daha fazla bilgi için bkz. Azure CLI'yi yükleme. Sorunlar oluşursa
aks-previewgibi uzantıları devre dışı bırakın. Uzantıları gerektiği gibi yükleyin veya güncelleştirin:az extension add --upgrade --name k8s-extension-
az extension add --upgrade --name elastic-san(Yalnızca elastik SAN)
Kubernetes komut satırı istemcisine ihtiyacınız vardır.
kubectlAzure Cloud Shell kullanıyorsanız zaten yüklüdür. komutunu çalıştırarakaz aks install-cliyerel olarak yükleyebilirsiniz.Hedef bölgenizin Azure Container Storage bölgelerinde desteklenip desteklenmediğini denetleyin.
- Bu makalede, Azure Kubernetes Service (AKS) kümenize Azure Container Storage sürüm 2.1.0 veya üzerini yüklediğiniz varsayılır.
Anahtar kasasını yapılandır
Müşteri tarafından yönetilen anahtarları depolamak için yeni veya mevcut bir anahtar kasası kullanabilirsiniz. Şifrelenmiş kaynak ve anahtar kasası, aynı Microsoft Entra ID kiracısında farklı bölgelerde veya aboneliklerde bulunabilir. Daha fazla bilgi edinmek için bkz. Azure Key Vault'a Genel Bakış ve Azure Key Vault nedir?
Müşteri tarafından yönetilen anahtarlarla şifreleme, anahtar kasası için hem geçici silme hem de temizleme korumasının etkinleştirilmesini gerektirir. Soft delete, yeni bir anahtar kasası oluşturduğunuzda varsayılan olarak etkinleştirilir ve kapatılamaz. Anahtar kasasını oluştururken veya oluşturulduktan sonra temizleme korumasını etkinleştirebilirsiniz. Azure Elastik SAN şifrelemesi 2048, 3072 ve 4096 boyutlarında RSA anahtarlarını destekler.
Azure Key Vault, Azure rol tabanlı erişim denetimi (Azure RBAC) ile yetkilendirmeyi destekler. Microsoft, Anahtar Kasası erişim ilkeleri yerine Azure RBAC'i önerir. Daha fazla bilgi için bkz. Azure rol tabanlı erişim denetimi ile Key Vault anahtarlarına, sertifikalarına ve gizli dizilerine erişim sağlama.
Birim grubu KEK'leriniz için bir anahtar kasası hazırlayın:
- Geçici silme ve temizleme koruması etkinleştirilmiş yeni bir anahtar kasası oluşturun veya mevcut bir anahtar kasası için temizleme korumasını etkinleştirin.
- Anahtar izinleri veren bir Azure RBAC rolü oluşturun veya atayın: get, wrapKey ve unwrapKey.
Azure CLI kullanarak yeni bir anahtar kasası oluşturmak için az keyvault create komutunu çağırın. Aşağıdaki örnek geçici silme ve temizleme korumasının etkinleştirildiği yeni bir anahtar kasası oluşturur. Anahtar kasası izin modeli, Azure RBAC'yi kullanır. Yer tutucu değerlerini köşeli ayraç içindeki kendi değerlerinizle değiştirin.
az keyvault create --name <key-vault-name> --resource-group <resource-group-name> --location <location> --enable-purge-protection --retention-days 7
Mevcut bir anahtar kasasında silme korumasını etkinleştirmek için bkz: Azure Key Vault kurtarma genel bakış.
Kullanıcı tarafından atanan yönetilen bir kimlik oluşturun ve anahtar kasasına erişim izni verin.
AKS kümenizin yönetilen kaynak grubunda kullanıcı tarafından atanan bir yönetilen kimlik oluşturun:
az identity create --name <identity-name> --resource-group <node-resource-group>
Kimlik kimliklerini alın ve bunları değişkenlerde depolayın:
uai_id=$(az identity show --name <identity-name> --resource-group <node-resource-group> --query id -o tsv)
uai_principal_id=$(az identity show --ids "$uai_id" --query principalId -o tsv)
Elastik SAN birim grubu için müşteri tarafından yönetilen şifreleme anahtarlarını etkinleştirdiğinizde, anahtarı içeren anahtar kasasına erişimi yetkilendirmek için yönetilen bir kimlik belirtmeniz gerekir.
Anahtar kasanız erişim ilkeleri kullanıyorsa yönetilen kimlik için anahtar izinlerini ayarlayın. Kasanız Azure RBAC kullanıyorsa, bunun yerine eşdeğer bir rol atayın.
az keyvault set-policy --name <key-vault-name> --resource-group <resource-group-name> --object-id $uai_principal_id --key-permissions get wrapKey unwrapKey
Anahtar ekleme
Anahtarı eklemeden önce Key Vault Şifreleme Yetkilisi rolüne sahip olduğunuzdan emin olun.
Vault URI'sini alın ve bir değişkene kaydedin.
vault_uri=$(az keyvault show --name <key-vault-name> --resource-group <resource-group-name> --query "properties.vaultUri" -o tsv)
Şifreleme anahtarı oluşturma:
az keyvault key create --name <key-name> --vault-name <key-vault-name> --kty RSA --size 2048
StorageClass oluşturma
gibi storageclass.yamlbir YAML bildirim dosyası oluşturun. Önceki adımlarda yer alan adları ve değişkenleri kullanın.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azuresan-csi-encrypted
provisioner: san.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
parameters:
encryption.keyvaulturi: "${vault_uri}"
encryption.keyname: <key-name>
encryption.identity: "${uai_id}"
StorageClass'ı oluşturmak için bildirimi uygulayın.
kubectl apply -f storageclass.yaml
Kalıcı birim talebi oluştur
gibi acstor-pvc.yamlbir YAML bildirim dosyası oluşturun.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-san-encrypted
spec:
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: azuresan-csi-encrypted
PVC'yi oluşturmak için manifesti uygulayın.
kubectl apply -f acstor-pvc.yaml
Bir pod dağıtımı gerçekleştir
gibi acstor-pod.yamlbir YAML bildirim dosyası oluşturun.
apiVersion: v1
kind: Pod
metadata:
name: pod-san-encrypted
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- name: pod-san-encrypted
image: mcr.microsoft.com/azurelinux/busybox:1.36
command:
- "/bin/sh"
- "-c"
- set -euo pipefail; trap exit TERM; while true; do echo "$(date)" >> /mnt/san/outfile; sleep 1; done
volumeMounts:
- name: persistent-storage-encrypted
mountPath: /mnt/san
volumes:
- name: persistent-storage-encrypted
persistentVolumeClaim:
claimName: pvc-san-encrypted
Podu dağıtmak için bildirimi uygulayın.
kubectl apply -f acstor-pod.yaml
Bu örneğe benzer bir çıktı görmeniz gerekir:
pod/pod-san-encrypted created
Birim grubundaki şifrelemeyi doğrulayın
Kalıcı birimden (PV) Elastik SAN birim tutamacını alın:
kubectl get pv <pv-name> -o jsonpath='{.spec.csi.volumeHandle}'
Birim grubu ayrıntılarını almak için birim tutamacından kaynak grubu, Elastik SAN adı ve birim grubu adını kullanın:
az elastic-san volume-group show --resource-group <resource-group-name> --elastic-san-name <elastic-san-name> --name <volume-group-name> --output json
Şifrelenmiş birimde okuma ve yazma işlemlerini doğrulayın:
kubectl exec pod-san-encrypted -- sh -c "echo 'testing encrypted storage' > /mnt/san/test-encryption.txt && cat /mnt/san/test-encryption.txt"