Kebijakan Identity and Access Management (IAM), yang menentukan kontrol akses untuk resource Google Cloud.
Policy adalah kumpulan bindings. binding mengikat satu atau beberapa members, atau akun utama, ke role tunggal. Akun utama dapat berupa akun pengguna, akun layanan, grup Google, dan domain (seperti G Suite). role adalah daftar izin yang memiliki nama; setiap role dapat berupa peran bawaan IAM atau peran khusus yang dibuat pengguna.
Untuk beberapa jenis resource Google Cloud, binding juga dapat menentukan condition, yang merupakan ekspresi logis yang mengizinkan akses ke resource hanya jika ekspresi dievaluasi menjadi true. Kondisi dapat menambahkan batasan berdasarkan atribut permintaan, resource, atau keduanya. Untuk mempelajari resource mana yang mendukung kondisi dalam kebijakan IAM-nya, lihat dokumentasi IAM.
Nilai yang valid adalah 0, 1, dan 3. Permintaan yang menentukan nilai yang tidak valid akan ditolak.
Setiap operasi yang memengaruhi binding peran bersyarat harus menentukan versi 3. Persyaratan ini berlaku untuk operasi berikut:
Mendapatkan kebijakan yang menyertakan binding peran bersyarat
Menambahkan binding peran bersyarat ke kebijakan
Mengubah binding peran bersyarat dalam kebijakan
Menghapus binding peran, dengan atau tanpa kondisi, dari kebijakan yang menyertakan kondisi
Penting: Jika menggunakan IAM Conditions, Anda harus menyertakan kolom etag setiap kali memanggil setIamPolicy. Jika Anda menghapus kolom ini, IAM memungkinkan Anda menimpa kebijakan versi 3 dengan kebijakan versi 1, dan semua kondisi dalam kebijakan versi 3 akan hilang.
Jika kebijakan tidak menyertakan kondisi apa pun, operasi pada kebijakan tersebut dapat menentukan versi yang valid atau membiarkan kolom tidak ditetapkan.
Untuk mempelajari resource mana yang mendukung kondisi dalam kebijakan IAM-nya, lihat dokumentasi IAM.
Mengaitkan daftar members, atau akun utama, dengan role. Secara opsional, dapat menentukan condition yang menentukan cara dan waktu penerapan bindings. Setiap bindings harus berisi minimal satu akun utama.
bindings dalam Policy dapat merujuk ke maksimal 1.500 akun utama; hingga 250 akun utama ini dapat berupa grup Google. Setiap kemunculan akun utama akan dihitung dalam batas ini. Misalnya, jika bindings memberikan 50 peran berbeda ke user:alice@example.com, dan bukan ke akun utama lainnya, Anda dapat menambahkan 1.450 akun utama lain ke bindings di Policy.
etag digunakan untuk kontrol konkurensi optimis sebagai cara untuk membantu mencegah pembaruan kebijakan secara bersamaan agar tidak menimpa satu sama lain. Sebaiknya sistem menggunakan etag dalam siklus read-modify-write untuk melakukan pembaruan kebijakan guna menghindari kondisi perlombaan: etag ditampilkan dalam respons ke getIamPolicy, dan sistem diharapkan menempatkan etag tersebut dalam permintaan ke setIamPolicy untuk memastikan bahwa perubahannya akan diterapkan ke versi kebijakan yang sama.
Penting: Jika menggunakan IAM Conditions, Anda harus menyertakan kolom etag setiap kali memanggil setIamPolicy. Jika Anda menghapus kolom ini, IAM memungkinkan Anda menimpa kebijakan versi 3 dengan kebijakan versi 1, dan semua kondisi dalam kebijakan versi 3 akan hilang.
Peran yang ditetapkan ke daftar members, atau akun utama. Misalnya, roles/viewer, roles/editor, atau roles/owner.
Untuk mengetahui ringkasan peran dan izin IAM, lihat dokumentasi IAM. Untuk mengetahui daftar peran bawaan yang tersedia, lihat di sini.
members[]
string
Menentukan akun utama yang meminta akses untuk resource Google Cloud. members dapat memiliki nilai berikut:
allUsers: ID khusus yang mewakili siapa saja yang ada di internet; dengan atau tanpa Akun Google.
allAuthenticatedUsers: ID khusus yang mewakili siapa saja yang diautentikasi dengan Akun Google atau akun layanan. Tidak mencakup identitas yang berasal dari penyedia identitas (IdP) eksternal melalui federasi identitas.
user:{emailid}: Alamat email yang mewakili Akun Google tertentu. Misalnya, alice@example.com .
serviceAccount:{emailid}: Alamat email yang mewakili akun layanan Google. Contoh, my-other-app@appspot.gserviceaccount.com.
serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: ID untuk akun layanan Kubernetes. Misalnya, my-project.svc.id.goog[my-namespace/my-kubernetes-sa].
group:{emailid}: Alamat email yang mewakili grup Google. Contoh, admins@example.com.
domain:{domain}: Domain G Suite (primer) yang mewakili semua pengguna domain tersebut. Misalnya google.com atau example.com.
principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}: Satu identitas dalam kumpulan identitas tenaga kerja.
principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{groupId}: Semua identitas tenaga kerja dalam grup.
principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}: Semua identitas tenaga kerja dengan nilai atribut tertentu.
principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*: Semua identitas dalam kumpulan identitas tenaga kerja.
principal://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}: Satu identitas dalam workload identity pool.
principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/group/{groupId}: Grup workload identity pool.
principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}: Semua identitas dalam workload identity pool dengan atribut tertentu.
principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/*: Semua identitas dalam workload identity pool.
deleted:user:{emailid}?uid={uniqueid}: Alamat email (plus ID unik) yang mewakili pengguna yang baru-baru ini dihapus. Misalnya, alice@example.com?uid=123456789012345678901. Jika pengguna dipulihkan, nilai ini akan dikembalikan ke user:{emailid} dan pengguna yang dipulihkan akan mempertahankan peran dalam binding.
deleted:serviceAccount:{emailid}?uid={uniqueid}: Alamat email (plus ID unik) yang mewakili akun layanan yang baru saja dihapus. Contoh, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. Jika akun layanan dibatalkan penghapusannya, nilai ini akan dikembalikan ke serviceAccount:{emailid} dan akun layanan yang dibatalkan penghapusannya akan mempertahankan peran dalam binding.
deleted:group:{emailid}?uid={uniqueid}: Alamat email (plus ID unik) yang mewakili grup Google yang baru saja dihapus. Contoh, admins@example.com?uid=123456789012345678901. Jika grup dipulihkan, nilai ini akan kembali ke group:{emailid} dan grup yang dipulihkan akan mempertahankan peran dalam binding.
deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}: Menghapus identitas tunggal di workforce identity pool. Contoh, deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value.
Jika kondisi bernilai true, binding ini akan berlaku untuk permintaan saat ini.
Jika kondisi bernilai false, berarti binding ini tidak berlaku untuk permintaan saat ini. Namun, binding peran yang berbeda mungkin memberikan peran yang sama kepada satu atau beberapa akun utama dalam binding ini.
Untuk mempelajari resource mana yang mendukung kondisi dalam kebijakan IAM-nya, lihat dokumentasi IAM.
Expr
Merepresentasikan ekspresi tekstual dalam sintaksis Common Expression Language (CEL). CEL adalah bahasa ekspresi mirip C. Sintaksis dan semantik CEL didokumentasikan di https://github.com/google/cel-spec.
Contoh (Perbandingan):
title: "Summary size limit"
description: "Determines if a summary is less than 100 chars"
expression: "document.summary.size() < 100"
Contoh (Kesetaraan):
title: "Requestor is owner"
description: "Determines if requestor is the document owner"
expression: "document.owner == request.auth.claims.email"
Contoh (Logika):
title: "Public documents"
description: "Determine whether the document should be publicly visible"
expression: "document.type != 'private' && document.type != 'internal'"
Contoh (Manipulasi Data):
title: "Notification string"
description: "Create a notification string with a timestamp."
expression: "'New message received at ' + string(document.create_time)"
Variabel dan fungsi yang tepat yang dapat direferensikan dalam ekspresi ditentukan oleh layanan yang mengevaluasinya. Lihat dokumentasi layanan untuk informasi tambahan.
Representasi tekstual ekspresi dalam sintaksis Common Expression Language.
title
string
Opsional. Judul untuk ekspresi, yaitu string singkat yang menjelaskan tujuannya. Ini dapat digunakan, misalnya, di UI yang memungkinkan untuk memasukkan ekspresi.
description
string
Opsional. Deskripsi ekspresi. Ini adalah teks yang lebih panjang yang menjelaskan ekspresi, misalnya saat diarahkan ke ekspresi tersebut di UI.
location
string
Opsional. String yang menunjukkan lokasi ekspresi untuk pelaporan error, misalnya nama file dan posisi dalam file.
AuditConfig
Menentukan konfigurasi audit untuk layanan. Konfigurasi menentukan jenis izin yang dicatat ke dalam log, dan identitas apa, jika ada, yang dikecualikan dari logging. AuditConfig harus memiliki satu atau beberapa AuditLogConfig.
Jika ada AuditConfigs untuk allServices dan layanan tertentu, gabungan dari kedua AuditConfigs tersebut akan digunakan untuk layanan tersebut: log_types yang ditentukan di setiap AuditConfig diaktifkan, dan exemptedMembers di setiap AuditLogConfig dikecualikan.
Untuk sampleservice, kebijakan ini mengaktifkan logging DATA_READ, DATA_WRITE, dan ADMIN_READ. Tindakan ini juga mengecualikan jose@example.com dari logging DATA_READ, dan aliya@example.com dari logging DATA_WRITE.
Menentukan layanan yang akan diaktifkan untuk logging audit. Misalnya, storage.googleapis.com, cloudsql.googleapis.com. allServices adalah nilai khusus yang mencakup semua layanan.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-30 UTC."],[[["\u003cp\u003eIAM policies manage access control for Google Cloud resources through a collection of bindings.\u003c/p\u003e\n"],["\u003cp\u003eA binding in an IAM policy links one or more principals (members) to a single role, with principals including user accounts, service accounts, Google groups, and domains.\u003c/p\u003e\n"],["\u003cp\u003eIAM policies can also contain a condition, which is a logical expression that must evaluate to true for the binding to apply, enabling constraint-based access.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eetag\u003c/code\u003e field in the policy JSON is crucial for optimistic concurrency control, especially when using IAM Conditions, to prevent simultaneous updates from overwriting each other.\u003c/p\u003e\n"],["\u003cp\u003eAudit configurations (\u003ccode\u003eauditConfigs\u003c/code\u003e) within an IAM policy allow for specifying which types of permissions are logged, and can also list exempted members for specific types of logging.\u003c/p\u003e\n"]]],[],null,["# Policy\n\n- [JSON representation](#SCHEMA_REPRESENTATION)\n- [Binding](#Binding)\n - [JSON representation](#Binding.SCHEMA_REPRESENTATION)\n- [Expr](#Expr)\n - [JSON representation](#Expr.SCHEMA_REPRESENTATION)\n- [AuditConfig](#AuditConfig)\n - [JSON representation](#AuditConfig.SCHEMA_REPRESENTATION)\n- [AuditLogConfig](#AuditLogConfig)\n - [JSON representation](#AuditLogConfig.SCHEMA_REPRESENTATION)\n- [LogType](#LogType)\n\nAn Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources.\n\nA `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role.\n\nFor some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).\n\n**JSON example:** \n\n {\n \"bindings\": [\n {\n \"role\": \"roles/resourcemanager.organizationAdmin\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-project-id@appspot.gserviceaccount.com\"\n ]\n },\n {\n \"role\": \"roles/resourcemanager.organizationViewer\",\n \"members\": [\n \"user:eve@example.com\"\n ],\n \"condition\": {\n \"title\": \"expirable access\",\n \"description\": \"Does not grant access after Sep 2020\",\n \"expression\": \"request.time \u003c timestamp('2020-10-01T00:00:00.000Z')\",\n }\n }\n ],\n \"etag\": \"BwWWja0YfJA=\",\n \"version\": 3\n }\n\n**YAML example:** \n\n bindings:\n - members:\n - user:mike@example.com\n - group:admins@example.com\n - domain:google.com\n - serviceAccount:my-project-id@appspot.gserviceaccount.com\n role: roles/resourcemanager.organizationAdmin\n - members:\n - user:eve@example.com\n role: roles/resourcemanager.organizationViewer\n condition:\n title: expirable access\n description: Does not grant access after Sep 2020\n expression: request.time \u003c timestamp('2020-10-01T00:00:00.000Z')\n etag: BwWWja0YfJA=\n version: 3\n\nFor a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).\n\nBinding\n-------\n\nAssociates `members`, or principals, with a `role`.\n\nExpr\n----\n\nRepresents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at \u003chttps://github.com/google/cel-spec\u003e.\n\nExample (Comparison): \n\n title: \"Summary size limit\"\n description: \"Determines if a summary is less than 100 chars\"\n expression: \"document.summary.size() \u003c 100\"\n\nExample (Equality): \n\n title: \"Requestor is owner\"\n description: \"Determines if requestor is the document owner\"\n expression: \"document.owner == request.auth.claims.email\"\n\nExample (Logic): \n\n title: \"Public documents\"\n description: \"Determine whether the document should be publicly visible\"\n expression: \"document.type != 'private' && document.type != 'internal'\"\n\nExample (Data Manipulation): \n\n title: \"Notification string\"\n description: \"Create a notification string with a timestamp.\"\n expression: \"'New message received at ' + string(document.create_time)\"\n\nThe exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.\n\nAuditConfig\n-----------\n\nSpecifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exemptedMembers in each AuditLogConfig are exempted.\n\nExample Policy with multiple AuditConfigs: \n\n {\n \"auditConfigs\": [\n {\n \"service\": \"allServices\",\n \"auditLogConfigs\": [\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\n \"user:jose@example.com\"\n ]\n },\n {\n \"logType\": \"DATA_WRITE\"\n },\n {\n \"logType\": \"ADMIN_READ\"\n }\n ]\n },\n {\n \"service\": \"sampleservice.googleapis.com\",\n \"auditLogConfigs\": [\n {\n \"logType\": \"DATA_READ\"\n },\n {\n \"logType\": \"DATA_WRITE\",\n \"exemptedMembers\": [\n \"user:aliya@example.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.\n\nAuditLogConfig\n--------------\n\nProvides the configuration for logging a type of permissions. Example: \n\n {\n \"auditLogConfigs\": [\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\n \"user:jose@example.com\"\n ]\n },\n {\n \"logType\": \"DATA_WRITE\"\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting [jose@example.com](mailto:jose@example.com) from DATA_READ logging.\n\nLogType\n-------\n\nThe list of valid permission types for which logging can be configured. Admin writes are always logged, and are not configurable."]]