Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Utilizzo del rilevamento di dati sensibili all'esterno di AWS Glue Studio

Modalità Focus
Utilizzo del rilevamento di dati sensibili all'esterno di AWS Glue Studio - AWS Glue

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

AWS Glue Studio consente di rilevare dati sensibili, tuttavia è possibile utilizzare la funzionalità di rilevamento dei dati sensibili anche all'esterno di AWS Glue Studio.

Per un elenco completo dei tipi di dati sensibili gestiti, consulta la pagina Managed Sensitive Data Types.

Rilevamento del rilevamento di dati sensibili mediante tipi AWS gestiti PII

AWS Glue ne fornisce due APIs in un unico AWS Glue ETL lavoro. Questi sono detect() e classifyColumns():

detect(frame: DynamicFrame, entityTypesToDetect: Seq[String], outputColumnName: String = "DetectedEntities", detectionSensitivity: String = "LOW"): DynamicFrame detect(frame: DynamicFrame, detectionParameters: JsonOptions, outputColumnName: String = "DetectedEntities", detectionSensitivity: String = "LOW"): DynamicFrame classifyColumns(frame: DynamicFrame, entityTypesToDetect: Seq[String], sampleFraction: Double = 0.1, thresholdFraction: Double = 0.1, detectionSensitivity: String = "LOW")

È possibile utilizzare il detect() API per identificare i PII tipi AWS gestiti e i tipi di entità personalizzati. Una nuova colonna viene creata automaticamente con il risultato del rilevamento. classifyColumns()APIRestituisce una mappa in cui le chiavi sono i nomi delle colonne e i valori sono l'elenco dei tipi di entità rilevati. SampleFractionindica la frazione di dati da campionare durante la scansione delle PII entità, mentre ThresholdFraction indica la frazione di dati che deve essere soddisfatta affinché una colonna possa essere identificata come PII dato.

Rilevamento a livello di riga

Nell'esempio, il job esegue le seguenti azioni utilizzando detect() e classifyColumns()APIs:

  • legge i dati da un Amazon S3 bucket e li trasforma in un dynamicFrame

  • rilevazione di istanze di «Email» e «Carta di credito» nel dynamicFrame

  • restituzione di un dynamicFrame file con valori originali più una colonna che comprende il risultato del rilevamento per ogni riga

  • scrivendo il restituito dynamicFrame in un altro percorso Amazon S3

import com.amazonaws.services.glue.GlueContext import com.amazonaws.services.glue.MappingSpec import com.amazonaws.services.glue.errors.CallSite import com.amazonaws.services.glue.util.GlueArgParser import com.amazonaws.services.glue.util.Job import com.amazonaws.services.glue.util.JsonOptions import org.apache.spark.SparkContext import scala.collection.JavaConverters._ import com.amazonaws.services.glue.ml.EntityDetector object GlueApp { def main(sysArgs: Array[String]) { val spark: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(spark) val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray) Job.init(args("JOB_NAME"), glueContext, args.asJava) val frame= glueContext.getSourceWithFormat(formatOptions=JsonOptions("""{"quoteChar": "\"", "withHeader": true, "separator": ","}"""), connectionType="s3", format="csv", options=JsonOptions("""{"paths": ["s3://pathToSource"], "recurse": true}"""), transformationContext="AmazonS3_node1650160158526").getDynamicFrame() val frameWithDetectedPII = EntityDetector.detect(frame, Seq("EMAIL", "CREDIT_CARD")) glueContext.getSinkWithFormat(connectionType="s3", options=JsonOptions("""{"path": "s3://pathToOutput/", "partitionKeys": []}"""), transformationContext="someCtx", format="json").writeDynamicFrame(frameWithDetectedPII) Job.commit() } }

Rilevamento a livello di riga con operazioni granulari

