...
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 |
exemplo | 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
JsonArray | Formato JSON Array.
Bloco de código |
---|
|
[
{
"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
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 registrosLOGICAL | O 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 |
collapsetrue |
{ "databaseName": "emsfnd",
"anonymizableFields": [
tableName"tabela_teste"fieldName"campo_teste"defaultRecordtrue,
"sensitiveField": truedocumentTypeId1,
"documentTypeDes": "CPFclassifiers [
{
"id": 1 defaultRelation true,
justificative": "Justificativa do CampoCampo pessoal não cadastrado(a).",
|
|
|
descriptionExecução de Contrato ] Expandir |
---|
| Será lançado ao informar parâmetros de entrada de um campo inexistente no banco de dados. |
|
} ]
},
{
databaseName"emsfnd2""anonymizableFields":[]
}
]Exemplo de programa |
---|
Bloco de código |
---|
theme | RDark |
---|
title | exemplo.p |
---|
collapse | true |
---|
| 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 |
---|
|
[
{ "ErrorNumber": 56,
"ErrorDescription": "Campo inexistente.",
"ErrorParameters": "Campo",
" |
|
|
databaseNamedb1tableNametabela1"
},
ocorrência para o(a) Campo |
|
|
{
"databaseName":"db2"tableNametabela2- databaseName: Nome do banco de dados
- tableName: Nome da tabela
Retorno
Tipo | Descrição |
---|
JsonArray | Formato JSON Array, com os campos anonimizáveis agrupados por banco e tabelacollapse | true |
databaseName"db1"tableName"tabela1"anonymizableFields[
{
"idNumber":0,
databaseNameemsfnd "tableNameusuar_mestre fieldNamestring defaultRecordfalse,
"sensitiveField":false, Expandir |
---|
| Será lançado ao informar parâmetros de entrada nulos ou vazios. |
|
documentTypeId0 "fieldClassId0 "documentTypeDesstring "fieldClassDesstring anonymizefalse,
"justification":"string"
}
]
}{
"databaseNamedb2tableNametabela2, "anonymizableFields":[ Expandir |
---|
| Será lançado ao informar parâmetros de entrada de um campo pessoal anonimizável que faz parte de um índice único. |
|
idNumber0 databaseName"emsfnd" "tableNameusuar_mestre",
"fieldName":"string",
Campo pessoal anonimizavel faz parte de um índice único",
|
|
|
defaultRecordfalse,
sensitiveField:false "documentTypeId":0,
"fieldClassId":0,
documentTypeDesstring",
Campo pessoal configurado como anonimizavel faz parte de um índice único e não poderá |
|
|
"fieldClassDes":"string",
anonymizefalse,
"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 |
---|
Bloco de código |
---|
theme | RDark |
---|
title | programa_de_negocio.p |
---|
collapse | true |
---|
| 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 |
---|
|
["routine_01","routine_02"] |
Expandir |
---|
| Será lançado ao informar parâmetros de entrada de um campo pessoal anonimizável que é do tipo lógico |
|
Retorno
Tipo | Descrição |
---|
JsonArray | Formato JSON Array, com os campos anonimizáveis agrupados pelos códigos dos programascollapsetrue | programCode"routine_01"programName"Routine01"personalFields[
pessoal anonimizavel é do |
|
|
{
"idNumber":0,
databaseNamedatabase_a "tableNameusuar_mestre "fieldNamestring",
Campo pessoal configurado como anonimizavel é do tipo lógico e não poderá ser |
|
|
"defaultRecord":false "sensitiveField":false,
"documentTypeId":0,"ErrorSubType": "ERROR"
}
] |
|
Expandir |
---|
| Será lançado ao informar parâmetros de entrada de um campo pessoal anonimizável que é do tipo blob. |
|
fieldClassId0 "documentTypeDes":"string",
fieldClassDesstring",
Campo pessoal anonimizavel é do |
|
|
"anonymize":false,
justification"string"
},
{
idNumber:0 "databaseNameemsfnd "tableNameusuar_mestre",
"fieldName":"string"Campo pessoal configurado como anonimizavel é do tipo blob e não poderá ser anonimizado.",
|
|
|
"defaultRecord":false,"ErrorSubType": "ERROR"
}
] |
|
Expandir |
---|
| Será lançado ao informar parâmetros de entrada de um campo pessoal anonimizável que é chave primária. |
|
sensitiveFieldfalse documentTypeId0 "fieldClassId0,
"Campo pessoal anonimizavel é |
|
|
"documentTypeDes":"string" "fieldClassDesstring anonymizefalse,
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 |
---|
theme | RDark |
---|
title | programa_de_negocio.p |
---|
collapse | true |
---|
| 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 |
---|
|
{
"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
Tipo | Descrição |
---|
JsonObject | Bloco de código |
---|
| {
"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.
|
_de_negocioProgress.Json.ObjectModel.*.
USING com.totvs.framework.sec.ProtectedData.
|
|
jObjRequest JsonObject NO-UNDO.
DEFINE VARIABLE jObjResponse AS JsonObject
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>
|