Resource Manager memberikan batasan yang dapat digunakan dalam kebijakan organisasi untuk membatasi penggunaan akun layanan Identity and Access Management (IAM).
Banyak dari batasan ini menentukan apakah akun layanan dan resource lainnya dapat dibuat atau dikonfigurasi dengan cara tertentu. Batasan ini tidak berlaku surut dan 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 boolean constraint, yang ditetapkan ke benar atau salah.
Menonaktifkan pemberian peran otomatis ke akun layanan default
Beberapa layanan Google Cloud membuat akun layanan default secara otomatis. Saat dibuat, akun layanan default akan otomatis diberi peran Editor (roles/editor
) pada project Anda.
Untuk meningkatkan keamanan, sebaiknya nonaktifkan 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. Dengan begitu, Anda dapat memusatkan pengelolaan akun layanan tanpa membatasi izin lain yang dimiliki developer Anda atas project.
Jika Anda menerapkan batasan ini dalam sebuah project, beberapa layanan Google Cloud tidak dapat membuat akun layanan default secara otomatis. Akibatnya, jika project menjalankan beban kerja yang perlu meniru identitas akun layanan, project tersebut mungkin tidak berisi akun layanan yang dapat digunakan beban kerja. Untuk mengatasi masalah ini, Anda dapat mengaktifkan peniruan akun layanan di seluruh project. Saat mengaktifkan fitur ini, Anda dapat membuat akun layanan dalam project terpusat, lalu melampirkan akun layanan tersebut 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. 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 dalam project yang terpengaruh oleh batasan tersebut.
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.
Nonaktifkan 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 ditambahkan ke resource dalam project lain.
Jika Anda ingin mengizinkan akun layanan digunakan di seluruh project, baca 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 untuk ditambahkan ke resource dalam project lain, IAM akan menambahkan lien project agar Anda tidak menghapus project tersebut. Secara default, siapa saja yang memiliki izin resourcemanager.projects.updateLiens
pada project dapat menghapus lien.
Jika Anda menerapkan batasan boolean iam.restrictCrossProjectServiceAccountLienRemoval
, akun utama dapat menghapus lien hanya jika memiliki
izin resourcemanager.projects.updateLiens
di organisasi.
Sebaiknya terapkan batasan ini jika ada project Anda yang mengizinkan meniru identitas akun layanan di seluruh project.
Menonaktifkan pembuatan cluster workload identity
Anda dapat menggunakan batasan boolean iam.disableWorkloadIdentityClusterCreation
untuk mewajibkan cluster Google Kubernetes Engine baru menonaktifkan fitur Workload Identity pada saat pembuatannya. Jika ingin mengontrol akses akun layanan secara ketat di organisasi, Anda dapat menonaktifkan Workload Identity selain pembuatan akun layanan dan pembuatan kunci akun layanan.
Cluster GKE yang sudah ada yang mengaktifkan Workload Identity tidak akan terpengaruh, dan akan tetap berfungsi seperti biasa.
Menerapkan batasan boolean
Konsol
Untuk menetapkan kebijakan organisasi yang menerapkan batasan untuk 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 Berlaku untuk, pilih Ganti kebijakan induk.
Klik Tambahkan aturan.
Di bagian Enforcement, pilih On.
Untuk menerapkan kebijakan, klik Tetapkan 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' \ BOOLEAN_CONSTRAINT
Dengan BOOLEAN_CONSTRAINT adalah batasan boolean yang ingin Anda terapkan.
Untuk menonaktifkan penerapan, perintah yang sama dapat diberikan dengan
disable-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 pembuatan
akun layanan:
name: organizations/012345678901/policies/iam.disableServiceAccountCreation
spec:
rules:
- enforce: true
Batasan daftar
Batasan berikut adalah jenis batasan daftar, yang ditetapkan ke daftar nilai.
Memperpanjang masa pakai token akses OAuth 2.0
Anda dapat membuat token akses OAuth 2.0 yang memberikan kredensial yang memiliki masa aktif singkat untuk akun layanan.
Secara default, masa berlaku maksimum token akses adalah 1 jam (3.600 detik).
Namun, Anda dapat memperpanjang masa pakai maksimum hingga 12 jam. Untuk melakukannya, identifikasi akun layanan yang memerlukan perpanjangan masa aktif untuk token akses, lalu tambahkan akun layanan ini ke kebijakan organisasi yang menyertakan batasan daftar constraints/iam.allowServiceAccountCredentialLifetimeExtension
.
Membatasi masa aktif kunci akun layanan
Kunci akun layanan memungkinkan Anda mengautentikasi permintaan sebagai akun layanan. Secara default, kunci akun layanan tidak memiliki masa berlaku. Anda dapat mengubah setelan default ini dengan menyetel expiry time untuk semua kunci yang baru dibuat di project, folder, atau organisasi.
Untuk menetapkan expiry time, gunakan batasan daftar
constraints/iam.serviceAccountKeyExpiryHours
untuk menetapkan jumlah jam bagi kunci yang baru dibuat
menjadi valid. Setelah jangka waktu ini, kunci akun layanan akan berakhir masa berlakunya, dan Anda tidak dapat
menggunakannya lagi.
Batasan daftar ini menerima nilai ALLOW
berikut, dan tidak menerima
nilai DENY
. Sebagai praktik terbaik, gunakan waktu masa berakhir tersingkat 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.
Tentukan penyedia identitas eksternal yang diizinkan
Jika menggunakan federasi identitas workload, 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
bagi penyedia yang diizinkan, dengan 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 lain yang mendukung OpenID Connect (OIDC): Gunakan URI penerbit dari Penyedia Identitas Anda.
Tentukan akun AWS yang diizinkan
Jika menggunakan workload identity federation, yang memungkinkan identitas eksternal mengakses resource Google Cloud, Anda dapat menentukan akun AWS 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.
Nonaktifkan kunci akun layanan terekspos secara otomatis
Google Cloud terkadang mendeteksi bahwa kunci akun layanan tertentu telah terekspos—misalnya, mungkin mendeteksi kunci di repositori publik. Untuk menentukan tindakan yang dilakukan Google Cloud dengan kunci ini, gunakan batasan daftar iam.serviceAccountKeyExposureResponse
.
Batasan daftar ini menerima nilai ALLOW
berikut, dan tidak menerima
nilai DENY
.
DISABLE_KEY
: Jika mendeteksi kunci yang terekspos, Google Cloud akan otomatis menonaktifkan kunci tersebut.WAIT_FOR_ABUSE
: Google Cloud tidak akan menonaktifkan kunci yang terekspos secara proaktif. Namun, Google Cloud mungkin masih menonaktifkan kunci yang terekspos jika digunakan dengan cara yang berdampak buruk pada platform.
Saat Google Cloud menonaktifkan kunci, log audit akan berisi gcp-compromised-key-response@system.gserviceaccount.com
utama.
Sebaiknya tetapkan batasan ini ke DISABLE_KEY
. Menetapkan batasan ini ke WAIT_FOR_ABUSE
akan meningkatkan risiko penyalahgunaan kunci yang bocor.
Jika Anda memutuskan untuk menetapkan batasan ke WAIT_FOR_ABUSE
, sebaiknya
tinjau informasi kontak keamanan Anda di Kontak
Penting dan pastikan
kontak keamanan Anda merespons notifikasi dengan 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.
Klik menu drop-down Organization di bagian atas halaman, lalu pilih organisasi Anda.
Klik batasan yang ingin ditambahkan.
Klik Manage Policy.
Di bagian Berlaku untuk, pilih Ganti kebijakan induk.
Di bagian Penegakan kebijakan, pilih Gabungkan dengan induk untuk menggabungkan kebijakan ini dengan kebijakan yang sudah ada di hierarki Anda.
Klik Tambahkan aturan.
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 lebih banyak nilai, klik New policy value untuk membuat lebih banyak baris, lalu tambahkan satu nilai ke setiap baris.
Untuk menerapkan kebijakan, klik Tetapkan 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 daftar. Misalnya,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 memperpanjang masa pakai 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 aktif 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 dalam project tersebut. Batasan ini juga memengaruhi layanan Google Cloud yang, saat diaktifkan, akan otomatis membuat akun layanan default dalam project, seperti:
- Compute Engine
- GKE
- App Engine
- Dataflow
Jika batasan iam.disableServiceAccountCreation
diterapkan, upaya untuk mengaktifkan layanan ini akan gagal karena akun layanan default 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 tersebut.