Nell'esempio, il job esegue le seguenti azioni utilizzando detect()APIs:

  • legge i dati da un bucket Amazon S3 e li trasforma in un dynamicFrame

  • rilevamento dei tipi di dati sensibili per «USA_PTIN», «BANK_ACCOUNT», «USA_SSN», «USA_ PASSPORT _NUMBER» e «PHONE_NUMBER» nel dynamicFrame

  • restituzione di un valore mascherato dynamicFrame con valori mascherati modificati più una colonna che comprende il risultato del rilevamento per ogni riga

  • scrittura del valore restituito dynamicFrame in un altro percorso Amazon S3

A differenza di quanto sopra detect()API, questo metodo utilizza azioni granulari da rilevare per i tipi di entità. Per ulteriori informazioni, consulta Parametri di rilevamento per l'utilizzo di detect().

import com.amazonaws.services.glue.GlueContext import com.amazonaws.services.glue.MappingSpec import com.amazonaws.services.glue.errors.CallSite import com.amazonaws.services.glue.util.GlueArgParser import com.amazonaws.services.glue.util.Job import com.amazonaws.services.glue.util.JsonOptions import org.apache.spark.SparkContext import scala.collection.JavaConverters._ import com.amazonaws.services.glue.ml.EntityDetector object GlueApp { def main(sysArgs: Array[String]) { val spark: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(spark) val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray) Job.init(args("JOB_NAME"), glueContext, args.asJava) val frame = glueContext.getSourceWithFormat(formatOptions=JsonOptions("""{"quoteChar": "\"", "withHeader": true, "separator": ","}"""), connectionType="s3", format="csv", options=JsonOptions("""{"paths": ["s3://pathToSource"], "recurse": true}"""), transformationContext="AmazonS3_node_source").getDynamicFrame() val detectionParameters = JsonOptions( """ { "USA_DRIVING_LICENSE": [{ "action": "PARTIAL_REDACT", "sourceColumns": ["Driving License"], "actionOptions": { "matchPattern": "[0-9]", "redactChar": "*" } }], "BANK_ACCOUNT": [{ "action": "DETECT", "sourceColumns": ["*"] }], "USA_SSN": [{ "action": "SHA256_HASH", "sourceColumns": ["SSN"] }], "IP_ADDRESS": [{ "action": "REDACT", "sourceColumns": ["IP Address"], "actionOptions": {"redactText": "*****"} }], "PHONE_NUMBER": [{ "action": "PARTIAL_REDACT", "sourceColumns": ["Phone Number"], "actionOptions": { "numLeftCharsToExclude": 1, "numRightCharsToExclude": 0, "redactChar": "*" } }] } """ ) val frameWithDetectedPII = EntityDetector.detect(frame, detectionParameters, "DetectedEntities", "HIGH") glueContext.getSinkWithFormat(connectionType="s3", options=JsonOptions("""{"path": "s3://pathToOutput/", "partitionKeys": []}"""), transformationContext="AmazonS3_node_target", format="json").writeDynamicFrame(frameWithDetectedPII) Job.commit() } }

Rilevamento a livello di colonna

Nell'esempio, il job esegue le seguenti azioni utilizzando: classifyColumns() APIs

  • legge i dati da un bucket Amazon S3 e li trasforma in un dynamicFrame

  • rilevamento di istanze di «Email» e «Carta di credito» nel dynamicFrame

  • imposta i parametri per campionare il 100% della colonna, contrassegna un'entità come rilevata se si trova nel 10% delle celle e presenta la sensibilità «» LOW

  • restituisce una mappa in cui le chiavi sono i nomi delle colonne e i valori sono l'elenco dei tipi di entità rilevati

  • scrittura del valore restituito dynamicFrame in un altro percorso Amazon S3

