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
Enable the IAM API.
Memahami kredensial akun layanan.
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:
-
Administrator Kebijakan Organisasi (
roles/orgpolicy.policyAdmin
) -
Organization Viewer (
roles/resourcemanager.organizationViewer
) -
Tag Administrator (
roles/resourcemanager.tagAdmin
)
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:
-
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 nilaienforced
dannot_enforced
.Untuk mempelajari cara membuat kunci tag dan nilai tag, lihat Membuat dan menentukan tag baru.
-
Lampirkan tag
disableServiceAccountKeyUpload
ke organisasi dan tetapkan nilainya keenforced
. 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.
-
Untuk setiap project atau folder yang ingin Anda kecualikan dari kebijakan organisasi, lampirkan tag
disableServiceAccountKeyUpload
dan tetapkan nilainya kenot_enforced
. Menetapkan nilai tag untuk project atau folder dengan cara ini akan menggantikan nilai tag yang diwarisi dari organisasi. -
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 tagdisableServiceAccountKeyUpload: 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
- Di konsol Google Cloud , buka halaman Service accounts.
Langkah-langkah lainnya akan muncul di konsol Google Cloud .
- Pilih project.
- Pada halaman Service accounts, klik alamat email akun layanan yang ingin Anda upload kuncinya.
- Klik tab Kunci.
- Klik menu drop-down Tambahkan kunci, lalu pilih Upload kunci yang ada.
- 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.
- 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, sepertimy-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
- Pelajari cara membuat dan menghapus kunci akun layanan.
- Pelajari cara mencantumkan dan mendapatkan kunci akun layanan.
- Pelajari alternatif untuk kunci akun layanan guna autentikasi.
- Pelajari cara menggunakan kunci akun layanan untuk melakukan autentikasi sebagai akun layanan.
- Pahami praktik terbaik untuk mengelola kunci akun layanan.
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