Resource Manager menyediakan batasan yang dapat digunakan dalam kebijakan organisasi untuk membatasi penggunaan akun layanan Identity and Access Management (IAM).
Banyak batasan ini menentukan apakah akun layanan dan resource lainnya dapat dibuat atau dikonfigurasi dengan cara tertentu. Batasan ini tidak berlaku surut; batasan ini tidak memengaruhi akun layanan yang dibuat dan dikonfigurasi sebelumnya.
Sebelum memulai
Anda harus memiliki izin untuk mengubah
kebijakan organisasi untuk menetapkan
batasan. Misalnya, peran
orgpolicy.policyAdmin
memiliki izin untuk menetapkan batasan kebijakan organisasi. Baca halaman
Menggunakan Batasan
untuk mempelajari lebih lanjut cara mengelola kebijakan di tingkat organisasi.
Batasan terkelola
Batasan berikut adalah jenis batasan terkelola, yang ditetapkan ke benar atau salah. Batasan terkelola dibangun di platform kebijakan organisasi kustom.
Untuk mempelajari cara membuat kebijakan organisasi yang menerapkan batasan terkelola, lihat Menggunakan batasan terkelola dalam kebijakan organisasi.
Mencegah pemberian peran Pemilik dan Editor ke akun layanan default
Beberapa layanan Google Cloud membuat akun layanan default secara otomatis. Saat akun layanan default dibuat, akun tersebut secara otomatis diberi peran Editor (roles/editor
) di project Anda. Seseorang juga dapat memilih untuk memberikan peran dengan hak istimewa tinggi,
seperti peran Editor atau peran Pemilik (roles/owner
), kepada akun layanan default
di lain waktu.
Peran Editor dan Pemilik adalah peran dasar dengan hak istimewa tinggi. Anda tidak boleh memberikannya kepada principal mana pun dalam produksi, termasuk akun layanan default.
Untuk mencegah akun layanan default diberi peran Editor atau Pemilik, gunakan batasan iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
yang dikelola. Batasan ini mencegah akun layanan default diberi peran Editor atau Pemilik, baik secara otomatis maupun manual.
Menonaktifkan pembuatan akun layanan
Anda dapat menggunakan batasan terkelola iam.managed.disableServiceAccountCreation
untuk menonaktifkan pembuatan akun layanan baru. Dengan demikian, Anda dapat memusatkan
pengelolaan akun layanan tanpa membatasi izin lain yang dimiliki
developer Anda di project.
Jika Anda menerapkan batasan ini di project, maka beberapa layanan Google Cloud tidak dapat membuat akun layanan default secara otomatis. Akibatnya, jika project menjalankan workload yang perlu meniru akun layanan, project tersebut mungkin tidak berisi akun layanan yang dapat digunakan workload tersebut. Untuk mengatasi masalah ini, Anda dapat mengaktifkan peniruan identitas akun layanan di seluruh project. Saat mengaktifkan fitur ini, Anda dapat membuat akun layanan dalam project terpusat, lalu melampirkan akun layanan ke resource dalam project lain.
Untuk mengetahui informasi selengkapnya tentang cara mengatur akun layanan, lihat Tempat membuat akun layanan.
Menonaktifkan pembuatan kunci API yang terikat ke akun layanan
Anda dapat menggunakan batasan terkelola iam.managed.disableServiceAccountApiKeyCreation
untuk
menonaktifkan pembuatan kunci API yang terikat ke akun layanan.
Jika batasan ini ditetapkan, pengguna tidak dapat membuat kunci API yang terikat ke akun layanan di project yang terpengaruh oleh batasan.
Batasan ini diterapkan secara default.
Menonaktifkan pembuatan kunci akun layanan
Anda dapat menggunakan batasan yang dikelola iam.managed.disableServiceAccountKeyCreation
untuk menonaktifkan pembuatan kunci akun layanan eksternal baru dan kunci HMAC Cloud Storage. Hal ini memungkinkan Anda mengontrol penggunaan kredensial jangka panjang yang tidak dikelola untuk akun layanan. Jika batasan ini ditetapkan, kredensial yang dikelola pengguna tidak dapat dibuat untuk akun layanan di project yang terpengaruh oleh batasan tersebut.
Menonaktifkan upload kunci akun layanan
Anda dapat menggunakan batasan terkelola iam.managed.disableServiceAccountKeyUpload
untuk menonaktifkan upload kunci publik eksternal ke akun layanan. Jika batasan ini ditetapkan, pengguna tidak dapat mengupload kunci publik ke akun layanan di project yang terpengaruh oleh batasan tersebut.
Batasan terkelola (lama) dengan aturan boolean
Batasan berikut adalah jenis batasan terkelola lama dengan aturan boolean, yang ditetapkan ke benar (true) atau salah (false).
Menonaktifkan pemberian peran otomatis ke akun layanan default
Beberapa layanan Google Cloud secara otomatis membuat
akun layanan default. Saat akun layanan default dibuat, akun tersebut secara otomatis diberi peran Editor (roles/editor
) pada project Anda.
Untuk meningkatkan keamanan, sebaiknya Anda menonaktifkan pemberian peran
otomatis. Gunakan batasan yang dikelola lama iam.automaticIamGrantsForDefaultServiceAccounts
untuk menonaktifkan pemberian peran otomatis.
Menonaktifkan pembuatan akun layanan
Anda dapat menggunakan batasan terkelola lama iam.disableServiceAccountCreation
untuk menonaktifkan pembuatan akun layanan baru. Dengan demikian, Anda dapat memusatkan
pengelolaan akun layanan tanpa membatasi izin lain yang dimiliki
developer Anda di project.
Jika Anda menerapkan batasan ini di project, maka beberapa layanan Google Cloud tidak dapat membuat akun layanan default secara otomatis. Akibatnya, jika project menjalankan workload yang perlu meniru akun layanan, project mungkin tidak berisi akun layanan yang dapat digunakan workload tersebut. Untuk mengatasi masalah ini, Anda dapat mengaktifkan peniruan identitas akun layanan di seluruh project. Saat mengaktifkan fitur ini, Anda dapat membuat akun layanan dalam project terpusat, lalu melampirkan akun layanan ke resource dalam project lain.
Untuk mengetahui informasi selengkapnya tentang cara mengatur akun layanan, lihat Tempat membuat akun layanan.
Menonaktifkan pembuatan kunci akun layanan
Anda dapat menggunakan batasan terkelola lama iam.disableServiceAccountKeyCreation
untuk menonaktifkan pembuatan kunci akun layanan eksternal baru dan kunci HMAC Cloud Storage. Hal ini memungkinkan Anda mengontrol penggunaan kredensial jangka panjang yang tidak dikelola untuk akun layanan. Jika batasan ini ditetapkan, kredensial yang dikelola pengguna tidak dapat dibuat untuk akun layanan di project yang terpengaruh oleh batasan tersebut.
Menonaktifkan upload kunci akun layanan
Anda dapat menggunakan batasan terkelola lama iam.disableServiceAccountKeyUpload
untuk menonaktifkan upload kunci publik eksternal ke akun layanan. Jika batasan ini ditetapkan, pengguna tidak dapat mengupload kunci publik ke akun layanan di project yang terpengaruh oleh batasan tersebut.
Menonaktifkan lampiran akun layanan ke resource di project lain
Setiap akun layanan berada dalam project. Anda dapat menggunakan batasan terkelola lama iam.disableCrossProjectServiceAccountUsage
untuk mencegah akun layanan dalam project dilampirkan ke resource dalam project lain.
Jika Anda ingin mengizinkan penggunaan akun layanan di seluruh project, lihat Mengaktifkan peniruan akun layanan di seluruh project.
Membatasi penghapusan jaminan project saat akun layanan digunakan di seluruh project
Saat Anda mengizinkan akun layanan project dilampirkan ke resource di project lain, IAM akan menambahkan
lien project yang mencegah Anda
menghapus project. Secara default, siapa pun yang memiliki izin
resourcemanager.projects.updateLiens
di project dapat menghapus
hak gadai.
Jika Anda menerapkan batasan iam.restrictCrossProjectServiceAccountLienRemoval
yang dikelola
warisan, maka akun utama hanya dapat menghapus lien jika memiliki izin
resourcemanager.projects.updateLiens
di organisasi.
Sebaiknya terapkan batasan ini jika ada project Anda yang mengizinkan peniruan akun layanan di seluruh project.
Menonaktifkan pembuatan cluster workload identity
Anda dapat menggunakan batasan iam.disableWorkloadIdentityClusterCreation
terkelola lama
untuk mewajibkan agar semua cluster Google Kubernetes Engine baru menonaktifkan fitur
Workload Identity
pada saat pembuatannya. Jika ingin mengontrol akses akun layanan secara ketat di organisasi Anda, Anda mungkin ingin menonaktifkan Workload Identity selain pembuatan akun layanan dan pembuatan kunci akun layanan.
Cluster GKE yang sudah ada dengan Workload Identity Federation untuk GKE diaktifkan tidak akan terpengaruh, dan akan terus berfungsi seperti biasa.
Menetapkan batasan terkelola (lama) dengan aturan boolean
Konsol
Untuk menetapkan kebijakan organisasi yang menerapkan batasan untuk membatasi penggunaan akun layanan:
Di konsol Google Cloud , buka halaman Kebijakan organisasi.
Dari pemilih project, pilih organisasi yang ingin Anda batasi penggunaan akun layanannya.
Klik salah satu batasan penggunaan akun layanan yang tercantum di halaman ini.
Klik Manage Policy.
Di bagian Berlaku untuk, pilih Ganti kebijakan induk.
Klik Add a rule.
Di bagian Enforcement, pilih On.
Untuk menerapkan kebijakan, klik Setel kebijakan.
gcloud
Kebijakan dapat ditetapkan melalui Google Cloud CLI.
Untuk membatasi penggunaan akun layanan, jalankan perintah berikut:
gcloud resource-manager org-policies enable-enforce \ --organization 'ORGANIZATION_ID' \ CONSTRAINT_NAME
Dengan CONSTRAINT_NAME adalah batasan yang ingin Anda terapkan.
Untuk menonaktifkan penerapan, perintah yang sama dapat dikeluarkan dengan
Perintahdisable-enforce
Untuk mempelajari cara menggunakan batasan dalam kebijakan organisasi, lihat Menggunakan Batasan.
Contoh batasan terkelola (lama) dengan aturan boolean
Cuplikan kode berikut menunjukkan kebijakan organisasi yang menerapkan batasan terkelola lama iam.disableServiceAccountCreation
, yang mencegah pembuatan akun layanan:
name: organizations/012345678901/policies/iam.disableServiceAccountCreation
spec:
rules:
- enforce: true
Batasan terkelola (lama) dengan aturan daftar
Batasan berikut adalah jenis batasan terkelola lama dengan aturan daftar, yang ditetapkan ke daftar nilai.
Memperpanjang masa aktif token akses OAuth 2.0
Anda dapat membuat token akses OAuth 2.0 yang menyediakan kredensial berumur pendek untuk akun layanan.
Secara default, masa aktif maksimum token akses adalah 1 jam (3.600 detik).
Namun, Anda dapat memperpanjang masa aktif maksimum menjadi 12 jam. Untuk melakukannya, identifikasi
akun layanan yang memerlukan perpanjangan masa aktif untuk token akses, lalu tambahkan
akun layanan ini ke kebijakan organisasi yang mencakup batasan
constraints/iam.allowServiceAccountCredentialLifetimeExtension
yang dikelola lama.
Membatasi masa pakai kunci akun layanan
Kunci akun layanan memungkinkan Anda mengautentikasi permintaan sebagai akun layanan. Secara default, masa berlaku kunci akun layanan tidak pernah berakhir. Anda dapat mengubah setelan default ini dengan menetapkan expiry time untuk semua kunci yang baru dibuat di project, folder, atau organisasi Anda.
Untuk menetapkan waktu habis masa berlaku, gunakan batasan terkelola lama constraints/iam.serviceAccountKeyExpiryHours
untuk menentukan jumlah jam validitas kunci yang baru dibuat. Setelah jangka waktu ini, kunci akun layanan akan habis masa berlakunya, dan Anda tidak dapat menggunakannya lagi.
Batasan terkelola lama ini menerima nilai ALLOW
berikut; tidak menerima nilai DENY
. Sebagai praktik terbaik, gunakan waktu habis masa berlaku terpendek yang memenuhi kebutuhan Anda:
1h
: 1 jam8h
: 8 jam24h
: 24 jam (1 hari)168h
: 168 jam (7 hari)336h
: 336 jam (14 hari)720h
: 720 jam (30 hari)1440h
: 1.440 jam (60 hari)2160h
: 2.160 jam (90 hari)
Batasan constraints/iam.serviceAccountKeyExpiryHours
tidak dapat digabungkan dengan kebijakan induk. Untuk menerapkan batasan ini, Anda harus mengganti atau mewarisi kebijakan induk.
Menentukan penyedia identitas eksternal yang diizinkan
Jika Anda menggunakan
workload identity federation, yang
memungkinkan identitas eksternal mengakses resource Google Cloud , Anda dapat menentukan
penyedia identitas eksternal mana yang diizinkan. Secara default, semua penyedia diizinkan. Untuk menetapkan batas, gunakan batasan terkelola lama constraints/iam.workloadIdentityPoolProviders
untuk menentukan URI penyedia yang diizinkan, menggunakan format berikut:
Amazon Web Services (AWS):
https://sts.amazonaws.com
Untuk membatasi akun AWS yang diizinkan, gunakan batasan terkelola lama
constraints/iam.workloadIdentityPoolAwsAccounts
seperti yang dijelaskan di halaman ini.Microsoft Azure:
https://sts.windows.net/azure-tenant-id
Penyedia identitas lain yang mendukung OpenID Connect (OIDC): Gunakan URI penerbit dari penyedia identitas Anda.
Menentukan akun AWS yang diizinkan
Jika Anda menggunakan
workload identity federation, yang
memungkinkan identitas eksternal mengakses Google Cloud resource, Anda dapat menentukan
akun AWS mana yang diizinkan untuk mengakses resource Anda. Secara default, beban kerja
dari akun AWS mana pun diizinkan untuk mengakses resource Google Cloud Anda. Untuk
membatasi akun AWS yang diizinkan, gunakan batasan terkelola lama constraints/iam.workloadIdentityPoolAwsAccounts
untuk
menentukan daftar ID akun yang diizinkan.
Menonaktifkan kunci akun layanan yang terekspos secara otomatis
Google Cloud terkadang mendeteksi bahwa kunci akun layanan tertentu telah
terekspos—misalnya,Google Cloud dapat mendeteksi kunci di repositori publik. Untuk
menentukan tindakan Google Cloud dengan kunci ini, gunakan batasan terkelola lama
iam.serviceAccountKeyExposureResponse
. Kunci yang
dipantau mencakup kunci akun layanan yang aktif dalam waktu lama dan kunci API yang
terikat ke akun layanan.
Batasan terkelola lama ini menerima nilai ALLOW
berikut; batasan ini tidak menerima nilai DENY
.
DISABLE_KEY
: Jika Google Cloud mendeteksi kunci yang terekspos, kunci tersebut akan dinonaktifkan secara otomatis. Selain itu, alat ini akan membuat peristiwa Cloud Audit Logs dan mengirim notifikasi tentang kunci yang terekspos kepada pemilik project dan kontak keamanan.WAIT_FOR_ABUSE
: Google Cloud tidak akan secara proaktif menonaktifkan kunci yang terekspos. Namun, Google Cloud masih dapat menonaktifkan kunci yang terekspos jika kunci tersebut digunakan dengan cara yang merugikan platform. Terlepas dari apakah kunci yang terekspos dinonaktifkan, Google Cloud akan membuat peristiwa Cloud Audit Logs dan mengirim notifikasi tentang kunci yang terekspos kepada pemilik project dan kontak keamanan.
Saat Google Cloud mendeteksi kunci yang terekspos atau menonaktifkan kunci yang terekspos, alat ini juga melakukan hal berikut:
Membuat peristiwa Cloud Audit Logs.
Saat Google Cloud mendeteksi bahwa kunci telah terekspos, peristiwa penyalahgunaan akan dibuat di log Peristiwa Penyalahgunaan.
Saat Google Cloud menonaktifkan kunci, log audit berisi tindakan penonaktifan oleh akun utama
gcp-compromised-key-response@system.gserviceaccount.com
.
Menetapkan kolom
extendedStatus.value
dari kunci yang terekspos atau dinonaktifkan. Kolom status yang diperluas mencakup lokasi tempat kebocoran terdeteksi.
Sebaiknya Anda menetapkan batasan ini ke DISABLE_KEY
. Menetapkan batasan ini ke WAIT_FOR_ABUSE
meningkatkan risiko penyalahgunaan kunci yang terekspos.
Jika Anda memutuskan untuk menyetel batasan ke WAIT_FOR_ABUSE
, sebaiknya Anda berlangganan peristiwa Cloud Audit Logs, meninjau informasi kontak keamanan Anda di Kontak Penting, dan memastikan bahwa kontak keamanan Anda merespons notifikasi secara tepat waktu.
Batasan iam.serviceAccountKeyExposureResponse
tidak dapat digabungkan dengan kebijakan induk. Untuk menerapkan batasan ini, Anda harus mengganti kebijakan induk.
Menetapkan batasan terkelola (lama) dengan aturan daftar
Konsol
Untuk menetapkan kebijakan organisasi yang berisi batasan terkelola lama:
Di konsol Google Cloud , buka halaman Kebijakan organisasi.
Dari pemilih project, pilih resource yang ingin Anda tetapkan kebijakan organisasinya.
Di halaman Kebijakan organisasi, pilih batasan dari daftar. Halaman Policy details untuk batasan tersebut akan muncul.
Untuk memperbarui kebijakan organisasi untuk resource ini, klik Manage policy.
Di bagian Policy enforcement, pilih opsi penegakan:
- Untuk menggabungkan dan mengevaluasi kebijakan organisasi Anda, pilih Gabungkan dengan induk. Untuk mengetahui informasi selengkapnya tentang pewarisan dan hierarki resource, lihat Memahami evaluasi hierarki.
- Untuk mengganti kebijakan yang diwarisi dari resource induk, pilih Ganti.
Klik Add a rule.
Di bagian Policy values, pilih Custom.
Di bagian Policy values, pilih Allow.
Di bagian Nilai kustom, masukkan nilai pertama untuk batasan yang dikelola lama.
- Jika Anda ingin menambahkan lebih banyak nilai, klik Tambahkan nilai untuk membuat lebih banyak baris, lalu tambahkan satu nilai ke setiap baris.
Setelah selesai menambahkan nilai, klik Selesai.
Untuk menerapkan kebijakan, klik Setel kebijakan.
gcloud
Kebijakan dapat ditetapkan melalui Google Cloud CLI:
gcloud resource-manager org-policies allow \ CONSTRAINT_NAME \ VALUE_1 [VALUE_N ...] \ --organization=ORGANIZATION_ID \
Ganti nilai berikut:
CONSTRAINT_NAME
: Nama batasan terkelola lama. Contoh,constraints/iam.allowServiceAccountCredentialLifetimeExtension
.VALUE_1
,VALUE_N...
: Nilai untuk batasan terkelola lama.
Untuk mempelajari cara menggunakan batasan dalam kebijakan organisasi, lihat Menggunakan Batasan.
Contoh batasan terkelola (lama) dengan aturan daftar
Cuplikan kode berikut menunjukkan kebijakan organisasi yang menerapkan batasan terkelola lama iam.allowServiceAccountCredentialLifetimeExtension
, yang memperpanjang masa aktif maksimum token akses OAuth 2.0 untuk akun layanan yang tercantum:
name: organizations/012345678901/policies/iam.allowServiceAccountCredentialLifetimeExtension
spec:
rules:
- values:
allowedValues:
- SERVICE_ACCOUNT_ADDRESS
Menerapkan batasan secara bersyarat menggunakan tag
Tag dapat digunakan untuk menyertakan atau mengecualikan resource yang diberi tag dari penerapan kebijakan organisasi. Setelah membuat tag dan melampirkannya ke akun layanan, Anda dapat menambahkan kondisi ke kebijakan untuk menyertakan atau mengecualikan akun layanan yang diberi tag secara bersyarat dari penegakan.
Untuk mengetahui detail selengkapnya tentang penggunaan tag dengan kebijakan organisasi, lihat Menetapkan kebijakan organisasi dengan tag.
Pesan error
Menonaktifkan pembuatan akun layanan
Jika iam.disableServiceAccountCreation
diterapkan, pembuatan akun layanan akan gagal dengan error:
FAILED_PRECONDITION: Service account creation is not allowed on this project.
Menonaktifkan pembuatan kunci API yang terikat ke akun layanan
Jika iam.managed.disableServiceAccountApiKeyCreation
diterapkan, pembuatan kunci API yang terikat ke akun layanan akan gagal dengan error:
FAILED_PRECONDITION: Operation denied by org policy: ["constraints/iam.managed.disableServiceAccountApiKeyCreation": "When enforced, disables creation of API Keys bound to service accounts."]
Menonaktifkan pembuatan kunci akun layanan
Jika iam.disableServiceAccountKeyCreation
diterapkan, pembuatan akun layanan akan gagal dengan error:
FAILED_PRECONDITION: Key creation is not allowed on this service account.
Menonaktifkan pembuatan cluster workload identity
Jika iam.disableWorkloadIdentityClusterCreation
diterapkan, pembuatan cluster GKE dengan Workload Identity yang diaktifkan akan gagal dengan error:
FAILED_PRECONDITION: Workload Identity is disabled by the organization policy constraints/iam.disableWorkloadIdentityClusterCreation. Contact your administrator to enable this feature.
Memecahkan masalah umum
Akun layanan default
Menerapkan batasan iam.disableServiceAccountCreation
akan mencegah
pembuatan akun layanan di project tersebut. Batasan ini juga memengaruhi
Google Cloud layanan yang, jika diaktifkan, akan otomatis membuat akun layanan default di project, seperti:
- Compute Engine
- GKE
- App Engine
- Dataflow
Jika batasan iam.disableServiceAccountCreation
diterapkan, upaya untuk mengaktifkan layanan ini akan gagal karena akun layanan defaultnya tidak dapat dibuat.
Untuk menyelesaikan masalah ini:
- Hapus batasan
iam.disableServiceAccountCreation
untuk sementara. - Aktifkan layanan yang diinginkan.
- Buat akun layanan lain yang diinginkan.
- Terakhir, terapkan kembali batasan.