Memberikan dan mencabut akses

Setiap subjek—pengguna atau grup—mengikuti proses dua langkah untuk mendapatkan akses ke server Management API dan cluster Kubernetes:

  • Akses server Management API: Berikan izin kepada subjek di server Management API menggunakan ClusterRoleBinding atau RoleBinding ke ClusterRole yang telah ditentukan.

  • Akses cluster Kubernetes: Berikan akses khusus namespace atau akses di seluruh cluster.

    • Untuk akses khusus namespace: Untuk memberikan akses ke namespace project tertentu dalam cluster, buat ProjectRole dan ProjectRoleBinding yang sesuai. Proses ini menyebarkan Role dan RoleBinding Kubernetes ke Namespace Kubernetes di cluster, yang sesuai dengan Project yang terkait dengan ProjectRole dan ProjectRoleBinding.

    • Untuk akses di seluruh cluster: Untuk memberikan akses ke semua namespace dalam cluster, buat OrganizationRole dan OrganizationRoleBinding yang sesuai. Proses ini menyebarkan Kubernetes ClusterRole dan ClusterRoleBinding ke seluruh cluster Kubernetes.

Halaman ini ditujukan untuk audiens dalam grup administrator platform yang mengelola izin dalam organisasi mereka.

Admin IAM Organisasi dan Admin IAM Project dapat membuat lebih banyak peran project dan binding peran project untuk memberikan izin tambahan khusus project. Namun, Admin IAM Organisasi dapat membuat peran project dan binding peran project untuk project apa pun. Di sisi lain, Admin IAM Project hanya dapat membuat peran project dan binding peran project untuk project yang memiliki izin akses.

Sebelum memulai

Sebelum mengelola binding peran atau mencabut akses, Anda harus meminta izin yang diperlukan dan menyiapkan lingkungan. Peran spesifik yang diperlukan bergantung pada apakah Anda mengelola binding peran atau mencabut akses pengguna.

Meminta peran IAM

Hubungi Admin IAM Organisasi Anda untuk meminta peran berdasarkan tugas yang perlu Anda lakukan:

  • Admin IAM Organisasi (organization-iam-admin): membuat, memperbarui, dan menghapus binding peran di tingkat organisasi dan project.
  • Admin Sesi Org (org-session-admin): mencabut sesi aktif dan akses pengguna dalam zona tertentu.

Menyiapkan lingkungan

Untuk menggunakan alat command line guna mengelola binding peran atau mencabut akses, selesaikan penyiapan berikut.

Menyiapkan binding peran

Anda dapat menyiapkan binding peran yang memberi anggota tim akses ke resource di tingkat organisasi atau project.

Untuk mendapatkan izin yang diperlukan untuk menyiapkan binding peran, minta Admin IAM Organisasi Anda untuk memberi Anda peran Admin IAM Organisasi.

Untuk menetapkan peran kepada anggota yang diberi otorisasi, ikuti langkah-langkah berikut:

Konsol

  1. Login ke konsol GDC.
  2. Klik Select project untuk memilih organisasi atau project.
    • Untuk menyiapkan binding peran untuk organisasi, pilih organisasi.
    • Untuk menyiapkan binding peran untuk project, pilih project.
  3. Di menu navigasi, klik Identity and Access > Access.
  4. Klik Add member.
  5. Di daftar Identity provider, pilih penyedia identitas.
  6. Pilih apakah Anda ingin menambahkan pengguna atau grup satu per satu.
  7. Di kolom Username or group alias, masukkan nama pengguna, alamat email, atau alias.
  8. Di daftar Role, pilih peran yang ingin Anda tetapkan kepada pengguna atau grup, seperti Organization Viewer di tingkat organisasi atau Project Creator di tingkat project.
  9. Klik Add.

Anggota akan muncul dalam daftar Authorized member.

