Memberikan dan mencabut peran IAM

Halaman ini menjelaskan cara memberikan peran Identity and Access Management (IAM) kepada akun utama di resource Secure Source Manager. Untuk mengetahui informasi tentang cara memberikan peran pada resource Google Cloud lain, lihat Mengelola akses ke project, folder, dan organisasi.

Instance dan repositori Secure Source Manager memiliki perannya sendiri. Saat pertama kali memberikan peran instance dalam project, Anda harus menggunakan alat gcloud CLI atau REST API. Anda dapat memberikan peran repositori dengan alat gcloud CLI, REST API, atau melalui antarmuka web Secure Source Manager.

Setelah Anda memberikan peran Secure Source Manager menggunakan gcloud CLI, antarmuka web, atau REST API, peran tersebut akan terlihat untuk project Anda di konsol Google Cloud .

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk memperbarui kebijakan IAM pada instance atau repositori, minta administrator Anda untuk memberi Anda peran IAM berikut:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran yang telah ditentukan lainnya.

Untuk mengetahui informasi tentang cara memberikan peran Secure Source Manager, lihat Kontrol akses dengan IAM dan Memberikan akses instance kepada pengguna.

Menentukan akun utama

Akun utama mewakili identitas yang dapat mengakses resource. Setiap akun utama memiliki ID-nya sendiri. ID utama memiliki bentuk berikut:

PRINCIPAL-TYPE:ID

Misalnya, user:my-user@example.com. Untuk mengetahui informasi selengkapnya tentang akun utama, baca Cara kerja IAM.

Untuk jenis akun utama user, nama domain dalam ID harus berupa domain Google Workspace atau domain Cloud Identity, kecuali jika Anda menggunakan Federasi Identitas Tenaga Kerja. Untuk mempelajari cara menyiapkan domain Cloud Identity, lihat ringkasan Cloud Identity.

Principal Workforce Identity Federation

Jika Anda menggunakan Workforce Identity Federation untuk mengakses Secure Source Manager, maka principal akan direpresentasikan secara berbeda. Untuk mempelajari lebih lanjut cara memberikan akses ke principal yang merepresentasikan grup identitas, lihat Merepresentasikan pengguna workforce pool dalam kebijakan IAM.

Misalnya, perintah berikut memberikan peran Instance Accessor (roles/securesourcemanager.instanceAccessor) kepada pengguna user@example.com di kumpulan tenaga kerja my-pool pada instance my-instance di project my-project di region us-central1:

  gcloud beta source-manager instances add-iam-policy-binding my-instance \
      --project=my-project \
      --region=us-central1 \
      --member=principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com \
      --role=roles/securesourcemanager.instanceAccessor

Anda dapat memberikan akses kepada pengguna atau grup dalam workforce identity pool berdasarkan atribut Penyedia identitas (IdP), atau menggunakan Common Expression Language (CEL) untuk memetakan atribut OIDC ke atribut kustom guna menentukan strategi otorisasi dalam kebijakan IAM. Untuk mengetahui informasi selengkapnya tentang pemetaan atribut, baca artikel Pemetaan atribut.

Memberi atau mencabut peran instance

Untuk memberikan atau mencabut peran instance, gunakan pola baca-ubah-tulis untuk memperbarui kebijakan izin resource:

  1. Baca kebijakan izin saat ini dengan memanggil getIamPolicy().
  2. Edit kebijakan izin, baik dengan menggunakan editor teks, atau secara terprogram, untuk menambahkan atau menghapus akun utama atau binding peran.
  3. Tulis kebijakan izin yang diperbarui dengan memanggil setIamPolicy().

