Menggunakan kondisi IAM kebijakan untuk kontrol akses berbutir halus - Amazon DynamoDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan kondisi IAM kebijakan untuk kontrol akses berbutir halus

Ketika memberikan izin di DynamoDB, Anda dapat menetapkan syarat yang menentukan bagaimana kebijakan izin berlaku.

Gambaran Umum

Di DynamoDB, Anda memiliki opsi untuk menentukan kondisi saat memberikan izin menggunakan IAM kebijakan (lihat). Manajemen Identitas dan Akses untuk Amazon DynamoDB Sebagai contoh, Anda dapat:

  • Memberi izin kepada pengguna akan akses hanya-baca pada item dan atribut tertentu dalam tabel atau indeks sekunder.

  • Memberi izin kepada pengguna akan akses hanya-tulis pada atribut tertentu dalam tabel, berdasarkan identitas pengguna tersebut.

Di DynamoDB, Anda dapat menentukan kondisi dalam kebijakan menggunakan kunci kondisi, seperti IAM yang diilustrasikan dalam kasus penggunaan di bagian berikut.

catatan

Beberapa AWS layanan juga mendukung kondisi berbasis tag; Namun, DynamoDB tidak.

Kasus penggunaan izin

Selain mengontrol akses ke tindakan API DynamoDB, Anda juga dapat mengontrol akses ke item dan atribut data individual. Misalnya, Anda dapat melakukan hal berikut:

  • Memberikan izin pada tabel, namun batasi akses ke item tertentu dalam tabel tersebut berdasarkan nilai kunci primer tertentu. Misalnya aplikasi jejaring sosial untuk permainan, yang mana semua data permainan yang disimpan pengguna disimpan dalam satu tabel, tetapi tidak ada pengguna yang dapat mengakses item data yang bukan miliknya, seperti yang diperlihatkan dalam ilustrasi berikut:

    Kasus penggunaan yang memberikan akses tingkat tabel ke pengguna tetapi membatasi akses ke item data tertentu.
  • Menyembunyikan informasi sehingga hanya subset dari atribut yang terlihat oleh pengguna. Misalnya aplikasi yang menampilkan data penerbangan untuk bandara terdekat, berdasarkan lokasi pengguna. Nama maskapai penerbangan, waktu kedatangan dan keberangkatan, serta nomor penerbangan semuanya ditampilkan. Namun atribut seperti nama pilot atau jumlah penumpang disembunyikan, seperti terlihat pada ilustrasi berikut:

    Kasus penggunaan yang hanya menampilkan sebagian data kepada pengguna, tetapi menyembunyikan atribut tertentu dari data.

Untuk menerapkan kontrol akses berbutir halus semacam ini, Anda menulis kebijakan IAM izin yang menentukan kondisi untuk mengakses kredensi keamanan dan izin terkait. Anda kemudian menerapkan kebijakan tersebut ke pengguna, grup, atau peran yang Anda buat menggunakan IAM konsol. IAMKebijakan Anda dapat membatasi akses ke setiap item dalam tabel, akses ke atribut dalam item tersebut, atau keduanya secara bersamaan.

Anda juga dapat menggunakan federasi identitas web untuk mengontrol akses oleh pengguna yang diautentikasi dengan Login dengan Amazon, Facebook, atau Google. Untuk informasi selengkapnya, lihat Menggunakan federasi identitas web.

Anda menggunakan IAM Condition elemen untuk menerapkan kebijakan kontrol akses berbutir halus. Dengan menambahkan elemen Condition ke kebijakan izin, Anda dapat mengizinkan atau menolak akses ke item dan atribut dalam tabel dan indeks DynamoDB, berdasarkan kebutuhan bisnis khusus Anda.