import com.amazonaws.services.glue.GlueContext import com.amazonaws.services.glue.MappingSpec import com.amazonaws.services.glue.errors.CallSite import com.amazonaws.services.glue.util.GlueArgParser import com.amazonaws.services.glue.util.Job import com.amazonaws.services.glue.util.JsonOptions import org.apache.spark.SparkContext import scala.collection.JavaConverters._ import com.amazonaws.services.glue.DynamicFrame import com.amazonaws.services.glue.ml.EntityDetector object GlueApp { def main(sysArgs: Array[String]) { val spark: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(spark) val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray) Job.init(args("JOB_NAME"), glueContext, args.asJava) val frame = glueContext.getSourceWithFormat(formatOptions=JsonOptions("""{"quoteChar": "\"", "withHeader": true, "separator": ",", "optimizePerformance": false}"""), connectionType="s3", format="csv", options=JsonOptions("""{"paths": ["s3://pathToSource"], "recurse": true}"""), transformationContext="frame").getDynamicFrame() import glueContext.sparkSession.implicits._ val detectedDataFrame = EntityDetector.classifyColumns( frame, entityTypesToDetect = Seq("CREDIT_CARD", "PHONE_NUMBER"), sampleFraction = 1.0, thresholdFraction = 0.1, detectionSensitivity = "LOW" ) val detectedDF = (detectedDataFrame).toSeq.toDF("columnName", "entityTypes") val DetectSensitiveData_node = DynamicFrame(detectedDF, glueContext) glueContext.getSinkWithFormat(connectionType="s3", options=JsonOptions("""{"path": "s3://pathToOutput", "partitionKeys": []}"""), transformationContext="someCtx", format="json").writeDynamicFrame(DetectSensitiveData_node) Job.commit() } }

Rilevamento dei dati sensibili: rilevamento mediante tipi AWS CustomEntityType PII

È possibile definire entità personalizzate tramite AWS Studio. Tuttavia, per utilizzare questa funzionalità fuori da AWS Studio, è necessario prima definire i tipi di entità personalizzati e quindi aggiungere i tipi di entità personalizzati definiti all'elenco dientityTypesToDetect.

Se nei dati sono presenti tipi di dati sensibili specifici (come «Employee Id»), puoi creare entità personalizzate chiamando il. CreateCustomEntityType() API L'esempio seguente definisce il tipo di entità personalizzato 'EMPLOYEE_ID' CreateCustomEntityType() API con i parametri di richiesta:

{ "name": "EMPLOYEE_ID", "regexString": "\d{4}-\d{3}", "contextWords": ["employee"] }

Quindi, modifica il lavoro per utilizzare il nuovo tipo di dati sensibili personalizzato aggiungendo il tipo di entità personalizzato (EMPLOYEE_ID) a: EntityDetector() API

import com.amazonaws.services.glue.GlueContext import com.amazonaws.services.glue.MappingSpec import com.amazonaws.services.glue.errors.CallSite import com.amazonaws.services.glue.util.GlueArgParser import com.amazonaws.services.glue.util.Job import com.amazonaws.services.glue.util.JsonOptions import org.apache.spark.SparkContext import scala.collection.JavaConverters._ import com.amazonaws.services.glue.ml.EntityDetector object GlueApp { def main(sysArgs: Array[String]) { val spark: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(spark) val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray) Job.init(args("JOB_NAME"), glueContext, args.asJava) val frame= glueContext.getSourceWithFormat(formatOptions=JsonOptions("""{"quoteChar": "\"", "withHeader": true, "separator": ","}"""), connectionType="s3", format="csv", options=JsonOptions("""{"paths": ["s3://pathToSource"], "recurse": true}"""), transformationContext="AmazonS3_node1650160158526").getDynamicFrame() val frameWithDetectedPII = EntityDetector.detect(frame, Seq("EMAIL", "CREDIT_CARD", "EMPLOYEE_ID")) glueContext.getSinkWithFormat(connectionType="s3", options=JsonOptions("""{"path": "s3://pathToOutput/", "partitionKeys": []}"""), transformationContext="someCtx", format="json").writeDynamicFrame(frameWithDetectedPII) Job.commit() } }
Nota

