NamedQuery permite informar atributos

Description

Problema


  • O recurso de named query permite especificar na named query quais atributos a named query deve retornar. Entretanto, ao chamar o endpoint para retornar os dados da named query, se for especificado atributos não informados na named query, o endpoint está retornando esse atributos, representando um risco de vazamento de dados não definidos no contrato da named query.

Critério de Aceite


  • Se a NQ possui informado os atributos para ser retornado no documento da NQ, deve ser ignorado a lista de atributos informado no endpoint {{/api/v3/queries/named/ {query_name}

    }}.

  • Para o cenário onde não existem fields configurados na NQ:
    1. Caso o usuário não informe o fields na request, retornamos todos os campos (comportamento atual).
    2. Caso o usuário infrme fields=., retornamos todos os campos (comportamento atual).
    3. Caso o usuário informe um ou mais fields, retornamos os fields informados (comportamento atual).
  • Para o cenário onde existem fields configurados na NQ:
    1. Caso o usuário não informe o fields na request, retornamos apenas os fileds configurados (comportamento atual).
    2. Caso o usuário informe fields=., retornamos apenas os fileds configurados, ignorando os não configurados (ajuste na situação atual).
      1. Caso informado “mdmGoldenFieldAndValues“, deve ser considerado todos os atributos na NQ.
      2. Todos os atributos do DM estão definidos como “nested” de “mdmGoldenFieldAndValues”.
    3. Caso o usuário informe um ou mais fields, retornamos apenas os fileds configurados, ignorando os não configurados (ajuste na situação atual).
  • Feature deve ser habilitada/desabilitada de forma global como feature flag. Se ocorrer algum impacto não mapeado podemos retornar ao comportamento anterior.
  • Lista de chamadas para NQ com parâmetros de fields, esses são os possíveis impactos (requests dos ultimos 30 dias):
  • Exemplo de NQ com os parâmetro de atributos configurado:
{
      "mdmCacheRevalidationTimeInSeconds": 1800,
      "mdmCacheTimeInSeconds": 10800,
      "mdmCreated": "2023-09-08T21:49:25.140Z",
      "mdmCreatedUser": "bruno.furtado@totvslab.com",
      "mdmEntityType": "mdmNamedQuery",
      "mdmFilterQuery": {
        "excludeMergePending": false,
        "indexType": "MASTER",
        "minimumShouldMatch": 1,
        "mustList": [
          {
            "mdmFilterType": "TYPE_FILTER",
            "mdmValue": "employeeGolden"
          },
          {
            "mdmFilterType": "TERMS_FILTER",
            "mdmKey": "mdmGoldenFieldAndValues.mdmemailaddress.raw",
            "mdmValue": "{{[emails]}}"
          }
        ],
        "mustNotList": [
          {
            "mdmFilterType": "EXISTS_FILTER",
            "mdmKey": "mdmGoldenFieldAndValues.terminationdate"
          }
        ],
        "resolveRelationships": false
      },
      "mdmId": "1cb236698d984c1d93b2362091272e28",
      "mdmLastUpdated": "2023-12-08T21:09:53.227Z",
      "mdmQueryDescription": "Lista empregados utilizando o filtro do email.",
      "mdmQueryName": "getEmployeesByEmails",
      "mdmQueryPaid": false,
      "mdmQueryParams": [
        {
          "mdmDeleted": false,
          "mdmDescription": {},
          "mdmEditable": true,
          "mdmInherited": false,
          "mdmLabel": {},
          "mdmName": "[emails]",
          "mdmRequired": false,
          "mdmValueType": "string"
        },
        {
          "mdmDeleted": false,
          "mdmDescription": {},
          "mdmEditable": true,
          "mdmInherited": false,
          "mdmLabel": {},
          "mdmName": "emails",
          "mdmRequired": false,
          "mdmValueType": "string"
        }
      ],
      "mdmQueryPrice": 0,
      "mdmQueryPricePerRecord": false,
      "mdmReturnFields": [
        "mdmGoldenFieldAndValues.mdmemailaddress",
        "mdmGoldenFieldAndValues.imagecode",
        "mdmGoldenFieldAndValues.mdmpersonid",
        "mdmGoldenFieldAndValues.terminationdate",
        "mdmGoldenFieldAndValues.mdmname",
        "mdmGoldenFieldAndValues.mdmtaxid",
        "mdmGoldenFieldAndValues.employeecode",
        "mdmGoldenFieldAndValues.dataadmissao"
      ],
      "mdmTags": [],
      "mdmTenantId": "b57a7e74a1764003aa987288a610456e",
      "mdmTimeoutInSeconds": 55,
      "mdmType": "",
      "mdmUpdatedUser": "bruno@furtado.me"
    }

Texto abertura Issue Jira produção


Desdobramento de conversa com Poffo a respeito de vulnerabilidades identificadas no Pentest.

Não permitir que o endpoint que executa a NQ altere os valores de atributos definidos na NQ.
Issue BE: impedir o uso do "." para retornar todos os atributos, evitar especificar os atributos.

Activity

Automation for Jira 27 June 2024, 17:17 Jira Internal Users

Valor anterior do campo deployment date era 2024-06-25T12:44:00.0+0000. Parece ter ocorrido um novo deploy nesta issue.

Automation for Jira 24 June 2024, 18:15 Jira Internal Users

Esta issue foi automaticamente movida para WAITING DEPLOY, pois a issue relacionada de QA regression também chegou ao status WAITING DEPLOY (PR foi mergeado na branch master no Github).

Automation for Jira 20 June 2024, 13:38 Jira Internal Users

Github Commit:

Automation for Jira 20 June 2024, 13:38 Jira Internal Users

Esta issue foi automaticamente movida para TESTED & MERGED, pois o PR foi mergeado na branch Develop no Github. PR aprovado por lucasnoetzold,douglascoimbra.

Automation for Jira 20 June 2024, 13:38 Jira Internal Users

Github usuário douglascoimbra aprovou um PR e foi adicionado como Shared Assignee nesta issue.

feat: https://totvsideia.atlassian.net/browse/CAPL-6073#icft=CAPL-6073 rule return fields

Automation for Jira 20 June 2024, 12:57 Jira Internal Users

Esta issue foi automaticamente movimentada para QA REVIEW, pois o PR foi aprovado no Github.

Automation for Jira 14 June 2024, 12:08 Jira Internal Users

validado pelo time de QA. Pendente apenas o code review

Mensagem enviada pelo Slack - plataforma-carol-internal - Douglas Coimbra Lopes

Automation for Jira 13 June 2024, 17:18 Jira Internal Users

Esta issue foi automaticamente movimentada para REVIEW, pois o PR (não DRAFT e não WIP) foi criado no Github.

feat: https://totvsideia.atlassian.net/browse/CAPL-6073#icft=CAPL-6073 rule return fields

Automation for Jira 7 June 2024, 21:10 Jira Internal Users

@MARCOS STUMPF ,
@Robson Thanael Poffo ,
@Geny Isam Hamud Herrera ,
Este issue foi planejada para ser entregue até 2024-06-28. Você pode confirmar consultando o campo Due Date desta issue.

Data já planejadas para esta issue: 2024-06-28

Se o campo External Issue Link estiver preenchido com o link de uma issue válida no Jira Produção o cliente também será notificado no Jira Produção.