Sebagai contoh, pertimbangkan aplikasi game seluler yang memungkinkan pemain memilih dan memainkan berbagai permainan berbeda. Aplikasi ini menggunakan tabel DynamoDB bernama GameScores untuk melacak skor tertinggi dan data pengguna lainnya. Setiap item dalam tabel diidentifikasi secara unik berdasarkan ID pengguna dan nama permainan yang dimainkan pengguna. Tabel GameScores memiliki kunci primer yang terdiri dari kunci partisi (UserId) dan kunci urutan (GameTitle). Pengguna hanya memiliki akses ke data game yang terkait dengan ID pengguna mereka. Seorang pengguna yang ingin bermain game harus termasuk dalam IAM peran bernamaGameRole, yang memiliki kebijakan keamanan yang melekat padanya.

Untuk mengelola izin pengguna di aplikasi ini, Anda dapat menulis kebijakan izin seperti berikut:

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowAccessToOnlyItemsMatchingUserID", "Effect":"Allow", "Action":[ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource":[ "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores" ], "Condition":{ "ForAllValues:StringEquals":{ "dynamodb:LeadingKeys":[ "${www.amazon.com:user_id}" ], "dynamodb:Attributes":[ "UserId", "GameTitle", "Wins", "Losses", "TopScore", "TopScoreDateTime" ] }, "StringEqualsIfExists":{ "dynamodb:Select":"SPECIFIC_ATTRIBUTES" } } } ] }

Selain memberikan izin untuk tindakan DynamoDB tertentu (elemen Action) pada tabel GameScores (elemen Resource), elemen Condition menggunakan kunci kondisi khusus untuk DynamoDB berikut yang membatasi izin sebagai berikut:

  • dynamodb:LeadingKeys – Kunci ketentuan ini memungkinkan pengguna untuk mengakses hanya item yang nilai kunci partisinya cocok dengan ID pengguna mereka. ID ini, ${www.amazon.com:user_id}, adalah variabel substitusi. Untuk informasi selengkapnya tentang variabel substitusi, lihat Menggunakan federasi identitas web.

  • dynamodb:Attributes – Kunci ketentuan ini membatasi akses ke atribut tertentu sehingga hanya tindakan yang tercantum dalam kebijakan izin yang dapat mengembalikan nilai untuk atribut ini. Selain itu, klausul StringEqualsIfExists memastikan bahwa aplikasi harus selalu menyediakan daftar atribut tertentu untuk ditindaklanjuti dan aplikasi tidak dapat meminta semua atribut.

Ketika IAM kebijakan dievaluasi, hasilnya selalu benar (akses diizinkan) atau salah (akses ditolak). Jika ada bagian dari elemen Condition yang false, seluruh kebijakan mengevaluasi ke false dan akses ditolak.

penting

Jika Anda menggunakan dynamodb:Attributes, Anda harus menentukan nama semua atribut kunci primer dan kunci indeks untuk tabel dan indeks sekunder apa pun yang tercantum dalam kebijakan. Jika tidak, DynamoDB tidak dapat menggunakan atribut kunci ini untuk melakukan tindakan yang diminta.

IAMdokumen kebijakan hanya dapat berisi karakter Unicode berikut: tab horizontal (U+0009), linefeed (U+000A), carriage return (U+000D), dan karakter dalam rentang U+0020 hingga U+00FF.

Menentukan ketentuan: Menggunakan kunci syarat

AWS menyediakan satu set kunci kondisi yang telah ditentukan (AWS-wide condition keys) untuk semua AWS layanan yang mendukung kontrol IAM akses. Misalnya, Anda dapat menggunakan kunci kondisi aws:SourceIp untuk memeriksa alamat IP pemohon sebelum mengizinkan tindakan yang akan dilakukan. Untuk informasi selengkapnya dan daftar tombol AWS-wide, lihat Kunci yang Tersedia untuk Ketentuan di Panduan IAM Pengguna.

Tabel berikut menunjukkan kunci kondisi layanan khusus DynamoDB yang berlaku untuk DynamoDB.

Kunci Kondisi DynamoDB Deskripsi
dynamodb:LeadingKeys

