Berikut adalah situasi umum saat Anda mungkin ingin menggunakan kebijakan Batas Akses Akun Utama dan contoh kebijakan serta binding kebijakan yang dapat Anda buat dalam setiap situasi. Untuk mempelajari cara membuat kebijakan Batas Akses Akun Utama dan mengikatnya ke kumpulan akun utama, lihat Membuat dan menerapkan kebijakan Batas Akses Akun Utama.
Mencegah pengguna mengakses resource di luar organisasi Anda
Karena kebijakan Batas Akses Akun Utama dikaitkan dengan akun utama, bukan dengan resource, Anda dapat menggunakannya untuk mencegah akun utama mengakses resource yang bukan milik Anda. Misalnya, pertimbangkan skenario berikut:
- Akun utama Tal (
tal@example.com) adalah bagian dari organisasi Google Workspaceexample.com. - Tal diberi peran Storage Admin (
roles/storage.admin) di bucket Cloud Storage dalam organisasi yang berbeda,cymbalgroup.com. Peran ini berisi izinstorage.objects.get, yang diperlukan untuk melihat objek di bucket. - Tidak ada kebijakan tolak di
cymbalgroup.comyang mencegah Tal menggunakan izinstorage.objects.get.
Administrator example.com tidak dapat menggunakan kebijakan izin dan tolak untuk mencegah Tal melihat objek di bucket eksternal ini. Tidak ada akun utama example.com yang memiliki izin untuk mengedit kebijakan izin bucket, sehingga mereka tidak dapat mencabut peran Tal. Mereka juga tidak memiliki izin untuk membuat kebijakan tolak di cymbalgroup.com, sehingga mereka tidak dapat menggunakan kebijakan tolak untuk mencegah Tal mengakses bucket.
Namun, dengan kebijakan Batas Akses Akun Utama, administrator example.com dapat mencegah Tal melihat objek di bucket cymbalgroup.com, atau bucket apa pun di luar example.com.
Untuk melakukannya, administrator dapat membuat kebijakan Batas Akses Akun Utama yang menyatakan bahwa akun utama example.com hanya memenuhi syarat untuk mengakses resource di example.com:
{
"name": "organizations/0123456789012/locations/global/principalAccessBoundaryPolicies/example-org-only",
"displayName": "Boundary for principals in example.org",
"details": {
"rules": [
{
"description": "Principals are only eligible to access resources in example.org",
"resources": [
"//cloudresourcemanager.googleapis.com/organizations/0123456789012"
],
"effect": "ALLOW"
}
],
"enforcementVersion": "4"
}
}
Kemudian, mereka dapat membuat binding kebijakan untuk melampirkan kebijakan ini ke semua akun utama di organisasi example.com:
{
"name": "organizations/0123456789012/locations/global/policyBindings/example-org-only-binding",
"displayName": "Bind policy to all principals in example.com",
"target": {
"principalSet": "//cloudresourcemanager.googleapis.com/organizations/0123456789012"
},
"policyKind": "PRINCIPAL_ACCESS_BOUNDARY",
"policy": "organizations/0123456789012/locations/global/principalAccessBoundaryPolicies/example-org-only"
}
Akun utama yang ada di example.com mencakup semua identitas di domain example.com, semua workforce identity pool di example.com, dan semua akun layanan serta workload identity pool di project mana pun di example.com.
Dengan kebijakan ini, akun utama di example.com tidak dapat menggunakan izin
yang diblokir oleh kebijakan Batas Akses Akun Utama untuk
mengakses resource di luar example.com, meskipun mereka memiliki izin tersebut
di resource tersebut.
Dalam hal ini, kebijakan Batas Akses Akun Utama menggunakan versi penerapan
4, sehingga dapat memblokir izin storage.objects.get. Akibatnya, Tal tidak akan dapat melihat objek di bucket cymbalgroup.com, meskipun dia diberi peran Storage Admin di bucket tersebut.
Membuat akun layanan memenuhi syarat untuk mengakses resource dalam satu project
Anda juga dapat menggunakan kebijakan Batas Akses Akun Utama untuk membuat subset akun utama memenuhi syarat untuk mengakses subset resource di organisasi Anda.
Misalnya, bayangkan Anda memiliki project, example-dev, dengan nomor project 901234567890. Anda ingin memastikan bahwa akun layanan di example-dev hanya memenuhi syarat untuk mengakses resource di example-dev.
Untuk melakukannya, pertama-tama buat kebijakan Batas Akses Akun Utama baru yang
membuat akun utama memenuhi syarat untuk mengakses resource di dev-project:
{
"name": "organizations/0123456789012/locations/global/principalAccessBoundaryPolicies/example-dev-only",
"displayName": "Boundary for principals in example-dev",
"details": {
"rules": [
{
"description": "Principals are only eligible to access resources in example-dev",
"resources": [
"//cloudresourcemanager.googleapis.com/projects/example-dev"
],
"effect": "ALLOW"
}
],
"enforcementVersion": "4"
}
}
Kebijakan Batas Akses Akun Utama ini menggunakan versi penerapan 4, yang berarti
kebijakan ini dapat memblokir semua izin yang didukung dalam versi penerapan
4.
Setelah membuat kebijakan Batas Akses Akun Utama, buat binding kebijakan untuk
mengikat kebijakan baru ke semua akun utama di example-dev, dan tambahkan
kondisi agar binding kebijakan hanya berlaku untuk akun
layanan:
{
"name": "organizations/0123456789012/locations/global/policyBindings/example-dev-only-binding",
"displayName": "Bind policy to all service accounts in example-dev",
"target": {
"principalSet": "//cloudresourcemanager.googleapis.com/projects/example-dev"
},
"policyKind": "PRINCIPAL_ACCESS_BOUNDARY",
"policy": "organizations/0123456789012/locations/global/principalAccessBoundaryPolicies/example-dev-only",
"condition": {
"title": "Only service accounts",
"description": "Only enforce the policy if the principal in the request is a service account",
"expression": "principal.type == 'iam.googleapis.com/ServiceAccount'"
}
}
Jika ini adalah satu-satunya kebijakan Batas Akses Akun Utama yang tunduk pada akun layanan, akun layanan tersebut tidak akan memenuhi syarat untuk menggunakan izin apa pun yang dapat diblokir oleh kebijakan Batas Akses Akun Utama untuk mengakses resource apa pun di luar example-dev.
Mengelola kelayakan untuk berbagai grup akun utama
Anda dapat menggunakan beberapa kebijakan Batas Akses Akun Utama di organisasi yang sama untuk membuat akun utama yang berbeda memenuhi syarat untuk mengakses resource yang berbeda. Saat menggunakan beberapa kebijakan Batas Akses Akun Utama, gunakan kondisi dalam binding kebijakan untuk memastikan bahwa setiap kebijakan hanya berlaku untuk akun utama yang Anda inginkan.
Misalnya, bayangkan Anda ingin sebagian besar akun utama memenuhi syarat untuk mengakses semua
resource di organisasi Anda, seperti yang ditunjukkan di Mencegah pengguna mengakses
resource di luar organisasi Anda. Namun, Anda juga
ingin memastikan akun layanan di example-dev hanya memenuhi syarat untuk
mengakses resource di example-dev, seperti yang ditunjukkan di Membuat akun layanan memenuhi syarat
untuk mengakses resource dalam satu project.
Untuk mencapai tujuan ini, lakukan hal berikut:
Mengikuti contoh di Mencegah pengguna mengakses resource di luar organisasi Anda, buat kebijakan Batas Akses Akun Utama yang membuat akun utama memenuhi syarat untuk mengakses resource di
example.comdan ikat ke kumpulan akun utama organisasi.Mengikuti contoh di Membuat akun layanan memenuhi syarat untuk mengakses resource dalam satu project, buat kebijakan Batas Akses Akun Utama yang membuat akun layanan di
example-devmemenuhi syarat untuk mengakses resource diexample-devdan ikat ke akun layanan diexample-dev.Kecualikan akun layanan di
example-devdari kebijakan Batas Akses Akun Utama yang membuat akun utama memenuhi syarat untuk mengakses semua resource diexample.com. Untuk melakukannya, tambahkan kondisi berikut ke binding kebijakan yang melampirkan kebijakan Batas Akses Akun Utama tersebut ke kumpulan akun utama organisasi:"condition": { "title": "Exempt example-dev service accounts", "description": "Don't enforce the policy for service accounts in the example-dev project", "expression": "principal.type != 'iam.googleapis.com/ServiceAccount' || (!principal.subject.endsWith('@example-dev.iam.gserviceaccount.com') && principal.subject != 'example-dev@appspot.gserviceaccount.com' && principal.subject != '901234567890-compute@developer.gserviceaccount.com')" }
Langkah terakhir ini sangat penting—jika Anda tidak mengecualikan akun layanan example-dev dari kebijakan Batas Akses Akun Utama awal, kebijakan tersebut akan membuat akun layanan memenuhi syarat untuk mengakses semua resource di example.com, terlepas dari kebijakan Batas Akses Akun Utama lain yang tunduk padanya. Untuk mengetahui informasi selengkapnya, lihat
Menentukan resource yang memenuhi syarat.
Anda juga harus membuat dan melampirkan kebijakan Batas Akses Akun Utama baru ke akun layanan example-dev sebelum mengecualikannya dari kebijakan Batas Akses Akun Utama awal. Mengikuti prosedur ini memastikan bahwa akun layanan
selalu tunduk pada setidaknya satu kebijakan Batas Akses Akun Utama, yang
mencegahnya menjadi memenuhi syarat untuk mengakses semua Google Cloud
resource. Untuk mengetahui informasi selengkapnya tentang cara mengurangi
resource yang memenuhi syarat untuk diakses oleh akun utama dengan aman, lihat Mengurangi resource
yang memenuhi syarat untuk diakses oleh akun utama.
Langkah berikutnya
- Pelajari cara membuat dan menerapkan kebijakan Batas Akses Akun Utama.
- Tinjau izin yang diblokir oleh setiap versi penerapan kebijakan Batas Akses Akun Utama.