Penyimpanan objek perangkat dengan air gap Google Distributed Cloud (GDC) disediakan oleh OTS (ONTAP Select). OTS memiliki sistem pengelolaan pengguna penyimpanan objeknya sendiri. Setiap kredensial pengguna penyimpanan objek OTS
disimpan sebagai secret di cluster.
Dokumen ini menjelaskan langkah-langkah untuk merotasi kredensial pengguna penyimpanan objek OTS
. Ganti kredensial pengguna penyimpanan objek dalam situasi berikut:
- rotasi kunci yang dijadwalkan secara rutin untuk merotasi semua kunci pengguna.
- mengurangi eksposur utama. Anda harus mengganti kunci pengguna yang terekspos sesegera mungkin.
Sebelum memulai
Selesaikan langkah-langkah berikut:
- Pastikan Anda memenuhi prasyarat laptop.
- Pastikan Anda dapat login ke cluster OTS dan menjalankan perintah CLI
vserver object-store-server
. - Pastikan Anda dapat login sebagai administrator ke cluster infrastruktur dan cluster pengelolaan menggunakan
kubectl
.
Menerjemahkan UID
Setiap pengguna penyimpanan objek memiliki kunci akses dan kunci rahasia yang disimpan sebagai secret Kubernetes dan digunakan oleh workload Kubernetes untuk mengakses penyimpanan objek backend. Mengganti kunci pengguna mencakup memperbarui semua rahasia.
Anda bisa mendapatkan daftar pengguna penyimpanan objek dengan login ke salah satu dari tiga node menggunakan:
vserver object-store-server user show
Outputnya adalah daftar UID dan akan terlihat seperti:
[
"root",
"k8ssa_gpc-system_inventory-export-images",
"k8ssa_gpc-system_inventory-export-hardware",
"k8su_test-user@example.com"
]
Ada tiga jenis pengguna:
UID | Jenis pengguna | Nama rahasia | Namespace rahasia |
---|---|---|---|
root | Administrator sistem | objectstorage-tenant-bucket-controller-standard-system-s3-sa | gpc-system |
objectstorage-tenant-bucket-controller-standard-user-s3-sa | |||
objectstorage-tenant-bucket-controller-nearline-user-s3-sa | |||
k8ssa_<namespace>_<sa> | Akun layanan Kubernetes | object-storage-key-std-sa-<encoded-sa> | <namespace> |
k8su_<username> | Pengguna Kubernetes | object-storage-key-std-user-<encoded-username> | object-storage-access-keys |
Pengguna root
memiliki tiga rahasia yang identik, yang mencerminkan struktur Pusat
Data, yang mencakup beberapa kelas penyimpanan dan kategori tenant. Sebaliknya, Appliance hanya memiliki satu tingkat penyimpanan objek. Ketiga
secret yang terkait dengan pengguna root harus diubah secara bersamaan.
Identifikasi pengguna (UID), tidak termasuk pengguna root
, harus mematuhi format k8ssa_<namespace>_<sa>
atau k8su_<username>
. Dapatkan <encoded-sa>
atau <encoded-username>
:
echo -n 'UID_SUFFIX' | shasum -a 256 | cut -d " " -f 1 | xxd -r -p | base32 | awk '{print tolower($0)}' | sed 's/=*$//g'
Ganti UID_SUFFIX
dengan <sa>
di UID, dan
Anda akan mendapatkan <encoded-sa>
.
Ganti UID_SUFFIX
dengan <username>
di UID,
dan Anda akan mendapatkan <encoded-username>
.
Merotasi kunci pengguna
Login ke cluster OTS.
Mendapatkan daftar UID pengguna penyimpanan objek.
vserver object-store-server user show
Hasilnya adalah daftar UID. Contoh dapat ditemukan di Terjemahkan UID. Ulangi langkah-langkah berikut untuk setiap UID dalam daftar.
Dapatkan kunci akses lama dan kunci rahasia untuk pengguna target.
set -privilege advanced vserver object-store-server user show -user UID
Ganti
UID
dengan UID pengguna target.Buat kunci akses dan kunci rahasia baru untuk pengguna target di penyimpanan objek. Kunci lama dan baru akan ada bersamaan setelah langkah ini, dan keduanya dapat digunakan untuk akses.
vserver object-store-server user regenerate-keys -vserver root-admin -user UID
Perbarui secret Kubernetes dengan kunci akses dan kunci rahasia baru. Anda hanya perlu memperbarui secret di cluster infra root atau cluster pengelolaan, dan secret akan di-propagasikan ke cluster lain jika diperlukan.
kubectl --kubeconfig KUBECONFIG patch secret -n SECRET_NAMESPACE SECRET_NAME --type='json' -p='[{"op": "replace", "path": "/data/access-key-id", "value": "'"$(echo -n "ACCESS_KEY" | base64)"'"}, {"op": "replace", "path": "/data/secret-access-key", "value": "'"$(echo -n "ACCESS_KEY" | base64)"'"}]'
Ganti kode berikut:
KUBECONFIG
: jalur ke kubeconfig. Server API harus berupa server API bidang kontrol untuk penggunaroot
; jika tidak, server API harus berupa server API pengelolaan.SECRET_NAME
: nama rahasia untuk pengguna, yang dapat berasal dari bagian UID Terjemahan. Jika pengguna memiliki beberapa secret Kubernetes (yaitu,root
user), ganti dengan setiap nama rahasia dan jalankan perintah.SECRET_NAMESPACE
: namespace rahasia untuk pengguna, yang dapat diperoleh dari bagian UID Terjemahan.ACCESS_KEY
: kunci akses baru yang dibuat pada langkah sebelumnya.SECRET_KEY
: kunci rahasia baru yang dibuat pada langkah sebelumnya.
Workload yang menggunakan secret harus diimplementasikan untuk diperbarui secara otomatis. Jika tidak, Anda harus memulai ulang beban kerja untuk mencerminkan perubahan pada secret.
Misalnya, untuk pengguna
root
, Anda perlu memulai ulang workload berikut di cluster infra:kubectl --kubeconfig KUBECONFIG rollout restart deployment obj-bucket-cm-backend-controller -n obj-system
Validasi
Ikuti langkah-langkah membuat bucket dan mengupload dan mendownload objek Object Storage untuk membuat bucket baru dan memberikan akses menggunakan RBAC. Rotasi kunci penyimpanan objek selesai jika bucket berhasil dibuat dan subjek memiliki izin yang diperlukan untuk mengaksesnya.