Kontrol akses dengan IAM

Halaman ini menjelaskan peran IAM untuk Certificate Authority Service.

Layanan CA menggunakan peran Identity and Access Management (IAM) untuk kontrol akses. Dengan IAM, Anda dapat mengontrol akses dengan menentukan siapa (identitas) yang memiliki akses apa (peran) untuk resource yang mana. Peran IAM berisi serangkaian izin yang memungkinkan pengguna melakukan tindakan tertentu pada Google Cloud resource. Dengan mengikuti prinsip hak istimewa terendah saat memberikan peran IAM, Anda dapat melindungi integritas resource Certificate Authority Service dan mengelola keamanan kumpulan CA, serta keseluruhan infrastruktur kunci publik (PKI).

Untuk mempelajari cara menetapkan peran IAM ke akun pengguna atau layanan, baca Memberikan, mengubah, dan mencabut akses ke resource dalam dokumentasi IAM.

Peran yang telah ditetapkan

Tabel berikut mencantumkan peran IAM yang telah ditetapkan dan izin yang terkait dengan setiap peran:

Peran Izin Deskripsi
CA Service Auditor
roles/privateca.auditor
privateca.caPools.get
privateca.caPools.getIamPolicy
privateca.caPools.list
privateca.certificateAuthorities.list
privateca.certificateAuthorities.get
privateca.certificateTemplates.get
privateca.certificateTemplates.getIamPolicy
privateca.certificateTemplates.list
privateca.certificates.list
privateca.certificates.get
privateca.locations.get
privateca.locations.list
privateca.operations.get
privateca.operations.list
privateca.certificateRevocationLists.list
privateca.certificateRevocationLists.get
privateca.certificateRevocationLists.getIamPolicy
resourcemanager.projects.get
resourcemanager.projects.list
Peran Auditor Layanan CA memiliki akses hanya baca ke semua resource CA Service, dan dapat mengambil serta mencantumkan properti kumpulan CA, CA, sertifikat, daftar pencabutan, kebijakan IAM, dan project. Sebaiknya Anda menetapkan peran ini kepada individu yang bertanggung jawab untuk memvalidasi keamanan dan operasi kumpulan CA, dan tidak memiliki tanggung jawab harian yang ditetapkan untuk mengelola layanan.
CA Service Certificate Requester
roles/privateca.certificateRequester
privateca.certificates.create Peran CA Service Certificate Requester dapat mengirimkan permintaan sertifikat ke kumpulan CA. Sebaiknya Anda memberikan peran ini kepada individu tepercaya yang diizinkan untuk meminta sertifikat.

Pengguna dengan peran ini dapat meminta sertifikat arbitrer yang tunduk pada kebijakan penerbitan.

Tidak seperti peran CA Service Certificate Manager, peran ini tidak mengizinkan pengguna untuk mendapatkan atau mencantumkan sertifikat yang baru diterbitkan, atau mendapatkan informasi apa pun tentang kumpulan CA.
CA Service Workload Certificate Requester
roles/privateca.workloadCertificateRequester
privateca.certificates.createForSelf CA Service Workload Certificate Requester dapat meminta sertifikat dari CA Service dengan identitas pemanggil.
CA Service Certificate Manager
roles/privateca.certificateManager
Semua izin dari roles/privateca.auditor, ditambah:
privateca.certificates.create
CA Service Certificate Manager dapat mengirimkan permintaan penerbitan sertifikat ke kumpulan CA seperti CA Service Certificate Requester. Selain itu, peran ini juga mewarisi izin peran Auditor Layanan CA. Sebaiknya Anda menetapkan peran ini kepada individu yang bertanggung jawab untuk membuat, melacak, dan meninjau permintaan sertifikat di kumpulan CA, seperti manajer atau engineer utama.
Pengguna Template Sertifikat Layanan CA
roles/privateca.templateUser
privateca.certificateTemplates.get
privateca.certificateTemplates.list
privateca.certificateTemplates.use
Pengguna Template Sertifikat Layanan CA dapat membaca, mencantumkan, dan menggunakan template sertifikat.
CA Service Operation Manager
roles/privateca.caManager
Semua izin dari roles/privateca.auditor, ditambah:
privateca.certificates.update
privateca.caPools.create
privateca.caPools.delete
privateca.caPools.update
privateca.certificateAuthorities.create
privateca.certificateAuthorities.delete
privateca.certificateAuthorities.update
privateca.certificateRevocationLists.update
privateca.certificateTemplates.create
privateca.certificateTemplates.delete
privateca.certificateTemplates.update
privateca.certificates.update
privateca.operations.cancel
privateca.operations.delete
resourcemanager.projects.get
resourcemanager.projects.list
storage.buckets.create
Pengelola Operasi Layanan CA dapat membuat, memperbarui, dan menghapus pool CA dan CA. Peran ini juga dapat mencabut sertifikat dan membuat bucket Cloud Storage. Layanan ini juga mencakup kemampuan yang sama dengan CA Service Auditor. Dalam peran ini, individu bertanggung jawab untuk mengonfigurasi dan men-deploy kumpulan CA di organisasi, serta mengonfigurasi kebijakan penerbitan kumpulan CA.

