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: Beri subjek izin di server Management API menggunakan ClusterRoleBinding atau RoleBinding ke ClusterRole yang telah ditentukan sebelumnya.

  • 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 ClusterRole dan ClusterRoleBinding Kubernetes ke seluruh cluster Kubernetes.

Persona (IO, PA, AO) bukan peran, tetapi kumpulan peran pengguna yang dipetakan ke izin tertentu dan ditetapkan kepada setiap pengguna.

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 pengikatan peran project untuk project apa pun. Di sisi lain, Admin IAM Project hanya dapat membuat peran project dan binding peran project untuk project yang izin aksesnya telah diberikan kepada mereka.

Menyiapkan binding peran

Anda dapat menyiapkan binding peran yang memberi anggota tim akses ke resource di level 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 Pilih project untuk memilih organisasi atau project.
    • Untuk menyiapkan binding peran bagi organisasi, pilih organisasi.
    • Untuk menyiapkan binding peran untuk project, pilih project.
  3. Di menu navigasi, klik Identity and Access > Access.
  4. Klik Tambahkan anggota.
  5. Di daftar Identity provider, pilih penyedia identitas.
  6. Pilih apakah Anda ingin menambahkan pengguna atau grup satu per satu.
  7. Di kolom Nama pengguna atau alias grup, masukkan nama pengguna, alamat email, atau alias.
  8. Dalam daftar Peran, pilih peran yang ingin Anda tetapkan kepada pengguna atau grup, seperti Pelihat Organisasi di tingkat organisasi atau Pembuat Project di tingkat project.
  9. Klik Tambahkan.

Anggota akan muncul dalam daftar Anggota yang diizinkan.

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.

    • Menyiapkan 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 akan Anda siapkan binding perannya.
      • ROLE: nama peran bawaan atau kustom 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 penetapan 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 bawaan atau kustom yang ingin Anda tetapkan kepada pengguna (seperti project-viewer).

API

  1. Mengekspor 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.

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

    • Menetapkan pengguna ke ClusterRole:

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

      Untuk kasus ketika ClusterRole memerlukan RoleBinding, bukan ClusterRoleBinding, lihat Definisi peran untuk mengetahui jenis binding yang diperlukan peran dan buat RoleBinding di namespace gpc-system:

      kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      rolebinding ${USERNAME}-${ROLE_NAME}-binding \
      --clusterrole=${ROLE_NAME} --user=${USERNAME} --namespace=gpc-system
      
    • Menetapkan 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}
        
    • Menetapkan 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 pengguna (seperti user-project-creator-binding).
        • PROJECT_NAME: Nama project yang perannya ingin 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 email ini harus cocok dengan USERNAME yang diekspor.
      2. Terapkan file projectrolebinding.yaml:

        kubectl create -f projectrolebinding.yaml
        
    • Menetapkan 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 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 email 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 terkaitnya.

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 Anggota yang diberi otorisasi, pilih anggota.
  4. Klik Hapus anggota.
  5. Saat diminta, klik Hapus anggota 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.

    • Menghapus 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 bawaan atau kustom yang ingin Anda hapus dari akun pengguna (seperti project-creator).
    • Menghapus binding peran untuk project:

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

      Ganti variabel berikut:

      • PROJECT: nama project tempat Anda menghapus binding peran.
      • 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 bawaan atau kustom yang ingin Anda hapus dari akun pengguna (seperti project-viewer).

API

  1. Mengekspor 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:

    • Menghapus ClusterRoleBinding dari akun pengguna:

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

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

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete projectrolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Menghapus 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 perangkat air-gapped Google Distributed Cloud (GDC). Mencabut akses pengguna akan membuat pengguna logout dari appliance air-gapped GDC 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 Org Session Admin (org-session-admin).

  2. Mencabut 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 merujuk 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 berikut ini:

    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:

  • Mencantumkan 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