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 mundur; batasan ini tidak memengaruhi akun layanan yang dibuat dan dikonfigurasi sebelumnya.
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 Menggunakan Batasan untuk mempelajari lebih lanjut cara mengelola kebijakan di tingkat organisasi.
Batasan Boolean
Batasan berikut adalah jenis batasan boolean, yang ditetapkan ke true atau 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 boolean iam.automaticIamGrantsForDefaultServiceAccounts
untuk menonaktifkan pemberian peran otomatis.
Menonaktifkan pembuatan akun layanan
Anda dapat menggunakan batasan boolean iam.disableServiceAccountCreation
untuk
menonaktifkan pembuatan akun layanan baru. Hal ini memungkinkan Anda memusatkan
pengelolaan akun layanan tanpa membatasi izin lain yang dimiliki developer
Anda di project.
Jika Anda menerapkan batasan ini pada project, beberapa layanan Google Cloud tidak dapat otomatis membuat akun layanan default. 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 informasi selengkapnya tentang cara mengatur akun layanan, lihat Tempat membuat akun layanan.
Menonaktifkan pembuatan kunci akun layanan
Anda dapat menggunakan batasan boolean 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. Saat
batasan ini ditetapkan, kredensial yang dikelola pengguna tidak dapat dibuat untuk akun
layanan di project yang terpengaruh oleh batasan.
Menonaktifkan upload kunci akun layanan
Anda dapat menggunakan batasan boolean iam.disableServiceAccountKeyUpload
untuk
menonaktifkan upload kunci publik eksternal ke akun layanan. Jika batasan ini
ditetapkan, pengguna tidak dapat mengupload kunci publik ke akun layanan dalam
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 boolean iam.disableCrossProjectServiceAccountUsage
untuk mencegah
akun layanan dalam project dilampirkan ke resource dalam project
lain.
Jika Anda ingin mengizinkan akun layanan digunakan di seluruh project, lihat Mengaktifkan peniruan akun layanan di seluruh project.
Membatasi penghapusan lien project saat akun layanan digunakan di seluruh project
Saat Anda mengizinkan akun layanan project untuk 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
lien.
Jika Anda menerapkan batasan boolean iam.restrictCrossProjectServiceAccountLienRemoval
, 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 boolean iam.disableWorkloadIdentityClusterCreation
untuk mewajibkan cluster Google Kubernetes Engine baru agar
fitur Workload Identity
dinonaktifkan pada saat pembuatannya. Jika ingin mengontrol akses akun layanan dengan ketat di organisasi, Anda dapat menonaktifkan Workload Identity selain pembuatan akun layanan dan pembuatan kunci akun layanan.
Cluster GKE yang ada dengan Workload Identity yang diaktifkan tidak akan terpengaruh, dan akan terus berfungsi seperti biasa.
Menerapkan batasan boolean
Konsol
Untuk menetapkan kebijakan organisasi yang menerapkan batasan guna membatasi penggunaan akun layanan:
Di konsol Google Cloud, buka halaman Organization policies.
Dari pemilih project, pilih organisasi yang ingin Anda batasi penggunaan akun layanannya.
Klik salah satu batasan boolean 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' \ BOOLEAN_CONSTRAINT
Dengan BOOLEAN_CONSTRAINT adalah batasan boolean 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 kebijakan dengan batasan boolean
Cuplikan kode berikut menunjukkan kebijakan organisasi yang menerapkan
batasan boolean iam.disableServiceAccountCreation
, yang mencegah akun
layanan dibuat:
name: organizations/012345678901/policies/iam.disableServiceAccountCreation
spec:
rules:
- enforce: true
Mencantumkan batasan
Batasan berikut adalah jenis batasan daftar, yang ditetapkan ke daftar nilai.
Memperpanjang masa berlaku token akses OAuth 2.0
Anda dapat membuat token akses OAuth 2.0 yang memberikan 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 token akses, lalu tambahkan akun layanan ini ke kebijakan organisasi yang menyertakan batasan daftar constraints/iam.allowServiceAccountCredentialLifetimeExtension
.
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 daftar constraints/iam.serviceAccountKeyExpiryHours
untuk menentukan jumlah jam validitas kunci yang baru dibuat. Setelah jangka waktu ini, kunci akun layanan akan berakhir masa berlakunya, dan Anda tidak dapat
lagi menggunakannya.
Batasan daftar ini menerima nilai ALLOW
berikut; 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 menggunakan
workload identity federation, yang
memungkinkan identitas eksternal mengakses resource Google Cloud, Anda dapat menentukan
penyedia identitas eksternal yang diizinkan. Secara default, semua penyedia
diizinkan. Untuk menetapkan batas, gunakan
batasan daftar constraints/iam.workloadIdentityPoolProviders
untuk menentukan URI
untuk penyedia yang diizinkan, menggunakan format berikut:
Amazon Web Services (AWS):
https://sts.amazonaws.com
Untuk membatasi akun AWS yang diizinkan, gunakan batasan daftar
constraints/iam.workloadIdentityPoolAwsAccounts
seperti yang dijelaskan di halaman ini.Microsoft Azure:
https://sts.windows.net/azure-tenant-id
Penyedia identitas lainnya yang mendukung OpenID Connect (OIDC): Gunakan URI penerbit dari penyedia identitas Anda.
Menentukan akun AWS yang diizinkan
Jika menggunakan
workload identity federation, yang
memungkinkan identitas eksternal mengakses resource Google Cloud, Anda dapat menentukan
akun AWS mana yang diizinkan untuk mengakses resource Anda. Secara default, workload
dari akun AWS mana pun diizinkan untuk mengakses resource Google Cloud Anda. Untuk
membatasi akun AWS yang diizinkan, gunakan
batasan daftar 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
diekspos—misalnya, kunci tersebut mungkin terdeteksi di repositori publik. Untuk
menentukan tindakan Google Cloud dengan kunci ini, gunakan
batasan daftar iam.serviceAccountKeyExposureResponse
.
Batasan daftar ini menerima nilai ALLOW
berikut; tidak menerima
nilai DENY
.
DISABLE_KEY
: Jika mendeteksi kunci yang terekspos, Google Cloud akan otomatis menonaktifkan kunci tersebut. Tindakan ini juga 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 menonaktifkan kunci yang diekspos secara proaktif. Namun, Google Cloud mungkin masih menonaktifkan kunci yang diekspos jika kunci tersebut digunakan dengan cara yang berdampak buruk pada platform. Terlepas dari apakah kunci yang terekspos dinonaktifkan atau tidak, Google Cloud akan membuat peristiwa Cloud Audit Logs dan mengirim notifikasi tentang kunci yang terekspos kepada pemilik project dan kontak keamanan.
Saat mendeteksi kunci yang terekspos atau menonaktifkan kunci yang terekspos, Google Cloud juga akan melakukan tindakan 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 akan berisi tindakan penonaktifan oleh akun utama
gcp-compromised-key-response@system.gserviceaccount.com
.
Menetapkan kolom
extendedStatus.value
dari kunci yang ditampilkan atau dinonaktifkan. Kolom status yang diperluas mencakup lokasi tempat kebocoran terdeteksi.
Sebaiknya tetapkan batasan ini ke DISABLE_KEY
. Menetapkan
batasan ini ke WAIT_FOR_ABUSE
akan meningkatkan risiko kunci yang diekspos akan
disalahgunakan.
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 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 daftar
Konsol
Untuk menetapkan kebijakan organisasi yang berisi batasan daftar:
Di konsol Google Cloud, buka halaman Organization policies.
Dari pemilih project, pilih resource yang ingin Anda tetapkan kebijakan organisasinya.
Di halaman Organization policies, 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 penerapan:
- Untuk menggabungkan dan mengevaluasi kebijakan organisasi Anda secara bersamaan, pilih Gabungkan dengan induk. Untuk 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 Custom values, masukkan nilai pertama untuk batasan daftar.
- Jika Anda ingin menambahkan nilai lainnya, klik Add value untuk membuat lebih banyak baris, dan tambahkan satu nilai ke setiap baris.
Setelah selesai menambahkan nilai, klik Selesai.
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 daftar. Contoh,constraints/iam.allowServiceAccountCredentialLifetimeExtension
.VALUE_1
,VALUE_N...
: Nilai untuk batasan daftar.
Untuk mempelajari cara menggunakan batasan dalam kebijakan organisasi, lihat Menggunakan Batasan.
Contoh kebijakan dengan batasan daftar
Cuplikan kode berikut menunjukkan kebijakan organisasi yang menerapkan
batasan daftar iam.allowServiceAccountCredentialLifetimeExtension
, yang
memperluas 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
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 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 layanan Google Cloud yang, saat 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.