Mewakili atribut kunci pertama dari tabel—dengan kata lain, kunci partisi. Nama kunci LeadingKeys bersifat jamak, meskipun kuncinya digunakan dengan tindakan satu item. Selain itu, Anda harus menggunakan pengubah ForAllValues ketika menggunakan LeadingKeys dalam suatu kondisi.

dynamodb:Select

Mewakili parameter Select dari permintaan Query atau Scan. Select dapat berupa nilai berikut:

  • ALL_ATTRIBUTES

  • ALL_PROJECTED_ATTRIBUTES

  • SPECIFIC_ATTRIBUTES

  • COUNT

dynamodb:Attributes

Merupakan daftar nama atribut dalam permintaan, atau atribut yang dikembalikan dari permintaan. Attributesnilai diberi nama dengan cara yang sama dan memiliki arti yang sama dengan parameter untuk tindakan API DynamoDB tertentu, seperti yang ditunjukkan berikut:

  • AttributesToGet

    Digunakan oleh: BatchGetItem, GetItem, Query, Scan

  • AttributeUpdates

    Digunakan oleh: UpdateItem

  • Expected

    Digunakan oleh: DeleteItem, PutItem, UpdateItem

  • Item

    Digunakan oleh: PutItem

  • ScanFilter

    Digunakan oleh: Scan

dynamodb:ReturnValues

Mewakili parameter ReturnValues dari suatu permintaan. ReturnValues dapat berupa nilai berikut:

  • ALL_OLD

  • UPDATED_OLD

  • ALL_NEW

  • UPDATED_NEW

  • NONE

dynamodb:ReturnConsumedCapacity

Mewakili parameter ReturnConsumedCapacity dari suatu permintaan. ReturnConsumedCapacity dapat berupa salah satu nilai berikut:

  • TOTAL

  • NONE

Membatasi akses pengguna

Banyak kebijakan IAM izin memungkinkan pengguna untuk mengakses hanya item tersebut dalam tabel di mana nilai kunci partisi cocok dengan pengenal pengguna. Misalnya, aplikasi game sebelumnya membatasi akses dengan cara ini sehingga pengguna hanya dapat mengakses data game yang dikaitkan dengan ID pengguna mereka. Variabel IAM substitusi${www.amazon.com:user_id},${graph.facebook.com:id}, dan ${accounts.google.com:sub} berisi pengenal pengguna untuk Login with Amazon, Facebook, dan Google. Untuk mempelajari cara aplikasi masuk ke salah satu penyedia identitas ini dan memperoleh pengidentifikasi ini, lihat Menggunakan federasi identitas web.

catatan

Masing-masing contoh pada bagian berikut menetapkan klausul Effect untuk Allow dan menentukan hanya tindakan, sumber daya, dan parameter yang diizinkan. Akses hanya diizinkan untuk apa yang secara eksplisit tercantum dalam kebijakan. IAM

Dalam beberapa kasus, dimungkinkan untuk menulis ulang kebijakan ini sehingga kebijakan berbasis penolakan (yaitu, pengaturan klausul Effect untuk Deny dan membalikkan semua logika dalam kebijakan). Namun, sebaiknya Anda menghindari penggunaan kebijakan berbasis penolakan dengan DynamoDB karena kebijakan sulit untuk ditulis dengan benar, dibandingkan dengan kebijakan berbasis izin. Selain itu, perubahan masa depan pada API DynamoDB (atau perubahan pada input API yang ada) dapat membuat kebijakan berbasis penolakan tidak efektif.

Kebijakan Contoh: Menggunakan ketentuan untuk kontrol parameter terperinci

Bagian ini menunjukkan beberapa kebijakan untuk mengimplementasikan kontrol akses terperinci pada tabel dan indeks DynamoDB.

catatan

Semua contoh menggunakan Wilayah us-west-2 dan berisi akun fiktif. IDs

Video di bawah ini menjelaskan kontrol akses berbutir halus di DynamoDB menggunakan kondisi kebijakan. IAM

1: Memberikan izin yang membatasi akses ke item dengan nilai kunci partisi tertentu