gcloud

  1. Untuk membaca kebijakan izin saat ini dan menyimpannya ke /tmp/instances.json, jalankan perintah berikut:

    gcloud beta source-manager instances get-iam-policy INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --format=json > /tmp/instance.json
    

    Ganti kode berikut:

    • INSTANCE_ID dengan ID instance.
    • PROJECT_ID dengan project ID atau nomor project instance.
    • REGION dengan region tempat instance berada. Lihat dokumentasi lokasi untuk mengetahui region Secure Source Manager yang tersedia.

    Output akan menyertakan binding yang ada, atau, jika tidak ada, nilai etag yang mirip dengan berikut ini:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. Secara terprogram atau menggunakan editor teks, ubah salinan lokal kebijakan izin instance Anda untuk mencerminkan peran yang ingin diberikan atau dicabut.

    Untuk memastikan Anda tidak menimpa perubahan lain, jangan mengedit atau menghapus kolom kebijakan izin etag. Kolom etag mengidentifikasi status saat ini dari kebijakan izin. Saat Anda menetapkan kebijakan izin yang diperbarui, IAM akan membandingkan nilai etag dalam permintaan dengan etag yang sudah ada, dan hanya menulis kebijakan izin jika nilainya cocok.

    Untuk mengedit peran yang diberikan oleh kebijakan izin, Anda perlu mengedit binding peran dalam kebijakan izin. Binding peran memiliki format berikut:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Placeholder memiliki nilai berikut:

    • ROLE_NAME: Nama peran yang ingin Anda berikan. Gunakan format berikut: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: ID untuk akun utama yang ingin Anda berikan peran.

    Misalnya, kebijakan berikut memberikan peran instanceOwner kepada user1@gmail.com, dan peran instanceManager kepada pengguna user2@gmail.com,user3@gmail.com, dan akun layanan my-other-app@.

    {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.instanceOwner",
            "members": [
                "user:user1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.instanceManager",
            "members": [
                "user:user2@gmail.com",
                "user:user3@gmail.com",
                "serviceAccount:my-other-app@"
            ]
        }
        ]
    }
    
  3. Setelah Anda mengubah kebijakan izinkan tersimpan untuk memberikan dan mencabut peran yang dipilih, perbarui kebijakan izinkan instance Anda dengan menjalankan perintah berikut:

    gcloud beta source-manager instances set-iam-policy INSTANCE_ID  \
        --project=PROJECT_ID \
        --region=REGION \
        /tmp/instance.json
    

    Ganti kode berikut:

    • INSTANCE_ID dengan ID instance.
    • PROJECT_ID dengan project ID atau nomor project instance.
    • REGION dengan region tempat instance berada. Lihat dokumentasi lokasi untuk mengetahui region Secure Source Manager yang tersedia.

API

  1. Jalankan perintah instances.getIamPolicy berikut untuk membaca kebijakan saat ini:

    curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:getIamPolicy > /tmp/instance.json
    

    Ganti kode berikut:

    • PROJECT_ID ID project atau nomor project instance.
    • REGION region tempat instance berada. Lihat dokumentasi lokasi untuk mengetahui region Secure Source Manager yang tersedia.
    • INSTANCE_ID ID instance.

    Output akan menyertakan binding yang ada, atau, jika tidak ada, nilai etag yang mirip dengan berikut ini:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. Secara terprogram atau menggunakan editor teks, ubah salinan lokal kebijakan izin instance Anda untuk mencerminkan peran yang ingin diberikan atau dicabut.

    Untuk memastikan Anda tidak menimpa perubahan lain, jangan mengedit atau menghapus kolom kebijakan izin etag. Kolom etag mengidentifikasi status saat ini dari kebijakan izin. Saat Anda menetapkan kebijakan izin yang diperbarui, IAM akan membandingkan nilai etag dalam permintaan dengan etag yang ada, dan hanya menulis kebijakan izin jika nilainya cocok.

    Untuk mengedit peran yang diberikan oleh kebijakan izin, Anda perlu mengedit binding peran dalam kebijakan izin. Binding peran memiliki format berikut:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Placeholder memiliki nilai berikut:

    • ROLE_NAME: Nama peran yang ingin Anda berikan. Gunakan format berikut: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: ID untuk akun utama yang ingin Anda berikan peran.

    Misalnya, kebijakan berikut memberikan peran instanceOwner kepada user1@gmail.com, dan peran instanceManager kepada pengguna user2@gmail.com,user3@gmail.com, dan akun layanan my-other-app@.

    {
    "policy": {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.instanceOwner",
            "members": [
                "user:user1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.instanceManager",
            "members": [
                "user:user2@gmail.com",
                "user:user3@gmail.com",
                "serviceAccount:my-other-app@"
            ]
        }
        ]
    }
    }
    
  3. Setelah Anda mengubah kebijakan izinkan untuk memberikan dan mencabut peran yang dipilih, panggil instances.setIamPolicy() untuk melakukan perubahan.

    Gunakan perintah instances.setIamPolicy berikut untuk menetapkan kebijakan baru pada instance.

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:setIamPolicy \
        -d @/tmp/instance.json
    

    Ganti kode berikut:

    • PROJECT_ID ID project atau nomor project instance.
    • REGION region tempat instance berada. Lihat dokumentasi lokasi untuk mengetahui region Secure Source Manager yang tersedia.
    • INSTANCE_ID ID instance.