Peran ini tidak mengizinkan pembuatan sertifikat. Untuk melakukannya, gunakan peran CA Service Certificate Requester, CA Service Certificate Manager, atau CA Service Admin.
CA Service Pool Reader
roles/privateca.poolReader
privateca.caPools.get Pengguna dengan peran CA Service Pool Reader dapat membaca kumpulan CA di CA Service.
CA Service Admin
roles/privateca.admin
Semua izin dari roles/privateca.certificateManager, dan roles/privateca.caManager, ditambah:

privateca.*.setIamPolicy
privateca.caPools.use
privateca.operations.cancel
privateca.operations.delete
resourcemanager.projects.get
resourcemanager.projects.list
storage.buckets.create
Peran Admin CA Service mewarisi izin dari peran CA Service Operation Manager dan CA Service Certificate Manager. Peran ini dapat melakukan semua tindakan dalam CA Service. Admin CA Service dapat menetapkan kebijakan IAM untuk kumpulan CA dan membuat bucket Cloud Storage. Sebaiknya Anda jarang menetapkan peran ini setelah layanan dibuat. Dalam peran ini, individu dapat melakukan semua aspek administrasi, termasuk menetapkan hak kepada orang lain dan mengelola permintaan sertifikat di Layanan CA. Sebaiknya Anda menerapkan kontrol dan akses khusus ke akun peran ini untuk mencegah akses atau penggunaan yang tidak sah.

Peran Agen Layanan CA Service

Saat menyediakan kunci Cloud KMS atau bucket Cloud Storage yang sudah ada, akun layanan CA Service Agent (service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com) harus diberi akses ke resource terkait.

Untuk Cloud KMS, roles/cloudkms.signerVerifier diperlukan untuk menggunakan kunci penandatanganan dan membaca kunci publik. roles/viewer diperlukan untuk memantau kunci untuk integrasi Cloud Monitoring.

Untuk Kunci enkripsi yang dikelola pelanggan (CMEK) yang digunakan untuk mengenkripsi data dalam penyimpanan, peran roles/cloudkms.cryptoKeyEncrypterDecrypter diperlukan. Hal ini memungkinkan agen layanan mengenkripsi dan mendekripsi data dalam penyimpanan.

Untuk Cloud Storage, roles/storage.objectAdmin diperlukan untuk menulis sertifikat CA dan CRL ke bucket. roles/storage.legacyBucketReader diperlukan untuk memantau bucket untuk integrasi Cloud Monitoring. Untuk mengetahui informasi selengkapnya, lihat Peran IAM untuk Cloud Storage.

