Halaman ini memandu Anda cara mengelola akses ke bucket penyimpanan dalam project yang terisolasi dari internet Google Distributed Cloud (GDC), sehingga orang yang tepat memiliki izin yang tepat. Dokumen ini mencakup prasyarat dan langkah-langkah untuk mendapatkan dan memberikan akses akun pengguna dan akun layanan menggunakan binding peran dan peran bawaan. Informasi ini memungkinkan Anda mengontrol akses ke sumber daya penyimpanan secara efektif serta menjaga keamanan dan efisiensi operasional.
Halaman ini ditujukan bagi audiens seperti administrator IT dalam grup operator infrastruktur atau developer dalam grup operator aplikasi yang mengelola setelan akses untuk bucket penyimpanan di lingkungan air-gapped GDC. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Audiens untuk GDC yang terisolasi dari internet.
Sebelum memulai
Namespace project mengelola resource bucket di server Management API. Anda harus memiliki project untuk menggunakan bucket dan objek.
Memberikan akses bucket
Anda dapat memberikan akses bucket kepada pengguna atau akun layanan lain dengan membuat dan menerapkan RoleBinding dengan Peran yang telah ditentukan sebelumnya di server Management API.
Peran yang telah ditetapkan
project-bucket-object-viewer: Peran ini memungkinkan pengguna mencantumkan semua bucket dalam project, mencantumkan objek dalam bucket tersebut, serta membaca objek dan metadata objek. Anda tidak dapat melakukan operasi tulis pada objek. Misalnya: mengupload, menimpa, menghapus. Memiliki akses hanya baca pada bucket zona ganda dalam organisasi dan projectnya, serta akses hanya baca pada objek dalam bucket tersebut.
project-bucket-object-admin: Izin ini memungkinkan pengguna mencantumkan semua bucket dalam project, serta melakukan operasi tulis dan baca pada objek. Misalnya: mengupload, menimpa, menghapus. Memiliki akses hanya baca pada bucket zona ganda dalam organisasi dan projectnya, serta akses baca-tulis pada objek dalam bucket tersebut.
project-bucket-admin: Peran ini memungkinkan pengguna mengelola semua bucket dalam namespace yang diberikan, serta semua objek dalam bucket tersebut. Memiliki akses hanya baca pada bucket zona ganda dalam organisasi dan projectnya, serta akses baca-tulis pada objek dalam bucket tersebut.
Untuk melihat daftar lengkap izin yang diberikan untuk peran sebelumnya, lihat bagian izin peran bawaan.
Anda harus memiliki peran Project IAM Admin untuk project tersebut agar dapat membuat binding peran di project tersebut. Berikut adalah contoh pembuatan resource RoleBinding yang memberikan akses ke pengguna dan akun layanan:
Buat file YAML di sistem Anda, seperti
rolebinding-object-admin-all-buckets.yaml.# Example file name: # rolebinding-object-admin-all-buckets.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: PROJECT_NAMESPACE name: readwrite-all-buckets roleRef: kind: Role name: project-bucket-object-admin apiGroup: rbac.authorization.k8s.io subjects: - kind: ServiceAccount namespace: PROJECT_NAMESPACE name: SA_NAME - kind: User namespace: PROJECT_NAMESPACE name: bob@example.com apiGroup: rbac.authorization.k8s.io # Could be bob or bob@example.com based on your organization settings.Ganti kode berikut:
PROJECT_NAMESPACE: nama namespace projectSA_NAME: nama akun layanan
Terapkan file YAML:
kubectl apply \ -f rolebinding-object-admin-all-buckets.yaml
Mendapatkan kredensial akses bucket
Setelah Anda memberikan akses ke bucket, kredensial akses akan dibuat di Secret.
Format nama rahasia adalah object-storage-key-STORAGE_CLASS-SUBJECT_TYPE-SUBJECT_HASH.
- Nilai untuk
STORAGE_CLASSadalah:stduntuk kelas penyimpananStandard.
- Nilai untuk
SUBJECT_TYPEadalah:useruntuk Pengguna.sauntuk ServiceAccount.
SUBJECT_HASHadalah hash SHA256 berenkode base32 dari nama subjek.
Sebagai contoh, pengguna bob@foo.com memiliki dua rahasia bernama:
object-storage-key-std-user-oy6jdqd6bxfoqcecn2ozv6utepr5bgh355vfku7th5pmejqubdja
Mendapatkan akses pengguna
Untuk subjek pengguna, Secret berada di namespace object-storage-access-keys
di server Management API.
Jalankan perintah berikut untuk menemukan nama secret:
kubectl auth can-i --list --namespace object-storage-access-keys | grep "object-storage-key-"Anda akan menerima output yang mirip dengan berikut ini:
secrets [] [object-storage-key-std-user-oy6jdqd6bxfoqcecn2ozv6utepr5bgh355vfku7th5pmejqubdja] [get]Dapatkan konten secret yang sesuai untuk mengakses bucket di kelas penyimpanan
Standard:kubectl get -o yaml --namespace object-storage-access-keys secret object-storage-key-std-user-oy6jdqd6bxfoqcecn2ozv6utepr5bgh355vfku7th5pmejqubdjaAnda akan menerima output yang mirip dengan berikut ini:
data: access-key-id: MEhYM08wWUMySjcyMkVKTFBKRU8= create-time: MjAyMi0wNy0yMiAwMTowODo1OS40MTQyMTE3MDMgKzAwMDAgVVRDIG09KzE5OTAuMzQ3OTE2MTc3 secret-access-key: Ump0MVRleVN4SmhCSVJhbmlnVDAwbTJZc0IvRlJVendqR0JuYVhiVA==Dekode ID kunci akses dan kunci rahasia:
echo "MEhYM08wWUMySjcyMkVKTFBKRU8=" | base64 -d \ && echo \ && echo "Ump0MVRleVN4SmhCSVJhbmlnVDAwbTJZc0IvRlJVendqR0JuYVhiVA==" | base64 -dAnda akan menerima output yang mirip dengan berikut ini:
0HX3O0YC2J722EJLPJEO Rjt1TeySxJhBIRanigT00m2YsB/FRUzwjGBnaXbTIkuti bagian Mengonfigurasi gdcloud CLI dengan informasi yang dihasilkan.
Mendapatkan akses akun layanan
Untuk subjek akun layanan (SA), temukan nama secret dari cluster pengguna.
Untuk class penyimpanan standar, jalankan perintah berikut untuk mendapatkan nama secret:
kubectl get -n=<PROJECT-NAME> serviceaccount <SA-NAME> -o json | jq -r '.secrets[] | select(.name | test("object-storage-key-std"))'Kemudian, Anda dapat memeriksa nama secret yang tercantum secara manual atau menggunakan
grepuntuk menemukanobject-storage-key-(std|nl). Untuk opsi terakhir, jalankan perintah berikut:kubectl get -n=<PROJECT-NAME> serviceaccount <SA-NAME> -o=jsonpath='{.secrets}{"\n"}' | grep object-storage-key-(std|nl)Anda dapat mereferensikan Secret di pod sebagai variabel lingkungan atau file.
Izin peran preset
Peran bawaan tersedia di server API global untuk akses administratif dan operasional ke bucket zona ganda. Peran ini juga memberikan akses ke bucket tingkat zona, tetapi hanya jika resource IAMRoleBinding digunakan, bukan resource RoleBinding atau ClusterRoleBinding. Untuk mengetahui informasi selengkapnya tentang binding peran, lihat Memberikan dan mencabut akses.
izin project-bucket-object-viewer
Peran ini memberikan izin untuk mendapatkan dan mencantumkan objek serta metadata objek di bucket.
Daftar semua izin penyimpanan objek yang diberikan oleh Role
project-bucket-object-viewer adalah sebagai berikut:
Izin Bucket API:
- get
- list
- watch
Izin penyimpanan objek S3:
- GetObject
- GetObjectAcl
- GetObjectLegalHold
- GetObjectRetention
- GetObjectTagging
- GetObjectVersion
- GetObjectVersionTagging
- ListBucket
- ListBucketVersions
- ListBucketMultipartUploads
- ListMultipartUploadParts
Izin project-bucket-object-admin
Peran ini memberikan izin untuk menempatkan dan menghapus objek, serta versi dan
tag objek dalam bucket. Selain itu, peran ini juga memberikan semua izin di
project-bucket-object-viewer.
Daftar semua izin penyimpanan objek tambahan yang diberikan Role adalah sebagai berikut:
Izin penyimpanan Objek S3:
- AbortMultipartUpload
- DeleteObject
- DeleteObjectTagging
- DeleteObjectVersion
- DeleteObjectVersionTagging
- PutObject
- PutObjectTagging
- PutObjectVersionTagging
- PutOverwriteObject
- RestoreObject
izin project-bucket-admin
Peran ini memberikan izin untuk membuat, mengupdate, atau menghapus resource Bucket di
namespace project. Selain itu, peran ini juga memberikan semua izin di
project-bucket-object-admin.
Berikut adalah daftar izin tambahan yang diberikan Role:
Izin Bucket API:
- Buat
- Perbarui
- Hapus