Kebijakan izin berikut memberikan izin yang memungkinkan seperangkat tindakan DynamoDB pada tabel GamesScore. Kebijakan tersebut menggunakan kunci ketentuan dynamodb:LeadingKeys untuk membatasi tindakan pengguna hanya pada item yang nilai kunci partisi UserID-nya cocok dengan ID pengguna unik Login with Amazon untuk aplikasi ini.

penting

Daftar tindakan tidak termasuk izin untuk Scan karena Scan mengembalikan semua item apa pun kunci awalnya.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"FullAccessToUserItems", "Effect":"Allow", "Action":[ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource":[ "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores" ], "Condition":{ "ForAllValues:StringEquals":{ "dynamodb:LeadingKeys":[ "${www.amazon.com:user_id}" ] } } } ] }
catatan

Saat menggunakan variabel kebijakan, Anda harus secara jelas menyebutkan versi 2012-10-17 dalam kebijakan tersebut. Versi default bahasa kebijakan akses, 2008-10-17, tidak mendukung variabel kebijakan.

Untuk menerapkan akses hanya baca, Anda dapat menghapus tindakan apa pun yang dapat mengubah data. Dalam kebijakan berikut, hanya tindakan yang menyediakan akses baca saja yang disertakan dalam ketentuan.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"ReadOnlyAccessToUserItems", "Effect":"Allow", "Action":[ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query" ], "Resource":[ "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores" ], "Condition":{ "ForAllValues:StringEquals":{ "dynamodb:LeadingKeys":[ "${www.amazon.com:user_id}" ] } } } ] }
penting

Jika Anda menggunakan dynamodb:Attributes, Anda harus menentukan nama semua atribut kunci primer dan kunci indeks, untuk tabel dan indeks sekunder apa pun yang tercantum dalam kebijakan. Jika tidak, DynamoDB tidak dapat menggunakan atribut kunci ini untuk melakukan tindakan yang diminta.

2: Memberikan izin yang membatasi akses ke atribut tertentu dalam tabel

Kebijakan izin berikut mengizinkan akses ke hanya dua atribut tertentu dalam tabel dengan menambahkan kunci ketentuan dynamodb:Attributes. Atribut ini dapat dibaca, ditulis, atau dievaluasi dalam penulisan bersyarat atau filter pemindaian.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"LimitAccessToSpecificAttributes", "Effect":"Allow", "Action":[ "dynamodb:UpdateItem", "dynamodb:GetItem", "dynamodb:Query", "dynamodb:BatchGetItem", "dynamodb:Scan" ], "Resource":[ "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores" ], "Condition":{ "ForAllValues:StringEquals":{ "dynamodb:Attributes":[ "UserId", "TopScore" ] }, "StringEqualsIfExists":{ "dynamodb:Select":"SPECIFIC_ATTRIBUTES", "dynamodb:ReturnValues":[ "NONE", "UPDATED_OLD", "UPDATED_NEW" ] } } } ] }
catatan

Kebijakan ini mengambil pendekatan daftar izin, yang mengizinkan akses ke set atribut bernama. Anda dapat menulis kebijakan serupa yang menolak akses ke atribut lain. Kami tidak merekomendasikan pendekatan daftar penolakan ini. Pengguna dapat menentukan nama atribut yang ditolak ini dengan mengikuti prinsip hak akses paling rendah, seperti yang dijelaskan di Wikipedia di http://en.wikipedia.org/wiki/Principle_of_least_privilege, dan gunakan pendekatan daftar izin untuk menghitung semua nilai yang diizinkan, daripada menentukan atribut yang ditolak.

Kebijakan ini tidak mengizinkan PutItem, DeleteItem, atau BatchWriteItem. Tindakan ini selalu menggantikan seluruh item sebelumnya, yang memungkinkan pengguna menghapus nilai sebelumnya untuk atribut yang tidak boleh mereka akses.

