Organization Policy Service 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 sebelumnya dibuat dan dikonfigurasi.
Sebelum memulai
Anda harus memiliki izin untuk mengubah
kebijakan organisasi guna menetapkan
batasan. Misalnya, peran
orgpolicy.policyAdmin
memiliki izin untuk menetapkan batasan kebijakan organisasi. Baca halaman
Membuat kebijakan organisasi
untuk mempelajari lebih lanjut cara mengelola kebijakan di tingkat organisasi.
Batasan terkelola (lama) dengan aturan boolean
Batasan berikut adalah jenis batasan terkelola lama dengan aturan boolean, yang ditetapkan ke benar atau salah.
Menonaktifkan pemberian peran otomatis ke akun layanan default
Beberapalayanan otomatis membuat
akun layanan default. Cloud de Confiance Ketika akun layanan default dibuat, akun tersebut secara otomatis diberi peran Editor (roles/editor) di project Anda.
Untuk meningkatkan keamanan, sebaiknya Anda menonaktifkan pemberian peran otomatis. Gunakan batasan terkelola 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, beberapa Cloud de Confiance layanan tidak dapat otomatis membuat akun layanan default. Akibatnya, jika project menjalankan workload yang perlu meniru identitas 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 memasang akun layanan ke resource dalam project lain.
Untuk mengetahui informasi selengkapnya tentang mengatur akun layanan, lihat Tempat membuat akun layanan.
Menonaktifkan pembuatan kunci akun layanan
Anda dapat menggunakan batasan terkelola lama iam.disableServiceAccountKeyCreationuntuk menonaktifkan pembuatan kunci akun layanan eksternal baru dan
kunci HMAC Cloud Storage. Dengan demikian, Anda dapat 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 di project dilampirkan ke resource di project lain.
Jika Anda ingin mengizinkan akun layanan digunakan di seluruh project, lihat Mengaktifkan peniruan identitas akun layanan di seluruh project.
Membatasi penghapusan lien project saat akun layanan digunakan di seluruh project
Jika Anda mengizinkan akun layanan project dilampirkan ke resource di
project lain, IAM akan menambahkan
lien project yang mencegah Anda
menghapus project. Secara default, siapa saja yang memiliki izin resourcemanager.projects.updateLiens di project dapat menghapus lien.
Jika Anda menerapkan batasan terkelola lama iam.restrictCrossProjectServiceAccountLienRemoval, akun utama hanya dapat menghapus lien jika memiliki izin resourcemanager.projects.updateLiens di organisasi.
Sebaiknya terapkan batasan ini jika salah satu project Anda mengizinkan peniruan akun layanan di seluruh project.
Menonaktifkan pembuatan cluster workload identity
Anda dapat menggunakan batasan terkelola lama iam.disableWorkloadIdentityClusterCreation
untuk mewajibkan cluster Google Kubernetes Engine baru memiliki fitur
Workload Identity yang
dinonaktifkan pada saat pembuatannya. Jika Anda ingin mengontrol akses akun layanan secara ketat di organisasi, sebaiknya nonaktifkan Workload Identity selain pembuatan akun layanan dan pembuatan kunci akun layanan.
Cluster GKE yang ada dengan Workload Identity Federation for GKE yang 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 Cloud de Confiance konsol, buka halaman Organization policies.
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 Applies to, pilih Override parent's policy.
Klik Add a rule.
Di bagian Enforcement, pilih On.
Untuk menerapkan kebijakan, klik Set policy.
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
disable-enforce
Untuk mempelajari cara menggunakan batasan dalam kebijakan organisasi, lihat Membuat kebijakan organisasi.
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 hingga 12 jam (43.200 detik).
Untuk melakukannya, identifikasi akun layanan yang memerlukan perpanjangan masa aktif untuk
token, lalu
tambahkan akun layanan ini ke kebijakan organisasi yang mencakup
constraints/iam.allowServiceAccountCredentialLifetimeExtension batasan.
Anda kemudian dapat menentukan masa aktif hingga 43.200 detik (12 jam) saat membuat token menggunakan REST API untuk akun layanan ini. Google Cloud CLI tidak mendukung setelan masa aktif untuk token.
Membatasi masa aktif 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 expiry time, gunakan batasan terkelola lama constraints/iam.serviceAccountKeyExpiryHours untuk menentukan jumlah jam validitas kunci yang baru dibuat. Setelah jangka waktu ini, masa berlaku kunci akun layanan akan berakhir, dan Anda tidak dapat lagi menggunakannya.
Batasan terkelola lama ini menerima nilai ALLOW berikut; batasan ini tidak menerima nilai DENY. Sebagai praktik terbaik, gunakan expiry time 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 Cloud de Confiance resource, 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 bagi penyedia yang diizinkan, menggunakan format berikut:
Amazon Web Services (AWS):
https://sts.amazonaws.comUntuk membatasi akun AWS mana yang diizinkan, gunakan
constraints/iam.workloadIdentityPoolAwsAccountsbatasan terkelola lama seperti yang dijelaskan di halaman ini.Microsoft Azure:
https://sts.windows.net/azure-tenant-idPenyedia 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 Cloud de Confiance resource, Anda dapat menentukan
akun AWS mana yang diizinkan untuk mengakses resource Anda. Secara default, workload
dari akun AWS mana pun diizinkan untuk mengakses Cloud de Confiance resource Anda. Untuk membatasi akun AWS mana yang diizinkan, gunakan batasan terkelola lama constraints/iam.workloadIdentityPoolAwsAccounts untuk menentukan daftar ID akun yang diizinkan.
Menonaktifkan kunci akun layanan yang terekspos secara otomatis
Cloud de Confiance by S3NS kadang-kadang mendeteksi bahwa kunci akun layanan tertentu telah terekspos—misalnya, kunci tersebut mungkin mendeteksi kunci di repositori publik. Untuk
menentukan tindakan yang Cloud de Confiance dilakukan, gunakan
iam.serviceAccountKeyExposureResponse batasan terkelola lama. Kunci yang dipantau mencakup kunci akun layanan berumur panjang dan kunci API yang terikat ke akun layanan.
Batasan terkelola lama ini menerima nilai ALLOW berikut; batasan ini tidak menerima nilai DENY.
DISABLE_KEY: Jikamendeteksi kunci yang terekspos, kunci tersebut akan otomatis dinonaktifkan. Cloud de Confiance Tindakan ini juga membuat peristiwa Cloud Audit Logs dan mengirimkan notifikasi tentang kunci yang terekspos kepada pemilik project dan kontak keamanan.WAIT_FOR_ABUSE: Cloud de Confiance tidak akan secara proaktif menonaktifkan kunci yang terekspos. Namun, Cloud de Confiance mungkin masih menonaktifkan kunci yang terekspos jika digunakan dengan cara yang berdampak buruk pada platform. Terlepas dari apakah kunci yang terekspos dinonaktifkan atau tidak, Cloud de Confiance membuat peristiwa Cloud Audit Logs dan mengirimkan notifikasi tentang kunci yang terekspos kepada pemilik project dan kontak keamanan.
Saatmendeteksi kunci yang terekspos atau menonaktifkan kunci yang terekspos, tindakan berikut juga akan dilakukan: Cloud de Confiance
Membuat peristiwa Cloud Audit Logs.
Saatmendeteksi bahwa kunci telah terekspos, peristiwa penyalahgunaan akan dibuat di log Peristiwa Penyalahgunaan. Cloud de Confiance
Saat Cloud de Confiance menonaktifkan kunci, log audit akan berisi tindakan penonaktifan oleh akun utama
gcp-compromised-key-response@s3ns-system.system.gserviceaccount.com.
Menetapkan kolom
extendedStatus.valuekunci yang terekspos atau dinonaktifkan. Kolom status diperpanjang mencakup lokasi tempat kebocoran terdeteksi.
Sebaiknya Anda menetapkan batasan ini ke DISABLE_KEY. Menetapkan batasan ini ke WAIT_FOR_ABUSE akan meningkatkan risiko penyalahgunaan kunci yang terekspos.
Jika Anda memutuskan untuk menetapkan batasan ke WAIT_FOR_ABUSE, sebaiknya
Anda berlangganan peristiwa Cloud Audit Logs, meninjau informasi kontak keamanan Anda
di Kontak Penting,
dan memastikan kontak keamanan Anda merespons notifikasi 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 Cloud de Confiance konsol, buka halaman Organization policies.
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 bersama-sama, pilih Merge with parent. Untuk mengetahui informasi selengkapnya tentang pewarisan dan hierarki resource, lihat Evaluasi hierarki.
- Untuk mengganti kebijakan yang diwarisi dari resource induk, pilih Replace.
Klik Add a rule.
Di bagian Policy values, pilih Custom.
Di bagian Policy type, pilih Allow.
Di bagian Custom values, masukkan nilai pertama untuk batasan terkelola lama.
- Jika Anda ingin menambahkan lebih banyak nilai, klik Add value untuk membuat lebih banyak baris, lalu tambahkan satu nilai ke setiap baris.
Setelah selesai menambahkan nilai, klik Done.
Untuk menerapkan kebijakan, klik Set policy.
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. Misalnya,constraints/iam.allowServiceAccountCredentialLifetimeExtension.VALUE_1,VALUE_N...: Nilai untuk batasan terkelola lama.
Untuk mempelajari cara menggunakan batasan dalam kebijakan organisasi, lihat Membuat kebijakan organisasi.
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 penerapan.
Untuk mengetahui detail selengkapnya tentang penggunaan tag dengan kebijakan organisasi, lihat Mencakup 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 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.
Mengatasi masalah umum
Akun layanan default
Menerapkan batasan iam.disableServiceAccountCreation akan mencegah pembuatan akun layanan di project tersebut. Batasan ini juga memengaruhi
Cloud de Confiance layanan yang, saat diaktifkan, 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.disableServiceAccountCreationuntuk sementara. - Aktifkan layanan yang diinginkan.
- Buat akun layanan lain yang diinginkan.
- Terakhir, terapkan kembali batasan tersebut.