diff --git a/docs/13-v2-perfis-carga.html b/docs/13-v2-perfis-carga.html index 502d616..16556a0 100644 --- a/docs/13-v2-perfis-carga.html +++ b/docs/13-v2-perfis-carga.html @@ -127,6 +127,20 @@ coluna, e um `JSON_OBJECT(*)` sobre o staging resolve isso corretamente.
arquivo, exatamente como já faz hoje em cada release. +Cogitamos usar o pacote público APEX_DATA_LOADING pra adicionar as colunas novas
+ via script, em vez de formulário por formulário. Confirmado contra o dicionário de dados
+ (all_synonyms/all_arguments, owner real
+ APEX_240200.WWV_FLOW_DATA_LOADING_API): esse pacote só tem
+ GET_FILE_PROFILE e LOAD_DATA — os dois servem pra executar
+ uma carga usando uma Data Load Definition que já existe, não pra criar/editar colunas de um
+ perfil. Não tem CREATE_COLUMN_DEFINITION nem equivalente. Conclusão: adicionar
+ colunas num Data Profile só dá pra fazer pela UI do App Builder (como já vínhamos fazendo) ou
+ pela API interna wwv_flow_imp_shared (descartada por risco, ver nota da seção
+ anterior). Não vale reabrir essa investigação.
A versão anterior deste capítulo sugeria "subir um arquivo de amostra para detectar colunas @@ -182,26 +196,86 @@ coluna, e um `JSON_OBJECT(*)` sobre o staging resolve isso corretamente.
(DL_TECH_CMDB_V2 → TB_26AI_TECH_CMDB,
DL_TECH_VULNERABILIDADE_V3 → TB_26AI_TECH_V2).
-O próximo passo é abrir DL_TECH_CMDB_V2 (ou a de vulnerabilidades) e clicar em
- Edit Data Profile pra adicionar as colunas novas da seção 3/4 — ainda não vi
- essa tela. Assim que tiver o print, completo o roteiro.
DL_TECH_CMDB_V2 → Edit Data Profile (confirma: mostra XLSX, 16 colunas — as originais, intactas).Copy of DL_TECH_CMDB_V1 (é um objeto separado da Data Load Definition, o rename da etapa 9 não alcança aqui) — troca pra DL_TECH_CMDB_V2 por organização (não é obrigatório funcionalmente).Data), Name, Data Type, Length (só aparece pra Varchar2), Selector Type (deixar Name), Selector (mesmo texto do Name), Value Transformation (deixar None — ver nota abaixo).| Name | Data Type | Length |
|---|---|---|
INSTALL_STATUS | Varchar2 | 100 |
LIFE_CYCLE_STAGE_STATUS | Varchar2 | 100 |
ASSIGNED_TO | Varchar2 | 255 |
ATTESTATION_SCORE | Number | — |
ATTESTATION_STATUS | Varchar2 | 100 |
ATTESTED_BY | Varchar2 | 255 |
LOCATION | Varchar2 | 255 |
ASSET_TAG | Varchar2 | 100 |
U_SERVER_ROLE | Varchar2 | 255 |
ATTESTED_FLAG | Varchar2 | 10 |
U_FIM_DO_SUPORTE | Date | — (Format mask DD-MM-YYYY, Has Time Zone desligado) |
Confirmado: total final 27 colunas (16 originais + 11 novas).
+ +Cogitei usar Value Transformation = Replace pra converter
+ Verdadeiro(a)/Falso(a) em 1/0 automaticamente, mas o Replace
+ só aceita um par busca/troca — não dá pra mapear dois valores diferentes numa
+ coluna só. Verificando como as colunas booleanas que já existem (COFRE,
+ SOX, TENABLE, SIEM, EDR,
+ APPLIANCE, É_VIRTUAL) resolvem isso: nenhuma usa Value Transformation —
+ a conversão sempre foi manual, feita na planilha Excel antes de subir (já documentado no
+ capítulo 10). ATTESTED_FLAG segue a mesma regra: quem preparar a carga precisa
+ converter a coluna attested de Verdadeiro(a)/Falso(a) pra
+ 1/0 no Excel antes de subir. Nota também: essa coluna ficou como
+ VARCHAR2(10) no banco (Passo 1), não NUMBER como as outras flags — uma
+ inconsistência minha que não vale reabrir o Passo 1 pra corrigir, já que texto '1'/'0' funciona
+ numa VARCHAR2 sem problema.
Depois de ter as colunas novas adicionadas na cópia (roteiro a completar), os ajustes que já sei -que vão ser necessários, pela tabela da seção 3/4:
-DEFINITION_CVSS3_BASE_SCORE, DEFINITION_EPSS_SCORE, PORT, TIME_TO_FIX, ATTESTATION_SCORE → tipo NUMBER.LAST_FIXED, VULN_SLA_DATE, PATCH_PUBLISHED, VULNERABILITY_PUBLISHED → data/timestamp.U_FIM_DO_SUPORTE → data, máscara DD-MM-YYYY.ATTESTED_FLAG, CISA_KEV_FLAG, EXPLOITED_BY_MALWARE_FLAG, EXPLOITED_BY_NESSUS_FLAG → transformação de valor Verdadeiro(a)/true → 1, Falso(a)/false → 0 (mesma convenção já usada em SOX/COFRE/TENABLE/SIEM).Mesmo roteiro das etapas 11-13 acima, agora em DL_TECH_VULNERABILIDADE_V3 (perfil
+original tem 18 colunas — confirmado, bate exatamente com o capítulo 10). Os 3 campos-flag também
+seguem a regra de conversão manual no Excel (não usar Value Transformation), igual
+ATTESTED_FLAG acima.
| Name | Data Type | Length / Config |
|---|---|---|
DEFINITION_CVE | Varchar2 | 4000 |
DEFINITION_DESCRIPTION | Clob | — |
DEFINITION_SOLUTION | Clob | — |
DEFINITION_SYNOPSIS | Varchar2 | 4000 |
SOFTWARE_VULNS | Clob | — |
DEFINITION_CVSS3_BASE_SCORE | Number | — |
DEFINITION_CVSS3_BASE_VECTOR | Varchar2 | 255 |
DEFINITION_CPE | Varchar2 | 4000 |
DEFINITION_EPSS_SCORE | Number | — |
CISA_KEV_FLAG | Number | — (true/false→1/0 manual no Excel) |
EXPLOITED_BY_MALWARE_FLAG | Number | — (idem) |
EXPLOITED_BY_NESSUS_FLAG | Number | — (idem) |
PORT | Number | — |
ASSET_OPERATING_SYSTEM | Varchar2 | 255 |
LAST_FIXED | Timestamp with time zone | máscara YYYY"-"MM"-"DD"T"HH24":"MI:SS.FF9TZR, Has Time Zone ligado — mesma config já usada em FIRST_OBSERVED/LAST_SEEN/RESURFACED_DATE do perfil original |
TIME_TO_FIX | Number | — |
VULN_SLA_DATE | Timestamp with time zone | mesma máscara/config acima |
PATCH_PUBLISHED | Timestamp with time zone | mesma máscara/config acima |
VULNERABILITY_PUBLISHED | Timestamp with time zone | mesma máscara/config acima |
SOURCE_SCAN | Varchar2 | 100 |
SCAN_ID | Varchar2 | 255 |
SCAN_TARGET | Varchar2 | 255 |
Esperado: total final 40 colunas (18 originais + 22 novas).
+Os arquivos templates/sample_DL_TECH_CMDB_V2.xlsx e
-templates/sample_DL_TECH_VULNERABILIDADE_V3.xlsx continuam úteis, só que num momento
-diferente do que eu disse antes: não servem pra criar o perfil, servem como planilha de teste (só
-o cabeçalho — adicione 5-10 linhas de ativos AM... com dado real antes de subir) pra
-validar a carga depois que o perfil estiver pronto, na seção 6.
templates/sample_DL_TECH_VULNERABILIDADE_V3.xlsx servem como planilha de teste (só o
+cabeçalho — adicione 5-10 linhas de ativos AM... com dado real, já com os flags
+convertidos pra 1/0, antes de subir) pra validar a carga depois que os dois perfis estiverem
+prontos, na seção 6.
Depois de rodar uma carga de teste pequena: