regscale-cli 6.21.2.0__py3-none-any.whl → 6.28.2.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- regscale/_version.py +1 -1
- regscale/airflow/hierarchy.py +2 -2
- regscale/core/app/api.py +5 -2
- regscale/core/app/application.py +36 -6
- regscale/core/app/internal/control_editor.py +73 -21
- regscale/core/app/internal/evidence.py +727 -204
- regscale/core/app/internal/login.py +4 -2
- regscale/core/app/internal/model_editor.py +219 -64
- regscale/core/app/utils/app_utils.py +86 -12
- regscale/core/app/utils/catalog_utils/common.py +1 -1
- regscale/core/login.py +21 -4
- regscale/core/utils/async_graphql_client.py +363 -0
- regscale/core/utils/date.py +77 -1
- regscale/dev/cli.py +26 -0
- regscale/dev/code_gen.py +109 -24
- regscale/dev/version.py +72 -0
- regscale/integrations/commercial/__init__.py +30 -2
- regscale/integrations/commercial/aws/audit_manager_compliance.py +3908 -0
- regscale/integrations/commercial/aws/cli.py +3107 -54
- regscale/integrations/commercial/aws/cloudtrail_control_mappings.py +333 -0
- regscale/integrations/commercial/aws/cloudtrail_evidence.py +501 -0
- regscale/integrations/commercial/aws/cloudwatch_control_mappings.py +357 -0
- regscale/integrations/commercial/aws/cloudwatch_evidence.py +490 -0
- regscale/integrations/commercial/{amazon → aws}/common.py +71 -19
- regscale/integrations/commercial/aws/config_compliance.py +914 -0
- regscale/integrations/commercial/aws/conformance_pack_mappings.py +198 -0
- regscale/integrations/commercial/aws/control_compliance_analyzer.py +439 -0
- regscale/integrations/commercial/aws/evidence_generator.py +283 -0
- regscale/integrations/commercial/aws/guardduty_control_mappings.py +340 -0
- regscale/integrations/commercial/aws/guardduty_evidence.py +1053 -0
- regscale/integrations/commercial/aws/iam_control_mappings.py +368 -0
- regscale/integrations/commercial/aws/iam_evidence.py +574 -0
- regscale/integrations/commercial/aws/inventory/__init__.py +338 -22
- regscale/integrations/commercial/aws/inventory/base.py +107 -5
- regscale/integrations/commercial/aws/inventory/resources/analytics.py +390 -0
- regscale/integrations/commercial/aws/inventory/resources/applications.py +234 -0
- regscale/integrations/commercial/aws/inventory/resources/audit_manager.py +513 -0
- regscale/integrations/commercial/aws/inventory/resources/cloudtrail.py +315 -0
- regscale/integrations/commercial/aws/inventory/resources/cloudtrail_logs_metadata.py +476 -0
- regscale/integrations/commercial/aws/inventory/resources/cloudwatch.py +191 -0
- regscale/integrations/commercial/aws/inventory/resources/compute.py +328 -9
- regscale/integrations/commercial/aws/inventory/resources/config.py +464 -0
- regscale/integrations/commercial/aws/inventory/resources/containers.py +74 -9
- regscale/integrations/commercial/aws/inventory/resources/database.py +481 -31
- regscale/integrations/commercial/aws/inventory/resources/developer_tools.py +253 -0
- regscale/integrations/commercial/aws/inventory/resources/guardduty.py +286 -0
- regscale/integrations/commercial/aws/inventory/resources/iam.py +470 -0
- regscale/integrations/commercial/aws/inventory/resources/inspector.py +476 -0
- regscale/integrations/commercial/aws/inventory/resources/integration.py +175 -61
- regscale/integrations/commercial/aws/inventory/resources/kms.py +447 -0
- regscale/integrations/commercial/aws/inventory/resources/machine_learning.py +358 -0
- regscale/integrations/commercial/aws/inventory/resources/networking.py +390 -67
- regscale/integrations/commercial/aws/inventory/resources/s3.py +394 -0
- regscale/integrations/commercial/aws/inventory/resources/security.py +268 -72
- regscale/integrations/commercial/aws/inventory/resources/securityhub.py +473 -0
- regscale/integrations/commercial/aws/inventory/resources/storage.py +288 -29
- regscale/integrations/commercial/aws/inventory/resources/systems_manager.py +657 -0
- regscale/integrations/commercial/aws/inventory/resources/vpc.py +655 -0
- regscale/integrations/commercial/aws/kms_control_mappings.py +288 -0
- regscale/integrations/commercial/aws/kms_evidence.py +879 -0
- regscale/integrations/commercial/aws/ocsf/__init__.py +7 -0
- regscale/integrations/commercial/aws/ocsf/constants.py +115 -0
- regscale/integrations/commercial/aws/ocsf/mapper.py +435 -0
- regscale/integrations/commercial/aws/org_control_mappings.py +286 -0
- regscale/integrations/commercial/aws/org_evidence.py +666 -0
- regscale/integrations/commercial/aws/s3_control_mappings.py +356 -0
- regscale/integrations/commercial/aws/s3_evidence.py +632 -0
- regscale/integrations/commercial/aws/scanner.py +1072 -205
- regscale/integrations/commercial/aws/security_hub.py +319 -0
- regscale/integrations/commercial/aws/session_manager.py +282 -0
- regscale/integrations/commercial/aws/ssm_control_mappings.py +291 -0
- regscale/integrations/commercial/aws/ssm_evidence.py +492 -0
- regscale/integrations/commercial/jira.py +489 -153
- regscale/integrations/commercial/microsoft_defender/defender.py +326 -5
- regscale/integrations/commercial/microsoft_defender/defender_api.py +348 -14
- regscale/integrations/commercial/microsoft_defender/defender_constants.py +157 -0
- regscale/integrations/commercial/qualys/__init__.py +167 -68
- regscale/integrations/commercial/qualys/scanner.py +305 -39
- regscale/integrations/commercial/sarif/sairf_importer.py +432 -0
- regscale/integrations/commercial/sarif/sarif_converter.py +67 -0
- regscale/integrations/commercial/sicura/api.py +79 -42
- regscale/integrations/commercial/sicura/commands.py +8 -2
- regscale/integrations/commercial/sicura/scanner.py +83 -44
- regscale/integrations/commercial/stigv2/ckl_parser.py +5 -5
- regscale/integrations/commercial/synqly/assets.py +133 -16
- regscale/integrations/commercial/synqly/edr.py +2 -8
- regscale/integrations/commercial/synqly/query_builder.py +536 -0
- regscale/integrations/commercial/synqly/ticketing.py +27 -0
- regscale/integrations/commercial/synqly/vulnerabilities.py +165 -28
- regscale/integrations/commercial/tenablev2/cis_parsers.py +453 -0
- regscale/integrations/commercial/tenablev2/cis_scanner.py +447 -0
- regscale/integrations/commercial/tenablev2/commands.py +146 -5
- regscale/integrations/commercial/tenablev2/scanner.py +1 -3
- regscale/integrations/commercial/tenablev2/stig_parsers.py +113 -57
- regscale/integrations/commercial/wizv2/WizDataMixin.py +1 -1
- regscale/integrations/commercial/wizv2/click.py +191 -76
- regscale/integrations/commercial/wizv2/compliance/__init__.py +15 -0
- regscale/integrations/commercial/wizv2/{policy_compliance_helpers.py → compliance/helpers.py} +78 -60
- regscale/integrations/commercial/wizv2/compliance_report.py +1592 -0
- regscale/integrations/commercial/wizv2/core/__init__.py +133 -0
- regscale/integrations/commercial/wizv2/{async_client.py → core/client.py} +7 -3
- regscale/integrations/commercial/wizv2/{constants.py → core/constants.py} +92 -89
- regscale/integrations/commercial/wizv2/core/file_operations.py +237 -0
- regscale/integrations/commercial/wizv2/fetchers/__init__.py +11 -0
- regscale/integrations/commercial/wizv2/{data_fetcher.py → fetchers/policy_assessment.py} +66 -9
- regscale/integrations/commercial/wizv2/file_cleanup.py +104 -0
- regscale/integrations/commercial/wizv2/issue.py +776 -28
- regscale/integrations/commercial/wizv2/models/__init__.py +0 -0
- regscale/integrations/commercial/wizv2/parsers/__init__.py +34 -0
- regscale/integrations/commercial/wizv2/{parsers.py → parsers/main.py} +1 -1
- regscale/integrations/commercial/wizv2/processors/__init__.py +11 -0
- regscale/integrations/commercial/wizv2/{finding_processor.py → processors/finding.py} +1 -1
- regscale/integrations/commercial/wizv2/reports.py +243 -0
- regscale/integrations/commercial/wizv2/sbom.py +1 -1
- regscale/integrations/commercial/wizv2/scanner.py +1031 -441
- regscale/integrations/commercial/wizv2/utils/__init__.py +48 -0
- regscale/integrations/commercial/wizv2/{utils.py → utils/main.py} +116 -61
- regscale/integrations/commercial/wizv2/variables.py +89 -3
- regscale/integrations/compliance_integration.py +1036 -151
- regscale/integrations/control_matcher.py +432 -0
- regscale/integrations/due_date_handler.py +333 -0
- regscale/integrations/milestone_manager.py +291 -0
- regscale/integrations/public/__init__.py +14 -0
- regscale/integrations/public/cci_importer.py +834 -0
- regscale/integrations/public/csam/__init__.py +0 -0
- regscale/integrations/public/csam/csam.py +938 -0
- regscale/integrations/public/csam/csam_agency_defined.py +179 -0
- regscale/integrations/public/csam/csam_common.py +154 -0
- regscale/integrations/public/csam/csam_controls.py +432 -0
- regscale/integrations/public/csam/csam_poam.py +124 -0
- regscale/integrations/public/fedramp/click.py +77 -6
- regscale/integrations/public/fedramp/docx_parser.py +10 -1
- regscale/integrations/public/fedramp/fedramp_cis_crm.py +675 -289
- regscale/integrations/public/fedramp/fedramp_five.py +1 -1
- regscale/integrations/public/fedramp/poam/scanner.py +75 -7
- regscale/integrations/public/fedramp/poam_export_v5.py +888 -0
- regscale/integrations/scanner_integration.py +1961 -430
- regscale/models/integration_models/CCI_List.xml +1 -0
- regscale/models/integration_models/aqua.py +2 -2
- regscale/models/integration_models/cisa_kev_data.json +805 -11
- regscale/models/integration_models/flat_file_importer/__init__.py +5 -8
- regscale/models/integration_models/nexpose.py +36 -10
- regscale/models/integration_models/qualys.py +3 -4
- regscale/models/integration_models/synqly_models/capabilities.json +1 -1
- regscale/models/integration_models/synqly_models/connectors/vulnerabilities.py +87 -18
- regscale/models/integration_models/synqly_models/filter_parser.py +332 -0
- regscale/models/integration_models/synqly_models/ocsf_mapper.py +124 -25
- regscale/models/integration_models/synqly_models/synqly_model.py +89 -16
- regscale/models/locking.py +12 -8
- regscale/models/platform.py +4 -2
- regscale/models/regscale_models/__init__.py +7 -0
- regscale/models/regscale_models/assessment.py +2 -1
- regscale/models/regscale_models/catalog.py +1 -1
- regscale/models/regscale_models/compliance_settings.py +251 -1
- regscale/models/regscale_models/component.py +1 -0
- regscale/models/regscale_models/control_implementation.py +236 -41
- regscale/models/regscale_models/control_objective.py +74 -5
- regscale/models/regscale_models/file.py +2 -0
- regscale/models/regscale_models/form_field_value.py +5 -3
- regscale/models/regscale_models/inheritance.py +44 -0
- regscale/models/regscale_models/issue.py +301 -102
- regscale/models/regscale_models/milestone.py +33 -14
- regscale/models/regscale_models/organization.py +3 -0
- regscale/models/regscale_models/regscale_model.py +310 -73
- regscale/models/regscale_models/security_plan.py +4 -2
- regscale/models/regscale_models/vulnerability.py +3 -3
- regscale/regscale.py +25 -4
- regscale/templates/__init__.py +0 -0
- regscale/utils/threading/threadhandler.py +20 -15
- regscale/validation/record.py +23 -1
- {regscale_cli-6.21.2.0.dist-info → regscale_cli-6.28.2.1.dist-info}/METADATA +17 -33
- {regscale_cli-6.21.2.0.dist-info → regscale_cli-6.28.2.1.dist-info}/RECORD +310 -111
- tests/core/__init__.py +0 -0
- tests/core/utils/__init__.py +0 -0
- tests/core/utils/test_async_graphql_client.py +472 -0
- tests/fixtures/test_fixture.py +13 -8
- tests/regscale/core/test_login.py +171 -4
- tests/regscale/integrations/commercial/__init__.py +0 -0
- tests/regscale/integrations/commercial/aws/__init__.py +0 -0
- tests/regscale/integrations/commercial/aws/test_audit_manager_compliance.py +1304 -0
- tests/regscale/integrations/commercial/aws/test_audit_manager_evidence_aggregation.py +341 -0
- tests/regscale/integrations/commercial/aws/test_aws_analytics_collector.py +260 -0
- tests/regscale/integrations/commercial/aws/test_aws_applications_collector.py +242 -0
- tests/regscale/integrations/commercial/aws/test_aws_audit_manager_collector.py +1155 -0
- tests/regscale/integrations/commercial/aws/test_aws_cloudtrail_collector.py +534 -0
- tests/regscale/integrations/commercial/aws/test_aws_config_collector.py +400 -0
- tests/regscale/integrations/commercial/aws/test_aws_developer_tools_collector.py +203 -0
- tests/regscale/integrations/commercial/aws/test_aws_guardduty_collector.py +315 -0
- tests/regscale/integrations/commercial/aws/test_aws_iam_collector.py +458 -0
- tests/regscale/integrations/commercial/aws/test_aws_inspector_collector.py +353 -0
- tests/regscale/integrations/commercial/aws/test_aws_inventory_integration.py +530 -0
- tests/regscale/integrations/commercial/aws/test_aws_kms_collector.py +919 -0
- tests/regscale/integrations/commercial/aws/test_aws_machine_learning_collector.py +237 -0
- tests/regscale/integrations/commercial/aws/test_aws_s3_collector.py +722 -0
- tests/regscale/integrations/commercial/aws/test_aws_scanner_integration.py +722 -0
- tests/regscale/integrations/commercial/aws/test_aws_securityhub_collector.py +792 -0
- tests/regscale/integrations/commercial/aws/test_aws_systems_manager_collector.py +918 -0
- tests/regscale/integrations/commercial/aws/test_aws_vpc_collector.py +996 -0
- tests/regscale/integrations/commercial/aws/test_cli_evidence.py +431 -0
- tests/regscale/integrations/commercial/aws/test_cloudtrail_control_mappings.py +452 -0
- tests/regscale/integrations/commercial/aws/test_cloudtrail_evidence.py +788 -0
- tests/regscale/integrations/commercial/aws/test_config_compliance.py +298 -0
- tests/regscale/integrations/commercial/aws/test_conformance_pack_mappings.py +200 -0
- tests/regscale/integrations/commercial/aws/test_control_compliance_analyzer.py +375 -0
- tests/regscale/integrations/commercial/aws/test_datetime_parsing.py +223 -0
- tests/regscale/integrations/commercial/aws/test_evidence_generator.py +386 -0
- tests/regscale/integrations/commercial/aws/test_guardduty_control_mappings.py +564 -0
- tests/regscale/integrations/commercial/aws/test_guardduty_evidence.py +1041 -0
- tests/regscale/integrations/commercial/aws/test_iam_control_mappings.py +718 -0
- tests/regscale/integrations/commercial/aws/test_iam_evidence.py +1375 -0
- tests/regscale/integrations/commercial/aws/test_kms_control_mappings.py +656 -0
- tests/regscale/integrations/commercial/aws/test_kms_evidence.py +1163 -0
- tests/regscale/integrations/commercial/aws/test_ocsf_mapper.py +370 -0
- tests/regscale/integrations/commercial/aws/test_org_control_mappings.py +546 -0
- tests/regscale/integrations/commercial/aws/test_org_evidence.py +1240 -0
- tests/regscale/integrations/commercial/aws/test_s3_control_mappings.py +672 -0
- tests/regscale/integrations/commercial/aws/test_s3_evidence.py +987 -0
- tests/regscale/integrations/commercial/aws/test_scanner_evidence.py +373 -0
- tests/regscale/integrations/commercial/aws/test_security_hub_config_filtering.py +539 -0
- tests/regscale/integrations/commercial/aws/test_session_manager.py +516 -0
- tests/regscale/integrations/commercial/aws/test_ssm_control_mappings.py +588 -0
- tests/regscale/integrations/commercial/aws/test_ssm_evidence.py +735 -0
- tests/regscale/integrations/commercial/conftest.py +28 -0
- tests/regscale/integrations/commercial/microsoft_defender/__init__.py +1 -0
- tests/regscale/integrations/commercial/microsoft_defender/test_defender.py +1517 -0
- tests/regscale/integrations/commercial/microsoft_defender/test_defender_api.py +1748 -0
- tests/regscale/integrations/commercial/microsoft_defender/test_defender_constants.py +327 -0
- tests/regscale/integrations/commercial/microsoft_defender/test_defender_scanner.py +487 -0
- tests/regscale/integrations/commercial/test_aws.py +3742 -0
- tests/regscale/integrations/commercial/test_burp.py +48 -0
- tests/regscale/integrations/commercial/test_crowdstrike.py +49 -0
- tests/regscale/integrations/commercial/test_dependabot.py +341 -0
- tests/regscale/integrations/commercial/test_gcp.py +1543 -0
- tests/regscale/integrations/commercial/test_gitlab.py +549 -0
- tests/regscale/integrations/commercial/test_ip_mac_address_length.py +84 -0
- tests/regscale/integrations/commercial/test_jira.py +2204 -0
- tests/regscale/integrations/commercial/test_npm_audit.py +42 -0
- tests/regscale/integrations/commercial/test_okta.py +1228 -0
- tests/regscale/integrations/commercial/test_sarif_converter.py +251 -0
- tests/regscale/integrations/commercial/test_sicura.py +349 -0
- tests/regscale/integrations/commercial/test_snow.py +423 -0
- tests/regscale/integrations/commercial/test_sonarcloud.py +394 -0
- tests/regscale/integrations/commercial/test_sqlserver.py +186 -0
- tests/regscale/integrations/commercial/test_stig.py +33 -0
- tests/regscale/integrations/commercial/test_stig_mapper.py +153 -0
- tests/regscale/integrations/commercial/test_stigv2.py +406 -0
- tests/regscale/integrations/commercial/test_wiz.py +1365 -0
- tests/regscale/integrations/commercial/test_wiz_inventory.py +256 -0
- tests/regscale/integrations/commercial/wizv2/__init__.py +339 -0
- tests/regscale/integrations/commercial/wizv2/compliance/__init__.py +1 -0
- tests/regscale/integrations/commercial/wizv2/compliance/test_helpers.py +903 -0
- tests/regscale/integrations/commercial/wizv2/core/__init__.py +1 -0
- tests/regscale/integrations/commercial/wizv2/core/test_auth.py +701 -0
- tests/regscale/integrations/commercial/wizv2/core/test_client.py +1037 -0
- tests/regscale/integrations/commercial/wizv2/core/test_file_operations.py +989 -0
- tests/regscale/integrations/commercial/wizv2/fetchers/__init__.py +1 -0
- tests/regscale/integrations/commercial/wizv2/fetchers/test_policy_assessment.py +805 -0
- tests/regscale/integrations/commercial/wizv2/parsers/__init__.py +1 -0
- tests/regscale/integrations/commercial/wizv2/parsers/test_main.py +1153 -0
- tests/regscale/integrations/commercial/wizv2/processors/__init__.py +1 -0
- tests/regscale/integrations/commercial/wizv2/processors/test_finding.py +671 -0
- tests/regscale/integrations/commercial/wizv2/test_WizDataMixin.py +537 -0
- tests/regscale/integrations/commercial/wizv2/test_click_comprehensive.py +851 -0
- tests/regscale/integrations/commercial/wizv2/test_compliance_report_comprehensive.py +910 -0
- tests/regscale/integrations/commercial/wizv2/test_compliance_report_normalization.py +138 -0
- tests/regscale/integrations/commercial/wizv2/test_file_cleanup.py +283 -0
- tests/regscale/integrations/commercial/wizv2/test_file_operations.py +260 -0
- tests/regscale/integrations/commercial/wizv2/test_issue.py +343 -0
- tests/regscale/integrations/commercial/wizv2/test_issue_comprehensive.py +1203 -0
- tests/regscale/integrations/commercial/wizv2/test_reports.py +497 -0
- tests/regscale/integrations/commercial/wizv2/test_sbom.py +643 -0
- tests/regscale/integrations/commercial/wizv2/test_scanner_comprehensive.py +805 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_click_client_id.py +165 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_compliance_report.py +1394 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_compliance_unit.py +341 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_control_normalization.py +138 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_findings_comprehensive.py +364 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_inventory_comprehensive.py +644 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_status_mapping.py +149 -0
- tests/regscale/integrations/commercial/wizv2/test_wizv2.py +1218 -0
- tests/regscale/integrations/commercial/wizv2/test_wizv2_utils.py +519 -0
- tests/regscale/integrations/commercial/wizv2/utils/__init__.py +1 -0
- tests/regscale/integrations/commercial/wizv2/utils/test_main.py +1523 -0
- tests/regscale/integrations/public/__init__.py +0 -0
- tests/regscale/integrations/public/fedramp/__init__.py +1 -0
- tests/regscale/integrations/public/fedramp/test_gen_asset_list.py +150 -0
- tests/regscale/integrations/public/fedramp/test_poam_export_v5.py +1293 -0
- tests/regscale/integrations/public/test_alienvault.py +220 -0
- tests/regscale/integrations/public/test_cci.py +1053 -0
- tests/regscale/integrations/public/test_cisa.py +1021 -0
- tests/regscale/integrations/public/test_emass.py +518 -0
- tests/regscale/integrations/public/test_fedramp.py +1152 -0
- tests/regscale/integrations/public/test_fedramp_cis_crm.py +3661 -0
- tests/regscale/integrations/public/test_file_uploads.py +506 -0
- tests/regscale/integrations/public/test_oscal.py +453 -0
- tests/regscale/integrations/test_compliance_status_mapping.py +406 -0
- tests/regscale/integrations/test_control_matcher.py +1421 -0
- tests/regscale/integrations/test_control_matching.py +155 -0
- tests/regscale/integrations/test_milestone_manager.py +408 -0
- tests/regscale/models/test_control_implementation.py +118 -3
- tests/regscale/models/test_form_field_value_integration.py +304 -0
- tests/regscale/models/test_issue.py +378 -1
- tests/regscale/models/test_module_integration.py +582 -0
- tests/regscale/models/test_tenable_integrations.py +811 -105
- regscale/integrations/commercial/wizv2/policy_compliance.py +0 -3057
- regscale/integrations/public/fedramp/mappings/fedramp_r4_parts.json +0 -7388
- regscale/integrations/public/fedramp/mappings/fedramp_r5_parts.json +0 -9605
- regscale/integrations/public/fedramp/parts_mapper.py +0 -107
- /regscale/integrations/commercial/{amazon → sarif}/__init__.py +0 -0
- /regscale/integrations/commercial/wizv2/{wiz_auth.py → core/auth.py} +0 -0
- {regscale_cli-6.21.2.0.dist-info → regscale_cli-6.28.2.1.dist-info}/LICENSE +0 -0
- {regscale_cli-6.21.2.0.dist-info → regscale_cli-6.28.2.1.dist-info}/WHEEL +0 -0
- {regscale_cli-6.21.2.0.dist-info → regscale_cli-6.28.2.1.dist-info}/entry_points.txt +0 -0
- {regscale_cli-6.21.2.0.dist-info → regscale_cli-6.28.2.1.dist-info}/top_level.txt +0 -0
|
@@ -14,11 +14,39 @@ def vulnerabilities() -> None:
|
|
|
14
14
|
pass
|
|
15
15
|
|
|
16
16
|
|
|
17
|
+
@vulnerabilities.command(name="build-query")
|
|
18
|
+
@click.option(
|
|
19
|
+
"--provider",
|
|
20
|
+
required=False,
|
|
21
|
+
help="Provider ID (e.g., vulnerabilities_armis_centrix). If not specified, starts interactive mode.",
|
|
22
|
+
)
|
|
23
|
+
@click.option("--validate", help="Validate a filter string against provider capabilities")
|
|
24
|
+
@click.option("--list-fields", is_flag=True, default=False, help="List all available fields for the provider")
|
|
25
|
+
def build_query(provider, validate, list_fields):
|
|
26
|
+
"""
|
|
27
|
+
Build and validate filter queries for Vulnerabilities connectors.
|
|
28
|
+
|
|
29
|
+
Examples:
|
|
30
|
+
# Build a filter query
|
|
31
|
+
regscale vulnerabilities build-query
|
|
32
|
+
|
|
33
|
+
# List all fields for a specific provider
|
|
34
|
+
regscale vulnerabilities build-query --provider vulnerabilities_armis_centrix --list-fields
|
|
35
|
+
|
|
36
|
+
# Validate a filter string
|
|
37
|
+
regscale vulnerabilities build-query --provider vulnerabilities_armis_centrix --validate "device.ip[eq]192.168.1.1"
|
|
38
|
+
"""
|
|
39
|
+
from regscale.integrations.commercial.synqly.query_builder import handle_build_query
|
|
40
|
+
|
|
41
|
+
handle_build_query("vulnerabilities", provider, validate, list_fields)
|
|
42
|
+
|
|
43
|
+
|
|
17
44
|
@vulnerabilities.command(name="sync_crowdstrike")
|
|
18
45
|
@regscale_ssp_id()
|
|
19
46
|
@click.option(
|
|
20
|
-
"--
|
|
21
|
-
|
|
47
|
+
"--minimum_severity_filter",
|
|
48
|
+
"-s",
|
|
49
|
+
help="Minimum severity of the vulnerabilities to sync. (Options: critical, high, medium, low, info), e.g. providing high will sync all vulnerabilities with a severity of high and critical.",
|
|
22
50
|
required=False,
|
|
23
51
|
type=click.Choice(["critical", "high", "medium", "low", "info"]),
|
|
24
52
|
default=None,
|
|
@@ -37,27 +65,47 @@ def vulnerabilities() -> None:
|
|
|
37
65
|
is_flag=True,
|
|
38
66
|
default=False,
|
|
39
67
|
)
|
|
68
|
+
@click.option(
|
|
69
|
+
"--asset_filter",
|
|
70
|
+
help='STRING: Apply filters to asset queries. Can be a single filter "field[operator]value" or semicolon-separated filters "field1[op]value1;field2[op]value2"',
|
|
71
|
+
required=False,
|
|
72
|
+
type=str,
|
|
73
|
+
default=None,
|
|
74
|
+
)
|
|
40
75
|
@click.option(
|
|
41
76
|
"--url",
|
|
42
77
|
type=click.STRING,
|
|
43
78
|
help="Base URL for the CrowdStrike Falcon® Spotlight API.",
|
|
44
79
|
required=False,
|
|
45
80
|
)
|
|
46
|
-
def sync_crowdstrike(
|
|
81
|
+
def sync_crowdstrike(
|
|
82
|
+
regscale_ssp_id: int,
|
|
83
|
+
minimum_severity_filter: str,
|
|
84
|
+
scan_date: datetime,
|
|
85
|
+
all_scans: bool,
|
|
86
|
+
asset_filter: str,
|
|
87
|
+
url: str,
|
|
88
|
+
) -> None:
|
|
47
89
|
"""Sync Vulnerabilities from Crowdstrike to RegScale."""
|
|
48
90
|
from regscale.models.integration_models.synqly_models.connectors import Vulnerabilities
|
|
49
91
|
|
|
50
92
|
vulnerabilities_crowdstrike = Vulnerabilities("crowdstrike")
|
|
51
93
|
vulnerabilities_crowdstrike.run_sync(
|
|
52
|
-
regscale_ssp_id=regscale_ssp_id,
|
|
94
|
+
regscale_ssp_id=regscale_ssp_id,
|
|
95
|
+
minimum_severity_filter=minimum_severity_filter,
|
|
96
|
+
scan_date=scan_date,
|
|
97
|
+
all_scans=all_scans,
|
|
98
|
+
filter=asset_filter.split(";") if asset_filter else [],
|
|
99
|
+
url=url,
|
|
53
100
|
)
|
|
54
101
|
|
|
55
102
|
|
|
56
103
|
@vulnerabilities.command(name="sync_nucleus")
|
|
57
104
|
@regscale_ssp_id()
|
|
58
105
|
@click.option(
|
|
59
|
-
"--
|
|
60
|
-
|
|
106
|
+
"--minimum_severity_filter",
|
|
107
|
+
"-s",
|
|
108
|
+
help="Minimum severity of the vulnerabilities to sync. (Options: critical, high, medium, low, info), e.g. providing high will sync all vulnerabilities with a severity of high and critical.",
|
|
61
109
|
required=False,
|
|
62
110
|
type=click.Choice(["critical", "high", "medium", "low", "info"]),
|
|
63
111
|
default=None,
|
|
@@ -72,21 +120,35 @@ def sync_crowdstrike(regscale_ssp_id: int, vuln_filter: str, scan_date: datetime
|
|
|
72
120
|
@click.option(
|
|
73
121
|
"--all_scans", help="Whether to sync all vulnerabilities from Nucleus", required=False, is_flag=True, default=False
|
|
74
122
|
)
|
|
75
|
-
|
|
123
|
+
@click.option(
|
|
124
|
+
"--asset_filter",
|
|
125
|
+
help='STRING: Apply filters to asset queries. Can be a single filter "field[operator]value" or semicolon-separated filters "field1[op]value1;field2[op]value2"',
|
|
126
|
+
required=False,
|
|
127
|
+
type=str,
|
|
128
|
+
default=None,
|
|
129
|
+
)
|
|
130
|
+
def sync_nucleus(
|
|
131
|
+
regscale_ssp_id: int, minimum_severity_filter: str, scan_date: datetime, all_scans: bool, asset_filter: str
|
|
132
|
+
) -> None:
|
|
76
133
|
"""Sync Vulnerabilities from Nucleus to RegScale."""
|
|
77
134
|
from regscale.models.integration_models.synqly_models.connectors import Vulnerabilities
|
|
78
135
|
|
|
79
136
|
vulnerabilities_nucleus = Vulnerabilities("nucleus")
|
|
80
137
|
vulnerabilities_nucleus.run_sync(
|
|
81
|
-
regscale_ssp_id=regscale_ssp_id,
|
|
138
|
+
regscale_ssp_id=regscale_ssp_id,
|
|
139
|
+
minimum_severity_filter=minimum_severity_filter,
|
|
140
|
+
scan_date=scan_date,
|
|
141
|
+
all_scans=all_scans,
|
|
142
|
+
filter=asset_filter.split(";") if asset_filter else [],
|
|
82
143
|
)
|
|
83
144
|
|
|
84
145
|
|
|
85
146
|
@vulnerabilities.command(name="sync_qualys_cloud")
|
|
86
147
|
@regscale_ssp_id()
|
|
87
148
|
@click.option(
|
|
88
|
-
"--
|
|
89
|
-
|
|
149
|
+
"--minimum_severity_filter",
|
|
150
|
+
"-s",
|
|
151
|
+
help="Minimum severity of the vulnerabilities to sync. (Options: critical, high, medium, low, info), e.g. providing high will sync all vulnerabilities with a severity of high and critical.",
|
|
90
152
|
required=False,
|
|
91
153
|
type=click.Choice(["critical", "high", "medium", "low", "info"]),
|
|
92
154
|
default=None,
|
|
@@ -105,21 +167,35 @@ def sync_nucleus(regscale_ssp_id: int, vuln_filter: str, scan_date: datetime, al
|
|
|
105
167
|
is_flag=True,
|
|
106
168
|
default=False,
|
|
107
169
|
)
|
|
108
|
-
|
|
170
|
+
@click.option(
|
|
171
|
+
"--asset_filter",
|
|
172
|
+
help='STRING: Apply filters to asset queries. Can be a single filter "field[operator]value" or semicolon-separated filters "field1[op]value1;field2[op]value2"',
|
|
173
|
+
required=False,
|
|
174
|
+
type=str,
|
|
175
|
+
default=None,
|
|
176
|
+
)
|
|
177
|
+
def sync_qualys_cloud(
|
|
178
|
+
regscale_ssp_id: int, minimum_severity_filter: str, scan_date: datetime, all_scans: bool, asset_filter: str
|
|
179
|
+
) -> None:
|
|
109
180
|
"""Sync Vulnerabilities from Qualys Cloud to RegScale."""
|
|
110
181
|
from regscale.models.integration_models.synqly_models.connectors import Vulnerabilities
|
|
111
182
|
|
|
112
183
|
vulnerabilities_qualys_cloud = Vulnerabilities("qualys_cloud")
|
|
113
184
|
vulnerabilities_qualys_cloud.run_sync(
|
|
114
|
-
regscale_ssp_id=regscale_ssp_id,
|
|
185
|
+
regscale_ssp_id=regscale_ssp_id,
|
|
186
|
+
minimum_severity_filter=minimum_severity_filter,
|
|
187
|
+
scan_date=scan_date,
|
|
188
|
+
all_scans=all_scans,
|
|
189
|
+
filter=asset_filter.split(";") if asset_filter else [],
|
|
115
190
|
)
|
|
116
191
|
|
|
117
192
|
|
|
118
193
|
@vulnerabilities.command(name="sync_rapid7_insight_cloud")
|
|
119
194
|
@regscale_ssp_id()
|
|
120
195
|
@click.option(
|
|
121
|
-
"--
|
|
122
|
-
|
|
196
|
+
"--minimum_severity_filter",
|
|
197
|
+
"-s",
|
|
198
|
+
help="Minimum severity of the vulnerabilities to sync. (Options: critical, high, medium, low, info), e.g. providing high will sync all vulnerabilities with a severity of high and critical.",
|
|
123
199
|
required=False,
|
|
124
200
|
type=click.Choice(["critical", "high", "medium", "low", "info"]),
|
|
125
201
|
default=None,
|
|
@@ -138,21 +214,35 @@ def sync_qualys_cloud(regscale_ssp_id: int, vuln_filter: str, scan_date: datetim
|
|
|
138
214
|
is_flag=True,
|
|
139
215
|
default=False,
|
|
140
216
|
)
|
|
141
|
-
|
|
217
|
+
@click.option(
|
|
218
|
+
"--asset_filter",
|
|
219
|
+
help='STRING: Apply filters to asset queries. Can be a single filter "field[operator]value" or semicolon-separated filters "field1[op]value1;field2[op]value2"',
|
|
220
|
+
required=False,
|
|
221
|
+
type=str,
|
|
222
|
+
default=None,
|
|
223
|
+
)
|
|
224
|
+
def sync_rapid7_insight_cloud(
|
|
225
|
+
regscale_ssp_id: int, minimum_severity_filter: str, scan_date: datetime, all_scans: bool, asset_filter: str
|
|
226
|
+
) -> None:
|
|
142
227
|
"""Sync Vulnerabilities from Rapid7 Insight Cloud to RegScale."""
|
|
143
228
|
from regscale.models.integration_models.synqly_models.connectors import Vulnerabilities
|
|
144
229
|
|
|
145
230
|
vulnerabilities_rapid7_insight_cloud = Vulnerabilities("rapid7_insight_cloud")
|
|
146
231
|
vulnerabilities_rapid7_insight_cloud.run_sync(
|
|
147
|
-
regscale_ssp_id=regscale_ssp_id,
|
|
232
|
+
regscale_ssp_id=regscale_ssp_id,
|
|
233
|
+
minimum_severity_filter=minimum_severity_filter,
|
|
234
|
+
scan_date=scan_date,
|
|
235
|
+
all_scans=all_scans,
|
|
236
|
+
filter=asset_filter.split(";") if asset_filter else [],
|
|
148
237
|
)
|
|
149
238
|
|
|
150
239
|
|
|
151
240
|
@vulnerabilities.command(name="sync_servicenow_vr")
|
|
152
241
|
@regscale_ssp_id()
|
|
153
242
|
@click.option(
|
|
154
|
-
"--
|
|
155
|
-
|
|
243
|
+
"--minimum_severity_filter",
|
|
244
|
+
"-s",
|
|
245
|
+
help="Minimum severity of the vulnerabilities to sync. (Options: critical, high, medium, low, info), e.g. providing high will sync all vulnerabilities with a severity of high and critical.",
|
|
156
246
|
required=False,
|
|
157
247
|
type=click.Choice(["critical", "high", "medium", "low", "info"]),
|
|
158
248
|
default=None,
|
|
@@ -171,21 +261,35 @@ def sync_rapid7_insight_cloud(regscale_ssp_id: int, vuln_filter: str, scan_date:
|
|
|
171
261
|
is_flag=True,
|
|
172
262
|
default=False,
|
|
173
263
|
)
|
|
174
|
-
|
|
264
|
+
@click.option(
|
|
265
|
+
"--asset_filter",
|
|
266
|
+
help='STRING: Apply filters to asset queries. Can be a single filter "field[operator]value" or semicolon-separated filters "field1[op]value1;field2[op]value2"',
|
|
267
|
+
required=False,
|
|
268
|
+
type=str,
|
|
269
|
+
default=None,
|
|
270
|
+
)
|
|
271
|
+
def sync_servicenow_vr(
|
|
272
|
+
regscale_ssp_id: int, minimum_severity_filter: str, scan_date: datetime, all_scans: bool, asset_filter: str
|
|
273
|
+
) -> None:
|
|
175
274
|
"""Sync Vulnerabilities from Servicenow Vr to RegScale."""
|
|
176
275
|
from regscale.models.integration_models.synqly_models.connectors import Vulnerabilities
|
|
177
276
|
|
|
178
277
|
vulnerabilities_servicenow_vr = Vulnerabilities("servicenow_vr")
|
|
179
278
|
vulnerabilities_servicenow_vr.run_sync(
|
|
180
|
-
regscale_ssp_id=regscale_ssp_id,
|
|
279
|
+
regscale_ssp_id=regscale_ssp_id,
|
|
280
|
+
minimum_severity_filter=minimum_severity_filter,
|
|
281
|
+
scan_date=scan_date,
|
|
282
|
+
all_scans=all_scans,
|
|
283
|
+
filter=asset_filter.split(";") if asset_filter else [],
|
|
181
284
|
)
|
|
182
285
|
|
|
183
286
|
|
|
184
287
|
@vulnerabilities.command(name="sync_tanium_cloud")
|
|
185
288
|
@regscale_ssp_id()
|
|
186
289
|
@click.option(
|
|
187
|
-
"--
|
|
188
|
-
|
|
290
|
+
"--minimum_severity_filter",
|
|
291
|
+
"-s",
|
|
292
|
+
help="Minimum severity of the vulnerabilities to sync. (Options: critical, high, medium, low, info), e.g. providing high will sync all vulnerabilities with a severity of high and critical.",
|
|
189
293
|
required=False,
|
|
190
294
|
type=click.Choice(["critical", "high", "medium", "low", "info"]),
|
|
191
295
|
default=None,
|
|
@@ -204,21 +308,35 @@ def sync_servicenow_vr(regscale_ssp_id: int, vuln_filter: str, scan_date: dateti
|
|
|
204
308
|
is_flag=True,
|
|
205
309
|
default=False,
|
|
206
310
|
)
|
|
207
|
-
|
|
311
|
+
@click.option(
|
|
312
|
+
"--asset_filter",
|
|
313
|
+
help='STRING: Apply filters to asset queries. Can be a single filter "field[operator]value" or semicolon-separated filters "field1[op]value1;field2[op]value2"',
|
|
314
|
+
required=False,
|
|
315
|
+
type=str,
|
|
316
|
+
default=None,
|
|
317
|
+
)
|
|
318
|
+
def sync_tanium_cloud(
|
|
319
|
+
regscale_ssp_id: int, minimum_severity_filter: str, scan_date: datetime, all_scans: bool, asset_filter: str
|
|
320
|
+
) -> None:
|
|
208
321
|
"""Sync Vulnerabilities from Tanium Cloud to RegScale."""
|
|
209
322
|
from regscale.models.integration_models.synqly_models.connectors import Vulnerabilities
|
|
210
323
|
|
|
211
324
|
vulnerabilities_tanium_cloud = Vulnerabilities("tanium_cloud")
|
|
212
325
|
vulnerabilities_tanium_cloud.run_sync(
|
|
213
|
-
regscale_ssp_id=regscale_ssp_id,
|
|
326
|
+
regscale_ssp_id=regscale_ssp_id,
|
|
327
|
+
minimum_severity_filter=minimum_severity_filter,
|
|
328
|
+
scan_date=scan_date,
|
|
329
|
+
all_scans=all_scans,
|
|
330
|
+
filter=asset_filter.split(";") if asset_filter else [],
|
|
214
331
|
)
|
|
215
332
|
|
|
216
333
|
|
|
217
334
|
@vulnerabilities.command(name="sync_tenable_cloud")
|
|
218
335
|
@regscale_ssp_id()
|
|
219
336
|
@click.option(
|
|
220
|
-
"--
|
|
221
|
-
|
|
337
|
+
"--minimum_severity_filter",
|
|
338
|
+
"-s",
|
|
339
|
+
help="Minimum severity of the vulnerabilities to sync. (Options: critical, high, medium, low, info), e.g. providing high will sync all vulnerabilities with a severity of high and critical.",
|
|
222
340
|
required=False,
|
|
223
341
|
type=click.Choice(["critical", "high", "medium", "low", "info"]),
|
|
224
342
|
default=None,
|
|
@@ -237,19 +355,38 @@ def sync_tanium_cloud(regscale_ssp_id: int, vuln_filter: str, scan_date: datetim
|
|
|
237
355
|
is_flag=True,
|
|
238
356
|
default=False,
|
|
239
357
|
)
|
|
358
|
+
@click.option(
|
|
359
|
+
"--asset_filter",
|
|
360
|
+
help='STRING: Apply filters to asset queries. Can be a single filter "field[operator]value" or semicolon-separated filters "field1[op]value1;field2[op]value2"',
|
|
361
|
+
required=False,
|
|
362
|
+
type=str,
|
|
363
|
+
default=None,
|
|
364
|
+
)
|
|
240
365
|
@click.option(
|
|
241
366
|
"--url",
|
|
242
367
|
type=click.STRING,
|
|
243
368
|
help="Base URL for the Tenable Cloud API.",
|
|
244
369
|
required=False,
|
|
245
370
|
)
|
|
246
|
-
def sync_tenable_cloud(
|
|
371
|
+
def sync_tenable_cloud(
|
|
372
|
+
regscale_ssp_id: int,
|
|
373
|
+
minimum_severity_filter: str,
|
|
374
|
+
scan_date: datetime,
|
|
375
|
+
all_scans: bool,
|
|
376
|
+
asset_filter: str,
|
|
377
|
+
url: str,
|
|
378
|
+
) -> None:
|
|
247
379
|
"""Sync Vulnerabilities from Tenable Cloud to RegScale."""
|
|
248
380
|
from regscale.models.integration_models.synqly_models.connectors import Vulnerabilities
|
|
249
381
|
|
|
250
382
|
vulnerabilities_tenable_cloud = Vulnerabilities("tenable_cloud")
|
|
251
383
|
vulnerabilities_tenable_cloud.run_sync(
|
|
252
|
-
regscale_ssp_id=regscale_ssp_id,
|
|
384
|
+
regscale_ssp_id=regscale_ssp_id,
|
|
385
|
+
minimum_severity_filter=minimum_severity_filter,
|
|
386
|
+
scan_date=scan_date,
|
|
387
|
+
all_scans=all_scans,
|
|
388
|
+
filter=asset_filter.split(";") if asset_filter else [],
|
|
389
|
+
url=url,
|
|
253
390
|
)
|
|
254
391
|
|
|
255
392
|
|