Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan ketentuan kebijakan IAM untuk kontrol akses terperinci
Ketika memberikan izin di DynamoDB, Anda dapat menetapkan syarat yang menentukan bagaimana kebijakan izin berlaku.
Ikhtisar
Di DynamoDB, Anda memiliki pilihan untuk menentukan syarat saat memberikan izin menggunakan kebijakan IAM (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 ketentuan dalam kebijakan IAM menggunakan kunci ketentuan, seperti yang diilustrasikan dalam kasus penggunaan di bagian berikut.
Kasus penggunaan izin
Selain mengontrol akses ke tindakan DynamoDB API, Anda juga dapat mengontrol akses ke item data dan atribut 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:
-
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:
Untuk menerapkan kontrol akses terperinci semacam ini, Anda menulis kebijakan izin IAM yang menentukan kondisi untuk mengakses kredensial keamanan dan izin terkait. Anda kemudian menerapkan kebijakan tersebut kepada pengguna, grup, atau peran yang Anda buat menggunakan konsol IAM. Kebijakan IAM Anda dapat membatasi akses ke masing-masing 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 elemen Condition IAM untuk menerapkan kebijakan kontrol akses yang terperinci. 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.
Video di bawah ini menjelaskan kontrol akses berbutir halus di DynamoDB menggunakan kondisi kebijakan IAM.
Memahami Kontrol Akses Berbutir Halus di DynamoDB
Kontrol akses berbutir halus di DynamoDB memungkinkan Anda membuat batas izin yang tepat di berbagai tingkatan:
-
Kontrol akses tingkat item: Batasi pengguna untuk hanya mengakses item yang berisi nilai kunci tertentu, biasanya cocok dengan identitas atau cakupan izin mereka.
-
Kontrol akses tingkat atribut: Batasi atribut (kolom) mana yang dapat dilihat atau dimodifikasi pengguna, memungkinkan Anda untuk melindungi informasi sensitif sambil mengizinkan akses ke data yang tidak sensitif dalam item yang sama.
-
Kontrol khusus operasi: Menerapkan aturan izin yang berbeda berdasarkan jenis operasi yang dilakukan.
Kontrol ini diimplementasikan melalui kebijakan IAM menggunakan kunci kondisi khusus DynamoDB.
Menentukan ketentuan: Menggunakan kunci syarat
AWS menyediakan satu set kunci kondisi yang telah ditentukan (AWS-wide condition keys) untuk semua AWS layanan yang mendukung IAM untuk kontrol 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 Pengguna IAM.
Berikut ini adalah kunci kondisi khusus layanan DynamoDB yang berlaku untuk DynamoDB.
dynamodb:LeadingKeys-
Mewakili atribut kunci pertama dari tabel—dengan kata lain, kunci partisi. Nama kunci
LeadingKeysbersifat jamak, meskipun kuncinya digunakan dengan tindakan satu item. Selain itu, Anda harus menggunakan pengubahForAllValuesketika menggunakanLeadingKeysdalam suatu kondisi. dynamodb:Select-
Mewakili parameter
Selectdari suatu permintaan.Selectdapat berupa nilai berikut:-
ALL_ATTRIBUTES -
ALL_PROJECTED_ATTRIBUTES -
SPECIFIC_ATTRIBUTES -
COUNT
catatan
Meskipun sering dikaitkan dengan operasi Query dan Scan, kunci kondisi ini berlaku untuk semua operasi DynamoDB yang mengembalikan atribut item dan sangat penting untuk mengontrol akses atribut di semua tindakan API. Menggunakan StringEqualsIfExists atau batasan serupa pada kunci kondisi ini akan menerapkan batasan pada operasi di mana kunci kondisi ini berlaku, sambil mengabaikannya pada operasi yang tidak berlaku.
-
dynamodb:Attributes-
Merupakan daftar atribut tingkat atas yang diakses oleh permintaan. Atribut tingkat atas diakses oleh permintaan jika, atau atribut bersarang apa pun yang dikandungnya, ditentukan dalam parameter permintaan. Misalnya,
GetItempermintaan yang menentukanProjectionExpressiondari"Name, Address.City",dynamodb:Attributesdaftar akan mencakup “Nama” dan “Alamat”. JikaAttributesparameter disebutkan dalam kebijakan kontrol akses berbutir halus, pertimbangkan juga pembatasanReturnValuesdanSelectparameter untuk memastikan akses terbatas ke atribut tertentu di beberapa tindakan API seperti,, dan.GetItemQueryScancatatan
Kondisi ini dievaluasi hanya pada atribut yang ditentukan dalam permintaan (seperti dalam a ProjectionExpression), bukan pada atribut dalam respons. Jika no ProjectionExpression disediakan dalam permintaan, semua atribut akan dikembalikan terlepas dari batasan atribut apa pun dalam kebijakan. Lihat bagian “Memastikan pembatasan berbasis atribut diberlakukan” di bawah ini untuk detail tentang cara mengamankan akses atribut dengan benar.
dynamodb:ReturnValues-
Merupakan
ReturnValuesparameter permintaan. Bergantung pada tindakan API,ReturnValuesbisa berupa salah satu dari nilai berikut:-
ALL_OLD -
UPDATED_OLD -
ALL_NEW -
UPDATED_NEW -
NONE
-
dynamodb:ReturnConsumedCapacity-
Mewakili parameter
ReturnConsumedCapacitydari suatu permintaan.ReturnConsumedCapacitydapat berupa salah satu nilai berikut:-
TOTAL -
NONE
-
dynamodb:FirstPartitionKeyValues-
Merupakan atribut kunci pertama dari sebuah tabel—dengan kata lain, kunci partisi pertama. Nama kunci
FirstPartitionKeyValuesbersifat jamak, meskipun kuncinya digunakan dengan tindakan satu item. Selain itu, Anda harus menggunakanForAllValuespengubah saat menggunakanFirstPartitionKeyValuesdalam suatu kondisi.FirstPartitionKeyValuesdanLeadingKeysdapat digunakan dapat ditukar. dynamodb:SecondPartitionKeyValues-
Mirip dengan
dynamodb:FirstPartitionKeyValues. Merupakan kunci partisi kedua sumber daya. Nama kunciSecondPartitionKeyValuesbersifat jamak, meskipun kuncinya digunakan dengan tindakan satu item. dynamodb:ThirdPartitionKeyValues-
Mirip dengan
dynamodb:FirstPartitionKeyValues. Merupakan kunci partisi ketiga sumber daya. Nama kunciThirdPartitionKeyValuesbersifat jamak, meskipun kuncinya digunakan dengan tindakan satu item. dynamodb:FourthPartitionKeyValues-
Mirip dengan
dynamodb:FirstPartitionKeyValues. Merupakan kunci partisi keempat sumber daya. Nama kunciFourthPartitionKeyValuesbersifat jamak, meskipun kuncinya digunakan dengan tindakan satu item.
Memastikan pembatasan berbasis atribut diberlakukan
Saat menggunakan kondisi berbasis atribut untuk membatasi akses ke atribut tertentu, penting untuk memahami bagaimana kondisi ini dievaluasi:
-
Kondisi atribut dievaluasi hanya pada atribut yang ditentukan dalam permintaan, bukan pada atribut dalam respons.
-
Untuk operasi baca tanpa ProjectionExpression (GetItem, Kueri, Pemindaian, dll.), Semua atribut akan dikembalikan terlepas dari batasan atribut dalam kebijakan Anda. Untuk mencegah potensi paparan data sensitif ini, menerapkan kedua kondisi atribut (
dynamodb:Attributes) dan kondisi yang memerlukan atribut tertentu harus diminta (dynamodb:Select). -
Untuk operasi tulis (PutItem, UpdateItem, DeleteItem), ReturnValues parameter dapat mengembalikan item lengkap, berpotensi mengekspos atribut terbatas bahkan ketika operasi tulis itu sendiri mematuhi kebijakan Anda. Untuk mencegah eksposur ini, terapkan kondisi atribut (
dynamodb:Attributes) dan pembatasan pada ReturnValues (dynamodb:ReturnValues) dalam kebijakan Anda.
Membatasi akses pengguna
Banyak kebijakan izin IAM memungkinkan pengguna mengakses hanya item dalam tabel yang nilai kunci partisinya cocok dengan pengidentifikasi pengguna. Misalnya, aplikasi game sebelumnya membatasi akses dengan cara ini sehingga pengguna hanya dapat mengakses data game yang dikaitkan dengan ID pengguna mereka. Variabel substitusi IAM ${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.
penting
Kontrol akses berbutir halus tidak didukung untuk membatasi replikasi tabel global. Menerapkan kondisi kebijakan untuk kontrol akses berbutir halus ke prinsipal layanan DynamoDB atau peran terkait layanan yang digunakan untuk replikasi tabel global dapat mengganggu replikasi dalam tabel global.
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 tercantum secara eksplisit 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, kami menyarankan agar Anda menghindari penggunaan kebijakan berbasis penolakan dengan DynamoDB karena kebijakan tersebut sulit ditulis dengan benar, dibandingkan dengan kebijakan berbasis izin. Selain itu, perubahan di masa mendatang pada DynamoDB API (atau perubahan 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
Contoh 1 Kontrol akses berbasis kunci partisi dasar dengan batasan atribut
Sebagai contoh, pertimbangkan aplikasi game seluler yang memungkinkan pemain memilih dan memainkan berbagai permainan berbeda. Aplikasi ini menggunakan tabel DynamoDB GameScores bernama untuk melacak skor tinggi 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. Pengguna yang ingin memainkan game harus memiliki peran IAM bernama GameRole, yang memiliki kebijakan keamanan yang melekat padanya.
Untuk mengelola izin pengguna di aplikasi ini, Anda dapat menulis kebijakan izin seperti berikut:
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, klausulStringEqualsIfExistsmemastikan bahwa aplikasi harus selalu menyediakan daftar atribut tertentu untuk ditindaklanjuti dan aplikasi tidak dapat meminta semua atribut.
Ketika kebijakan IAM dievaluasi, hasilnya selalu true (akses diizinkan) atau false (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.
Dokumen kebijakan IAM hanya dapat berisi karakter Unicode berikut: tab horizontal (U+0009), umpan baris (U+000A), pengembalian pengangkutan (U+000D), dan karakter dalam rentang U+0020 hingga U+00FF.
Contoh 2: Berikan 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.
catatan
Saat menggunakan variabel kebijakan, Anda harus secara eksplisit menentukan versi 2012-10-17 dalam kebijakan. Versi bawaan bahasa kebijakan akses, yakni 2008-10-17, tidak mendukung variabel kebijakan ini.
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.
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.
Contoh 3: Berikan 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.
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-nama atribut yang ditolak ini dengan mengikuti prinsip hak istimewa terkecil, seperti yang dijelaskan di Wikipedia di http://en.wikipedia. org/wiki/Principle_of_least_privilege, dan gunakan pendekatan daftar izinkan 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 harusSPECIFIC_ATTRIBUTES. Persyaratan ini mencegah tindakan API mengembalikan atribut apa pun yang tidak diizinkan, seperti dari proyeksi indeks. -
Jika pengguna menentukan parameter
ReturnValues, nilainya harusNONE,UPDATED_OLD, atauUPDATED_NEW. Hal ini diperlukan karena tindakanUpdateItemtersebut juga melakukan operasi baca implisit untuk memeriksa apakah suatu item ada sebelum menggantinya, dan agar nilai atribut sebelumnya dapat dikembalikan jika diminta. MembatasiReturnValuesdengan cara ini memastikan bahwa pengguna hanya dapat membaca atau menulis atribut yang diizinkan. -
Klausa
StringEqualsIfExistsmemastikan bahwa hanya satu dari parameter ini —SelectatauReturnValues— 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
UpdateItemdari daftar tindakan yang diizinkan. Karena tidak ada tindakan yang tersisa menerimaReturnValues, Anda dapat menghapusReturnValuesdari kondisi. Anda juga dapat mengubahStringEqualsIfExistsmenjadiStringEqualskarena parameterSelectselalu memiliki nilai (ALL_ATTRIBUTES, kecuali ditentukan lain). -
Untuk hanya mengizinkan tindakan tulis, Anda dapat menghapus semuanya kecuali
UpdateItemdari daftar tindakan yang diizinkan. KarenaUpdateItemtidak menggunakan parameterSelect, Anda dapat menghapusSelectdari kondisi. Anda juga harus mengubahStringEqualsIfExistsmenjadiStringEqualskarena parameterReturnValuesselalu memiliki nilai (NONE, kecuali ditentukan lain). -
Untuk mengizinkan semua atribut yang namanya cocok dengan pola, gunakan
StringLike, bukanStringEquals, dan gunakan pola multi-karakter yang cocok dengan karakter wildcard (*).
Contoh 4: Berikan 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.
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 ketentuandynamodb:ReturnValues. Kunci kondisi membatasiReturnValuesdalam permintaan untuk menentukan hanyaNONE,UPDATED_OLD, atauUPDATED_NEWdan tidak mencakupALL_OLDatauALL_NEW. -
StringEqualsIfExistsOperator memastikan bahwa jikadynamodb:Selectataudynamodb:ReturnValuesada dalam permintaan, itu harus cocok dengan nilai yang ditentukan. Ini mencegah operasi mengembalikan item lengkap. -
Saat membatasi pembaruan atribut, Anda juga harus mengontrol data apa yang dapat dikembalikan untuk mencegah pengungkapan informasi atribut yang dilindungi.
-
Tindakan
PutItemdanDeleteItemmengganti 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 ini APIs.
Contoh 5: Berikan izin untuk menanyakan 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.
Kebijakan izin berikut ini serupa, tetapi kueri harus meminta semua atribut yang telah diproyeksikan ke dalam indeks.
Contoh 6: Berikan izin untuk membatasi akses ke atribut tertentu dan 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 dynamodb:LeadingKeys kondisi untuk membatasi izin hanya pada item yang nilai kunci partisi cocok dengan ID Facebook pengguna.
Perhatikan hal-hal berikut:
-
Tindakan tulis yang diizinkan oleh kebijakan (
UpdateItem) hanya dapat mengubah atribut-A atau atribut-B. -
Karena kebijakan mengizinkan
UpdateItem, aplikasi dapat menyisipkan item baru, dan atribut yang tersembunyi akan null dalam item baru. Jika atribut ini diproyeksikan ke dalamTopScoreDateTimeIndex, 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 parameterSelectkeSPECIFIC_ATTRIBUTESdalam permintaan baca, dan hanya atribut dalam daftar izin yang dapat diminta. Untuk permintaan tulis, aplikasi tidak dapat mengaturReturnValueskeALL_OLDatauALL_NEWdan tidak dapat melakukan operasi tulis bersyarat berdasarkan atribut lainnya.
Contoh 7: Tolak izin untuk membatasi akses ke atribut tertentu dalam tabel
Kebijakan berikut menolak akses ke atribut sensitif dan memastikan pembatasan ini tidak dapat dilewati dengan menghilangkan ekspresi proyeksi. Hal ini memungkinkan akses umum ke CustomerData tabel sementara secara eksplisit menolak akses ke SSN dan atribut. CreditCardNumber