Se un tipo di dati sensibili personalizzato è definito con lo stesso nome di un tipo di entità gestita esistente, il tipo di dati sensibili personalizzato avrà la precedenza e sovrascriverà la logica del tipo di entità gestita.

Parametri di rilevamento per l'utilizzo di detect()

Questo metodo viene utilizzato per rilevare le entità in un. DynamicFrame Ne restituisce una nuova DataFrame con valori originali e una colonna aggiuntiva con outputColumnName metadati di PII rilevamento. Il mascheramento personalizzato può essere eseguito dopo che questo DynamicFrame è stato restituito all'interno di AWS Glue È API possibile utilizzare invece lo script o detect () con azioni granulari.

detect(frame: DynamicFrame, entityTypesToDetect: Seq[String], outputColumnName: String = "DetectedEntities", detectionSensitivity: String = "LOW"): DynamicFrame

Parametri:

  • frame — (type:DynamicFrame) L'input DynamicFrame contenente i dati da elaborare.

  • entityTypesToRileva — (tipo:[Seq[String]) Elenco dei tipi di entità da rilevare. Possono essere tipi di entità gestiti o personalizzati.

  • outputColumnName— (type:String, default: "DetectedEntities«) Il nome della colonna in cui verranno memorizzate le entità rilevate. Se non viene fornito, il nome di colonna predefinito è "DetectedEntities».

  • detectionSensitivity— (type:String, options: "LOW" o "HIGH«, default:" LOW «) Specifica la sensibilità del processo di rilevamento. Le opzioni valide sono "LOW" o "HIGH». Se non viene fornita, la sensibilità predefinita è impostata su "LOW».

Impostazioni di outputColumnName:

Il nome della colonna in cui verranno memorizzate le entità rilevate. Se non viene fornito, il nome di colonna predefinito è "DetectedEntities». Per ogni riga della colonna di output, la colonna supplementare include una mappa del nome della colonna ai metadati dell'entità rilevata, con le seguenti coppie chiave-valore:

  • entityType— Il tipo di entità rilevato.

  • start — la posizione iniziale dell'entità rilevata nei dati originali.

  • end — la posizione finale dell'entità rilevata nei dati originali.

  • actionUsed— L'azione eseguita sull'entità rilevata (ad es. "DETECT,» "REDACT,» PARTIAL _REDACT,» "SHA256_ HASH «).

Esempio:

{ "DetectedEntities":{ "SSN Col":[ { "entityType":"USA_SSN", "actionUsed":"DETECT", "start":4, "end":15 } ], "Random Data col":[ { "entityType":"BANK_ACCOUNT", "actionUsed":"PARTIAL_REDACT", "start":4, "end":13 }, { "entityType":"IP_ADDRESS", "actionUsed":"REDACT", "start":4, "end":13 } ] } }

Parametri di rilevamento per detect() con operazioni granulari

Questo metodo viene utilizzato per rilevare le entità in un DynamicFrame utilizzando parametri specifici. Ne restituisce una nuova DataFrame con valori originali sostituiti con dati sensibili mascherati e una colonna aggiuntiva con outputColumnName metadati di PII rilevamento.

detect(frame: DynamicFrame, detectionParameters: JsonOptions, outputColumnName: String = "DetectedEntities", detectionSensitivity: String = "LOW"): DynamicFrame

Parametri:

  • frame — (type:DynamicFrame): L'input DynamicFrame contenente i dati da elaborare.

  • detectionParameters— (type:JsonOptions): JSON opzioni che specificano i parametri per il processo di rilevamento.

  • outputColumnName— (type:String, default: "DetectedEntities«): Il nome della colonna in cui verranno memorizzate le entità rilevate. Se non viene fornito, il nome di colonna predefinito è "DetectedEntities».

  • detectionSensitivity— (type:String, options: "LOW" o "HIGH«, default:" LOW «): specifica la sensibilità del processo di rilevamento. Le opzioni valide sono "LOW" o "HIGH». Se non viene fornita, la sensibilità predefinita è impostata su "LOW».

Impostazioni di detectionParameters

Se non è inclusa alcuna impostazione, verranno utilizzati i valori predefiniti.

  • action — (type:String, options: "DETECT«," REDACT «," PARTIAL _ REDACT «," SHA256 _ HASH «) Specifica l'azione da eseguire sull'entità. Obbligatorio. Nota che le azioni che eseguono il mascheramento (tutte tranne "DETECT«) possono eseguire solo un'azione per colonna. Si tratta di una misura preventiva per mascherare le entità unite.

  • sourceColumns— (tipo:List[String], default: [«*»]) Elenco dei nomi delle colonne di origine su cui eseguire il rilevamento dell'entità. L'impostazione predefinita è ["*"], se non presente. Viene generato IllegalArgumentException se viene utilizzato un nome di colonna non valido.

  • sourceColumnsToEscludi — (tipo:List[String]) Elenco dei nomi delle colonne di origine su cui eseguire il rilevamento dell'entità. Usa sourceColumns o sourceColumnsToExclude. Viene generato IllegalArgumentException se viene utilizzato un nome di colonna non valido.

  • actionOptions— Opzioni aggiuntive basate sull'azione specificata:

    • Per "DETECT" e "SHA256_ HASH «, non sono consentite opzioni.

    • Per "REDACT«:

      • redactText— (tipo:String, default: «*****») Testo per sostituire l'entità rilevata.

    • Per "PARTIAL_ REDACT «:

      • redactChar— (tipo:String, predefinito: «*») Carattere per sostituire ogni carattere rilevato nell'entità.

      • matchPattern— (tipo:String) Modello Regex per la redazione parziale. Non può essere combinato con numLeftChars ToExclude o. numRightCharsToExclude

      • numLeftCharsToExclude— (tipo:String, integer) Numero di caratteri a sinistra da escludere. Non può essere combinato conmatchPattern, ma può essere utilizzato connumRightCharsToExclude.

      • numRightCharsToExclude— (tipo:String, integer) Numero di caratteri corretti da escludere. Non può essere combinato conmatchPattern, ma può essere utilizzato connumRightCharsToExclude.

Impostazioni di outputColumnName

Vedi outputColumnName le impostazioni

Parametri di rilevamento per classifyColumns()

Questo metodo viene utilizzato per rilevare le entità in a DynamicFrame. Restituisce una mappa in cui le chiavi sono i nomi delle colonne e i valori sono l'elenco dei tipi di entità rilevati. Il mascheramento personalizzato può essere eseguito dopo che questo è stato restituito all'interno di AWS Glue sceneggiatura.

classifyColumns(frame: DynamicFrame, entityTypesToDetect: Seq[String], sampleFraction: Double = 0.1, thresholdFraction: Double = 0.1, detectionSensitivity: String = "LOW")

Parametri:

  • frame — (tipo:DynamicFrame) L'input DynamicFrame contenente i dati da elaborare.

  • entityTypesToRileva — (tipo:Seq[String]) Elenco dei tipi di entità da rilevare. Possono essere tipi di entità gestiti o personalizzati.

  • sampleFraction— (tipo:Double, impostazione predefinita: 10%) La frazione di dati da campionare durante la scansione PII delle entità.

  • thresholdFraction— (tipo:Double, impostazione predefinita: 10%): La frazione di dati che deve essere soddisfatta affinché una colonna possa essere identificata come PII dato.

  • detectionSensitivity— (type:String, options: "LOW" o "HIGH«, default:" LOW «) Specifica la sensibilità del processo di rilevamento. Le opzioni valide sono "LOW" o "HIGH». Se non viene fornita, la sensibilità predefinita è impostata su "LOW».

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.