ack-secret-manager memungkinkan Anda mengimpor atau menyinkronkan rahasia dari Key Management Service (KMS) ke Container Service for Kubernetes (ACK) sebagai Kubernetes Secrets. Komponen ini digunakan untuk menyimpan informasi sensitif di dalam kluster dan membantu meningkatkan kompatibilitas antara aplikasi Anda dan Secrets Manager.
Pertimbangan keamanan
Informasi rahasia KMS sering disimpan dalam file agar aplikasi dapat mengambilnya. Hal ini menimbulkan masalah kompatibilitas dengan pengambilan langsung rahasia dari KMS Secrets Manager. Komponen ack-secret-manager dapat menyelesaikan masalah ini. Sebelum menggunakan komponen ini, evaluasi risiko keamanan berikut:
Penyerang dapat mengeksploitasi kerentanan CVE pada aplikasi untuk menjelajahi direktori kluster dan mengakses rahasia melalui sistem file.
Konfigurasi titik henti debug yang tidak tepat atau izin log berlebihan dapat mengekspos rahasia. Hindari merujuk rahasia melalui variabel lingkungan untuk mengurangi risiko keamanan.
Aktifkan sinkronisasi rahasia sesuai prinsip hak istimewa minimal untuk membatasi akses.
Jika tidak perlu menyimpan rahasia untuk aplikasi, gunakan RRSA untuk memberi otorisasi pod mengakses layanan cloud. Dapatkan rahasia secara langsung melalui operasi GetSecretValue.
Prasyarat
Kluster ACK harus dibuat di wilayah yang sama dengan rahasia KMS yang ingin digunakan. Untuk informasi lebih lanjut, lihat Buat Kluster ACK yang Dikelola, Buat Kluster Terdaftar ACK One, dan Buat Kluster ACK Serverless.
Langkah 1: Instal ack-secret-manager
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih .
Di halaman Helm, klik Deploy. Di bagian Chart dari panel Deploy, pilih ack-secret-manager. Gunakan nilai default untuk parameter lainnya, lalu klik Next.
Di pesan konfirmasi Confirm, informasi menunjukkan bahwa chart akan diinstal di namespace kube-system secara default. Klik Yes. Untuk menggunakan aplikasi kustom dan namespace kustom, konfigurasikan parameter Application Name dan Namespace di langkah Basic Information.
Di langkah Parameters, pilih versi chart terbaru, konfigurasikan parameter lainnya, lalu klik OK.
Untuk mengaktifkan RRSA untuk otentikasi, atur parameter rrsa.enable ke true.

Untuk mengaktifkan sinkronisasi rahasia terjadwal, konfigurasikan parameter berikut:

command.disablePolling: Menentukan apakah round-robin untuk rahasia dinonaktifkan. Nilai false mengaktifkan round-robin.command.pollingInterval: Frekuensi sinkronisasi. Nilai 120s menentukan sinkronisasi setiap 2 menit.
Untuk membatasi rahasia di kluster dengan banyak ExternalSecrets, konfigurasikan parameter berikut:

command.maxConcurrentKmsSecretPulls: Jumlah maksimum rahasia KMS yang disinkronkan per detik. Nilai default adalah 10.Untuk menentukan alamat endpoint KMS, konfigurasikan parameter kmsEndpoint.

command.kmsEndpoint: Gateway bersama atau khusus untuk KMS.
Setelah instalasi, Anda akan dialihkan ke halaman ack-secret-manager. Periksa sumber daya yang dibuat untuk memastikan instalasi berhasil.

