Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

01. Visão geral

Disponibilização de funções métodos para consulta aos consultar campos protegidos ativos e passíveis de anonimização configurados em Gerenciamento dos campos pessoais e/ou sensíveis.

02. Formatos de anonimização

...

  • Para o tipo de dado Texto/caractere, será retornado o valor "X"
  • Para o tipo de dado Numérico, será retornado o valor 0
  • Para o tipo de dado Data, será retornado a data 01/01/1753, data minima compatível para os bancos dados: Progress, Oracle e SQL Server.


Exemplo de programa

Bloco de código
themeRDark
title
exemplo
programa.p
USING com.totvs.framework.sec.ProtectedData.

FIND FIRST tabela_negocio EXCLUSIVE-LOCK: ASSIGN tabela_negocio.nom_cliente = ProtectedData:DefaultAnonymousCharacter tabela_negocio.cod_rg = ProtectedData:DefaultAnonymousNumber tabela_negocio.dat_nascimento = ProtectedData:DefaultAnonymousDate.

03. getAnonymizableFieldsByDatabase

Objetivo

MESSAGE STRING(ProtectedData:DefaultAnonymousCharacter) 
VIEW-AS ALERT-BOX INFO BUTTONS OK.

MESSAGE STRING(ProtectedData:DefaultAnonymousNumber) 
VIEW-AS ALERT-BOX INFO BUTTONS OK.

MESSAGE STRING(ProtectedData:DefaultAnonymousDate) 
VIEW-AS ALERT-BOX INFO BUTTONS OK.

03. isFieldAnonymizable

Objetivo

Responsável por retornar se o campo é anonimizável ou nãoResponsável por retornar os campos passíveis de anonimização, filtrando por uma lista de bancos.

Parâmetros de entrada

Tipo

Descrição

JsonArray

Formato JSON Array.

Bloco de código
themeRDark
collapsetrue
[ { "databaseName":"emsfnd" }, { "databaseName":"emsfnd2" } ]
CHARACTER

databaseName: Nome do banco de dados

, configurado na funcionalidade Gerenciamento dos campos pessoais e/ou sensíveis.

;

CHARACTER

tableName: Nome da tabela.

CHARACTER

fieldName: Nome do campo;


Retorno

TipoDescrição
JsonArray
  • São retornados os registros configurados em Gerenciamento dos campos pessoais e/ou sensíveis, não é realizada consistência de banco de dados.
  • Formato de retorno é do tipo JsonArray.
  • O agrupamento dos registros será por banco.
  • Caso não exista registro para o banco informado será retornado o objeto anonymizableFields sem registros
    LOGICALO retorno será VERDADEIRO/FALSO, podendo retornar erro que deve ser capturado utilizando a declaração do 'CATCH'.

    O erros serão lançados por meio da classe fwk.utils.CustomError

    Expandir
    titleERROR 47

    Será lançado ao informar parâmetros de entrada de um campo não configurado em Gerenciamento dos campos pessoais e/ou sensíveis.

    Bloco de código
    themeRDark
    collapse
    true
    [
    {
    
       
    "databaseName": "emsfnd", "anonymizableFields": [
    {
            "
    tableName
    ErrorSequence": 
    "tabela_teste"
    1,
            "
    fieldName
    ErrorNumber": 
    "campo_teste"
    47,
            "
    defaultRecord
    ErrorDescription": 
    true,
    "Campo pessoal 
    "sensitiveField": true
    não cadastrado(a)",
            "
    documentTypeId
    ErrorParameters": 
    1, "documentTypeDes": "CPF
    "Campo pessoal",
            "
    classifiers
    ErrorType":
    [ {
     
    "id": 1
    "ERROR",
    
            
    "
    defaultRelation
    ErrorHelp":
    true,
     
    "
    justificative": "Justificativa do Campo
    Campo pessoal não cadastrado(a).",
    
            
    "
    description
    ErrorSubType": "
    Execução de Contrato
    ERROR"
        
    }
    
    ]
    ]
    Expandir
    titleERROR 56

    Será lançado ao informar parâmetros de entrada de um campo inexistente no banco de dados.

    Bloco de código
    themeRDark
    [
       
    }
    {
        
    ]
      
    },
     
    {
     
    "
    databaseName
    ErrorSequence": 
    "emsfnd2"
    1,
        
    "anonymizableFields":
     
    []
      
    } ]Exemplo de programa
    Bloco de código
    themeRDark
    titleexemplo.p
    collapsetrue
    USING Progress.Json.ObjectModel.*.
    USING com.totvs.framework.sec.ProtectedData.
    
    DEFINE VARIABLE jObjRequest  AS JsonObject NO-UNDO.
    DEFINE VARIABLE jArrRequest  AS JsonArray  NO-UNDO.
    DEFINE VARIABLE jArrResponse AS JsonArray  NO-UNDO.
    
    jArrRequest = NEW JsonArray().
    
    jObjRequest = NEW JsonObject().
    jObjRequest:ADD("databaseName","emsfnd").
    jArrRequest:ADD(jObjRequest).
    
    jObjRequest = NEW JsonObject().
    jObjRequest:ADD("databaseName","emsfnd2").
    jArrRequest:ADD(jObjRequest).
    
    jArrResponse = ProtectedData:getAnonymizableFieldsByDatabase(jArrRequest).
    
    jArrResponse:WriteFile("c:\temp\resultado.json", TRUE).

    04. getAnonymizableFieldsByTable

    Objetivo

    Responsável por retornar os campos passíveis de anonimização, filtrando por uma lista de bancos e tabelas.

    Parâmetros de entrada

    Tipo

    Descrição

    JsonArray

    Formato JSON Array.

    Bloco de código
    themeRDark
    collapsetrue
    [ {
     "ErrorNumber": 56,
            "ErrorDescription": "Campo inexistente.",
            "ErrorParameters": "Campo",
            "
    databaseName
    ErrorType": "
    db1
    ERROR",
            "
    tableName
    ErrorHelp": "
    tabela1"
    Verifique se existe uma 
    },
    ocorrência para o(a) Campo 
    {
    informado(a) em 
    "databaseName":"db2"
    seu cadastro.",
            "
    tableName
    ErrorSubType": "
    tabela2
    ERROR"
        }
    ]
    • databaseName: Nome do banco de dados
    • tableName: Nome da tabela

    Retorno

    Expandir
    titleERROR 1094

    Será lançado ao informar parâmetros de entrada de um campo desativado em Gerenciamento dos campos pessoais e/ou sensíveis

    TipoDescriçãoJsonArrayFormato JSON Array, com os campos anonimizáveis agrupados por banco e tabela

    .

    Bloco de código
    themeRDark
    collapsetrue
    [
    
    
       {
    
            "
    databaseName
    ErrorSequence":
    "db1"
     1,
            "
    tableName
    ErrorNumber":
    "tabela1"
     1094,
            "
    anonymizableFields
    ErrorDescription":
    [
     "Campo 
    pessoal 
    { "idNumber":0,
    está desativado(a).",
            
    "
    databaseName
    ErrorParameters": "
    emsfnd
    Campo pessoal",
            
    "tableName
    "ErrorType": "
    usuar_mestre
    ERROR",
    
            "
    fieldName
    ErrorHelp": "
    string
    ",
    
            "
    defaultRecord
    ErrorSubType":
    false,
     
    "sensitiveField":false,
    "ERROR"
        }
    ]
    Expandir
    titleERROR 56891

    Será lançado ao informar parâmetros de entrada nulos ou vazios.

    Bloco de código
    themeRDark
    [
       
    {
            "
    documentTypeId
    ErrorSequence":
    0
     1,
            
    "fieldClassId
    "ErrorNumber":
    0
     56891,
            
    "documentTypeDes
    "ErrorDescription": "
    string
    Parâmetros incorretos.",
    
            
    "fieldClassDes
    "ErrorParameters": "
    string
    ",
    
            "
    anonymize
    ErrorType":
    false,
     
    "justification":"string" } ] }
    "ERROR",
        
    {
      
      
    "databaseName
    "ErrorHelp": "
    db2
    ",
            "
    tableName
    ErrorSubType": "
    tabela2
    ERROR"
    ,
    
        
    "anonymizableFields":[
    }
    ]
    Expandir
    titleERROR 56893

    Será lançado ao informar parâmetros de entrada de um campo pessoal anonimizável que faz parte de um índice único.

    Bloco de código
    themeRDark
    [
       
    {
    
    
            
    "
    idNumber
    ErrorSequence":
    0
     1,
    
            
    "
    databaseName
    ErrorNumber": 
    "emsfnd"
    56893,
            
    "tableName
    "ErrorDescription": "
    usuar_mestre", "fieldName":"string",
    Campo pessoal anonimizavel faz parte de um índice único",
            
    "
    defaultRecord
    ErrorParameters":
    false,
     
    "
    sensitiveField
    "
    :false
    ,
            
    "documentTypeId":0, "fieldClassId":0,
    "ErrorType": "ERROR",
            
    "
    documentTypeDes
    ErrorHelp": "
    string",
    Campo pessoal configurado como anonimizavel faz parte de um índice único e não poderá 
    "fieldClassDes":"string",
    ser anonimizado.",
            "
    anonymize
    ErrorSubType":
    false,
     
    "justification":"string
    "ERROR"
        
    } ]
    }
    ]

    A função não realiza consistência de banco de dados, são retornados os registros configurados em Gerenciamento dos campos pessoais e/ou sensíveis.

    Exemplo de programa
    Bloco de código
    themeRDark
    titleprograma_de_negocio.p
    collapsetrue
    USING Progress.Json.ObjectModel.*.
    USING com.totvs.framework.sec.ProtectedData.
    
    DEFINE VARIABLE jObjRequest  AS JsonObject NO-UNDO.
    DEFINE VARIABLE jArrRequest  AS JsonArray  NO-UNDO.
    DEFINE VARIABLE jArrResponse AS JsonArray  NO-UNDO.
    
    jArrRequest = NEW JsonArray().
    
    jObjRequest = NEW JsonObject().
    jObjRequest:ADD("databaseName","emsfnd").
    jObjRequest:ADD("tableName","usuar_mestre").
    jArrRequest:ADD(jObjRequest).
    
    jObjRequest = NEW JsonObject().
    jObjRequest:ADD("databaseName","emsfnd").
    jObjRequest:ADD("tableName","video").
    jArrRequest:ADD(jObjRequest).
    
    jObjRequest = NEW JsonObject().
    jObjRequest:ADD("databaseName","emsfnd").
    jObjRequest:ADD("tableName","imagens").
    jArrRequest:ADD(jObjRequest).
    
    jArrResponse = ProtectedData:getAnonymizableFieldsByTable(jArrRequest).
    
    jArrResponse:WriteFile("c:\temp\resultado.json", TRUE).

    05. getAnonymizableFieldsByRoutine

    Objetivo

    Responsável por retornar os campos passíveis de anonimização filtrando por uma lista de rotinas

    Parâmetros de entrada

    ...

    Tipo

    ...

    Descrição

    ...

    Formato JSON Array, contendo códigos dos programas.

    Bloco de código
    themeRDark
    collapsetrue
    ["routine_01","routine_02"]
    Expandir
    titleERROR 57240

    Será lançado ao informar parâmetros de entrada de um campo pessoal anonimizável que é do tipo lógico

    Retorno

    TipoDescriçãoJsonArrayFormato JSON Array, com os campos anonimizáveis agrupados pelos códigos dos programas

    .

    Bloco de código
    themeRDark
    collapse
    true
    [
    
       
    {
    
            "
    programCode
    ErrorSequence":
    "routine_01"
     1,
            "
    programName
    ErrorNumber":
    "Routine
     
    01"
    57240,
            "
    personalFields
    ErrorDescription":
    [
     "Campo 
    pessoal anonimizavel é do 
    { "idNumber":0,
    tipo lógico",
            
    "
    databaseName
    ErrorParameters": "
    database_a
    ",
            
    "tableName
    "ErrorType": "
    usuar_mestre
    ERROR",
            
    "fieldName
    "ErrorHelp": "
    string",
    Campo pessoal configurado como anonimizavel é do tipo lógico e não poderá ser 
    "defaultRecord":false
    anonimizado.",
    
            
    "sensitiveField":false, "documentTypeId":0,
    "ErrorSubType": "ERROR"
        }
    ]
    Expandir
    titleERROR 57269

    Será lançado ao informar parâmetros de entrada de um campo pessoal anonimizável que é do tipo blob.

    Bloco de código
    themeRDark
    [
       {
            
    "
    fieldClassId
    ErrorSequence":
    0
     1,
    
            
    "documentTypeDes":"string",
    "ErrorNumber": 57269,
            
    "
    fieldClassDes
    ErrorDescription": "
    string",
    Campo pessoal anonimizavel é do 
    "anonymize":false,
    tipo blob",
            
    "
    justification
    ErrorParameters":
    "string"
     
    }, {
    "
    idNumber
    "
    :0
    ,
    
            
    "databaseName
    "ErrorType": "
    emsfnd
    ERROR",
    
            
    "tableName
    "ErrorHelp": "
    usuar_mestre", "fieldName":"string"
    Campo pessoal configurado como anonimizavel é do tipo blob e não poderá ser anonimizado.",
            
    "defaultRecord":false,
    "ErrorSubType": "ERROR"
        }
    ]
    Expandir
    titleERROR 57360

    Será lançado ao informar parâmetros de entrada de um campo pessoal anonimizável que é chave primária.

    Bloco de código
    themeRDark
    [
       
    {
            "
    sensitiveField
    ErrorSequence":
    false
     1,
    
            
    "
    documentTypeId
    ErrorNumber":
    0
     57360,
    
            
    "fieldClassId
    "ErrorDescription":
    0,
     "Campo pessoal anonimizavel é 
    "documentTypeDes":"string"
    chave primária.",
            
    "fieldClassDes
    "ErrorParameters": "
    string
    ",
    
            
    "
    anonymize
    ErrorType":
    false,
     "
    justification":"string" } ] } ]

    A função não realiza consistência de banco de dados, são retornados os registros configurados em Relacionamento das rotinas com campos pessoais e/ou sensíveis.

    Exemplo de programa
    Bloco de código
    themeRDark
    titleprograma_de_negocio.p
    collapsetrue
    USING Progress.Json.ObjectModel.*.
    USING com.totvs.framework.sec.ProtectedData.
    
    DEFINE VARIABLE jArrRequest  AS JsonArray  NO-UNDO.
    DEFINE VARIABLE jArrResponse AS JsonArray  NO-UNDO.
    
    jArrRequest = NEW JsonArray().
    jArrRequest:ADD("bas_prog_dtsul").
    jArrRequest:ADD("bas_som").
    jArrRequest:ADD("sec000aa").
    jArrRequest:ADD("bas_procedimento").
    
    jArrResponse = ProtectedData:getAnonymizableFieldsByRoutine(jArrRequest).
    
    jArrResponse:WriteFile("c:\temp\resultado.json", TRUE).

    06. isFieldAnonymizable

    Objetivo

    Responsável por retornar se o campo é anonimizável ou não.

    Parâmetros de entrada

    ...

    Tipo

    ...

    Descrição

    ...

    Formato JSON Object, com os atributos:

    • databaseName: Nome do banco de dados;
    • tableName: Nome da tabela;
    • fieldName: Nome do campo.
    Bloco de código
    themeRDark
    collapsetrue
    {
        "databaseName":"db1",
        "tableName":"tabela1",
        "fieldName":"campo1"
    }
    ERROR",
            "ErrorHelp": "Campo pessoal configurado como anonimizavel é chave primária e não poderá ser anonimizado.",
            "ErrorSubType": "ERROR"
        }
    ]

    Retorno

    TipoDescriçãoJsonObject

    Formato JSON Object.

    Bloco de código
    themeRDark
    collapsetrue
    {
        "databaseName":"db1",
        "tableName":"tabela1",
        "fieldName":"campo1",
        "anonymizable": true
    }

    Se houver campo pessoal cadastrado com os dados informados no objeto de parâmetro:

    • Será inserida a propriedade "anonymizable" com o valor recuperado da base de dados.
    • Caso  o objeto passado como parâmetro  esteja incorreto, o campo não esteja cadastrado ou o campo faça parte de um índice único, o método retornará um erro que deve ser capturado utilizando a declaração do 'CATCH'
    • Não será feita validação para verificar se o campo existe no metaschema do banco de dados.
    Exemplo de programa
    Bloco de código
    themeRDark
    titleprograma
    _de_negocio
    .p
    collapsetrue
    USING 
    Progress.Json.ObjectModel.*. USING
    com.totvs.framework.sec.ProtectedData.
    
    DEFINE VARIABLE 
    jObjRequest
    lReturn 
    AS 
    JsonObject NO-UNDO. DEFINE VARIABLE jObjResponse AS JsonObject
    LOGICAL     NO-UNDO.
    
    DO ON ERROR UNDO, LEAVE:
        
    jObjRequest = NEW JsonObject(). jObjRequest:ADD("databaseName","emsfnd"). jObjRequest:ADD("tableName","usuar_mestre"). jObjRequest:ADD("fieldName","nom_usuario"). jObjResponse
    ASSIGN lReturn = ProtectedData:isFieldAnonymizable
    (jObjRequest).
     
    MESSAGE STRING(jObjResponse:GetJsonText()) VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. CATCH customError AS fwk.utils.CustomError: MESSAGE STRING(customError:arryaOfErrors:getJsonText()) VIEW-AS ALERT-BOX INFO BUTTONS OK. END CATCH. END. DO ON ERROR UNDO, LEAVE: jObjRequest = NEW JsonObject(). jObjRequest:ADD("databaseName","emsfnd"). jObjRequest:ADD("tableName","agenda_rpw3"). jObjRequest:ADD("fieldName","cdn_trans_edi2"). jObjResponse = ProtectedData:isFieldAnonymizable(jObjRequest). MESSAGE STRING(jObjResponse:GetJsonText())
    (INPUT "emsfnd", INPUT "tabela_teste", INPUT "campo_teste").
        MESSAGE lReturn VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
    
        CATCH customError AS fwk.utils.CustomError:
            MESSAGE STRING(customError:arryaOfErrors:getJsonText())
     VIEW-AS ALERT-BOX INFO BUTTONS OK.
        END CATCH.
    END.



    HTML
    <!-- esconder o menu --> 
    
    
    <style>
    div.theme-default .ia-splitter #main {
        margin-left: 0px;
    }
    .ia-fixed-sidebar, .ia-splitter-left {
        display: none;
    }
    #main {
        padding-left: 10px;
        padding-right: 10px;
        overflow-x: hidden;
    }
    
    .aui-header-primary .aui-nav,  .aui-page-panel {
        margin-left: 0px !important;
    }
    .aui-header-primary .aui-nav {
        margin-left: 0px !important;
    }
    </style>