CONTEÚDO

01. Visão geral

Disponibilização de funções para consulta aos campos protegidos passíveis de anonimização.

02. Formatos de anonimização

Para cada tipo de dado de campo protegido, será fornecido um valor padrão de anonimização:


Exemplo de programa
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

Responsá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.

[  
    {  
        "databaseName":"emsfnd"
    },
    {  
        "databaseName":"emsfnd2"
    }
]


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.
[
  {
    "databaseName": "emsfnd",
    "anonymizableFields": [
      {
        "tableName": "tabela_teste",
        "fieldName": "campo_teste",
        "defaultRecord": true,
        "sensitiveField": true,
        "documentTypeId": 1,
        "documentTypeDes": "CPF",
        "classifiers": [
          {
            "id": 1,
            "defaultRelation": true,
            "justificative": "Justificativa do Campo",
            "description": "Execução de Contrato"
          }
        ]
      }      
    ]
  },
  {
    "databaseName": "emsfnd2",
    "anonymizableFields": []
  }
]
Exemplo de programa
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.

[  
    {  
        "databaseName":"db1",
        "tableName":"tabela1"
    },
    {  
        "databaseName":"db2",
        "tableName":"tabela2"
    }
]
  • databaseName: Nome do banco de dados
  • tableName: Nome da tabela


Retorno

TipoDescrição
JsonArray

Formato JSON Array, com os campos anonimizáveis agrupados por banco e tabela.

[  
    {  
        "databaseName":"db1",
        "tableName":"tabela1",
        "anonymizableFields":[  
            {  
                "idNumber":0,
                "databaseName": "emsfnd",
                "tableName": "usuar_mestre",
                "fieldName":"string",
                "defaultRecord":false,
                "sensitiveField":false,
                "documentTypeId":0,
                "fieldClassId":0,
                "documentTypeDes":"string",
                "fieldClassDes":"string",
                "anonymize":false,
                "justification":"string"
            }
        ]
    },
    {  
        "databaseName":"db2",
        "tableName":"tabela2",
        "anonymizableFields":[  
            {  
                "idNumber":0,
                "databaseName": "emsfnd",
                "tableName": "usuar_mestre",
                "fieldName":"string",
                "defaultRecord":false,
                "sensitiveField":false,
                "documentTypeId":0,
                "fieldClassId":0,
                "documentTypeDes":"string",
                "fieldClassDes":"string",
                "anonymize":false,
                "justification":"string"
            }
        ]
    }
]

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
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

JsonArray

Formato JSON Array, contendo códigos dos programas.

["routine_01","routine_02"]


Retorno

TipoDescrição
JsonArray

Formato JSON Array, com os campos anonimizáveis agrupados pelos códigos dos programas.

[  
    {  
        "programCode":"routine_01",
        "programName":"Routine 01",
        "personalFields":[  
            {  
                "idNumber":0,
                "databaseName": "database_a",
                "tableName": "usuar_mestre",
                "fieldName":"string",
                "defaultRecord":false,
                "sensitiveField":false,
                "documentTypeId":0,
                "fieldClassId":0,
                "documentTypeDes":"string",
                "fieldClassDes":"string",
                "anonymize":false,
                "justification":"string"
            },
            {  
                "idNumber":0,
                "databaseName": "emsfnd",
                "tableName": "usuar_mestre",
                "fieldName":"string",
                "defaultRecord":false,
                "sensitiveField":false,
                "documentTypeId":0,
                "fieldClassId":0,
                "documentTypeDes":"string",
                "fieldClassDes":"string",
                "anonymize":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
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

JsonObject

Formato JSON Object, com os atributos:

  • databaseName: Nome do banco de dados;
  • tableName: Nome da tabela;
  • fieldName: Nome do campo.
{
    "databaseName":"db1",
    "tableName":"tabela1",
    "fieldName":"campo1"
}


Retorno

TipoDescrição
JsonObject

Formato JSON Object.

{
    "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
USING Progress.Json.ObjectModel.*.
USING com.totvs.framework.sec.ProtectedData.

DEFINE VARIABLE jObjRequest  AS JsonObject NO-UNDO.
DEFINE VARIABLE jObjResponse AS JsonObject 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 = 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())
        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.



<!-- 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>