Langkah 2: Otorisasi ack-secret-manager untuk mengakses rahasia KMS
Anda perlu membuat SecretStore untuk memberi otorisasi ack-secret-manager mengakses rahasia KMS. Tanpa otorisasi ini, ack-secret-manager tidak dapat mengimpor atau menyinkronkan rahasia dari KMS ke kluster ACK Anda. Gunakan metode berikut untuk memberikan otorisasi kepada ack-secret-manager dalam mengakses rahasia KMS:
Gunakan RRSA untuk Memberikan Izin: Metode ini berlaku untuk kluster ACK managed cluster dan kluster ACK Serverless yang menjalankan Kubernetes 1.22 atau lebih baru.
Berikan Izin ke Peran RAM Pekerja Kluster: Metode ini berlaku untuk kluster ACK managed cluster, kluster ACK dedicated cluster, dan kluster terdaftar.
Tentukan Pasangan AccessKey untuk Mengasumsikan Peran RAM: Metode ini berlaku untuk semua jenis kluster ACK.
Gunakan RRSA untuk memberikan izin
Metode ini berlaku untuk kluster ACK managed clusters dan kluster ACK Serverless yang menjalankan Kubernetes 1.22 atau lebih baru. Fitur RRSA mencegah kebocoran rahasia karena tidak memerlukan pasangan AccessKey.
Aktifkan fitur RRSA untuk kluster ACK di Konsol ACK. Ini memungkinkan pembuatan penyedia identitas (IdP). Lihat Aktifkan RRSA.
Buat peran RAM dengan entitas tepercaya sebagai penyedia identitas untuk ack-secret-manager.
Atur Principal Type ke Identity Provider. Lihat Buat Peran RAM untuk Penyedia Identitas OIDC.
Parameter
Deskripsi
Identity Provider Type
Pilih OIDC.
Identity Provider
Pilih ack-rrsa-<cluster_id>. <cluster_id> adalah ID kluster Anda.
Condition
oidc:iss: Pertahankan pengaturan default.
oidc:aud: Pertahankan pengaturan default.
oidc:sub: Anda harus menambahkan kondisi ini secara manual.
Kunci: Pilih oidc:sub.
Operator: Pilih StringEquals.
Nilai: Masukkan system:serviceaccount:<namespace>:<serviceAccountName>. Ganti
<namespace>dengan namespace aplikasi Anda. Ganti<serviceAccountName>dengan nama akun layanan. Dalam contoh ini,system:serviceaccount:kube-system:ack-secret-managerditentukan.CatatanJika Anda menginstal ack-secret-manager di namespace selain
kube-system, tentukan namespace aktual.
Buat kebijakan RAM kustom dan lampirkan ke peran RAM.
Buat kebijakan RAM kustom yang memberi otorisasi ack-secret-manager untuk mengimpor rahasia KMS. Lihat Buat Kebijakan Kustom.
{ "Action": [ "kms:GetSecretValue", "kms:Decrypt" ], "Resource": [ "*" ], "Effect": "Allow" }Lampirkan kebijakan ke peran RAM. Lihat Berikan Izin ke Peran RAM.
Buat SecretStore untuk menentukan metode autentikasi.
Ubah blok kode berikut sesuai deskripsi. Buat file bernama secretstore-rrsa.yaml berdasarkan blok kode yang dimodifikasi.
{accountID}: Ganti dengan ID Akun Alibaba Cloud.{clusterID}: Ganti dengan ID kluster Anda.{roleName}: Ganti dengan nama peran RAM yang Anda buat di Langkah 2.apiVersion: 'alibabacloud.com/v1alpha1' kind: SecretStore metadata: name: scdemo-rrsa spec: KMS: KMSAuth: oidcProviderARN: "acs:ram::{accountID}:oidc-provider/ack-rrsa-{clusterID}" ramRoleARN: "acs:ram::{accountID}:role/{roleName}"
Jalankan perintah berikut untuk membuat SecretStore:
kubectl apply -f secretstore-rrsa.yaml
Berikan izin ke peran RAM pekerja kluster
Metode ini berlaku untuk kluster ACK managed cluster, kluster ACK dedicated cluster, dan kluster terdaftar. Tidak berlaku untuk kluster ACK Serverless.
Buat kebijakan RAM kustom. Lihat Buat Kebijakan Kustom.
{ "Action": [ "kms:GetSecretValue", "kms:Decrypt" ], "Resource": [ "*" ], "Effect": "Allow" }Lampirkan kebijakan kustom ke peran RAM pekerja kluster. Lihat Berikan Izin ke Peran RAM Pekerja.
Tentukan pasangan AccessKey yang digunakan untuk mengasumsikan peran RAM
Metode ini berlaku untuk semua jenis kluster ACK.
Buat peran RAM dengan entitas tepercaya sebagai akun Alibaba Cloud untuk ack-secret-manager. Lihat Buat Peran RAM untuk Akun Alibaba Cloud Tepercaya.
CatatanSaat menentukan akun tepercaya, pilih Current Account.
Buat kebijakan RAM kustom dan lampirkan ke peran RAM yang dibuat sebelumnya.
Buat kebijakan RAM kustom yang memberikan izin untuk mengakses rahasia KMS. Lihat Buat Kebijakan Kustom.
{ "Action": [ "kms:GetSecretValue", "kms:Decrypt" ], "Resource": [ "*" ], "Effect": "Allow" }Lampirkan kebijakan ke peran RAM. Lihat Berikan Izin ke Peran RAM.
Buat kebijakan RAM kustom untuk mengasumsikan peran RAM dan lampirkan ke pengguna RAM.
Buat kebijakan RAM kustom yang berisi izin untuk mengasumsikan peran RAM. Lihat Buat Kebijakan Kustom.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Resource": "acs:ram:*:<account-id>:role/<role-name>" } ], "Version": "1" }Bidang
Resourcemenentukan ARN dari peran RAM. Ganti<account-id>dengan ID akun Alibaba Cloud dan<role-name>dengan nama peran RAM. Lihat Bagaimana Cara Melihat ARN dari Peran RAM?Lampirkan kebijakan ke pengguna RAM. Lihat Berikan Izin ke Pengguna RAM.
Buat Secret untuk menyimpan pasangan AccessKey dari pengguna RAM.
Ganti pasanganAccessKey dalam blok kode berikut dengan pasangan AccessKey sebenarnya yang dikodekan dalam Base64. Buat file bernama ramuser.yaml berdasarkan blok kode yang dimodifikasi.
apiVersion: v1 data: accessKey: {AccessKey ID encoded in Base64} accessKeySecret: {AccessKey secret encoded in Base64} kind: Secret metadata: name: ramuser namespace: kube-system type: OpaqueJalankan perintah berikut untuk membuat Secret ramuser:
kubectl apply -f ramuser.yaml
Buat SecretStore untuk menentukan metode autentikasi.
Ubah blok kode berikut sesuai deskripsi. Buat file bernama secretstore-ramrole.yaml berdasarkan blok kode yang dimodifikasi.
{accountID}: Ganti dengan ID Akun Alibaba Cloud.{roleName}: Ganti dengan nama peran RAM yang Anda buat di Langkah 1.{secretName}: Ganti dengan nama Secret yang menyimpan pasangan AccessKey.{secretNamespace}: Ganti dengan namespace dari Secret yang menyimpan pasangan AccessKey.{secretKey}: Ganti dengan kunci dari Secret yang menyimpan pasangan AccessKey.{roleSessionName}: Ganti dengan nama sesi peran. Anda dapat menentukan string kustom.apiVersion: 'alibabacloud.com/v1alpha1' kind: SecretStore metadata: name: scdemo-ramrole spec: KMS: KMSAuth: accessKey: name: {secretName} namespace: {secretNamespace} key: {secretKey} accessKeySecret: name: {secretName} namespace: {secretNamespace} key: {secretKey} ramRoleARN: "acs:ram::{accountID}:role/{roleName}" ramRoleSessionName: {roleSessionName}
Jalankan perintah berikut untuk membuat SecretStore:
kubectl apply -f secretstore-ramrole.yaml
Langkah 3: Tentukan detail sinkronisasi
Setelah memberi otorisasi ack-secret-manager untuk mengakses rahasia KMS, buat ExternalSecret untuk menentukan detail rahasia KMS yang ingin diakses. Dengan cara ini, rahasia KMS dapat disinkronkan ke Kubernetes Secret di kluster Anda.
Namespace dan nama Kubernetes Secret harus sama dengan namespace dan nama ExternalSecret.
Buat ExternalSecret.
Ubah blok kode berikut sesuai deskripsi. Buat file bernama external.yaml berdasarkan blok kode yang dimodifikasi.
Parameter
Deskripsi
{Nama rahasia KMS}Wajib. Ganti nilainya dengan nama rahasia KMS yang ingin Anda akses.
{Kunci rahasia Kubernetes}Wajib. Ini adalah kumpulan pasangan kunci-nilai. Data rahasia KMS disimpan sebagai pasangan kunci-nilai dalam Kubernetes Secret. Anda harus mengganti
{Kunci rahasia Kubernetes}dengan kunci dari pasangan kunci-nilai yang sesuai.{Tahap versi rahasia KMS}Opsional. Ganti nilainya dengan label tahap versi rahasia KMS alih-alih nomor versi rahasia KMS. Contoh: ACSCurrent.
Rahasia RDS, rahasia PolarDB, rahasia Redis/Tair, rahasia RAM, dan rahasia ECS hanya dapat mengambil versi rahasia yang sesuai dengan parameter ACSPrevious dan ACSCurrent.
Untuk menentukan nomor versi rahasia KMS untuk sinkronisasi, Anda dapat mengganti bidang
versionStagedalam template berikut denganversionId, dan isi nomor versi rahasia KMS.Rahasia RDS, rahasia PolarDB, rahasia Redis/Tair, rahasia RAM, dan rahasia ECS tidak mendukung penentuan parameter VersionId. Pengaturan parameter ini diabaikan.
Untuk informasi lebih lanjut tentang versi rahasia dan status versi, lihat versi rahasia dalam Elemen rahasia.
{Alamat endpoint layanan KMS}Opsional. Jika Anda ingin menentukan endpoint permintaan KMS, ganti parameter ini dengan alamat endpoint yang sesuai.
Gateway bersama dan gateway khusus untuk KMS didukung dan dapat dikonfigurasi berdasarkan kebutuhan bisnis Anda.
Parameter ini merupakan konfigurasi tingkat rahasia, yang memungkinkan Anda mengonfigurasi alamat endpoint secara khusus untuk rahasia KMS. Konfigurasi global juga didukung. Untuk informasi lebih lanjut tentang deskripsi konfigurasi, lihat Konfigurasikan alamat endpoint KMS.
Setelah parameter ini diatur, konfigurasi global dan konfigurasi default akan digantikan, dan alamat endpoint untuk permintaan rahasia adalah nilai dari parameter ini.
{Nama SecretStore}Opsional. Ganti nilainya dengan nama
SecretStoreyang Anda buat.SecretStoredigunakan untuk memberi otorisasi ack-secret-manager mengakses rahasia KMS.CatatanAnda dapat meninggalkan parameter ini kosong jika komponen diotorisasi oleh peran RAM pekerja.
{namespace penyimpanan rahasia}Opsional. Ganti nilainya dengan namespace dari
SecretStoreyang Anda buat.CatatanAnda dapat meninggalkan parameter ini kosong jika komponen diotorisasi oleh peran RAM pekerja.
apiVersion: 'alibabacloud.com/v1alpha1' kind: ExternalSecret metadata: name: esdemo spec: provider: kms # Secara default, jenis Layanan Alibaba Cloud yang akan disinkronkan adalah KMS. Saat menyinkronkan rahasia KMS, bidang ini dapat dibiarkan kosong atau diberi nilai kms. data: # Tidak diperlukan konfigurasi tambahan untuk sumber data. - key: {Nama rahasia KMS} name: {Kunci rahasia Kubernetes} versionStage: {Tahap versi rahasia KMS} secretStoreRef: # Parameter ini tidak diperlukan saat komponen diotorisasi melalui peran RAM pekerja. name: {Nama SecretStore} namespace: {Namespace SecretStore} - key: {Nama rahasia KMS} name: {Kunci rahasia Kubernetes} versionStage: {Tahap versi rahasia KMS} kmsEndpoint: {Alamat endpoint layanan KMS}Jalankan perintah berikut untuk membuat ExternalSecret:
kubectl apply -f external.yaml
Jalankan perintah berikut untuk memeriksa apakah Kubernetes Secret ada:
kubectl get secret esdemoJika Kubernetes Secret ada, rahasia KMS telah disinkronkan ke kluster Anda.
Konfigurasi lanjutan ack-secret-manager
Sinkronkan rahasia KMS lintas akun Alibaba Cloud
Jika instans KMS yang ingin Anda akses berada di Akun Alibaba Cloud A, tetapi kluster ACK yang digunakan berada di Akun Alibaba Cloud B, Anda perlu menggunakan komponen ack-secret-manager untuk menyinkronkan rahasia KMS ke kluster lintas akun Alibaba Cloud. Bagian ini menjelaskan cara menggunakan fitur RRSA untuk mengaktifkan ack-secret-manager agar dapat mengakses instans KMS di Akun Alibaba Cloud A dari kluster di Akun Alibaba Cloud B. Komponen tersebut dapat menggunakan penyedia OIDC untuk mengasumsikan peran RAM yang dimiliki oleh Akun Alibaba Cloud A. Dengan cara ini, komponen tersebut dapat mengakses instans KMS di Akun Alibaba Cloud A dan mengimpor instans KMS tersebut ke kluster di Akun Alibaba Cloud B.
Konfigurasikan izin untuk Akun Alibaba Cloud A
Gunakan Akun Alibaba Cloud A untuk membuat peran RAM dengan entitas tepercaya sebagai Akun Alibaba Cloud B. Lihat Buat Peran RAM untuk Akun Alibaba Cloud Tepercaya.
PentingSaat memilih akun tepercaya, pilih Other Account lalu masukkan ID Akun Alibaba Cloud B.
Buat kebijakan RAM kustom yang memberikan izin untuk mengakses rahasia KMS.
Blok kode berikut menunjukkan isi dari kebijakan tersebut. Lihat Buat Kebijakan Kustom.
{ "Action": [ "kms:GetSecretValue", "kms:Decrypt" ], "Resource": [ "*" ], "Effect": "Allow" }Lampirkan kebijakan ke peran RAM. Lihat Berikan Izin ke Peran RAM.
Konfigurasikan izin untuk Akun Alibaba Cloud B
Aktifkan fitur RRSA untuk kluster ACK di Konsol ACK. Ini memungkinkan pembuatan IdP untuk kluster Anda. Lihat Aktifkan RRSA.
CatatanSaat menginstal ack-secret-manager, atur parameter rrsa.enable ke true untuk mengaktifkan RRSA.
Buat peran RAM dengan entitas tepercaya sebagai penyedia identitas untuk ack-secret-manager.
Atur Principal Type ke Identity Provider. Lihat Buat Peran RAM untuk Penyedia Identitas OIDC.
Parameter
Deskripsi
Identity Provider Type
Pilih OIDC.
Identity Provider
Pilih ack-rrsa-<cluster_id>. <cluster_id> adalah ID kluster Anda.
Condition
oidc:iss: Pertahankan pengaturan default.
oidc:aud: Pertahankan pengaturan default.
oidc:sub: Anda harus menambahkan kondisi ini secara manual.
Kunci: Pilih oidc:sub.
Operator: Pilih StringEquals.
Nilai: Masukkan system:serviceaccount:<namespace>:<serviceAccountName>. Ganti
<namespace>dengan namespace aplikasi Anda. Ganti<serviceAccountName>dengan nama akun layanan. Dalam contoh ini,system:serviceaccount:kube-system:ack-secret-managerditentukan.CatatanJika Anda menginstal ack-secret-manager di namespace selain
kube-system, tentukan namespace aktual.
Buat kebijakan RAM kustom dan lampirkan kebijakan tersebut ke peran RAM yang dibuat menggunakan Akun Alibaba Cloud B.
Buat kebijakan RAM kustom yang memberi otorisasi ack-secret-manager untuk mengimpor rahasia KMS. Lihat Buat Kebijakan Kustom.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Resource": "acs:ram:*:<account-id>:role/<role-name>" # ARN dari peran RAM yang Anda buat menggunakan Akun Alibaba Cloud A. } ], "Version": "1" }Bidang
Resourcemenentukan ARN dari peran RAM. Ganti<account-id>dengan ID Akun Alibaba Cloud A dan<role-name>dengan nama peran RAM yang dibuat menggunakan Akun Alibaba Cloud A. Lihat Bagaimana Cara Melihat ARN dari Peran RAM?Lampirkan kebijakan ke peran RAM yang dibuat menggunakan Akun Alibaba Cloud B.
Buat SecretStore.
Ubah blok kode berikut sesuai deskripsi. Buat file bernama secretstore-ramrole.yaml berdasarkan blok kode yang dimodifikasi.
{ACK-accountID}: Ganti dengan ID Akun Alibaba Cloud B.{clusterID}: Ganti dengan ID kluster Anda.{ACK-roleName}: Ganti dengan nama peran RAM yang dibuat menggunakan Akun Alibaba Cloud B.{KMS-accountID}: Ganti dengan ID Akun Alibaba Cloud A.{KMS-roleName}: Ganti dengan ID Akun Alibaba Cloud B.{roleSessionName}: Ganti dengan nama sesi peran. Anda dapat menentukan string kustom.
apiVersion: 'alibabacloud.com/v1alpha1' kind: SecretStore metadata: name: scdemo-cross-account spec: KMS: KMSAuth: oidcProviderARN: "acs:ram::{ACK-accountID}:oidc-provider/ack-rrsa-{clusterID}" ramRoleARN: "acs:ram::{ACK-accountID}:role/{ACK-roleName}" remoteRamRoleARN: "acs:ram::{KMS-accountID}:role/{KMS-roleName}" remoteRamRoleSessionName: {roleSessionName}
Tentukan detail sinkronisasi. Lihat Langkah 3: Tentukan Detail Sinkronisasi.
Penguraian rahasia KMS dan penggantian kunci
Bagian berikut menjelaskan cara mengurai kunci yang ditentukan dalam rahasia JSON/YAML.
Mengurai parameter enkripsi dalam format JSON
Mengurai kunci yang ditentukan dalam JSON
Untuk mengurai rahasia KMS dalam format JSON dan menyinkronkan pasangan kunci-nilai tertentu ke Kubernetes Secret, konfigurasikan parameter jmesPath. Contoh rahasia JSON berikut disimpan di KMS Secrets Manager:
{"name":"tom","friends":[{"name":"lily"},{"name":"mark"}]}Buat ExternalSecret berdasarkan kode sampel berikut. Tentukan bidang berikut dalam parameter jmesPath:
path: Mengurai bidang JSON tertentu berdasarkan spesifikasi JMESPath. Parameter ini wajib.objectAlias: Menentukan kunci dari pasangan kunci-nilai dalam Kubernetes Secret yang disinkronkan berdasarkan bidang yang diurai.
apiVersion: 'alibabacloud.com/v1alpha1'
kind: ExternalSecret
metadata:
name: es-json-demo
spec:
provider: kms
data:
- key: {Nama rahasia KMS}
versionStage: {Tahap versi rahasia KMS}
secretStoreRef:
name: {Nama SecretStore}
namespace: {Namespace SecretStore}
jmesPath: # Mengurai beberapa bidang json
- path: "name"
objectAlias: "myname"
- path: "friends[0].name"
objectAlias: "friendname"Penguraian otomatis rahasia JSON
Jika Anda tidak mengetahui struktur data rahasia JSON tetapi perlu mengurai rahasia dan menyimpan data yang diurai dalam Kubernetes Secret, Anda dapat mengonfigurasi parameter dataProcess.extract untuk mengaktifkan penguraian otomatis rahasia JSON. Selain itu, Anda dapat mengonfigurasi parameter dataProcess.replaceRule guna menentukan aturan penggantian kunci dalam data yang diurai. Hal ini mencegah kegagalan pembuatan Kubernetes Secret akibat kunci data Secret yang tidak teratur.
Contoh rahasia JSON berikut disimpan di KMS Secrets Manager:
{"name-invalid":"lily","name-invalid/":[{"name":"mark"}]}Buat ExternalSecret berdasarkan kode sampel berikut:
apiVersion: 'alibabacloud.com/v1alpha1'
kind: ExternalSecret
metadata:
name: extract-secret
spec:
provider: kms
dataProcess:
- extract:
key: {Nama rahasia KMS}
versionStage: ACSCurrent # Versi rahasia KMS.
secretStoreRef:
name: {Nama SecretStore}
namespace: {Namespace SecretStore}
replaceRule: #Aturan untuk mengganti kunci.
- source: "^/.*d$" # Ganti kunci yang dimulai dengan garis miring (/) dan diakhiri dengan huruf kecil d dengan tom.
target: "tom"
- source: "^n.*/$" # Ganti kunci yang dimulai dengan huruf kecil n dan diakhiri dengan garis miring (/) dengan mark.
target: "mark"Mengurai parameter enkripsi dalam format YAML
Mengurai kunci yang ditentukan dalam YAML
Untuk mengurai rahasia KMS dalam format YAML dan menyinkronkan pasangan kunci-nilai tertentu ke Kubernetes Secret, konfigurasikan parameter jmesPath. Contoh rahasia YAML berikut disimpan di KMS Secrets Manager:
name: tom
friends:
- name: lily
- name: markBuat ExternalSecret berdasarkan kode sampel berikut. Tentukan bidang berikut dalam parameter jmesPath:
path: Mengurai bidang YAML tertentu berdasarkan spesifikasi JMESPath. Parameter ini wajib.objectAlias: Menentukan kunci dari pasangan kunci-nilai dalam Kubernetes Secret yang disinkronkan berdasarkan bidang yang diurai.
apiVersion: 'alibabacloud.com/v1alpha1'
kind: ExternalSecret
metadata:
name: es-json-demo
spec:
provider: kms
data:
- key: {Nama rahasia KMS}
versionStage: {Tahap versi rahasia KMS}
secretStoreRef:
name: {Nama SecretStore}
namespace: {Namespace SecretStore}
jmesPath: # Mengurai beberapa bidang dalam string yaml
- path: "name"
objectAlias: "myname"
- path: "friends[0].name"
objectAlias: "friendname"Penguraian otomatis rahasia YAML
Jika Anda tidak mengetahui struktur data rahasia YAML tetapi perlu mengurai rahasia dan menyimpan data yang diurai dalam Kubernetes Secret, Anda dapat mengonfigurasi parameter dataProcess.extract untuk mengaktifkan penguraian otomatis rahasia YAML. Selain itu, Anda dapat mengonfigurasi parameter dataProcess.replaceRule guna menentukan aturan penggantian kunci dalam data yang diurai, sehingga mencegah kegagalan pembuatan Kubernetes Secret akibat kunci data Secret yang tidak teratur.
Contoh rahasia YAML berikut disimpan di KMS Secrets Manager:
/name-invalid: lily
name-invalid/:
- name: markBuat ExternalSecret berdasarkan kode sampel berikut:
apiVersion: 'alibabacloud.com/v1alpha1'
kind: ExternalSecret
metadata:
name: extract-secret
spec:
provider: kms
dataProcess:
- extract:
key: {Nama rahasia KMS}
versionStage: ACSCurrent # Versi rahasia KMS.
secretStoreRef:
name: {Nama SecretStore}
namespace: {Namespace SecretStore}
replaceRule: # Aturan untuk mengganti kunci.
- source: "^/.*d$" # Ganti kunci yang dimulai dengan garis miring (/) dan diakhiri dengan huruf kecil d dengan tom.
target: "tom"
- source: "^n.*/$" # Ganti kunci yang dimulai dengan huruf kecil n dan diakhiri dengan garis miring (/) dengan mark.
target: "mark"Konfigurasikan alamat endpoint KMS
Anda dapat mengakses KMS melalui gateway khusus atau gateway bersama. Untuk informasi lebih lanjut tentang perbedaan antara gateway bersama dan khusus, lihat Perbedaan antara Gateway Bersama dan Khusus untuk Mengakses KMS.
Aturan Prioritas Endpoint KMS
Tipe | Bidang | Tujuan | Prioritas | Deskripsi |
Konfigurasi tingkat rahasia |
| Tentukan alamat endpoint untuk setiap rahasia KMS yang perlu diimpor. | Tertinggi | Konfigurasi ini memiliki prioritas untuk rahasia individu dan menggantikan konfigurasi global dan default. |
Konfigurasi global |
| Digunakan untuk semua permintaan KMS. | Sedang | Konfigurasi ini memberikan alamat endpoint yang digunakan oleh rahasia KMS lainnya selain konfigurasi tingkat rahasia. |
Konfigurasi default | Tidak ada | Digunakan saat alamat endpoint tidak dikonfigurasi. | Terendah | Alamat endpoint KMS default adalah |
apiVersion: "alibabacloud.com/v1alpha1"
kind: ExternalSecret
metadata:
name: esdemo
spec:
provider: kms
data:
- key: test-hangzhou # Alamat endpoint sebenarnya: Gunakan konfigurasi global jika ada. Jika tidak, gunakan konfigurasi default: kms-vpc.{region}.aliyuncs.com
name: hangzhou-vpc
versionId: v1
- key: test-hangzhou # Alamat endpoint sebenarnya: Endpoint yang ditentukan oleh bidang kmsEndpoint adalah kms.cn-hangzhou.aliyuncs.com
name: hangzhou-public
versionId: v1
kmsEndpoint: kms.cn-hangzhou.aliyuncs.comDeskripsi Konfigurasi Endpoint KMS
Tipe gateway | Tipe domain | Endpoint | Deskripsi |
Gateway khusus | Domain pribadi KMS | {kms-instance-id}.cryptoservice.kms.aliyuncs.com |
|
Gateway bersama | Domain VPC | kms-vpc.{region}.aliyuncs.com |
|
Gateway bersama | Domain publik | kms.{region}.aliyuncs.com |
|
Referensi
Untuk mengamankan Kubernetes Secrets yang disinkronkan dari rahasia KMS dan disimpan di kluster ACK, aktifkan fitur Enkripsi Secret. Lihat Gunakan KMS untuk Mengenkripsi Kubernetes Secrets.