Membuat dan menghapus kunci akun layanan

Halaman ini menjelaskan cara membuat dan menghapus kunci akun layanan menggunakan Google Cloud konsol, Google Cloud CLI, Identity and Access Management API, atau salah satu Library Klien Google Cloud.

Sebelum memulai

  • Aktifkan IAM API.

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.

    Mengaktifkan API

  • Menyiapkan autentikasi.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan konsol Google Cloud untuk mengakses layanan Google Cloud dan API, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    Di konsol Google Cloud , aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.

    C#

    Untuk menggunakan contoh .NET di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Instal Google Cloud CLI.

    2. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    3. Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:

      gcloud auth application-default login

      Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.

      Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.

    Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .

    C++

    Untuk menggunakan contoh C++ di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Instal Google Cloud CLI.

    2. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    3. Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:

      gcloud auth application-default login

      Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.

      Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.

    Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .

    Go

    Untuk menggunakan contoh Go di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Instal Google Cloud CLI.

    2. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    3. Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:

      gcloud auth application-default login

      Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.

      Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.

    Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .

    Java

    Untuk menggunakan contoh Java di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Instal Google Cloud CLI.

    2. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    3. Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:

      gcloud auth application-default login

      Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.

      Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.

    Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .

    Python

    Untuk menggunakan contoh Python di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Instal Google Cloud CLI.

    2. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    3. Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:

      gcloud auth application-default login

      Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.

      Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.

    Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

      Instal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .

  • Memahami kredensial akun layanan.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk membuat dan menghapus kunci akun layanan, minta administrator Anda untuk memberi Anda peran IAM Admin Kunci Akun Layanan (roles/iam.serviceAccountKeyAdmin) pada project, atau akun layanan yang kuncinya ingin Anda kelola. 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 khusus atau peran bawaan lainnya.

Bergantung pada konfigurasi kebijakan organisasi, Anda mungkin juga perlu mengizinkan pembuatan kunci akun layanan di project Anda sebelum membuat kunci.

Untuk mendapatkan izin yang diperlukan untuk mengizinkan pembuatan kunci akun layanan dalam project, minta administrator untuk memberi Anda peran IAM berikut di organisasi Anda:

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

Peran bawaan ini berisi izin yang diperlukan untuk mengizinkan pembuatan kunci akun layanan dalam project. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan agar kunci akun layanan dapat dibuat dalam project:

  • orgpolicy.constraints.list
  • orgpolicy.customConstraints.create
  • orgpolicy.customConstraints.delete
  • orgpolicy.customConstraints.get
  • orgpolicy.customConstraints.list
  • orgpolicy.customConstraints.update
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set
  • resourcemanager.organizations.get
  • resourcemanager.projects.listTagBindings
  • resourcemanager.projects.listEffectiveTags
  • resourcemanager.tagKeys.get
  • resourcemanager.tagKeys.list
  • resourcemanager.tagValues.list
  • resourcemanager.tagValues.get

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Mengizinkan pembuatan kunci akun layanan

Sebelum membuat kunci akun layanan, pastikan batasan kebijakan organisasi iam.disableServiceAccountKeyCreation tidak diterapkan untuk project Anda. Jika batasan ini diterapkan untuk project Anda, Anda tidak dapat membuat kunci akun layanan di project tersebut.

Sebaiknya terapkan batasan ini untuk sebagian besar project dan hanya kecualikan project yang benar-benar memerlukan kunci akun layanan. Untuk mengetahui informasi selengkapnya tentang metode autentikasi alternatif, lihat Memilih metode autentikasi yang tepat untuk kasus penggunaan Anda.

Untuk mengecualikan project dari batasan kebijakan organisasi iam.disableServiceAccountKeyCreation, minta administrator kebijakan organisasi untuk melakukan hal berikut:

  1. Di tingkat organisasi, buat kunci tag dan nilai tag yang akan Anda gunakan untuk menentukan apakah resource harus dikecualikan dari kebijakan organisasi. Sebaiknya buat tag dengan kunci disableServiceAccountKeyCreation dan nilai enforced dan not_enforced.

    Untuk mempelajari cara membuat kunci tag dan nilai tag, lihat Membuat dan menentukan tag baru.

  2. Lampirkan tag disableServiceAccountKeyCreation ke organisasi dan tetapkan nilainya ke enforced. Semua resource dalam organisasi mewarisi nilai tag ini, kecuali jika diganti dengan nilai tag yang berbeda.

    Untuk mempelajari cara melampirkan tag ke resource, lihat Melampirkan tag ke resource.

  3. Untuk setiap project atau folder yang ingin Anda kecualikan dari kebijakan organisasi, lampirkan tag disableServiceAccountKeyCreation dan tetapkan nilainya ke not_enforced. Menetapkan nilai tag untuk project atau folder dengan cara ini akan menggantikan nilai tag yang diwarisi dari organisasi.
  4. Buat atau perbarui kebijakan organisasi yang mencegah pembuatan kunci akun layanan sehingga tidak menerapkan batasan untuk resource yang dikecualikan. Kebijakan ini harus memiliki aturan berikut:

    • Konfigurasi batasan iam.disableServiceAccountKeyCreation agar tidak diterapkan pada resource apa pun dengan tag disableServiceAccountKeyCreation: not_enforced. Kondisi dalam aturan ini akan terlihat seperti berikut:

      "resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')"
      
    • Konfigurasi batasan iam.disableServiceAccountKeyCreation agar diterapkan pada semua resource lainnya.

Membuat kunci akun layanan