Memberi atau mencabut peran repositori

Untuk memberikan atau mencabut peran repositori kepada pengguna dan akun layanan, Anda dapat menetapkannya dari antarmuka web Secure Source Manager, atau menggunakan Secure Source Manager API untuk memperbarui kebijakan izin repositori. Untuk memberikan peran repositori grup, Anda harus menggunakan Secure Source Manager API.

Pengguna harus diberi peran instance sebelum mereka dapat diberi peran repositori. Untuk mengetahui informasi tentang cara memberikan peran instance, lihat Memberikan atau mencabut peran instance.

Antarmuka web

Untuk memberikan peran tingkat repositori kepada pengguna atau akun layanan menggunakan antarmuka web:

  1. Buka URL instance yang diberikan oleh kontak Google Anda.
  2. Dari halaman Repositori saya, pilih repositori Anda.
  3. Klik tab Izin.
  4. Di bagian Orang dan izin, klik Tambahkan pengguna.
  5. Di kolom Add principal, masukkan email pengguna atau akun layanan yang ingin Anda beri peran.
  6. Di menu Tetapkan peran, pilih peran yang akan ditetapkan.
  7. Klik Simpan.

Untuk menambahkan peran tambahan, klik ikon edit Edit, lalu tambahkan peran menggunakan menu Tetapkan peran.

API

Metode Secure Source Manager API repositories.getIamPolicy mendapatkan kebijakan izin repositori.

  1. Jalankan perintah repositories.getIamPolicy berikut untuk membaca kebijakan saat ini dan menyimpannya ke /tmp/repository.json:
curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:getIamPolicy > /tmp/repository.json

Ganti kode berikut:

  • REPOSITORY_PROJECT ID project atau nomor project repositori.
  • REGION region tempat repositori berada.
  • REPOSITORY_ID: ID repositori.

Output akan menyertakan binding yang ada, atau, jika tidak ada, nilai etag yang mirip dengan berikut ini:

{
    "etag": "BwUjHYKJUiQ="
}
  1. Secara terprogram atau menggunakan editor teks, ubah salinan lokal kebijakan izin repositori Anda yang disimpan di /tmp/repository.json untuk mencerminkan peran yang ingin Anda berikan atau cabut.

    Untuk memastikan Anda tidak menimpa perubahan lain, jangan mengedit atau menghapus kolom kebijakan izin etag. Kolom etag mengidentifikasi status saat ini dari kebijakan izin. Saat Anda menetapkan kebijakan izin yang diperbarui, IAM akan membandingkan nilai etag dalam permintaan dengan etag yang ada, dan hanya menulis kebijakan izin jika nilainya cocok.

    Untuk mengedit peran yang diberikan oleh kebijakan izin, Anda perlu mengedit binding peran dalam kebijakan izin. Binding peran memiliki format berikut:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Placeholder memiliki nilai berikut:

    • ROLE_NAME: Nama peran yang ingin Anda berikan. Gunakan format berikut: roles/securesourcemanager.<var>IDENTIFIER</var>

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: ID untuk akun utama yang ingin Anda berikan peran.

    Contoh berikut memberikan peran repoAdmin kepada pengguna email1@gmail.com, dan peran repoWriter kepada pengguna email2@gmail.com, group1@gmail.com, dan akun layanan my-other-app@.

    {
    "policy": {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.repoAdmin",
            "members": [
                "user:email1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.repoWriter",
            "members": [
                "user:email2@gmail.com",
                "group:group1@gmail.com",
                "serviceAccount:my-other-app@"
            ]
        }
        ]
    }
    }
    
  2. Simpan file /tmp/repository.json yang telah diedit.

  3. Tetapkan kebijakan baru dengan perintah setIamPolicy:

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:setIamPolicy \
        -d @/tmp/repository.json
    

    Ganti kode berikut:

    • REPOSITORY_PROJECT ID project atau nomor project repositori.
    • REGION region tempat repositori berada. Lihat dokumentasi lokasi untuk mengetahui region Secure Source Manager yang tersedia.
    • REPOSITORY_ID: ID repositori.

Langkah berikutnya