Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan deteksi data sensitif berbutir halus
catatan
Tindakan berbutir halus hanya tersedia di AWS Glue 3.0 dan 4.0. Ini termasuk AWS Glue Studio pengalaman. Perubahan log audit persisten juga tidak tersedia di 2.0.
Semua AWS Glue Studio Pekerjaan visual 3.0 dan 4.0 akan memiliki skrip yang dibuat yang secara otomatis menggunakan tindakan berbutir halus. APIs
Transformasi Detect Sensitive Data menyediakan kemampuan untuk mendeteksi, menutupi, atau menghapus entitas yang Anda tentukan, atau ditentukan sebelumnya oleh AWS Glue. Tindakan berbutir halus lebih lanjut memungkinkan Anda menerapkan tindakan spesifik per entitas. Manfaat tambahan meliputi:
-
Peningkatan kinerja sebagai tindakan diterapkan segera setelah data terdeteksi.
-
Pilihan untuk menyertakan atau mengecualikan kolom tertentu.
-
Kemampuan untuk menggunakan masking sebagian. Ini memungkinkan Anda untuk menutupi entitas data sensitif yang terdeteksi sebagian, daripada menutupi seluruh string. Kedua parameter sederhana dengan offset dan regex didukung.
Berikut ini adalah cuplikan kode deteksi data sensitif APIs dan tindakan berbutir halus yang digunakan dalam pekerjaan sampel yang direferensikan di bagian berikutnya.
Deteksi API — tindakan berbutir halus menggunakan parameter baru: detectionParameters
def detect( frame: DynamicFrame, detectionParameters: JsonOptions, outputColumnName: String = "DetectedEntities", detectionSensitivity: String = "LOW" ): DynamicFrame = {}
Menggunakan Deteksi Data Sensitif APIs dengan tindakan halus
Deteksi data sensitif APIs menggunakan deteksi menganalisis data yang diberikan, menentukan apakah baris atau kolom adalah Jenis Entitas Data Sensitif, dan akan menjalankan tindakan yang ditentukan oleh pengguna untuk setiap jenis Entitas.
Menggunakan API deteksi dengan tindakan berbutir halus
Gunakan API deteksi dan tentukan outputColumnName
dan
detectionParameters
.
object GlueApp { def main(sysArgs: Array[String]) { val spark: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(spark) // @params: [JOB_NAME] val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray) Job.init(args("JOB_NAME"), glueContext, args.asJava) // Script generated for node S3 bucket. Creates DataFrame from data stored in S3. val S3bucket_node1 = glueContext.getSourceWithFormat(formatOptions=JsonOptions("""{"quoteChar": "\"", "withHeader": true, "separator": ",", "optimizePerformance": false}"""), connectionType="s3", format="csv", options=JsonOptions("""{"paths": ["s3://189657479688-ddevansh-pii-test-bucket/tiny_pii.csv"], "recurse": true}"""), transformationContext="S3bucket_node1").getDynamicFrame() // Script generated for node Detect Sensitive Data. Will run detect API for the DataFrame // detectionParameter contains information on which EntityType are being detected // and what actions are being applied to them when detected. val DetectSensitiveData_node2 = EntityDetector.detect( frame = S3bucket_node1, detectionParameters = JsonOptions( """ { "PHONE_NUMBER": [ { "action": "PARTIAL_REDACT", "actionOptions": { "numLeftCharsToExclude": "3", "numRightCharsToExclude": "4", "redactChar": "#" }, "sourceColumnsToExclude": [ "Passport No", "DL NO#" ] } ], "USA_PASSPORT_NUMBER": [ { "action": "SHA256_HASH", "sourceColumns": [ "Passport No" ] } ], "USA_DRIVING_LICENSE": [ { "action": "REDACT", "actionOptions": { "redactText": "USA_DL" }, "sourceColumns": [ "DL NO#" ] } ] } """ ), outputColumnName = "DetectedEntities" ) // Script generated for node S3 bucket. Store Results of detect to S3 location val S3bucket_node3 = glueContext.getSinkWithFormat(connectionType="s3", options=JsonOptions("""{"path": "s3://189657479688-ddevansh-pii-test-bucket/test-output/", "partitionKeys": []}"""), transformationContext="S3bucket_node3", format="json").writeDynamicFrame(DetectSensitiveData_node2) Job.commit() }
Skrip di atas akan membuat DataFrame dari lokasi di Amazon S3 dan kemudian akan menjalankan API. detect
Karena detect
API memerlukan bidang detectionParameters
(peta nama entitas ke daftar semua pengaturan tindakan yang akan digunakan untuk entitas itu) diwakili oleh JsonOptions
objek AWS Glue, itu juga akan memungkinkan kita untuk memperluas fungsionalitas API.
Untuk setiap tindakan yang ditentukan per entitas, masukkan daftar semua nama kolom untuk menerapkan kombinasi entitas/tindakan. Ini memungkinkan Anda untuk menyesuaikan entitas untuk mendeteksi setiap kolom dalam kumpulan data Anda dan melewati entitas yang Anda tahu tidak berada di kolom tertentu. Ini juga memungkinkan pekerjaan Anda menjadi lebih berkinerja dengan tidak melakukan deteksi yang tidak perlu memanggil entitas tersebut dan memungkinkan Anda untuk melakukan tindakan yang unik untuk setiap kolom dan kombinasi entitas.
Melihat lebih dekatdetectionParameters
, ada tiga jenis entitas dalam pekerjaan sampel. Ini adalahPhone Number
,USA_PASSPORT_NUMBER
, danUSA_DRIVING_LICENSE
. Untuk masing-masing jenis entitas ini AWS Glue akan menjalankan tindakan yang berbeda yaituPARTIAL_REDACT
,SHA256_HASH
,REDACT
, danDETECT
. Masing-masing Jenis Entitas juga sourceColumns
harus berlaku untuk dan/atau sourceColumnsToExclude
jika terdeteksi.
catatan
Hanya satu edit-in-place tindakan (PARTIAL_REDACT
,SHA256_HASH
, atauREDACT
) yang dapat digunakan per kolom tetapi DETECT
tindakan dapat digunakan dengan salah satu tindakan ini.
detectionParameters
Bidang ini memiliki tata letak di bawah ini:
ENTITY_NAME -> List[Actions] { "ENTITY_NAME": [{ Action, // required ColumnSpecs, ActionOptionsMap }], "ENTITY_NAME2": [{ ... }] }
Jenis-jenis actions
dan actionOptions
tercantum di bawah ini:
DETECT { # Required "action": "DETECT", # Optional, depending on action chosen "actionOptions": { // There are no actionOptions for DETECT }, # 1 of below required, both can also used "sourceColumns": [ "COL_1", "COL_2", ..., "COL_N" ], "sourceColumnsToExclude": [ "COL_5" ] } SHA256_HASH { # Required "action": "SHA256_HASH", # Required or optional, depending on action chosen "actionOptions": { // There are no actionOptions for SHA256_HASH }, # 1 of below required, both can also used "sourceColumns": [ "COL_1", "COL_2", ..., "COL_N" ], "sourceColumnsToExclude": [ "COL_5" ] } REDACT { # Required "action": "REDACT", # Required or optional, depending on action chosen "actionOptions": { // The text that is being replaced "redactText": "USA_DL" }, # 1 of below required, both can also used "sourceColumns": [ "COL_1", "COL_2", ..., "COL_N" ], "sourceColumnsToExclude": [ "COL_5" ] } PARTIAL_REDACT { # Required "action": "PARTIAL_REDACT", # Required or optional, depending on action chosen "actionOptions": { // number of characters to not redact from the left side "numLeftCharsToExclude": "3", // number of characters to not redact from the right side "numRightCharsToExclude": "4", // the partial redact will be made with this redacted character "redactChar": "#", // regex pattern for partial redaction "matchPattern": "[0-9]" }, # 1 of below required, both can also used "sourceColumns": [ "COL_1", "COL_2", ..., "COL_N" ], "sourceColumnsToExclude": [ "COL_5" ] }
Setelah skrip berjalan, hasilnya akan dikeluarkan ke lokasi Amazon S3 yang diberikan. Anda dapat melihat data Anda di Amazon S3 tetapi dengan jenis entitas yang dipilih menjadi sensitif berdasarkan tindakan yang dipilih. Dalam kasus ini, kita akan memiliki baris yang akan terlihat seperti ini:
{ "Name": "Colby Schuster", "Address": "39041 Antonietta Vista, South Rodgerside, Nebraska 24151", "Car Owned": "Fiat", "Email": "Kitty46@gmail.com", "Company": "O'Reilly Group", "Job Title": "Dynamic Functionality Facilitator", "ITIN": "991-22-2906", "Username": "Cassandre.Kub43", "SSN": "914-22-2906", "DOB": "2020-08-27", "Phone Number": "1-2#######1718", "Bank Account No": "69741187", "Credit Card Number": "6441-6289-6867-2162-2711", "Passport No": "94f311e93a623c72ccb6fc46cf5f5b0265ccb42c517498a0f27fd4c43b47111e", "DL NO#": "USA_DL" }
Dalam skrip di atas, sebagian Phone Number
disunting dengan#
. Passport No
Itu diubah menjadi SHA256 hash. DL NO#
Itu terdeteksi sebagai nomor SIM AS dan disunting menjadi “USA_DL” seperti yang dinyatakan dalam. detectionParameters
catatan
ClassifyColumns API tidak tersedia untuk digunakan dengan tindakan berbutir halus karena sifat API. API ini melakukan sampling kolom (disesuaikan oleh pengguna tetapi memiliki nilai default) untuk melakukan deteksi lebih cepat. Tindakan berbutir halus memerlukan iterasi atas setiap nilai karena alasan ini.
Log Audit Persisten
Fitur baru yang diperkenalkan dengan tindakan berbutir halus (tetapi juga tersedia saat menggunakan normal APIs) adalah adanya log audit persisten. Saat ini, menjalankan API deteksi menambahkan kolom tambahan (default ke DetectedEntities
tetapi dapat disesuaikan melaluioutputColumnName
) parameter dengan metadata deteksi PII. Ini sekarang memiliki kunci metadata “ActionUsed”, yang merupakan salah satu dariDETECT
,,,. PARTIAL_REDACT
SHA256_HASH
REDACT
"DetectedEntities": { "Credit Card Number": [ { "entityType": "CREDIT_CARD", "actionUsed": "DETECT", "start": 0, "end": 19 } ], "Phone Number": [ { "entityType": "PHONE_NUMBER", "actionUsed": "REDACT", "start": 0, "end": 14 } ] }
Bahkan pelanggan yang menggunakan APIs tanpa tindakan halus seperti detect(entityTypesToDetect, outputColumnName)
akan melihat log audit persisten ini di kerangka data yang dihasilkan.
Pelanggan yang menggunakan APIs dengan tindakan halus akan melihat semua tindakan, terlepas dari apakah mereka disunting atau tidak. Contoh:
+---------------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Credit Card Number | Phone Number | DetectedEntities | +---------------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 622126741306XXXX | +12#####7890 | {"Credit Card Number":[{"entityType":"CREDIT_CARD","actionUsed":"PARTIAL_REDACT","start":0,"end":16}],"Phone Number":[{"entityType":"PHONE_NUMBER","actionUsed":"PARTIAL_REDACT","start":0,"end":12}]}} | | 6221 2674 1306 XXXX | +12#######7890 | {"Credit Card Number":[{"entityType":"CREDIT_CARD","actionUsed":"PARTIAL_REDACT","start":0,"end":19}],"Phone Number":[{"entityType":"PHONE_NUMBER","actionUsed":"PARTIAL_REDACT","start":0,"end":14}]}} | | 6221-2674-1306-XXXX | 22#######7890 | {"Credit Card Number":[{"entityType":"CREDIT_CARD","actionUsed":"PARTIAL_REDACT","start":0,"end":19}],"Phone Number":[{"entityType":"PHONE_NUMBER","actionUsed":"PARTIAL_REDACT","start":0,"end":14}]}} | +---------------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Jika Anda tidak ingin melihat DetectedEntitieskolom, Anda cukup menjatuhkan kolom tambahan dalam skrip khusus.