Klausa StringEqualsIfExists dalam kebijakan izin memastikan hal berikut:

  • Jika pengguna menentukan parameter Select, nilainya harus SPECIFIC_ATTRIBUTES. Persyaratan ini mencegah API tindakan mengembalikan atribut apa pun yang tidak diizinkan, seperti dari proyeksi indeks.

  • Jika pengguna menentukan parameter ReturnValues, nilainya harus NONE, UPDATED_OLD, atau UPDATED_NEW. Hal ini diperlukan karena tindakan UpdateItem tersebut juga melakukan operasi baca implisit untuk memeriksa apakah suatu item ada sebelum menggantinya, dan agar nilai atribut sebelumnya dapat dikembalikan jika diminta. Membatasi ReturnValues dengan cara ini memastikan bahwa pengguna hanya dapat membaca atau menulis atribut yang diizinkan.

  • Klausa StringEqualsIfExists memastikan bahwa hanya satu dari parameter ini — Select atau ReturnValues — yang dapat digunakan per permintaan, dalam konteks tindakan yang diizinkan.

Berikut ini adalah beberapa variasi pada kebijakan ini:

  • Untuk hanya mengizinkan tindakan baca, Anda dapat menghapus UpdateItem dari daftar tindakan yang diizinkan. Karena tidak ada tindakan yang tersisa menerima ReturnValues, Anda dapat menghapus ReturnValues dari kondisi. Anda juga dapat mengubah StringEqualsIfExists menjadi StringEquals karena parameter Select selalu memiliki nilai (ALL_ATTRIBUTES, kecuali ditentukan lain).

  • Untuk hanya mengizinkan tindakan tulis, Anda dapat menghapus semuanya kecuali UpdateItem dari daftar tindakan yang diizinkan. Karena UpdateItem tidak menggunakan parameter Select, Anda dapat menghapus Select dari kondisi. Anda juga harus mengubah StringEqualsIfExists menjadi StringEquals karena parameter ReturnValues selalu memiliki nilai (NONE, kecuali ditentukan lain).

  • Untuk mengizinkan semua atribut yang namanya cocok dengan pola, gunakan StringLike, bukan StringEquals, dan gunakan pola multi-karakter yang cocok dengan karakter wildcard (*).

3: Memberikan izin untuk mencegah pembaruan pada atribut tertentu

Kebijakan izin berikut membatasi akses pengguna untuk memperbarui hanya atribut tertentu yang diidentifikasi oleh kunci kondisi dynamodb:Attributes. Kondisi StringNotLike mencegah aplikasi memperbarui atribut yang ditentukan menggunakan kunci kondisi dynamodb:Attributes.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PreventUpdatesOnCertainAttributes", "Effect":"Allow", "Action":[ "dynamodb:UpdateItem" ], "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/GameScores", "Condition":{ "ForAllValues:StringNotLike":{ "dynamodb:Attributes":[ "FreeGamesAvailable", "BossLevelUnlocked" ] }, "StringEquals":{ "dynamodb:ReturnValues":[ "NONE", "UPDATED_OLD", "UPDATED_NEW" ] } } } ] }

Perhatikan hal-hal berikut:

  • Tindakan UpdateItem, seperti tindakan tulis lainnya, memerlukan akses baca ke item sehingga dapat mengembalikan nilai sebelum dan sesudah pembaruan. Dalam kebijakan tersebut, Anda membatasi tindakan untuk mengakses hanya atribut yang diizinkan yang akan diperbarui dengan menentukan kunci ketentuan dynamodb:ReturnValues. Kunci kondisi membatasi ReturnValues dalam permintaan untuk menentukan hanya NONE, UPDATED_OLD, atau UPDATED_NEW dan tidak mencakup ALL_OLD atau ALL_NEW.

  • Tindakan PutItem dan DeleteItem mengganti seluruh item, dengan demikian memungkinkan aplikasi memodifikasi atribut apa pun. Jadi ketika membatasi aplikasi untuk memperbarui hanya atribut tertentu, Anda tidak boleh memberikan izin untuk iniAPIs.

4: Berikan izin untuk mengkueri hanya atribut yang diproyeksikan dalam indeks