gdcloud

  1. Pastikan Anda telah menginstal gdcloud CLI.

  2. Login menggunakan perintah gdcloud auth login untuk melakukan autentikasi dengan penyedia identitas Anda. Untuk mengetahui informasi selengkapnya, lihat autentikasi gdcloud CLI.

  3. Siapkan binding peran.

    • Siapkan binding peran untuk organisasi:

      gdcloud organizations add-iam-policy-binding root \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Ganti variabel berikut:

      • USER_ACCOUNT: akun pengguna yang ingin Anda beri peran. Flag ini menerima alamat email pengguna dengan awalan penyedia identitas (user:idpprefix-user@example.com) atau nama akun layanan dengan project akun layanan (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: ClusterRole, Role, atau OrganizationRole yang binding perannya Anda siapkan.
      • ROLE: nama peran khusus atau yang telah ditentukan yang ingin Anda tetapkan kepada pengguna (seperti project-creator).
    • Siapkan binding peran untuk project:

      gdcloud projects add-iam-policy-binding PROJECT \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Ganti variabel berikut:

      • PROJECT: nama project yang binding perannya Anda siapkan.
      • USER_ACCOUNT: akun pengguna yang ingin Anda beri peran. Flag ini menerima alamat email pengguna dengan awalan penyedia identitas (user:idpprefix-user@example.com) atau nama akun layanan dengan project akun layanan (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: Role atau ProjectRole yang binding perannya Anda siapkan.
      • ROLE: nama peran khusus atau yang telah ditentukan yang ingin Anda tetapkan kepada pengguna (seperti project-viewer).

API

  1. Ekspor kredensial pengguna yang Anda gunakan:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    
  2. Ekspor akun pengguna yang ingin Anda tetapkan perannya, termasuk awalan penyedia identitas (seperti idpprefix-paul@example.com):

    export USERNAME=IDP_PREFIX-USER_EMAIL
    
  3. Ekspor nama peran yang dibutuhkan pengguna, seperti project-creator. Lihat Definisi peran untuk mengetahui detail tentang peran tersebut.

    export ROLE_NAME=ROLE_NAME
    
  4. Tetapkan pengguna ke ClusterRole, Role, ProjectRole, atau OrganizationRole:

    • Tetapkan pengguna ke ClusterRole:

      kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      clusterrolebinding ${USERNAME}-${ROLE_NAME}-binding \
      --clusterrole=${ROLE_NAME} --user=${USERNAME}
      

      Jika ClusterRole memerlukan RoleBinding, bukan ClusterRoleBinding, lihat Definisi peran untuk mengetahui jenis binding yang diperlukan peran tersebut dan buat RoleBinding di namespace gpc-system sebagai gantinya:

      kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      rolebinding ${USERNAME}-${ROLE_NAME}-binding \
      --clusterrole=${ROLE_NAME} --user=${USERNAME} --namespace=gpc-system
      
    • Tetapkan pengguna ke Role:

      1. Ekspor namespace tempat binding harus dibuat:

        export BINDING_NAMESPACE=BINDING_NAMESPACE
        
      2. Jalankan perintah berikut untuk membuat RoleBinding:

        kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
        rolebinding ${USERNAME}-${ROLE_NAME}-binding \
        --role=${ROLE_NAME} --user=${USERNAME} --namespace=${BINDING_NAMESPACE}
        
    • Tetapkan pengguna ke ProjectRole:

      1. Buat file projectrolebinding.yaml:

        apiVersion: resourcemanager.gdc.goog/v1
        kind: ProjectRoleBinding
        metadata:
          name: BINDING_NAME
          namespace: PROJECT_NAME
        spec:
          roleRef:
            apiGroup: resourcemanager.gdc.goog
            kind: ProjectRole
            name: ROLE_NAME
          subjects:
          - apiGroup: rbac.authorization.k8s.io
            kind: USER_KIND
            name: USERNAME
        

        Ganti kode berikut:

        • BINDING_NAME: Nama untuk binding yang dapat disesuaikan oleh pengguna (seperti user-project-creator-binding).
        • PROJECT_NAME: Nama project yang perannya Anda berikan.
        • ROLE_NAME: Nama ProjectRole yang Anda tetapkan kepada pengguna.
        • USER_KIND: Jenis pengguna, yang dapat berupa User, Group, atau ServiceAccount.
        • USERNAME: Alamat email pengguna yang perannya Anda tetapkan, termasuk awalan penyedia identitas (seperti idpprefix-paul@example.com). Alamat ini harus cocok dengan USERNAME yang diekspor.
      2. Terapkan file projectrolebinding.yaml:

        kubectl create -f projectrolebinding.yaml
        
    • Tetapkan pengguna ke OrganizationRole:

      1. Buat file organizationrolebinding.yaml:

        apiVersion: resourcemanager.gdc.goog/v1
        kind: OrganizationRoleBinding
        metadata:
          name: BINDING_NAME
          namespace: gpc-system
        spec:
          roleRef:
            apiGroup: resourcemanager.gdc.goog
            kind: OrganizationRole
            name: ROLE_NAME
          subjects:
          - apiGroup: rbac.authorization.k8s.io
            kind: USER_KIND
            name: USERNAME
        

        Ganti kode berikut:

        • BINDING_NAME: Nama untuk binding yang dapat disesuaikan oleh pengguna (seperti user-organization-creator-binding).
        • ROLE_NAME: Nama OrganizationRole yang Anda tetapkan kepada pengguna.
        • USER_KIND: Jenis pengguna, yang dapat berupa User, Group, atau ServiceAccount.
        • USERNAME: Alamat email pengguna yang perannya Anda tetapkan, termasuk awalan penyedia identitas (seperti idpprefix-paul@example.com). Alamat ini harus cocok dengan USERNAME yang diekspor.
      2. Terapkan file YAML organizationrolebinding.yaml:

        kubectl create -f organizationrolebinding.yaml
        

Menghapus binding peran

Jika akses tidak lagi diperlukan, hapus anggota dan peran, izin, serta akses terkait.

Untuk menghapus anggota, ikuti langkah-langkah berikut:

Konsol

  1. Login ke konsol GDC.
  2. Di menu navigasi, klik Identity and Access > Access.
  3. Dalam daftar Authorized members, pilih anggota.
  4. Klik Remove member.
  5. Saat diminta, klik Remove member untuk mengonfirmasi.

gdcloud

  1. Pastikan Anda telah menginstal gdcloud CLI.

  2. Login menggunakan perintah gdcloud auth login untuk melakukan autentikasi dengan penyedia identitas Anda. Untuk mengetahui informasi selengkapnya, lihat autentikasi gdcloud CLI.

  3. Hapus binding peran.

    • Hapus binding peran untuk organisasi:

      gdcloud organizations remove-iam-policy-binding root \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Ganti variabel berikut:

      • USER_ACCOUNT: akun pengguna yang perannya ingin Anda hapus. Flag ini menerima alamat email pengguna dengan awalan penyedia identitas (user:idpprefix-user@example.com) atau nama akun layanan dengan project akun layanan (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: ClusterRole, Role, atau OrganizationRole yang binding perannya Anda hapus.
      • ROLE: nama peran khusus atau yang telah ditentukan yang ingin Anda hapus dari akun pengguna (seperti project-creator).
    • Hapus binding peran untuk project:

      gdcloud projects remove-iam-policy-binding PROJECT \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Ganti variabel berikut:

      • PROJECT: nama project yang binding perannya Anda hapus.
      • USER_ACCOUNT: akun pengguna yang perannya ingin Anda hapus. Flag ini menerima alamat email pengguna dengan awalan penyedia identitas (user:idpprefix-user@example.com) atau nama akun layanan dengan project akun layanan (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: Role atau ProjectRole yang binding perannya Anda hapus.
      • ROLE: nama peran khusus atau yang telah ditentukan yang ingin Anda hapus dari akun pengguna (seperti project-viewer).

API

  1. Ekspor kredensial pengguna yang Anda gunakan:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    
  2. Ekspor akun pengguna yang perannya ingin Anda hapus, termasuk awalan penyedia identitas (seperti idpprefix-paul@example.com):

    export USERNAME=IDP_PREFIX-USER_EMAIL
    
  3. Ekspor namespace tempat binding dihapus:

    export BINDING_NAMESPACE=BINDING_NAMESPACE
    
  4. Hapus ClusterRoleBinding, RoleBinding, ProjectRoleBinding, atau OrganizationRoleBinding untuk mencabut izin yang diberikan ke akun pengguna:

    • Hapus ClusterRoleBinding dari akun pengguna:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete clusterrolebinding ${USERNAME}-pa
      
    • Hapus RoleBinding dari akun pengguna:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete rolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Hapus ProjectRoleBinding dari akun pengguna:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete projectrolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Hapus OrganizationRoleBinding dari akun pengguna:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete organizationrolebinding ${USERNAME}-pa \
      --namespace=gpc-system
      

Mencabut akses pengguna

Jika anggota keluar dari organisasi atau tim Anda, Anda dapat mencabut aksesnya ke appliance air-gapped Google Distributed Cloud (GDC). Mencabut akses pengguna akan membuat pengguna tersebut logout dari appliance GDC dengan air gap dan menghapus peran serta izinnya. Anda juga dapat mencantumkan aktivitas dan sesi pengguna dari waktu mulai dan berakhirnya.

Untuk mencabut akses pengguna, lakukan hal berikut:

  1. Dapatkan izin yang Anda perlukan untuk mencabut akses pengguna. Minta Admin IAM Organisasi Anda untuk memberi Anda peran Admin Sesi Org (org-session-admin).

  2. Cabut akses pengguna:

    gdcloud admin auth revoke --accounts USER_EMAIL
    

    Ganti USER_EMAIL dengan email pengguna yang aksesnya akan dicabut.

    Setelah menjalankan perintah, Anda akan melihat output yang mirip dengan berikut ini. Contoh ini mencabut akses dari pengguna ariel@example.com:

    Success: NUMBER of sessions revoked for user ariel@example.com
    

    Dalam contoh ini, variabel NUMBER mengacu pada jumlah sesi aktif yang dimiliki pengguna.

  3. Konfirmasi bahwa Anda telah mencabut akses pengguna dengan menjalankan kembali perintah gdcloud admin auth revoke. Jika berhasil, Anda akan melihat hal berikut:

    No sessions found for account: ariel@example.com
    

Mencantumkan semua pengguna yang aksesnya dicabut

Untuk melihat semua pengguna yang aksesnya dicabut serta aktivitas dan sesi mereka, lakukan hal berikut:

  • Cantumkan semua pengguna yang aksesnya dicabut dari waktu mulai dan berakhirnya:

    gdcloud admin auth list --format="csv(ACCOUNT, IDENTITY_PROVIDER, CREATION_TIME, EXPIRATION_TIME)"
    

    Jika berhasil, Anda akan melihat output yang mirip dengan berikut ini:

    account,identity_provider,creation_time,expiration_time
    ariel@example.com,example-idp,2023-02-15 22:10:52,2023-02-15 23:10:52