Mengamankan akses ke resource dengan IAM


Pengguna dan akun layanan Kubernetes memerlukan izin untuk mengelola resource Config Connector. Dengan Config Connector, bidang kontrol project Anda dapat dikelola oleh identitas yang menggunakan Kontrol Akses Berbasis Peran (RBAC) Kubernetes. Anda juga dapat mereferensikan Kebijakan Identity and Access Management (IAM).

Resource yang dapat mereferensikan IAMPolicy dan IAMPolicyMember tercantum dalam Referensi resource. Resource ini memiliki properti "Dapat Dirujuk oleh IAMPolicy/IAMPolicyMember".

Topik ini menjelaskan cara mengamankan akses ke resource Google Cloud menggunakan Identity and Access Management.

Sebelum memulai

Untuk menyelesaikan langkah-langkah di 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 resource Config Connector lainnya.

  1. Buat file bernama pubsub-topic-service-account.yaml dengan konten berikut:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: pubsub-topic-service-account
      namespace: default
    

    Terapkan ini untuk membuat akun layanan pubsub-topic-service-account:

    kubectl apply -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE

    Ganti CC_NAMESPACE dengan namespace tempat Konektor Konfigurasi mengelola resource.

  2. Pastikan pubsub-topic-service-account tidak dapat membuat resource PubSubTopic dengan memverifikasi output perintah berikut yang berisi no:

    kubectl auth can-i get pubsubtopics --as=system:serviceaccount:default:pubsub-topic-service-account
  3. Selanjutnya, buat ClusterRole yang memungkinkan pembuatan topik Pub/Sub.

    ClusterRole hanya dapat mengelola resource yang memiliki nilai yang ditentukan dalam rules.apiGroups dan rules.resources. Untuk menemukan nilai apiGroups dan resources, lihat referensi untuk resource Anda.

    Buat file bernama pubsub-topic-editor-role.yaml dengan konten berikut:

    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 membuat ClusterRole:

    kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE

    Ganti CC_NAMESPACE dengan namespace tempat Konektor Konfigurasi mengelola resource.

  4. 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
    
  5. Terapkan pubsub-topic-editor-rolebinding.yaml ke cluster Anda.

    kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE

    Ganti CC_NAMESPACE dengan namespace tempat Konektor Konfigurasi mengelola resource.

  6. Pastikan pubsub-topic-service-account diizinkan untuk membuat resource PubSubTopic dengan mengonfirmasi bahwa output perintah berikut adalah yes:

    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 Pemikatan 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>

Ganti CC_NAMESPACE dengan namespace tempat Konektor Konfigurasi mengelola resource.

Mengamankan bidang data dengan Kebijakan IAM

Dalam contoh ini, Anda menggunakan izin yang diberikan sebelumnya untuk membuat PubSubTopic dan membatasi akses ke PubSubTopic tersebut dengan resource IAMPolicyMember.

  1. 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 dengan kubectl:

    kubectl apply -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE

    Ganti CC_NAMESPACE dengan namespace tempat Konektor Konfigurasi mengelola resource.

  2. Buat file bernama iampolicymember.yaml dengan konten berikut, dengan mengganti EMAIL_ADDRESS dengan alamat email akun Google Cloud 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"
    
  3. Terapkan iampolicymember.yaml.

    kubectl apply -f iampolicymember.yaml  --namespace CC_NAMESPACE 

    Ganti CC_NAMESPACE dengan namespace tempat Konektor Konfigurasi mengelola resource.

  4. Konfirmasikan bahwa kebijakan telah diterapkan ke Google Cloud dengan menjalankan perintah ini dan mencari alamat email Anda dalam output, dengan mengganti 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

Gunakan 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 Rahasia untuk meneruskan informasi dengan aman ke resource Google Cloud.