Upload kunci akun layanan

Halaman ini menjelaskan cara mengupload kunci publik untuk akun layanan. Setelah mengupload kunci publik, Anda dapat menggunakan kunci pribadi dari pasangan kunci untuk mengautentikasi sebagai akun layanan.

Sebelum memulai

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengupload kunci akun layanan, minta administrator untuk memberi Anda Admin Kunci Akun Layanan (roles/iam.serviceAccountKeyAdmin) peran IAM 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.

Untuk mengetahui informasi selengkapnya, lihat peran Service Accounts.

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

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

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

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

Izin yang diperlukan

Izin berikut diperlukan agar kunci akun layanan dapat diupload 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 upload kunci akun layanan

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

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

Untuk mengecualikan project dari batasan kebijakan organisasi iam.disableServiceAccountKeyUpload, 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 disableServiceAccountKeyUpload dan nilai enforced dan not_enforced.

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

  2. Lampirkan tag disableServiceAccountKeyUpload ke organisasi dan tetapkan nilainya ke enforced. Semua resource di organisasi mewarisi nilai tag ini, kecuali jika ditimpa 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 disableServiceAccountKeyUpload 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 upload kunci akun layanan sehingga tidak menerapkan batasan untuk resource yang dikecualikan. Kebijakan ini harus memiliki aturan berikut:

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

      "resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyUpload', 'not_enforced')"
      
    • Konfigurasikan batasan iam.disableServiceAccountKeyUpload yang akan diterapkan pada semua resource lainnya.

Upload kunci publik untuk akun layanan

Anda dapat mengupload bagian kunci publik dari pasangan kunci yang dikelola pengguna untuk mengaitkannya dengan akun layanan. Setelah mengupload kunci publik, Anda dapat menggunakan kunci pribadi dari pasangan kunci sebagai kunci akun layanan.

Kunci yang Anda upload harus berupa kunci publik RSA yang disertakan dalam sertifikat X.509 v3 dan dienkode dalam base64. Anda dapat menggunakan alat seperti OpenSSL untuk membuat kunci dan sertifikat dalam format ini.

Jangan sertakan informasi pribadi apa pun dalam sertifikat X.509. Secara khusus, gunakan subjek umum, dan jangan menambahkan atribut opsional apa pun. Sertifikat dapat dilihat oleh publik; informasi pribadi apa pun dalam sertifikat dapat dilihat oleh siapa pun yang mengambil sertifikat tersebut. Untuk mengetahui informasi selengkapnya, lihat Menghindari pengungkapan informasi rahasia dalam sertifikat X.509 yang diupload.

Misalnya, perintah berikut akan menghasilkan pasangan kunci RSA 2048-bit dan menggabungkan kunci publik dalam sertifikat yang ditandatangani sendiri yang berlaku selama 365 hari:

openssl req -x509 -nodes -newkey rsa:2048 -days 365 \
    -keyout /path/to/private_key.pem \
    -out /path/to/public_key.pem \
    -subj "/CN=unused"

Selanjutnya, Anda dapat mengupload file public_key.pem sebagai kunci publik untuk akun layanan.

Konsol

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

    Buka halaman Service accounts

    Langkah-langkah lainnya akan muncul di konsol Google Cloud .

  2. Pilih project.
  3. Pada halaman Service accounts, klik alamat email akun layanan yang ingin Anda upload kuncinya.
  4. Klik tab Kunci.
  5. Klik menu drop-down Tambahkan kunci, lalu pilih Upload kunci yang ada.
  6. Klik Cari, lalu cari dan pilih file kunci publik Anda. Anda juga dapat menyalin dan menempelkan konten file kunci publik Anda ke kotak Tempel kunci yang ada.
  7. Klik Upload.

gcloud

Jalankan perintah gcloud iam service-accounts keys upload guna mengupload kunci publik untuk menandatangani kunci akun layanan.

Ganti nilai berikut:

  • KEY_FILE: Jalur ke file yang berisi data kunci yang akan diupload—misalnya, ./public_key.pem.
  • SA_NAME: Nama akun layanan yang akan digunakan untuk mengupload kunci.
  • PROJECT_ID: Project ID Google Cloud Anda.
gcloud iam service-accounts keys upload KEY_FILE \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Outputnya berisi ID unik untuk kunci yang diupload:

Name: projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0

Untuk menentukan apakah perintah berhasil, jalankan perintah: gcloud iam service-accounts keys list

gcloud iam service-accounts keys list \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Output akan berisi ID unik yang sama dengan yang ditampilkan setelah kunci dibuat:

KEY_ID DIBUAT_PADA BERLAKU_SAMPAI DISABLED
c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0 2019-06-26T21:01:42Z 9999-12-31T23:59:59Z  

REST

Metode projects.serviceAccounts.keys.upload mengupload kunci publik dari pasangan kunci yang dikelola pengguna, dan menambahkan kunci ini ke akun layanan.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Google Cloud Anda. Project ID adalah string alfanumerik, seperti my-project.
  • SA_NAME: Nama akun layanan yang akan dikaitkan dengan kunci.
  • PUBLIC_KEY_DATA: Data kunci publik untuk pasangan kunci. Harus berupa kunci publik RSA yang disertakan dalam sertifikat X.509 v3. Enkodekan data kunci publik dalam base64, termasuk baris pertama, -----BEGIN CERTIFICATE-----, dan baris terakhir, -----END CERTIFICATE-----.

Metode HTTP dan URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys:upload

Meminta isi JSON:

{
  "publicKeyData": "PUBLIC_KEY_DATA"
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON seperti berikut:

{
  "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0",
  "validAfterTime": "2020-05-17T19:31:19Z",
  "validBeforeTime": "2021-05-17T19:31:19Z",
  "keyAlgorithm": "KEY_ALG_RSA_2048",
  "keyOrigin": "USER_PROVIDED",
  "keyType": "USER_MANAGED"
}

Menonaktifkan upload kunci publik

Untuk menonaktifkan kemampuan mengupload kunci untuk project Anda, lihat Membatasi upload kunci akun layanan.

Langkah selanjutnya

Coba sendiri

Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.

Mulai secara gratis