Kebijakan izin berikut memungkinkan kueri pada indeks sekunder (TopScoreDateTimeIndex) dengan menggunakan kunci ketentuan dynamodb:Attributes. Kebijakan ini juga membatasi kueri untuk meminta atribut tertentu saja yang telah diproyeksikan ke dalam indeks.

Untuk mengharuskan aplikasi menentukan daftar atribut dalam kueri, kebijakan juga menentukan kunci ketentuan dynamodb:Select untuk mengharuskan parameter Select dari tindakan Query DynamoDB adalah SPECIFIC_ATTRIBUTES. Daftar atribut terbatas pada daftar tertentu yang disediakan menggunakan kunci ketentuan dynamodb:Attributes.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"QueryOnlyProjectedIndexAttributes", "Effect":"Allow", "Action":[ "dynamodb:Query" ], "Resource":[ "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex" ], "Condition":{ "ForAllValues:StringEquals":{ "dynamodb:Attributes":[ "TopScoreDateTime", "GameTitle", "Wins", "Losses", "Attempts" ] }, "StringEquals":{ "dynamodb:Select":"SPECIFIC_ATTRIBUTES" } } } ] }

Kebijakan izin berikut ini serupa, tetapi kueri harus meminta semua atribut yang telah diproyeksikan ke dalam indeks.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"QueryAllIndexAttributes", "Effect":"Allow", "Action":[ "dynamodb:Query" ], "Resource":[ "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex" ], "Condition":{ "StringEquals":{ "dynamodb:Select":"ALL_PROJECTED_ATTRIBUTES" } } } ] }

5: Memberikan izin untuk membatasi akses ke atribut tertentu dan nilai-nilai kunci partisi

Kebijakan izin berikut memungkinkan tindakan DynamoDB tertentu (ditentukan dalam elemen Action) pada tabel dan indeks tabel (ditentukan dalam elemen Resource). Kebijakan menggunakan kunci ketentuan dynamodb:LeadingKeys untuk membatasi izin hanya untuk item yang nilai kunci partisinya cocok dengan ID Facebook pengguna.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"LimitAccessToCertainAttributesAndKeyValues", "Effect":"Allow", "Action":[ "dynamodb:UpdateItem", "dynamodb:GetItem", "dynamodb:Query", "dynamodb:BatchGetItem" ], "Resource":[ "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores", "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex" ], "Condition":{ "ForAllValues:StringEquals":{ "dynamodb:LeadingKeys":[ "${graph.facebook.com:id}" ], "dynamodb:Attributes":[ "attribute-A", "attribute-B" ] }, "StringEqualsIfExists":{ "dynamodb:Select":"SPECIFIC_ATTRIBUTES", "dynamodb:ReturnValues":[ "NONE", "UPDATED_OLD", "UPDATED_NEW" ] } } } ] }

Perhatikan hal-hal berikut:

  • Tulis tindakan yang diizinkan oleh kebijakan (UpdateItem) hanya dapat memodifikasi attribute-A atau attribute-B.

  • Karena kebijakan mengizinkan UpdateItem, aplikasi dapat menyisipkan item baru, dan atribut yang tersembunyi akan null dalam item baru. Jika atribut ini diproyeksikan ke dalam TopScoreDateTimeIndex, kebijakan memiliki manfaat tambahan untuk mencegah kueri yang menyebabkan pengambilan dari tabel.

  • Aplikasi tidak dapat membaca atribut apa pun selain yang tercantum dalam dynamodb:Attributes. Dengan adanya kebijakan ini, aplikasi harus menetapkan parameter Select ke SPECIFIC_ATTRIBUTES dalam permintaan baca, dan hanya atribut dalam daftar izin yang dapat diminta. Untuk permintaan tulis, aplikasi tidak dapat mengatur ReturnValues ke ALL_OLD atau ALL_NEW dan tidak dapat melakukan operasi tulis bersyarat berdasarkan atribut lainnya.

Topik terkait