Enkripsi data direkomendasikan untuk skenario yang memerlukan keamanan tinggi atau kepatuhan terhadap regulasi. Anda dapat menggunakan Customer Master Keys (CMK) dari Key Management Service (KMS) atau kunci yang dikelola oleh Object Storage Service (OSS) untuk mengenkripsi volume OSS di kluster ACK. Hal ini membantu memastikan privasi data dan memberi Anda kendali penuh atas data Anda.
Metode enkripsi
Enkripsi volume OSS dapat berupa enkripsi sisi server (SSE) atau enkripsi sisi klien. ACK hanya mendukung SSE.
Enkripsi sisi server: OSS mengenkripsi data sebelum menyimpannya ke disk di pusat data dan secara otomatis mendekripsinya saat Anda mengunduh objek.
Enkripsi sisi klien: Anda dapat menggunakan SDK enkripsi sisi klien untuk mengenkripsi data secara lokal sebelum mengunggahnya ke OSS.
OSS menyediakan dua metode enkripsi sisi server. Hanya satu metode enkripsi sisi server yang dapat digunakan untuk satu objek dalam satu waktu.
Menggunakan CMK dari KMS untuk enkripsi (SSE-KMS)
Gunakan CMK default: Saat mengunggah objek, atur header permintaan
X-OSS-server-side-encryptionkeKMSdan jangan menentukan ID CMK.Gunakan ID CMK tertentu: Saat mengunggah objek, atur header permintaan
X-OSS-server-side-encryptionkeKMS, dan aturX-OSS-server-side-encryption-key-idkeCMK IDAnda.
PentingPenggunaan kunci KMS dikenai biaya kecil untuk panggilan API. Untuk informasi selengkapnya, lihat Penagihan KMS 1.0.
Metode ini hemat biaya karena OSS tidak mengirimkan data melalui jaringan ke server KMS untuk enkripsi dan dekripsi.
Menggunakan kunci yang sepenuhnya dikelola oleh OSS untuk enkripsi (SSE-OSS)
Metode ini menggunakan kunci yang sepenuhnya dikelola oleh OSS, dan enkripsi merupakan atribut objek.
OSS menghasilkan dan mengelola kunci enkripsi data serta menggunakan algoritma enkripsi kuat AES-256 standar industri.
Saat mengunggah objek, atur header permintaan
X-OSS-server-side-encryptionkeAES256.
Anda dapat mengonfigurasi parameter enkripsi untuk volume OSS menggunakan tool ossfs. Pengaturan ini diterapkan saat Anda memasang volume persisten (PV).
Untuk informasi selengkapnya tentang cara mengonfigurasi dan menginstal ossfs, lihat Instal ossfs 1.0.
Prasyarat
Komponen csi-plugin dan csi-provisioner telah diinstal.
Komponen CSI terinstal secara default. Pastikan komponen tersebut tetap terinstal. Anda dapat memeriksa status instalasi pada halaman . Kami merekomendasikan untuk memutakhirkan komponen CSI ke versi terbaru.
Buat bucket. Bucket dan kluster harus berada dalam Akun Alibaba Cloud yang sama.
Untuk memasang bucket OSS dari akun berbeda, kami merekomendasikan penggunaan RRSA untuk otentikasi. Untuk informasi selengkapnya, lihat Bagaimana cara memasang bucket OSS dari akun berbeda?
Skenario 1: Gunakan CMK KMS default
Salin konten berikut ke file bernama kms-cmk-default.yaml.
apiVersion: v1 kind: PersistentVolume metadata: name: oss-csi-pv spec: capacity: storage: 5Gi accessModes: - ReadOnlyMany csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: oss-csi-pv volumeAttributes: bucket: "python" url: "oss-cn-hangzhou.aliyuncs.com" otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other" akId: "<YourAccessKey ID>" # Ganti dengan ID AccessKey Anda akSecret: "<YourAccessKey Secret>" # Ganti dengan Secret AccessKey Anda path: "/" encrypted: "kms"Parameter
Deskripsi
akIdID AccessKey
akSecretAccessKey Secret
encryptedMetode enkripsi untuk volume:
kms: Enkripsi KMS.aes256: Enkripsi AES-256.
Buat volume terenkripsi.
kubectl create -f kms-cmk-default.yamlLihat volume terenkripsi yang telah dibuat.
kubectl get pv
Skenario 2: Gunakan ID CMK KMS tertentu
1. Konfigurasi izin akses KMS
Untuk mengenkripsi objek OSS dengan CMK tertentu, Pengguna RAM atau Peran RAM yang terkait dengan AccessKey PV harus diberikan izin untuk menggunakan CMK tersebut. Untuk informasi selengkapnya, lihat Enkripsi sisi server.
Sebelum Anda memulai, pastikan Anda telah membuat Pengguna RAM atau membuat Peran RAM.
Masuk ke Konsol RAM menggunakan Akun Alibaba Cloud atau sebagai administrator RAM.
Di panel navigasi, pilih atau Role.
Temukan Pengguna RAM target dan klik Add Permissions di kolom Actions. Atau, temukan Peran RAM target dan klik Attach Policy di kolom Actions. Ikuti petunjuk di layar untuk memberikan izin. Anda dapat melampirkan kebijakan sistem AliyunKMSFullAccess atau kebijakan kustom bernama AliyunOSSEncryptCustomizedPolicy.
Izin AliyunKMSFullAccess memberikan akses luas. Untuk kontrol lebih granular, Anda dapat membuat kebijakan kustom bernama AliyunOSSEncryptCustomizedPolicy dengan konten berikut.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "acs:kms:*:141661496593****:*" // Ini memungkinkan pihak yang berwenang menggunakan semua kunci KMS di bawah Akun Alibaba Cloud ini. Untuk membatasi akses hanya ke CMK tertentu, ganti resource wildcard dengan ARN CMK tersebut. ] } ] }
2. Buat volume terenkripsi
Buat file bernama kms-cmk.yaml.
apiVersion: v1 kind: PersistentVolume metadata: name: oss-csi-pv spec: capacity: storage: 5Gi accessModes: - ReadOnlyMany csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: oss-csi-pv volumeAttributes: bucket: "python" url: "oss-cn-hangzhou.aliyuncs.com" otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other" akId: "<YourAccessKey ID>" # Ganti dengan ID AccessKey Anda akSecret: "<YourAccessKey Secret>" # Ganti dengan Secret AccessKey Anda path: "/" encrypted: "kms" kmsKeyId: "<YourCMKID>" # Ganti dengan ID CMK AndaBuat volume terenkripsi.
kubectl create -f kms-cmk.yamlLihat volume terenkripsi yang telah dibuat.
kubectl get pv
Skenario 3: Gunakan kunci yang dikelola OSS
Buat file bernama sse-oss.yaml.
apiVersion: v1 kind: PersistentVolume metadata: name: oss-csi-pv spec: capacity: storage: 5Gi accessModes: - ReadOnlyMany csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: oss-csi-pv volumeAttributes: bucket: "python" url: "oss-cn-hangzhou.aliyuncs.com" otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other" akId: "<YourAccessKey ID>" # Ganti dengan ID AccessKey Anda akSecret: "<YourAccessKey Secret>" # Ganti dengan Secret AccessKey Anda path: "/" encrypted: "aes256"Buat volume terenkripsi.
kubectl create -f sse-oss.yamlLihat volume terenkripsi yang telah dibuat.
kubectl get pv