Saat mengakses layanan melalui API, jalankan perintah berikut.

  1. Buat akun layanan dengan peran Agen Layanan.

    gcloud

    gcloud beta services identity create --service=privateca.googleapis.com --project=PROJECT_ID
    

    Dengan:

    • PROJECT_ID adalah ID unik project tempat CA pool dibuat.
  2. Berikan peran yang diperlukan ke akun layanan Anda menggunakan perintah gcloud berikut.

    Jika kunci Cloud KMS yang ada diberikan:

    gcloud

    Untuk kunci penandatanganan Cloud KMS:

      gcloud kms keys add-iam-policy-binding 'KEY_NAME' \
        --keyring='KEYRING_NAME' \
        --location='LOCATION' \
        --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \
        --role='roles/cloudkms.signerVerifier'
    
      gcloud kms keys add-iam-policy-binding 'KEY_NAME' \
        --keyring='KEYRING_NAME' \
        --location='LOCATION' \
        --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \
        --role='roles/viewer'
    

    Untuk kunci enkripsi Cloud KMS:

      gcloud kms keys add-iam-policy-binding 'KEY_NAME' \
        --keyring='KEYRING_NAME' \
        --location='LOCATION' \
        --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \
        --role='roles/cloudkms.cryptoKeyEncrypterDecrypter'
    

    Dengan:

    • 'KEY_NAME' adalah nama kunci Anda.
    • 'KEYRING_NAME' adalah nama key ring Anda.
    • 'LOCATION' adalah lokasi Cloud KMS tempat Anda membuat key ring.
    • 'PROJECT_NUMBER' adalah nomor project Google Cloud yang berisi kunci.
  3. Beri akun layanan Anda peran roles/storage.objectAdmin dan roles/storage.legacyBucketReader menggunakan perintah gcloud berikut.

    Jika bucket Cloud Storage yang ada disediakan:

    gcloud

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com \
      --role=roles/storage.objectAdmin
    

    Dengan:

    • BUCKET_NAME adalah nama bucket Cloud Storage Anda.
    • PROJECT_NUMBER adalah ID unik akun layanan Anda.
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com \
      --role=roles/storage.legacyBucketReader
    

Izin API

Tabel berikut mencantumkan izin yang harus dimiliki pemanggil untuk memanggil setiap metode di CA Service API:

Izin Deskripsi
privateca.caPools.create Buat kumpulan certificate authority (CA).
privateca.caPools.update Perbarui kumpulan CA.
privateca.caPools.list Mencantumkan kumpulan CA dalam project.
privateca.caPools.get Mengambil kumpulan CA.
privateca.caPools.delete Menghapus kumpulan CA.
privateca.caPools.use Gunakan Kumpulan CA.
privateca.caPools.getIamPolicy Ambil kebijakan IAM kumpulan CA.
privateca.caPools.setIamPolicy Tetapkan kebijakan IAM untuk kumpulan CA.
privateca.certificateAuthorities.create Buat CA.
privateca.certificateAuthorities.delete Menjadwalkan penghapusan CA.
privateca.certificateAuthorities.get Mendapatkan permintaan penandatanganan sertifikat CA atau CA.
privateca.certificateAuthorities.list Mencantumkan CA dalam project.
privateca.certificateAuthorities.update Perbarui CA, termasuk mengaktifkan, mengizinkan, menonaktifkan, dan memulihkan CA.
privateca.certificates.create Meminta sertifikat dari CA Service.
privateca.certificates.createForSelf Meminta sertifikat dari CA Service dengan identitas pemanggil.
privateca.certificates.get Mendapatkan sertifikat dan metadatanya.
privateca.certificates.list Mencantumkan semua sertifikat di CA.
privateca.certificates.update Memperbarui metadata sertifikat, termasuk pencabutan.
privateca.certificateRevocationLists.get Mendapatkan daftar pencabutan sertifikat (CRL) di CA.
privateca.certificateRevocationLists.getIamPolicy Mendapatkan kebijakan IAM untuk CRL.
privateca.certificateRevocationLists.list Mencantumkan semua CRL di CA.
privateca.certificateRevocationLists.setIamPolicy Tetapkan kebijakan IAM untuk CRL.
privateca.certificateRevocationLists.update Memperbarui CRL.
privateca.certificateTemplates.create Buat template sertifikat.
privateca.certificateTemplates.get Mengambil template sertifikat.
privateca.certificateTemplates.list Mencantumkan semua template sertifikat.
privateca.certificateTemplates.update Perbarui template sertifikat.
privateca.certificateTemplates.delete Hapus template sertifikat.
privateca.certificateTemplates.getIamPolicy Mendapatkan kebijakan IAM untuk template sertifikat.
privateca.certificateTemplates.setIamPolicy Menetapkan kebijakan IAM untuk template sertifikat.
privateca.certificateTemplates.use Gunakan template sertifikat.
privateca.operations.cancel Membatalkan operasi yang berjalan lama.
privateca.operations.delete Menghapus operasi yang berjalan lama.
privateca.operations.get Mendapatkan operasi yang berjalan lama.
privateca.operations.list Mencantumkan operasi yang berjalan lama dalam project.

Langkah berikutnya