Untuk menggunakan akun layanan dari luar Google Cloud, seperti di platform lain atau di infrastruktur lokal, Anda harus membuat identitas akun layanan terlebih dahulu. Pasangan kunci publik/pribadi menyediakan cara yang aman untuk mencapai tujuan ini. Saat Anda membuat kunci akun layanan, bagian publik akan disimpan di Google Cloud, sedangkan bagian pribadi hanya tersedia untuk Anda. Untuk mengetahui informasi selengkapnya tentang pasangan kunci publik/pribadi, lihat Kunci akun layanan.

Meskipun akun layanan terutama digunakan untuk mengakses Google Cloud API yang dikelola melalui IAM, Anda juga dapat menggunakannya untuk mengautentikasi ke Google API yang tidak dikelola IAM, seperti Google Ads, YouTube, dan Google Workspace. Setiap layanan menentukan aturan otorisasi sendiri.

Anda dapat membuat kunci akun layanan menggunakan konsol Google Cloud , gcloud CLI, metode serviceAccounts.keys.create() atau salah satu library klien. Akun layanan dapat memiliki hingga 10 kunci.

Secara default, masa berlaku kunci akun layanan tidak pernah berakhir. Anda dapat menggunakan batasan kebijakan organisasi untuk menentukan jangka waktu berlakunya kunci akun layanan. Untuk mengetahui detailnya, lihat Waktu habis masa berlaku untuk kunci yang dikelola pengguna.

Dalam contoh di bawah, SA_NAME adalah nama akun layanan Anda, dan PROJECT_ID adalah ID projectGoogle Cloud Anda. Anda dapat mengambil string SA_NAME@PROJECT_ID.iam.gserviceaccount.com dari halaman Akun Layanan di konsol Google Cloud .

Konsol

  1. Di konsol Google Cloud , buka halaman Service accounts.

    Buka halaman Service accounts

    Langkah-langkah selanjutnya akan muncul di konsol Google Cloud .

  2. Pilih project.
  3. Klik alamat email akun layanan yang ingin Anda buatkan kunci.
  4. Klik tab Kunci
  5. Klik menu drop-down Kunci, lalu pilih Buat kunci baru.
  6. Pilih JSON sebagai jenis kunci dan klik Create.

Mengklik Buat akan mendownload file kunci akun layanan. Setelah mendownload file kunci, Anda tidak dapat mendownloadnya lagi.

Kunci yang didownload memiliki format berikut, dengan PRIVATE_KEY adalah bagian pribadi dari pasangan kunci publik/pribadi:

{
  "type": "service_account",
  "project_id": "PROJECT_ID",
  "private_key_id": "KEY_ID",
  "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
  "client_email": "SERVICE_ACCOUNT_EMAIL",
  "client_id": "CLIENT_ID",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
}
Selalu simpan kunci akun layanan Anda di lokasi yang aman. Jika Anda tidak menyimpan kunci dengan aman, pihak tidak bertanggung jawab dapat menemukan kunci dan menggunakannya untuk mengakses resource yang dapat diakses oleh akun layanan. Sebaiknya simpan kunci Anda di penyimpanan kunci berbasis hardware atau software. Untuk panduan selengkapnya tentang cara menyimpan kunci akun layanan dengan aman, lihat Melindungi dari eskalasi hak istimewa.

Anda dapat memindahkan dan mengganti nama file ini sesuai keinginan.

Anda dapat menggunakan file kunci akun layanan untuk mengautentikasi aplikasi sebagai akun layanan.

gcloud

Jalankan perintah gcloud iam service-accounts keys create untuk membuat kunci akun layanan.

Ganti nilai berikut:

  • KEY_FILE: Jalur ke file output baru untuk kunci pribadi—misalnya, ~/sa-private-key.json.
  • SA_NAME: Nama akun layanan yang akan dibuatkan kunci.
  • PROJECT_ID: Project ID Google Cloud Anda.
gcloud iam service-accounts keys create KEY_FILE \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Output:

created key [e44da1202f82f8f4bdd9d92bc412d1d8a837fa83] of type [json] as
[/usr/home/username/KEY_FILE] for
[SA_NAME@PROJECT_ID.iam.gserviceaccount.com]

File kunci akun layanan sekarang sudah didownload ke komputer Anda. Setelah Anda mendownload file kunci, Anda tidak dapat mendownloadnya lagi.

Kunci yang didownload memiliki format berikut, dengan PRIVATE_KEY adalah bagian pribadi dari pasangan kunci publik/pribadi:

{
  "type": "service_account",
  "project_id": "PROJECT_ID",
  "private_key_id": "KEY_ID",
  "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
  "client_email": "SERVICE_ACCOUNT_EMAIL",
  "client_id": "CLIENT_ID",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
}

Selalu simpan kunci akun layanan Anda di lokasi yang aman. Jika Anda tidak menyimpan kunci dengan aman, pihak tidak bertanggung jawab dapat menemukan kunci dan menggunakannya untuk mengakses resource yang dapat diakses oleh akun layanan. Sebaiknya simpan kunci Anda di penyimpanan kunci berbasis hardware atau software. Untuk panduan selengkapnya tentang cara menyimpan kunci akun layanan dengan aman, lihat Melindungi dari eskalasi hak istimewa.

Anda dapat memindahkan dan mengganti nama file ini sesuai keinginan.

Anda dapat menggunakan file kunci akun layanan untuk mengautentikasi aplikasi sebagai akun layanan.

C++

Untuk mempelajari cara menginstal dan menggunakan library klien untuk IAM, lihat library klien IAM. Untuk informasi selengkapnya, lihat dokumentasi referensi API C++ IAM.

Untuk melakukan autentikasi ke IAM, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.