Mengamankan akses ke resource dengan IAM
Pengguna Kubernetes dan akun layanan memerlukan izin untuk mengelola untuk resource Config Connector. Dengan Config Connector, atribut bidang kontrol dapat dikelola oleh identitas yang menggunakan Kubernetes Kontrol Akses Berbasis Peran (RBAC). Anda juga dapat merujuk Kebijakan Identity and Access Management (IAM).
Resource yang dapat merujuk ke IAMPolicy dan IAMPolicyMember tercantum dalam Referensi resource. Resource ini memiliki properti "Dapat Direferensikan oleh IAMPolicy/IAMPolicyMember".
Topik ini menjelaskan cara mengamankan akses ke resource Google Cloud menggunakan Identity and Access Management.
Sebelum memulai
Untuk menyelesaikan langkah-langkah pada halaman ini, pertama-tama instal Config Connector di cluster Anda.
Mengamankan akses bidang kontrol dengan RBAC
Dalam contoh ini, Anda akan membuat akun layanan dan memberinya izin untuk
mengelola PubSubTopic
. Akun layanan ini tidak dapat mengelola jenis
untuk resource Config Connector.
Buat file bernama
pubsub-topic-service-account.yaml
dengan konten berikut:apiVersion: v1 kind: ServiceAccount metadata: name: pubsub-topic-service-account namespace: default
Terapkan metode ini untuk membuat akun layanan
pubsub-topic-service-account
:kubectl apply -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
Mengganti
CC_NAMESPACE
dengan namespace Config Connector mengelola resource.Konfirmasi bahwa
pubsub-topic-service-account
tidak dapat membuatPubSubTopic
dengan memverifikasi output perintah berikut berisino
:kubectl auth can-i get pubsubtopics --as=system:serviceaccount:default:pubsub-topic-service-account
Selanjutnya, buat
ClusterRole
yang memungkinkan pembuatan topik Pub/Sub.ClusterRole hanya dapat mengelola resource yang memiliki nilai yang ditentukan di
rules.apiGroups
danrules.resources
. Guna menemukan nilai untukapiGroups
danresources
, lihat referensi untuk Google Cloud Platform.Buat file bernama
pubsub-topic-editor-role.yaml
dengan kode berikut konten:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null name: pubsub-topic-editor rules: - apiGroups: - pubsub.cnrm.cloud.google.com resources: - pubsubtopics verbs: - get - list - watch - create - update - patch - delete
Terapkan
pubsub-topic-editor.yaml
untuk membuatClusterRole
:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Mengganti
CC_NAMESPACE
dengan namespace Config Connector mengelola resource.Selanjutnya, buat RoleBinding antara ClusterRole dan akun layanan Anda. Buat file bernama
pubsub-topic-editor-rolebinding.yaml
dengan konten berikut:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: pubsub-topic-editor-rolebinding. subjects: - kind: ServiceAccount name: pubsub-topic-service-account roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: pubsub-topic-editor
Terapkan
pubsub-topic-editor-rolebinding.yaml
ke cluster Anda.kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Mengganti
CC_NAMESPACE
dengan namespace Config Connector mengelola resource.Konfirmasikan bahwa
pubsub-topic-service-account
diizinkan untuk membuatPubSubTopic
resource dengan mengonfirmasi output perintah berikut adalahyes
:kubectl auth can-i get pubsubtopics \ --as=system:serviceaccount:default:pubsub-topic-service-account
Pembersihan
Gunakan kubectl delete
untuk menghapus Akun Layanan, Peran IAM, dan
Binding peran.
kubectl delete -f pubsub-topic-editor-rolebinding.yaml --namespace <var>CC_NAMESPACE</var>
kubectl delete -f pubsub-topic-editor-role.yaml --namespace <var>CC_NAMESPACE</var>
kubectl delete -f pubsub-topic-service-account.yaml --namespace <var>CC_NAMESPACE</var>
Mengganti CC_NAMESPACE
dengan namespace Config Connector
mengelola resource.
Mengamankan bidang data dengan Kebijakan IAM
Dalam contoh ini, Anda menggunakan izin yang diberikan sebelumnya untuk membuat
PubSubTopic
dan batasi akses ke resource tersebut dengan resource IAMPolicyMember
.
Buat file bernama
pubsub-topic-sample.yaml
dengan konten berikut:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: pubsubtopic-sample
Terapkan
pubsub-topic-sample.yaml
dengankubectl
:kubectl apply -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Mengganti
CC_NAMESPACE
dengan namespace Config Connector mengelola resource.Buat file bernama
iampolicymember.yaml
dengan konten berikut, menggantiEMAIL_ADDRESS
dengan nama pengguna akun Google Cloud Anda alamat email Anda:apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-sample spec: resourceRef: apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic name: pubsubtopic-sample role: roles/pubsub.admin member: "user:EMAIL_ADDRESS"
Terapkan
iampolicymember.yaml
.kubectl apply -f iampolicymember.yaml --namespace CC_NAMESPACE
Mengganti
CC_NAMESPACE
dengan namespace Config Connector mengelola resource.Konfirmasi bahwa kebijakan telah diterapkan ke Google Cloud dengan menjalankan perintah ini dan mencari alamat email Anda di {i>output<i}, menggantikan
PROJECT_ID
dengan project ID Anda:gcloud beta pubsub topics get-iam-policy projects/PROJECT_ID/topics/pubsubtopic-sample
Akses ke topik Pub/Sub Anda kini dilindungi dengan IAMPolicyMember
.
Pembersihan
Menggunakan kubectl delete
untuk menghapus topik Pub/Sub dan IAMPolicyMember
dari Project Google Cloud Anda.
kubectl delete -f iampolicymember.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Langkah selanjutnya
Gunakan Secrets untuk meneruskan informasi dengan aman ke resource Google Cloud.