Projects STRLCPY bearer Commits cf5b22c6
🤬
  • feat(report): extend saas report (#828)

    * feat: add category name to dataflow report
    
    * feat: add saas as a standalone report as well
    
    * chore: update snapshots
  • Loading...
  • Cédric Fabianski committed with GitHub 1 year ago
    cf5b22c6
    1 parent 048156e0
  • ■ ■ ■ ■
    e2e/flags/.snapshots/TestOuputFlag
    1  -[{"detector_type":"ruby","source":{"column_number":8,"filename":"main.rb","language":"Ruby","language_type":"programming","line_number":1,"text":null},"type":"schema_classified","value":{"classification":{"decision":{"reason":"","state":""},"name":"info"},"field_name":"info","field_type":"","field_type_simple":"unknown","normalized_field_name":"info","normalized_object_name":"logger","object_name":"logger"}},{"detector_type":"ruby","source":{"column_number":31,"filename":"main.rb","language":"Ruby","language_type":"programming","line_number":1,"text":null},"type":"schema_classified","value":{"classification":{"data_type":{"category_uuid":"cef587dd-76db-430b-9e18-7b031e1a193b","name":"Email Address","uuid":"22e24c62-82d3-4b72-827c-e261533331bd"},"decision":{"reason":"known_pattern","state":"valid"},"name":"email","subject_name":"User"},"field_name":"email","field_type":"","field_type_simple":"unknown","normalized_field_name":"email","normalized_object_name":"user","object_name":"user"}}]
     1 +[{"detector_type":"ruby","source":{"column_number":8,"filename":"main.rb","language":"Ruby","language_type":"programming","line_number":1,"text":null},"type":"schema_classified","value":{"classification":{"decision":{"reason":"","state":""},"name":"info"},"field_name":"info","field_type":"","field_type_simple":"unknown","normalized_field_name":"info","normalized_object_name":"logger","object_name":"logger"}},{"detector_type":"ruby","source":{"column_number":31,"filename":"main.rb","language":"Ruby","language_type":"programming","line_number":1,"text":null},"type":"schema_classified","value":{"classification":{"data_type":{"category":{"groups":{"172d90e3-cb9a-46b6-90e5-dd7169c3af54":{"name":"PII","uuid":"172d90e3-cb9a-46b6-90e5-dd7169c3af54"},"e1d3135b-3c0f-4b55-abce-19f27a26cbb3":{"name":"PII","uuid":"e1d3135b-3c0f-4b55-abce-19f27a26cbb3"}},"name":"Contact","uuid":"cef587dd-76db-430b-9e18-7b031e1a193b"},"category_uuid":"cef587dd-76db-430b-9e18-7b031e1a193b","name":"Email Address","uuid":"22e24c62-82d3-4b72-827c-e261533331bd"},"decision":{"reason":"known_pattern","state":"valid"},"name":"email","subject_name":"User"},"field_name":"email","field_type":"","field_type_simple":"unknown","normalized_field_name":"email","normalized_object_name":"user","object_name":"user"}}]
    2 2   
    3 3   
  • ■ ■ ■ ■
    e2e/flags/.snapshots/TestReportFlags-report-dataflow
    1  -{"data_types":[{"name":"Email Address","detectors":[{"name":"ruby","locations":[{"filename":"e2e/flags/testdata/simple/main.rb","line_number":1,"field_name":"email","object_name":"user","subject_name":"User"}]}]}],"components":[]}
     1 +{"data_types":[{"category_name":"Contact","name":"Email Address","detectors":[{"name":"ruby","locations":[{"filename":"e2e/flags/testdata/simple/main.rb","line_number":1,"field_name":"email","object_name":"user","subject_name":"User"}]}]}],"components":[]}
    2 2   
    3 3  --
    4 4   
    skipped 1 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestClass-constructor.json
    skipped 32 lines
    33 33   "data_type": {
    34 34   "name": "Fullname",
    35 35   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    36  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     36 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     37 + "category": {
     38 + "name": "Identification",
     39 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     40 + "groups": {
     41 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     42 + "name": "PII",
     43 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     44 + },
     45 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     46 + "name": "PII",
     47 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     48 + }
     49 + }
     50 + }
    37 51   },
    38 52   "decision": {
    39 53   "state": "valid",
    skipped 16 lines
    56 70   "data_type": {
    57 71   "name": "Physical Address",
    58 72   "uuid": "5a80a938-6fb2-4d9a-9c47-8d377e036506",
    59  - "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b"
     73 + "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     74 + "category": {
     75 + "name": "Contact",
     76 + "uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     77 + "groups": {
     78 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     79 + "name": "PII",
     80 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     81 + },
     82 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     83 + "name": "PII",
     84 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     85 + }
     86 + }
     87 + }
    60 88   },
    61 89   "decision": {
    62 90   "state": "valid",
    skipped 41 lines
    104 132   "data_type": {
    105 133   "name": "Fullname",
    106 134   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    107  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     135 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     136 + "category": {
     137 + "name": "Identification",
     138 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     139 + "groups": {
     140 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     141 + "name": "PII",
     142 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     143 + },
     144 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     145 + "name": "PII",
     146 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     147 + }
     148 + }
     149 + }
    108 150   },
    109 151   "decision": {
    110 152   "state": "valid",
    skipped 16 lines
    127 169   "data_type": {
    128 170   "name": "Physical Address",
    129 171   "uuid": "5a80a938-6fb2-4d9a-9c47-8d377e036506",
    130  - "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b"
     172 + "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     173 + "category": {
     174 + "name": "Contact",
     175 + "uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     176 + "groups": {
     177 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     178 + "name": "PII",
     179 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     180 + },
     181 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     182 + "name": "PII",
     183 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     184 + }
     185 + }
     186 + }
    131 187   },
    132 188   "decision": {
    133 189   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestFlow-assigment-expression.json
    skipped 32 lines
    33 33   "data_type": {
    34 34   "name": "Fullname",
    35 35   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    36  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     36 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     37 + "category": {
     38 + "name": "Identification",
     39 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     40 + "groups": {
     41 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     42 + "name": "PII",
     43 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     44 + },
     45 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     46 + "name": "PII",
     47 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     48 + }
     49 + }
     50 + }
    37 51   },
    38 52   "decision": {
    39 53   "state": "valid",
    skipped 78 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestFlow-variable-declarator.json
    skipped 32 lines
    33 33   "data_type": {
    34 34   "name": "Fullname",
    35 35   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    36  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     36 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     37 + "category": {
     38 + "name": "Identification",
     39 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     40 + "groups": {
     41 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     42 + "name": "PII",
     43 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     44 + },
     45 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     46 + "name": "PII",
     47 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     48 + }
     49 + }
     50 + }
    37 51   },
    38 52   "decision": {
    39 53   "state": "valid",
    skipped 78 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestObject-nested.json
    skipped 65 lines
    66 66   "data_type": {
    67 67   "name": "Physical Address",
    68 68   "uuid": "5a80a938-6fb2-4d9a-9c47-8d377e036506",
    69  - "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b"
     69 + "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     70 + "category": {
     71 + "name": "Contact",
     72 + "uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     73 + "groups": {
     74 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     75 + "name": "PII",
     76 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     77 + },
     78 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     79 + "name": "PII",
     80 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     81 + }
     82 + }
     83 + }
    70 84   },
    71 85   "decision": {
    72 86   "state": "valid",
    skipped 45 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestObject-quoted.json
    skipped 65 lines
    66 66   "data_type": {
    67 67   "name": "Fullname",
    68 68   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    69  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     69 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     70 + "category": {
     71 + "name": "Identification",
     72 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     73 + "groups": {
     74 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     75 + "name": "PII",
     76 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     77 + },
     78 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     79 + "name": "PII",
     80 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     81 + }
     82 + }
     83 + }
    70 84   },
    71 85   "decision": {
    72 86   "state": "valid",
    skipped 45 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestObjectMemberExpression-intertwined.json
    skipped 98 lines
    99 99   "data_type": {
    100 100   "name": "Physical Address",
    101 101   "uuid": "5a80a938-6fb2-4d9a-9c47-8d377e036506",
    102  - "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b"
     102 + "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     103 + "category": {
     104 + "name": "Contact",
     105 + "uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     106 + "groups": {
     107 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     108 + "name": "PII",
     109 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     110 + },
     111 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     112 + "name": "PII",
     113 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     114 + }
     115 + }
     116 + }
    103 117   },
    104 118   "decision": {
    105 119   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestObjectMemberExpression-nested-arguments.json
    skipped 65 lines
    66 66   "data_type": {
    67 67   "name": "Physical Address",
    68 68   "uuid": "5a80a938-6fb2-4d9a-9c47-8d377e036506",
    69  - "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b"
     69 + "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     70 + "category": {
     71 + "name": "Contact",
     72 + "uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     73 + "groups": {
     74 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     75 + "name": "PII",
     76 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     77 + },
     78 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     79 + "name": "PII",
     80 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     81 + }
     82 + }
     83 + }
    70 84   },
    71 85   "decision": {
    72 86   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestObjectMemberExpression-nested.json
    skipped 65 lines
    66 66   "data_type": {
    67 67   "name": "Physical Address",
    68 68   "uuid": "5a80a938-6fb2-4d9a-9c47-8d377e036506",
    69  - "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b"
     69 + "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     70 + "category": {
     71 + "name": "Contact",
     72 + "uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     73 + "groups": {
     74 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     75 + "name": "PII",
     76 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     77 + },
     78 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     79 + "name": "PII",
     80 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     81 + }
     82 + }
     83 + }
    70 84   },
    71 85   "decision": {
    72 86   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestObjectMemberExpression-simple.json
    skipped 32 lines
    33 33   "data_type": {
    34 34   "name": "Fullname",
    35 35   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    36  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     36 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     37 + "category": {
     38 + "name": "Identification",
     39 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     40 + "groups": {
     41 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     42 + "name": "PII",
     43 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     44 + },
     45 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     46 + "name": "PII",
     47 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     48 + }
     49 + }
     50 + }
    37 51   },
    38 52   "decision": {
    39 53   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestObjectSubscriptExpression-intertwined.json
    skipped 98 lines
    99 99   "data_type": {
    100 100   "name": "Physical Address",
    101 101   "uuid": "5a80a938-6fb2-4d9a-9c47-8d377e036506",
    102  - "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b"
     102 + "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     103 + "category": {
     104 + "name": "Contact",
     105 + "uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     106 + "groups": {
     107 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     108 + "name": "PII",
     109 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     110 + },
     111 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     112 + "name": "PII",
     113 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     114 + }
     115 + }
     116 + }
    103 117   },
    104 118   "decision": {
    105 119   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestObjectSubscriptExpression-nested-arguments.json
    skipped 65 lines
    66 66   "data_type": {
    67 67   "name": "Physical Address",
    68 68   "uuid": "5a80a938-6fb2-4d9a-9c47-8d377e036506",
    69  - "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b"
     69 + "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     70 + "category": {
     71 + "name": "Contact",
     72 + "uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     73 + "groups": {
     74 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     75 + "name": "PII",
     76 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     77 + },
     78 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     79 + "name": "PII",
     80 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     81 + }
     82 + }
     83 + }
    70 84   },
    71 85   "decision": {
    72 86   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestObjectSubscriptExpression-nested.json
    skipped 65 lines
    66 66   "data_type": {
    67 67   "name": "Physical Address",
    68 68   "uuid": "5a80a938-6fb2-4d9a-9c47-8d377e036506",
    69  - "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b"
     69 + "category_uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     70 + "category": {
     71 + "name": "Contact",
     72 + "uuid": "cef587dd-76db-430b-9e18-7b031e1a193b",
     73 + "groups": {
     74 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     75 + "name": "PII",
     76 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     77 + },
     78 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     79 + "name": "PII",
     80 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     81 + }
     82 + }
     83 + }
    70 84   },
    71 85   "decision": {
    72 86   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestString-concatanation.json
    skipped 32 lines
    33 33   "data_type": {
    34 34   "name": "Fullname",
    35 35   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    36  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     36 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     37 + "category": {
     38 + "name": "Identification",
     39 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     40 + "groups": {
     41 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     42 + "name": "PII",
     43 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     44 + },
     45 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     46 + "name": "PII",
     47 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     48 + }
     49 + }
     50 + }
    37 51   },
    38 52   "decision": {
    39 53   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestString-simple.json
    skipped 32 lines
    33 33   "data_type": {
    34 34   "name": "Fullname",
    35 35   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    36  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     36 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     37 + "category": {
     38 + "name": "Identification",
     39 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     40 + "groups": {
     41 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     42 + "name": "PII",
     43 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     44 + },
     45 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     46 + "name": "PII",
     47 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     48 + }
     49 + }
     50 + }
    37 51   },
    38 52   "decision": {
    39 53   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestString-single-quotes.json
    skipped 32 lines
    33 33   "data_type": {
    34 34   "name": "Fullname",
    35 35   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    36  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     36 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     37 + "category": {
     38 + "name": "Identification",
     39 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     40 + "groups": {
     41 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     42 + "name": "PII",
     43 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     44 + },
     45 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     46 + "name": "PII",
     47 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     48 + }
     49 + }
     50 + }
    37 51   },
    38 52   "decision": {
    39 53   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestString-template-variable-reconciliation.json
    skipped 32 lines
    33 33   "data_type": {
    34 34   "name": "Fullname",
    35 35   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    36  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     36 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     37 + "category": {
     38 + "name": "Identification",
     39 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     40 + "groups": {
     41 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     42 + "name": "PII",
     43 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     44 + },
     45 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     46 + "name": "PII",
     47 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     48 + }
     49 + }
     50 + }
    37 51   },
    38 52   "decision": {
    39 53   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/javascript/.snapshots/TestString-template.json
    skipped 32 lines
    33 33   "data_type": {
    34 34   "name": "Fullname",
    35 35   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    36  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     36 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     37 + "category": {
     38 + "name": "Identification",
     39 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     40 + "groups": {
     41 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     42 + "name": "PII",
     43 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     44 + },
     45 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     46 + "name": "PII",
     47 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     48 + }
     49 + }
     50 + }
    37 51   },
    38 52   "decision": {
    39 53   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/ruby/.snapshots/TestRuby-call.json
    skipped 32 lines
    33 33   "data_type": {
    34 34   "name": "Fullname",
    35 35   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    36  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     36 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     37 + "category": {
     38 + "name": "Identification",
     39 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     40 + "groups": {
     41 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     42 + "name": "PII",
     43 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     44 + },
     45 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     46 + "name": "PII",
     47 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     48 + }
     49 + }
     50 + }
    37 51   },
    38 52   "decision": {
    39 53   "state": "valid",
    skipped 12 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/ruby/.snapshots/TestRuby-object-variable-reconciliation.json
    skipped 32 lines
    33 33   "data_type": {
    34 34   "name": "Fullname",
    35 35   "uuid": "1617291b-bc22-4267-ad5e-8054b2505958",
    36  - "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e"
     36 + "category_uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     37 + "category": {
     38 + "name": "Identification",
     39 + "uuid": "14124881-6b92-4fc5-8005-ea7c1c09592e",
     40 + "groups": {
     41 + "172d90e3-cb9a-46b6-90e5-dd7169c3af54": {
     42 + "name": "PII",
     43 + "uuid": "172d90e3-cb9a-46b6-90e5-dd7169c3af54"
     44 + },
     45 + "e1d3135b-3c0f-4b55-abce-19f27a26cbb3": {
     46 + "name": "PII",
     47 + "uuid": "e1d3135b-3c0f-4b55-abce-19f27a26cbb3"
     48 + }
     49 + }
     50 + }
    37 51   },
    38 52   "decision": {
    39 53   "state": "valid",
    skipped 78 lines
  • ■ ■ ■ ■ ■ ■
    pkg/classification/db/db.go
    skipped 64 lines
    65 65  var RecipeTypeService = RecipeType("service")
    66 66   
    67 67  type DataType struct {
    68  - Name string `json:"name" yaml:"name"`
    69  - UUID string `json:"uuid" yaml:"uuid"`
    70  - CategoryUUID string `json:"category_uuid" yaml:"category_uuid"`
     68 + Name string `json:"name" yaml:"name"`
     69 + UUID string `json:"uuid" yaml:"uuid"`
     70 + CategoryUUID string `json:"category_uuid" yaml:"category_uuid"`
     71 + Category DataCategory `json:"category" yaml:"category"`
    71 72  }
    72 73   
    73 74  type DataCategory struct {
    skipped 71 lines
    145 146  }
    146 147   
    147 148  func defaultDB(context flag.Context, subjectMappingPath string) DefaultDB {
    148  - dataTypes := defaultDataTypes()
     149 + dataCategories := defaultDataCategories(context)
     150 + categories := map[string]DataCategory{}
     151 + for _, category := range dataCategories {
     152 + categories[category.UUID] = category
     153 + }
     154 + 
     155 + dataTypes := defaultDataTypes(categories)
    149 156   return DefaultDB{
    150 157   Recipes: defaultRecipes(),
    151 158   DataTypes: dataTypes,
    152  - DataCategories: defaultDataCategories(context),
     159 + DataCategories: dataCategories,
    153 160   DataTypeClassificationPatterns: defaultDataTypeClassificationPatterns(dataTypes),
    154 161   KnownPersonObjectPatterns: defaultKnownPersonObjectPatterns(dataTypes, subjectMappingPath),
    155 162   }
    skipped 91 lines
    247 254   return dataCategories
    248 255  }
    249 256   
    250  -func defaultDataTypes() []DataType {
     257 +func defaultDataTypes(
     258 + categories map[string]DataCategory,
     259 +) []DataType {
    251 260   dataTypes := []DataType{}
    252 261   
    253 262   files, err := dataTypesDir.ReadDir("data_types")
    skipped 13 lines
    267 276   if err != nil {
    268 277   handleError(err)
    269 278   }
     279 + 
     280 + dataType.Category = categories[dataType.CategoryUUID]
    270 281   
    271 282   dataTypes = append(dataTypes, dataType)
    272 283   }
    skipped 156 lines
  • ■ ■ ■ ■ ■ ■
    pkg/flag/report_flags.go
    skipped 12 lines
    13 13   
    14 14   ReportPrivacy = "privacy"
    15 15   ReportSecurity = "security"
     16 + ReportDataFlow = "dataflow"
    16 17   ReportDetectors = "detectors" // nodoc: internal report type
    17  - ReportDataFlow = "dataflow"
     18 + ReportSaaS = "saas" // nodoc: internal report type
    18 19   ReportStats = "stats" // nodoc: internal report type
    19 20   
    20 21   DefaultSeverity = "critical,high,medium,low,warning"
    skipped 81 lines
    102 103   switch report {
    103 104   case ReportPrivacy:
    104 105   case ReportSecurity:
     106 + case ReportDataFlow:
    105 107   // hidden flags for development use
    106 108   case ReportDetectors:
    107  - case ReportDataFlow:
     109 + case ReportSaaS:
    108 110   case ReportStats:
    109 111   default:
    110 112   return ReportOptions{}, ErrInvalidReport
    skipped 30 lines
  • ■ ■ ■ ■ ■ ■
    pkg/report/output/dataflow/datatypes/datatypes.go
    skipped 22 lines
    23 23   name string
    24 24   uuid string
    25 25   categoryUUID string
     26 + categoryName string
    26 27   detectors map[string]*detectorHolder // group detectors by detectorName
    27 28  }
    28 29   
    skipped 57 lines
    86 87   // create datatype entry if it doesn't exist
    87 88   if _, exists := holder.datatypes[classification.Name]; !exists {
    88 89   datatype := datatypeHolder{
    89  - name: classification.Name,
    90  - detectors: make(map[string]*detectorHolder),
     90 + name: classification.Name,
     91 + categoryName: classification.Category.Name,
     92 + detectors: make(map[string]*detectorHolder),
    91 93   }
    92 94   
    93 95   if holder.isInternal {
    skipped 67 lines
    161 163   Name: datatype.name,
    162 164   UUID: datatype.uuid,
    163 165   CategoryUUID: datatype.categoryUUID,
     166 + CategoryName: datatype.categoryName,
    164 167   }
    165 168   
    166 169   detectors := maputil.ToSortedSlice(datatype.detectors)
    skipped 32 lines
  • ■ ■ ■ ■ ■
    pkg/report/output/dataflow/types/datatypes.go
    skipped 6 lines
    7 7  type Datatype struct {
    8 8   UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
    9 9   CategoryUUID string `json:"category_uuid,omitempty" yaml:"category_uuid,omitempty"`
     10 + CategoryName string `json:"category_name,omitempty" yaml:"category_name,omitempty"`
    10 11   Name string `json:"name" yaml:"name"`
    11 12   Detectors []DatatypeDetector `json:"detectors" yaml:"detectors"`
    12 13  }
    skipped 25 lines
  • ■ ■ ■ ■ ■
    pkg/report/output/output.go
    skipped 59 lines
    60 60   return GetDataflow(report, config, false)
    61 61   case flag.ReportSecurity:
    62 62   return reportSecurity(report, config)
     63 + case flag.ReportSaaS:
     64 + securityResults, _, dataflow, err := reportSecurity(report, config)
     65 + if err != nil {
     66 + return nil, nil, nil, err
     67 + }
     68 + 
     69 + meta, _ := getMeta(config)
     70 + files := getDiscoveredFiles(config)
     71 + 
     72 + return BearerReport{
     73 + Findings: securityResults,
     74 + DataTypes: &dataflow.Datatypes,
     75 + Components: &dataflow.Components,
     76 + Files: files,
     77 + Meta: *meta,
     78 + }, nil, nil, nil
    63 79   case flag.ReportPrivacy:
    64 80   return getPrivacyReportOutput(report, config)
    65 81   case flag.ReportStats:
    skipped 1 lines
    67 83   }
    68 84   
    69 85   return nil, nil, nil, fmt.Errorf(`--report flag "%s" is not supported`, config.Report.Report)
     86 +}
     87 + 
     88 +func getDiscoveredFiles(config settings.Config) []string {
     89 + filesDiscovered, _ := filelist.Discover(config.Scan.Target, config)
     90 + files := []string{}
     91 + for _, fileDiscovered := range filesDiscovered {
     92 + files = append(files, dataflowoutput.GetFullFilename(config.Scan.Target, fileDiscovered.FilePath))
     93 + }
     94 + 
     95 + return files
    70 96  }
    71 97   
    72 98  func GetPrivacyReportCSVOutput(report types.Report, lineOfCodeOutput *gocloc.Result, dataflow *dataflow.DataFlow, config settings.Config) (*string, error) {
    skipped 137 lines
    210 236   return &tempDir, nil, err
    211 237   }
    212 238   
    213  - filesDiscovered, _ := filelist.Discover(config.Scan.Target, config)
    214  - files := []string{}
    215  - for _, fileDiscovered := range filesDiscovered {
    216  - files = append(files, dataflowoutput.GetFullFilename(config.Scan.Target, fileDiscovered.FilePath))
    217  - }
     239 + files := getDiscoveredFiles(config)
    218 240   
    219 241   content, _ := ReportJSON(&BearerReport{
    220 242   Findings: securityResults,
    skipped 16 lines
    237 259  }
    238 260   
    239 261  func getMeta(config settings.Config) (*Meta, error) {
     262 + sha, err := exec.Command("git", "rev-parse", "HEAD").Output()
     263 + if err != nil {
     264 + log.Error().Msgf("couldn't get git info %s", err)
     265 + return nil, err
     266 + }
     267 + 
     268 + currentBranch, err := exec.Command("git", "rev-parse", "--abbrev-ref", "HEAD").Output()
     269 + if err != nil {
     270 + log.Error().Msgf("couldn't get git info %s", err)
     271 + return nil, err
     272 + }
     273 + 
     274 + defaultBranch, err := exec.Command("git", "rev-parse", "--abbrev-ref", "origin/HEAD").Output()
     275 + if err != nil {
     276 + log.Error().Msgf("couldn't get git info %s", err)
     277 + return nil, err
     278 + }
     279 + 
    240 280   output, err := exec.Command("git", "remote", "get-url", "origin").Output()
    241 281   if err != nil {
    242 282   log.Error().Msgf("couldn't get git info %s", err)
    skipped 7 lines
    250 290   }
    251 291   
    252 292   return &Meta{
    253  - ID: info.ID,
    254  - Host: string(info.Host),
    255  - Username: info.Username,
    256  - Name: info.Name,
    257  - FullName: info.FullName,
    258  - URL: info.Raw,
    259  - Target: config.Scan.Target,
     293 + ID: info.ID,
     294 + Host: string(info.Host),
     295 + Username: info.Username,
     296 + Name: info.Name,
     297 + FullName: info.FullName,
     298 + URL: info.Raw,
     299 + Target: config.Scan.Target,
     300 + SHA: strings.TrimSuffix(string(sha), "\n"),
     301 + CurrentBranch: strings.TrimSuffix(string(currentBranch), "\n"),
     302 + DefaultBranch: strings.TrimPrefix(strings.TrimSuffix(string(defaultBranch), "\n"), "origin/"),
    260 303   }, nil
    261 304  }
    262 305   
    263 306  type Meta struct {
    264  - ID string `json:"id" yaml:"id"`
    265  - Host string `json:"host" yaml:"host"`
    266  - Username string `json:"username" yaml:"username"`
    267  - Name string `json:"name" yaml:"name"`
    268  - URL string `json:"url" yaml:"url"`
    269  - FullName string `json:"full_name" yaml:"full_name"`
    270  - Target string `json:"target" yaml:"target"`
    271  - SignedID string `json:"signed_id,omitempty" yaml:"signed_id,omitempty"`
     307 + ID string `json:"id" yaml:"id"`
     308 + Host string `json:"host" yaml:"host"`
     309 + Username string `json:"username" yaml:"username"`
     310 + Name string `json:"name" yaml:"name"`
     311 + URL string `json:"url" yaml:"url"`
     312 + FullName string `json:"full_name" yaml:"full_name"`
     313 + Target string `json:"target" yaml:"target"`
     314 + SHA string `json:"sha" yaml:"sha"`
     315 + CurrentBranch string `json:"current_branch" yaml:"current_branch"`
     316 + DefaultBranch string `json:"default_branch" yaml:"default_branch"`
     317 + SignedID string `json:"signed_id,omitempty" yaml:"signed_id,omitempty"`
    272 318  }
    273 319   
    274 320  type BearerReport struct {
    skipped 7 lines
Please wait...
Page is in error, reload to recover