Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Usar a detecção minuciosa de dados confidenciais

Modo de foco
Usar a detecção minuciosa de dados confidenciais - AWS Glue
nota

As ações minuciosas só estão disponíveis no AWS Glue versões 3.0 e 4.0. Isso inclui a experiência do AWS Glue Studio. As alterações persistentes do log de auditoria também não estão disponíveis na versão 2.0.

Todas as tarefas visuais do AWS Glue Studio 3.0 e 4.0 terão um script criado que usa automaticamente APIs de ações minuciosas.

A transformação Detectar dados confidenciais permite detectar, mascarar ou remover entidades definidas por você ou que são predefinidas pelo AWS Glue. Além disso, ações minuciosas permitem que você aplique uma ação específica por entidade. Os benefícios adicionais incluem:

  • Performance aprimorada à medida que as ações são aplicadas assim que os dados são detectados.

  • A opção de incluir ou excluir colunas específicas.

  • A capacidade de usar mascaramento parcial. Isso permite mascarar parcialmente as entidades de dados confidenciais detectadas, em vez de mascarar a string inteira. Ambos os parâmetros simples com deslocamentos e regex são aceitos.

A seguir são mostrados trechos de código de APIs de detecção de dados confidenciais e ações minuciosas usados nos exemplos de trabalhos mencionados na próxima seção.

API de detecção: as ações minuciosas usam o novo parâmetro detectionParameters:

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

Usar APIs de detecção de dados confidenciais com ações minuciosas

As APIs de detecção de dados confidenciais que usam detect analisam os dados fornecidos, determinam se as linhas ou colunas são tipos de entidades de dados confidenciais e executam ações especificadas pelo usuário para cada tipo de entidade.

Usar a API de detecção com ações minuciosas

Use a API detect e especifique outputColumnName e 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() }

O script acima criará um DataFrame com base em um local no Amazon S3 e, em seguida, executará a API detect. Como a API detect exige que o campo detectionParameters (um mapa do nome da entidade para uma lista de todas as configurações de ação a serem usadas para essa entidade) seja representado pelo objeto JsonOptions do AWS Glue, ela também nos permitirá estender a funcionalidade da API.

Para cada ação especificada por entidade, insira uma lista de todos os nomes das colunas às quais deseja aplicar a combinação entidade/ação. Isso permite personalizas as entidades a serem detectadas em cada coluna em seu conjunto de dados e ignorar as entidades que você sabe que não estão em uma coluna específica. Isso também permite que seus trabalhos apresentem uma melhor performance ao não realizar chamadas de detecção desnecessárias para essas entidades e permite a você executar ações exclusivas para cada combinação de coluna e entidade.

Examinando mais de perto o detectionParameters, há três tipos de entidades no trabalho de exemplo. São elas: Phone Number, USA_PASSPORT_NUMBER e USA_DRIVING_LICENSE. Para cada um desses tipos de entidade, o AWS Glue executará ações diferentes que são PARTIAL_REDACT, SHA256_HASH, REDACT e DETECT. Cada um dos tipos de entidade também tem sourceColumns para ser aplicado a ele e/ou sourceColumnsToExclude, se detectado.

nota

Somente uma ação de edição no local (PARTIAL_REDACT, SHA256_HASH ou REDACT) pode ser usada por coluna, mas a ação DETECT pode ser usada com qualquer uma dessas ações.

O campo detectionParameters tem o layout abaixo:

ENTITY_NAME -> List[Actions] { "ENTITY_NAME": [{ Action, // required ColumnSpecs, ActionOptionsMap }], "ENTITY_NAME2": [{ ... }] }

Os tipos de actions e actionOptions estão listados abaixo:

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" ] }

Depois que o script é executado, os resultados são enviados para a localização específica do Amazon S3. Você pode visualizar seus dados no Amazon S3, mas com os tipos de entidade selecionados sendo sensibilizados com base na ação selecionada. No caso, teríamos uma linha que teria a seguinte aparência:

{ "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" }

No script acima, o Phone Number foi parcialmente redigido com #. O Passport No foi transformado em um hash SHA256. O DL NO# foi detectado como um número da carteira de motorista dos EUA e foi redigido como "USA_DL", assim como indicado no detectionParameters.

nota

A API classifyColumns não está disponível para uso com ações minuciosas devido à natureza da API. Essa API realiza a amostragem de colunas (ajustável pelo usuário, mas tem valores padrão) para realizar a detecção mais rapidamente. Por esse motivo, as ações minuciosas exigem a iteração de cada valor.

Log de auditoria persistente

Um novo recurso introduzido com ações minuciosas (mas também disponível ao usar as APIs normais) é a presença de um log de auditoria persistente. No momento, a execução da API de detecção acrescenta um parâmetro adicional de coluna (o padrão é DetectedEntities, mas ele personalizável via outputColumnName) com metadados de detecção de PII. Ela agora tem uma chave de metadados "actionUsed", que é uma de DETECT, 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 } ] }

Até mesmo clientes que usam APIs sem ações minuciosas, como detect(entityTypesToDetect, outputColumnName), verão esse log de auditoria persistente no dataframe resultante.

Os clientes que usam APIs com ações minuciosas verão todas as ações, independentemente de terem sido editadas ou não. Exemplo:

+---------------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 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}]}} | +---------------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Se você não quiser ver a coluna DetectedEntities, basta soltar a coluna adicional em um script personalizado.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.