$ curl 'https://sechub.example.com/api/anonymous/check/alive' -i -X GET
+$ curl 'https://sechub.example.com/api/anonymous/check/alive' -i -X HEAD
diff --git a/docs/latest/images/diagram_encryption_pds.svg b/docs/latest/images/diagram_encryption_pds.svg new file mode 100644 index 0000000000..8d9f21c209 --- /dev/null +++ b/docs/latest/images/diagram_encryption_pds.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/latest/images/diagram_encryption_sechub_config.png b/docs/latest/images/diagram_encryption_sechub_config.png new file mode 100644 index 0000000000..ee267b7ebd Binary files /dev/null and b/docs/latest/images/diagram_encryption_sechub_config.png differ diff --git a/docs/latest/images/diagram_encryption_sechub_use_of_commons.png b/docs/latest/images/diagram_encryption_sechub_use_of_commons.png new file mode 100644 index 0000000000..1781ee588a Binary files /dev/null and b/docs/latest/images/diagram_encryption_sechub_use_of_commons.png differ diff --git a/docs/latest/images/diagram_pds_events_storage.svg b/docs/latest/images/diagram_pds_events_storage.svg index f60aa33e0f..335f19d0ff 100644 --- a/docs/latest/images/diagram_pds_events_storage.svg +++ b/docs/latest/images/diagram_pds_events_storage.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/diagram_sechub_job_cancellation.svg b/docs/latest/images/diagram_sechub_job_cancellation.svg index 02671e84c8..c4053637ef 100644 --- a/docs/latest/images/diagram_sechub_job_cancellation.svg +++ b/docs/latest/images/diagram_sechub_job_cancellation.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/diagram_target_architecture.svg b/docs/latest/images/diagram_target_architecture.svg index 5ce19c0f7d..107f3308c1 100644 --- a/docs/latest/images/diagram_target_architecture.svg +++ b/docs/latest/images/diagram_target_architecture.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/eclipse-java-formatter-activate.png b/docs/latest/images/eclipse-java-formatter-activate.png new file mode 100644 index 0000000000..0cd3f69c4e Binary files /dev/null and b/docs/latest/images/eclipse-java-formatter-activate.png differ diff --git a/docs/latest/images/eclipse-java-formatter-import.png b/docs/latest/images/eclipse-java-formatter-import.png new file mode 100644 index 0000000000..cf216a12d3 Binary files /dev/null and b/docs/latest/images/eclipse-java-formatter-import.png differ diff --git a/docs/latest/images/event_overview_uc_admin_enables_scheduler_job_processing.svg b/docs/latest/images/event_overview_uc_admin_enables_scheduler_job_processing.svg index 104018dda4..eae359746b 100644 --- a/docs/latest/images/event_overview_uc_admin_enables_scheduler_job_processing.svg +++ b/docs/latest/images/event_overview_uc_admin_enables_scheduler_job_processing.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/event_overview_uc_admin_updates_auto_cleanup_configuration.svg b/docs/latest/images/event_overview_uc_admin_updates_auto_cleanup_configuration.svg index 2bc500512c..f1bbea3fc0 100644 --- a/docs/latest/images/event_overview_uc_admin_updates_auto_cleanup_configuration.svg +++ b/docs/latest/images/event_overview_uc_admin_updates_auto_cleanup_configuration.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_analyze_scan_results_available.svg b/docs/latest/images/gen_domain_messaging_analyze_scan_results_available.svg index 69c0f2f816..dda30fb34e 100644 --- a/docs/latest/images/gen_domain_messaging_analyze_scan_results_available.svg +++ b/docs/latest/images/gen_domain_messaging_analyze_scan_results_available.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_auto_cleanup_configuration_changed.svg b/docs/latest/images/gen_domain_messaging_auto_cleanup_configuration_changed.svg index 8b3a03128c..d7347551f8 100644 --- a/docs/latest/images/gen_domain_messaging_auto_cleanup_configuration_changed.svg +++ b/docs/latest/images/gen_domain_messaging_auto_cleanup_configuration_changed.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_binary_upload_done.svg b/docs/latest/images/gen_domain_messaging_binary_upload_done.svg index 9c1b12d5f9..e78e62ff66 100644 --- a/docs/latest/images/gen_domain_messaging_binary_upload_done.svg +++ b/docs/latest/images/gen_domain_messaging_binary_upload_done.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_get_encryption_status_schedule_domain.svg b/docs/latest/images/gen_domain_messaging_get_encryption_status_schedule_domain.svg new file mode 100644 index 0000000000..7e66b74efd --- /dev/null +++ b/docs/latest/images/gen_domain_messaging_get_encryption_status_schedule_domain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_cancellation_running.svg b/docs/latest/images/gen_domain_messaging_job_cancellation_running.svg index 757e8c6fcd..fc34b9ed83 100644 --- a/docs/latest/images/gen_domain_messaging_job_cancellation_running.svg +++ b/docs/latest/images/gen_domain_messaging_job_cancellation_running.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_created.svg b/docs/latest/images/gen_domain_messaging_job_created.svg index 2d72d85371..66f8b00e84 100644 --- a/docs/latest/images/gen_domain_messaging_job_created.svg +++ b/docs/latest/images/gen_domain_messaging_job_created.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_done.svg b/docs/latest/images/gen_domain_messaging_job_done.svg index 84dcb8a3a3..27bba06a8b 100644 --- a/docs/latest/images/gen_domain_messaging_job_done.svg +++ b/docs/latest/images/gen_domain_messaging_job_done.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_execution_starting.svg b/docs/latest/images/gen_domain_messaging_job_execution_starting.svg index b4a9da9b6f..ece98e84ad 100644 --- a/docs/latest/images/gen_domain_messaging_job_execution_starting.svg +++ b/docs/latest/images/gen_domain_messaging_job_execution_starting.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_failed.svg b/docs/latest/images/gen_domain_messaging_job_failed.svg index 88a6f7f8c7..1b6c6e074e 100644 --- a/docs/latest/images/gen_domain_messaging_job_failed.svg +++ b/docs/latest/images/gen_domain_messaging_job_failed.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_restart_canceled.svg b/docs/latest/images/gen_domain_messaging_job_restart_canceled.svg index 7294b320e8..f872cc8855 100644 --- a/docs/latest/images/gen_domain_messaging_job_restart_canceled.svg +++ b/docs/latest/images/gen_domain_messaging_job_restart_canceled.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_restart_triggered.svg b/docs/latest/images/gen_domain_messaging_job_restart_triggered.svg index 9b04162f22..12c8b74c3f 100644 --- a/docs/latest/images/gen_domain_messaging_job_restart_triggered.svg +++ b/docs/latest/images/gen_domain_messaging_job_restart_triggered.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_started.svg b/docs/latest/images/gen_domain_messaging_job_started.svg index 13eaf0eb48..15c0657843 100644 --- a/docs/latest/images/gen_domain_messaging_job_started.svg +++ b/docs/latest/images/gen_domain_messaging_job_started.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_mapping_configuration_changed.svg b/docs/latest/images/gen_domain_messaging_mapping_configuration_changed.svg index d85fec5b91..576bffb675 100644 --- a/docs/latest/images/gen_domain_messaging_mapping_configuration_changed.svg +++ b/docs/latest/images/gen_domain_messaging_mapping_configuration_changed.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_overview.svg b/docs/latest/images/gen_domain_messaging_overview.svg index d18dd1bd77..121c718e1c 100644 --- a/docs/latest/images/gen_domain_messaging_overview.svg +++ b/docs/latest/images/gen_domain_messaging_overview.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_product_executor_cancel_operations_done.svg b/docs/latest/images/gen_domain_messaging_product_executor_cancel_operations_done.svg index 8847b44c80..8b50069c6a 100644 --- a/docs/latest/images/gen_domain_messaging_product_executor_cancel_operations_done.svg +++ b/docs/latest/images/gen_domain_messaging_product_executor_cancel_operations_done.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_project_access_level_changed.svg b/docs/latest/images/gen_domain_messaging_project_access_level_changed.svg index 5dbf9919d5..94f552ec86 100644 --- a/docs/latest/images/gen_domain_messaging_project_access_level_changed.svg +++ b/docs/latest/images/gen_domain_messaging_project_access_level_changed.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_project_created.svg b/docs/latest/images/gen_domain_messaging_project_created.svg index 715f2e7406..a778f0a378 100644 --- a/docs/latest/images/gen_domain_messaging_project_created.svg +++ b/docs/latest/images/gen_domain_messaging_project_created.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_project_deleted.svg b/docs/latest/images/gen_domain_messaging_project_deleted.svg index db3c5cc336..46a7d43fdb 100644 --- a/docs/latest/images/gen_domain_messaging_project_deleted.svg +++ b/docs/latest/images/gen_domain_messaging_project_deleted.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_project_whitelist_updated.svg b/docs/latest/images/gen_domain_messaging_project_whitelist_updated.svg index 75e18c4696..d6d09531b1 100644 --- a/docs/latest/images/gen_domain_messaging_project_whitelist_updated.svg +++ b/docs/latest/images/gen_domain_messaging_project_whitelist_updated.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_job_cancellation.svg b/docs/latest/images/gen_domain_messaging_request_job_cancellation.svg index 9c28bd3b3e..dc5409f55b 100644 --- a/docs/latest/images/gen_domain_messaging_request_job_cancellation.svg +++ b/docs/latest/images/gen_domain_messaging_request_job_cancellation.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_job_restart.svg b/docs/latest/images/gen_domain_messaging_request_job_restart.svg index b96b2aa0de..3f0e8cc2ac 100644 --- a/docs/latest/images/gen_domain_messaging_request_job_restart.svg +++ b/docs/latest/images/gen_domain_messaging_request_job_restart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_job_restart_hard.svg b/docs/latest/images/gen_domain_messaging_request_job_restart_hard.svg index 87ffcde0e5..f01267e46c 100644 --- a/docs/latest/images/gen_domain_messaging_request_job_restart_hard.svg +++ b/docs/latest/images/gen_domain_messaging_request_job_restart_hard.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_purge_job_results.svg b/docs/latest/images/gen_domain_messaging_request_purge_job_results.svg index 6bb8b3fb5e..dfc75650f3 100644 --- a/docs/latest/images/gen_domain_messaging_request_purge_job_results.svg +++ b/docs/latest/images/gen_domain_messaging_request_purge_job_results.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_scheduler_disable_job_processing.svg b/docs/latest/images/gen_domain_messaging_request_scheduler_disable_job_processing.svg index 076e97c2fd..9aae7362b2 100644 --- a/docs/latest/images/gen_domain_messaging_request_scheduler_disable_job_processing.svg +++ b/docs/latest/images/gen_domain_messaging_request_scheduler_disable_job_processing.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_scheduler_enable_job_processing.svg b/docs/latest/images/gen_domain_messaging_request_scheduler_enable_job_processing.svg index 66d755f59f..e6c281de8b 100644 --- a/docs/latest/images/gen_domain_messaging_request_scheduler_enable_job_processing.svg +++ b/docs/latest/images/gen_domain_messaging_request_scheduler_enable_job_processing.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_scheduler_job_status.svg b/docs/latest/images/gen_domain_messaging_request_scheduler_job_status.svg index 770656600e..456b84cad9 100644 --- a/docs/latest/images/gen_domain_messaging_request_scheduler_job_status.svg +++ b/docs/latest/images/gen_domain_messaging_request_scheduler_job_status.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_scheduler_status_update.svg b/docs/latest/images/gen_domain_messaging_request_scheduler_status_update.svg index dbf03a1b95..bcaca00a8f 100644 --- a/docs/latest/images/gen_domain_messaging_request_scheduler_status_update.svg +++ b/docs/latest/images/gen_domain_messaging_request_scheduler_status_update.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_user_role_recalculation.svg b/docs/latest/images/gen_domain_messaging_request_user_role_recalculation.svg index 3d95b5833f..9df1285980 100644 --- a/docs/latest/images/gen_domain_messaging_request_user_role_recalculation.svg +++ b/docs/latest/images/gen_domain_messaging_request_user_role_recalculation.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_result_encryption_status_schedule_domain.svg b/docs/latest/images/gen_domain_messaging_result_encryption_status_schedule_domain.svg new file mode 100644 index 0000000000..4c2c3430b0 --- /dev/null +++ b/docs/latest/images/gen_domain_messaging_result_encryption_status_schedule_domain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_schedule_encryption_pool_initialized.svg b/docs/latest/images/gen_domain_messaging_schedule_encryption_pool_initialized.svg new file mode 100644 index 0000000000..a80377bcf9 --- /dev/null +++ b/docs/latest/images/gen_domain_messaging_schedule_encryption_pool_initialized.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_scheduler_job_processing_disabled.svg b/docs/latest/images/gen_domain_messaging_scheduler_job_processing_disabled.svg index 1610fdf2f9..9d09855856 100644 --- a/docs/latest/images/gen_domain_messaging_scheduler_job_processing_disabled.svg +++ b/docs/latest/images/gen_domain_messaging_scheduler_job_processing_disabled.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_scheduler_job_processing_enabled.svg b/docs/latest/images/gen_domain_messaging_scheduler_job_processing_enabled.svg index 8408e7dec3..b822d5847d 100644 --- a/docs/latest/images/gen_domain_messaging_scheduler_job_processing_enabled.svg +++ b/docs/latest/images/gen_domain_messaging_scheduler_job_processing_enabled.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_scheduler_job_status.svg b/docs/latest/images/gen_domain_messaging_scheduler_job_status.svg index 0f2627ab51..8b38e1c31d 100644 --- a/docs/latest/images/gen_domain_messaging_scheduler_job_status.svg +++ b/docs/latest/images/gen_domain_messaging_scheduler_job_status.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_scheduler_started.svg b/docs/latest/images/gen_domain_messaging_scheduler_started.svg index 9c48036c84..e81032306a 100644 --- a/docs/latest/images/gen_domain_messaging_scheduler_started.svg +++ b/docs/latest/images/gen_domain_messaging_scheduler_started.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_scheduler_status_update.svg b/docs/latest/images/gen_domain_messaging_scheduler_status_update.svg index 18c12a76a7..ae4a4230df 100644 --- a/docs/latest/images/gen_domain_messaging_scheduler_status_update.svg +++ b/docs/latest/images/gen_domain_messaging_scheduler_status_update.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_source_upload_done.svg b/docs/latest/images/gen_domain_messaging_source_upload_done.svg index 81db164ad3..a332ecee36 100644 --- a/docs/latest/images/gen_domain_messaging_source_upload_done.svg +++ b/docs/latest/images/gen_domain_messaging_source_upload_done.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_start_encryption_rotation.svg b/docs/latest/images/gen_domain_messaging_start_encryption_rotation.svg new file mode 100644 index 0000000000..16a14bc2ff --- /dev/null +++ b/docs/latest/images/gen_domain_messaging_start_encryption_rotation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_start_scan.svg b/docs/latest/images/gen_domain_messaging_start_scan.svg index 9c28c68ee8..05c802f6ab 100644 --- a/docs/latest/images/gen_domain_messaging_start_scan.svg +++ b/docs/latest/images/gen_domain_messaging_start_scan.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_added_to_project.svg b/docs/latest/images/gen_domain_messaging_user_added_to_project.svg index c36a3bf16b..067d241ccb 100644 --- a/docs/latest/images/gen_domain_messaging_user_added_to_project.svg +++ b/docs/latest/images/gen_domain_messaging_user_added_to_project.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_api_token_changed.svg b/docs/latest/images/gen_domain_messaging_user_api_token_changed.svg index 8dba8e24d0..758641c792 100644 --- a/docs/latest/images/gen_domain_messaging_user_api_token_changed.svg +++ b/docs/latest/images/gen_domain_messaging_user_api_token_changed.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_deleted.svg b/docs/latest/images/gen_domain_messaging_user_deleted.svg index 92248a3868..612b3e8ba3 100644 --- a/docs/latest/images/gen_domain_messaging_user_deleted.svg +++ b/docs/latest/images/gen_domain_messaging_user_deleted.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_removed_from_project.svg b/docs/latest/images/gen_domain_messaging_user_removed_from_project.svg index bf9e3a8454..8af99eeebb 100644 --- a/docs/latest/images/gen_domain_messaging_user_removed_from_project.svg +++ b/docs/latest/images/gen_domain_messaging_user_removed_from_project.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_springprofiles-dev.svg b/docs/latest/images/gen_springprofiles-dev.svg index 2585c98b1e..34af9a15bf 100644 --- a/docs/latest/images/gen_springprofiles-dev.svg +++ b/docs/latest/images/gen_springprofiles-dev.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_springprofiles-integrationtest.svg b/docs/latest/images/gen_springprofiles-integrationtest.svg index a80559b2b5..57862fa415 100644 --- a/docs/latest/images/gen_springprofiles-integrationtest.svg +++ b/docs/latest/images/gen_springprofiles-integrationtest.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_springprofiles-prod.svg b/docs/latest/images/gen_springprofiles-prod.svg index 832b2c5475..db3dfad510 100644 --- a/docs/latest/images/gen_springprofiles-prod.svg +++ b/docs/latest/images/gen_springprofiles-prod.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/gen_springprofiles.svg b/docs/latest/images/gen_springprofiles.svg index 8f80257010..7b2188dc6f 100644 --- a/docs/latest/images/gen_springprofiles.svg +++ b/docs/latest/images/gen_springprofiles.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/latest/images/intelliJ-java-formatter-activate.png b/docs/latest/images/intelliJ-java-formatter-activate.png new file mode 100644 index 0000000000..822c0fd643 Binary files /dev/null and b/docs/latest/images/intelliJ-java-formatter-activate.png differ diff --git a/docs/latest/images/intelliJ-java-formatter-import.png b/docs/latest/images/intelliJ-java-formatter-import.png new file mode 100644 index 0000000000..5d4265796c Binary files /dev/null and b/docs/latest/images/intelliJ-java-formatter-import.png differ diff --git a/docs/latest/pds-download.html b/docs/latest/pds-download.html index ef8bbf8c02..0a39dab3b5 100644 --- a/docs/latest/pds-download.html +++ b/docs/latest/pds-download.html @@ -1,7 +1,7 @@
- +Documentation version: Server 1.10.0 - Build date: 20240710135650
Documentation version: Server 2.0.0 - Build date: 20240808080534
This architecture documentation is based on arc42 template.
@@ -2307,7 +2377,32 @@Usecases for encryption parts
+All other use cases
4
download job report and traffic light
get job status
SUPERADMIN, USER
4
4
get job status
download job report and traffic light
SUPERADMIN, USER
2
Assign user
SUPERADMIN
Update schedule authorization parts
2
The service will add the user to the project. If user does not have ROLE_USER it will obtain it
2
Update schedule authorization parts
Assign user
SUPERADMIN
3
The service will add the user to the project. If user does not have ROLE_USER it will obtain it
3
2
Unassign user
SUPERADMIN
Update authorization parts
2
The service will remove the user to the project. If users has no longer access to projects ROLE_USER will be removed
2
2
Update authorization parts
Unassign user
SUPERADMIN
4
The service will remove the user to the project. If users has no longer access to projects ROLE_USER will be removed
4
3
Inform sechub admins when job restart was canceled
Try to restart job
3
When job is found and job is not already finsihed, a restart will be triggered. Existing batch jobs will be terminated
3
Try to restart job
Try to rstart job (hard)
3
When job is found and job is not already finsihed, a restart will be triggered. Existing batch jobs will be terminated
When job is found, a restart will be triggered. Existing batch jobs will be terminated
3
Try to rstart job (hard)
Inform sechub admins when job restart was canceled
4
When job is found, a restart will be triggered. Existing batch jobs will be terminated
4
2
Delete old data
3
deletes old job information
3
Schedule cipher pool data cleanup
Removes cipher pool data entries from database which are no longer used by any job
A user wants to upload binearies for a former created sechub job.
+A user wants to upload binaries for a former created SecHub job.
The binaries must be inside a valid tar file.
@@ -6707,81 +6809,336 @@All these usecases handling anonymous access.
+An administrator starts encryption rotation.
Steps
Nr | +Title | +Role(s) | +Next | +Description | +
---|---|---|---|---|
1 |
+Rest call |
+SUPERADMIN |
+2 |
+Admin triggers rotation of encryption via REST |
+
2 |
+Service call |
++ | 3 |
+Triggers rotation of encryption via domain message |
+
3 |
+Service call |
++ | 4 |
+Forces new cipher pool entry creation and triggers encryption service pool refresh |
+
4 |
+Service call |
++ | 5 |
+Creates new cipher pool entry in database in own transaction |
+
5 |
+Refresh encryption pool |
++ | 6 |
+Encryption pool is refreshed (necessary because pool changed before this method call) |
+
6 |
+Update encrypted data |
++ | + | Encrypted data is updated (a direct pool refresh was triggered by admin action) |
+
Usecases handling administration of users
+The scheduler refreshes its encryption pool data to handle new setup
REST API for UC_026-Admin downloads all details about a scan job
-REST API for UC_028-Admin revokes admin rights from an admin
-REST API for UC_072-Admin shows user details for email address
-Steps
Nr | +Title | +Role(s) | +Next | +Description | +
---|---|---|---|---|
1 |
+Init encryption pool |
++ | 3 |
+Encryption pool is created on startup |
+
1 |
+Encryption pool data refresh trigger |
++ | 2 |
+Scheduler instance will check if encryption pool is in sync with the database definitions. If not, the instance will try to create new encryption pool object and provide the new setup. |
+
2 |
+Refresh encryption pool |
++ | 3 |
+Encryption pool is refreshed (if necessary) |
+
3 |
+Update encrypted data |
++ | + | Encrypted data is updated (all other cluster members) |
+
Usecases for project administration
+The scheduler checks for old encrypted data and will encrypt with latest cipher
Steps
+Nr | +Title | +Role(s) | +Next | +Description | +
---|---|---|---|---|
1 |
+Update encrypted data |
++ | + | Final update of encrypted job data. Will update all SecHub jobs having a pool id which is lower than latest from encryption pool |
+
An administrator fetches encryption status from all domains where encryption is used.
+Steps
+Nr | +Title | +Role(s) | +Next | +Description | +
---|---|---|---|---|
1 |
+Rest call |
+SUPERADMIN |
+1 |
+Admin fetches encryption status from domains via REST |
+
1 |
+Service call |
++ | + | Services collects encryption status from domains via event bus |
+
Secub does an ecnryption cleanup.
+Inside relevant domains the encryption situation will be checked and +old encryption setup, which is no longer necessary, will be dropped.
+For example: When encryption was done with formerly via ENV variable
+SECRET_1_AES_256
and the new one setup is using SECRET_2_AES_256
and
+all jobs have been migrated to the new encryption, the cipher setup
+using SECRET_1_AES_256
will become obsolete and will be automatically
+removed. After the remove is done, there is no longer a need to
+start the server with SECRET_1_AES_256
, but only with SECRET_2_AES_256
…
Steps
+Nr | +Title | +Role(s) | +Next | +Description | +
---|---|---|---|---|
1 |
+Schedule cipher pool data cleanup |
++ | + | Removes cipher pool data entries from database which are no longer used by any job |
+
All these usecases handling anonymous access.
+Usecases handling administration of users
+REST API for UC_026-Admin downloads all details about a scan job
+REST API for UC_028-Admin revokes admin rights from an admin
+REST API for UC_072-Admin shows user details for email address
+Usecases for project administration
+Usecases for encryption parts
+All other use cases
REST API for usecase UC_039-Check if the server is alive and running.
Definition
Method
GET
HEAD
Status code
$ curl 'https://sechub.example.com/api/anonymous/check/alive' -i -X GET
+$ curl 'https://sechub.example.com/api/anonymous/check/alive' -i -X HEAD
Definition
Method
HEAD
GET
Status code
$ curl 'https://sechub.example.com/api/anonymous/check/alive' -i -X HEAD
+$ curl 'https://sechub.example.com/api/anonymous/check/alive' -i -X GET
$ curl 'https://sechub.example.com/api/admin/scan/download/65fc6925-ffcb-4f71-8468-01b1a5b5a65d' -i -u 'user:secret' -X GET \
+$ curl 'https://sechub.example.com/api/admin/scan/download/50a3de31-e207-4ac3-a6da-0f46e478d7ff' -i -u 'user:secret' -X GET \
-H 'Content-Type: application/json;charset=UTF-8'
[{"sechubJobUUID":"1c24f69f-c988-4ce7-94ef-22dfac5ba3db","executedBy":"spartakus","started":"2024-07-09T13:57:03.927240632","ended":"2024-07-10T13:57:03.927258626","status":"OK"}]
+[{"sechubJobUUID":"fc559da4-0535-46c7-941f-1a76d09a2ca1","executedBy":"spartakus","started":"2024-08-07T08:05:51.724664496","ended":"2024-08-08T08:05:51.724691357","status":"OK"}]
{"jobId":"2c7e0719-0c4e-4f6a-aa56-6a39e63c2fe5"}
+{"jobId":"e80bc191-1fab-4e51-9c53-44b956b37b88"}
{"jobId":"e61914c5-b3b6-4af0-a9bf-748a376c2638"}
+{"jobId":"278d510e-e7b2-4d07-b593-7fa77b54eef8"}
{"jobId":"75d2cfea-3690-4397-8ea7-b7a0f87123a9"}
+{"jobId":"07c86999-76c1-4a12-90b7-4b97a7632579"}
{"jobId":"a37386d3-a808-4dcb-b68e-a7fcde86f2bd"}
+{"jobId":"18b74d14-fd93-4beb-9ed0-623ba27171df"}
{"jobId":"1718acea-bb09-4621-9cfd-d5337be22244"}
+{"jobId":"a47a9992-6b75-46db-a77a-5590b115e8e4"}
{"jobId":"24a520cd-a6ce-4120-addc-fdc21980de51"}
+{"jobId":"ad2715a7-ed7c-49c5-9b0d-ef7b80f276c1"}
{"jobId":"fa954d23-1920-4338-bec4-6f4eb3271427"}
+{"jobId":"f4542da9-59bb-41d2-a120-39a5f14e286a"}
{"jobId":"603cbbb3-792e-4647-acde-a018c9672d26"}
+{"jobId":"361d942a-c955-42ba-baea-41bfccfe08e3"}
{"jobId":"c6f36e9c-22ce-4405-a50a-809b01ddec4a"}
+{"jobId":"48c03859-a741-4e25-9ade-314a1583e45f"}
{"jobId":"e09816f7-bde7-4764-acb4-1b9e67316ba4"}
+{"jobId":"046e0236-dd5f-4b07-8c57-3c45801b6c37"}
{"jobId":"515131cd-f610-43fb-b3c7-73c227dcc919"}
+{"jobId":"dd1b6f6b-7a47-408d-a919-0f06c9b43200"}
$ curl 'https://sechub.example.com/api/project/project1/job/4cdef6b6-f307-42cb-bb15-13ed84e11efc/sourcecode?checkSum=checkSumValue' -i -X POST \
+$ curl 'https://sechub.example.com/api/project/project1/job/d26d431f-532e-403d-8649-41840afaf02a/sourcecode?checkSum=checkSumValue' -i -X POST \
-H 'Content-Type: multipart/form-data;charset=UTF-8' \
-F 'file=PK
�<M test1.txtPK ?
@@ -11458,7 +11831,7 @@ 7.6.27. User approves sechub job
$ curl 'https://sechub.example.com/api/project/project1/job/dd1fc660-d0e5-48aa-bedd-d8786eea7dcc/approve' -i -X PUT \
+$ curl 'https://sechub.example.com/api/project/project1/job/2599f5c1-4bb0-4ca2-9745-49411e356282/approve' -i -X PUT \
-H 'Content-Type: application/json;charset=UTF-8'
$ curl 'https://sechub.example.com/api/project/project1/job/7c58dbab-860f-4d45-b1f9-3de1b7a8e5b5' -i -X GET \
+$ curl 'https://sechub.example.com/api/project/project1/job/acd54ae3-6a88-4002-85f0-c7026639380a' -i -X GET \
-H 'Content-Type: application/json;charset=UTF-8'
{"jobUUID":"7c58dbab-860f-4d45-b1f9-3de1b7a8e5b5","owner":"CREATOR1","created":"","started":"2024-07-10T13:42:02.31702027","ended":"2024-07-10T13:57:02.317046408","state":"ENDED","result":"OK","trafficLight":"GREEN"}
+{"jobUUID":"acd54ae3-6a88-4002-85f0-c7026639380a","owner":"CREATOR1","created":"","started":"2024-08-08T07:50:50.192109111","ended":"2024-08-08T08:05:50.192137775","state":"ENDED","result":"OK","trafficLight":"GREEN"}
$ curl 'https://sechub.example.com/api/project/project1/report/1452ace3-df08-4d20-8fa8-c48d219b4e98' -i -u 'user:secret' -X GET \
+$ curl 'https://sechub.example.com/api/project/project1/report/5e4d6d16-930d-4a32-9277-b178d2e0a033' -i -u 'user:secret' -X GET \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Accept: application/json'
$ curl 'https://sechub.example.com/api/project/project1/report/d6929af5-02d1-4060-89b8-bb5a88a81917' -i -u 'user:secret' -X GET \
+$ curl 'https://sechub.example.com/api/project/project1/report/d2552d0b-e265-4673-ad90-e43e0f61a610' -i -u 'user:secret' -X GET \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Accept: application/xhtml+xml'
$ curl 'https://sechub.example.com/api/project/project1/job/844bf46d-865c-407d-a28c-e2286a7d7a96/binaries' -i -X POST \
+$ curl 'https://sechub.example.com/api/project/project1/job/897847f1-3e25-44cc-a4cf-67508dbd295a/binaries' -i -X POST \
-H 'Content-Type: multipart/form-data;charset=UTF-8' \
-H 'x-file-size: 10240' \
-F 'file=test1.txt 0000664 0001750 0001750 00000000000 13353454574 012170 0 ustar albert albert ' \
@@ -12405,7 +12778,7 @@ 7.6.34. User downloads job rep
$ curl 'https://sechub.example.com/api/project/project1/report/spdx/69ab8fa2-fe63-45ca-aafe-6efdc937b4e8' -i -u 'user:secret' -X GET \
+$ curl 'https://sechub.example.com/api/project/project1/report/spdx/28097c41-5d4d-4355-a509-ce22bdb69537' -i -u 'user:secret' -X GET \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Accept: application/json'
String
Timestamp since when job has been started
[].configuration
String
Configuration used for this job
[{"jobUUID":"364a395c-7439-4f84-ae4b-b26517c3fe53","projectId":"project-name","owner":"owner-userid","status":"RUNNING","since":"2024-07-10T13:57:06.714971112","configuration":"{ config data }"}]
+[{"jobUUID":"1761a2a9-37a9-48e1-98e5-63e3c2785c67","projectId":"project-name","owner":"owner-userid","status":"RUNNING","since":"2024-08-08T08:05:55.044912463"}]
$ curl 'https://sechub.example.com/api/admin/jobs/cancel/cb7e5145-587c-4cc3-b536-0a516788b323' -i -u 'user:secret' -X POST \
+$ curl 'https://sechub.example.com/api/admin/jobs/cancel/08eaf3b6-4d6e-4ad9-a7ac-7d88b4884d13' -i -u 'user:secret' -X POST \
-H 'Content-Type: application/json;charset=UTF-8'
$ curl 'https://sechub.example.com/api/admin/jobs/restart/c798ca3b-4ac7-4e54-9507-e8267d591a3a' -i -u 'user:secret' -X POST \
+$ curl 'https://sechub.example.com/api/admin/jobs/restart/98470906-23a7-4233-8228-4e213cb5b173' -i -u 'user:secret' -X POST \
-H 'Content-Type: application/json;charset=UTF-8'
$ curl 'https://sechub.example.com/api/admin/jobs/restart-hard/f96ec449-ff8e-4328-a66c-0783edd140d6' -i -u 'user:secret' -X POST \
+$ curl 'https://sechub.example.com/api/admin/jobs/restart-hard/c3a07e23-27f4-4a02-9313-c5e8ee6aa8f7' -i -u 'user:secret' -X POST \
-H 'Content-Type: application/json;charset=UTF-8'
$ curl 'https://sechub.example.com/api/admin/config/executor' -i -u 'user:secret' -X POST \
-H 'Content-Type: application/json;charset=UTF-8' \
- -d '{"name":"PDS gosec config 1","productIdentifier":"PDS_CODESCAN","executorVersion":1,"enabled":false,"setup":{"baseURL":"https://productXYZ.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value"},{"key":"example.key2","value":"Another value"}]}}'
+ -d '{"name":"PDS gosec configuration 1","productIdentifier":"PDS_CODESCAN","executorVersion":1,"enabled":false,"setup":{"baseURL":"https://productXYZ.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value"},{"key":"example.key2","value":"Another value"}]}}'
16d02d16-9d30-4b50-a079-0a992d5d1f8c
+19a513e8-f664-43f3-ad0e-ec881c7762f7
$ curl 'https://sechub.example.com/api/admin/config/executor/f88cb1e3-caf7-4d3a-b8c1-5801c0bcad7a' -i -u 'user:secret' -X DELETE \
+$ curl 'https://sechub.example.com/api/admin/config/executor/22fb2f08-7b58-4d57-acbb-00f12619c6e1' -i -u 'user:secret' -X DELETE \
-H 'Content-Type: application/json;charset=UTF-8'
{"executorConfigurations":[{"uuid":"85535231-46bc-4301-b5f5-37730131dec6","name":"example configuration","enabled":true}],"type":"executorConfigurationList"}
+{"executorConfigurations":[{"uuid":"7d298d34-1148-4803-975d-226862654d0b","name":"example configuration","enabled":true}],"type":"executorConfigurationList"}
$ curl 'https://sechub.example.com/api/admin/config/executor/6071b1b3-4573-4ae7-a13e-e1b0fdaf149a' -i -u 'user:secret' -X GET \
+$ curl 'https://sechub.example.com/api/admin/config/executor/b60c002d-6882-41b7-9378-a1279f10fca9' -i -u 'user:secret' -X GET \
-H 'Content-Type: application/json;charset=UTF-8'
{"name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value"}]},"executorVersion":1,"enabled":false,"uuid":"6071b1b3-4573-4ae7-a13e-e1b0fdaf149a"}
+{"name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value"}]},"executorVersion":1,"enabled":false,"uuid":"b60c002d-6882-41b7-9378-a1279f10fca9"}
$ curl 'https://sechub.example.com/api/admin/config/executor/81170e88-a5f7-4527-a19a-b9494b138f0f' -i -u 'user:secret' -X PUT \
+$ curl 'https://sechub.example.com/api/admin/config/executor/70e7df3d-e2c9-4416-b64e-4d93d5500933' -i -u 'user:secret' -X PUT \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{"name":"New name","productIdentifier":"PDS_CODESCAN","executorVersion":1,"enabled":false,"setup":{"baseURL":"https://productNew.example.com","credentials":{"user":"env:EXAMPLE_NEW_USENAME","password":"env:EXAMPLE_NEW_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value but changed. Remark: the other parameter (example.key2) has been removed by this call"}]}}'
$ curl 'https://sechub.example.com/api/admin/config/execution/profile/existing-profile-1' -i -u 'user:secret' -X PUT \
-H 'Content-Type: application/json;charset=UTF-8' \
- -d '{"description":"changed description","configurations":[{"uuid":"f016a684-830a-4c66-aa5b-1f49e85e9996","executorVersion":0,"enabled":false,"setup":{"credentials":{},"jobParameters":[]}}],"enabled":true}'
+ -d '{"description":"changed description","configurations":[{"uuid":"44742c74-0b9b-46c2-afa7-1c0e8e7f3291","executorVersion":0,"enabled":false,"setup":{"credentials":{},"jobParameters":[]}}],"enabled":true}'
configurations[].enabled
Boolean
enabled state of this config
enabled state of this configuration
configurations[].productIdentifier
{"description":"a description","enabled":true,"configurations":[{"name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value but changed. Remark: the other parameter (example.key2) has been removed by this call"}]},"executorVersion":1,"enabled":false,"uuid":"df9984fd-f307-4847-a49a-27700ee434d0"}],"projectIds":["project-1","project-2"]}
+{"description":"a description","enabled":true,"configurations":[{"name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value but changed. Remark: the other parameter (example.key2) has been removed by this call"}]},"executorVersion":1,"enabled":false,"uuid":"ce989c37-b285-4975-a802-3930530d627b"}],"projectIds":["project-1","project-2"]}
REST API for usecase UC_030-Admin disables job processing in scheduler
+REST API for usecase UC_073-Admin starts encryption rotation
Definition
Path |
-/api/admin/scheduler/disable/job-processing |
+/api/admin/encryption/rotate |
Method |
@@ -15242,7 +15610,7 @@ ||
Status code |
-202 ACCEPTED |
+200 OK |
$ curl 'https://sechub.example.com/api/admin/scheduler/disable/job-processing' -i -u 'user:secret' -X POST \
- -H 'Content-Type: application/json;charset=UTF-8'
+$ curl 'https://sechub.example.com/api/admin/encryption/rotate' -i -u 'user:secret' -X POST \
+ -H 'Content-Type: application/json;charset=UTF-8' \
+ -d '{
+ "algorithm" : "AES_GCM_SIV_256",
+ "passwordSourceType" : "ENVIRONMENT_VARIABLE",
+ "passwordSourceData" : "SECRET_1"
+}'
REST API for usecase UC_031-Admin enables scheduler job processing
+REST API for usecase UC_076-Admin fetches encryption status
Definition
Path |
-/api/admin/scheduler/enable/job-processing |
+/api/admin/encryption/status |
Method |
-POST |
+GET |
Status code |
-202 ACCEPTED |
+200 OK |
Example
-Curl request
$ curl 'https://sechub.example.com/api/admin/scheduler/enable/job-processing' -i -u 'user:secret' -X POST \
- -H 'Content-Type: application/json;charset=UTF-8'
-Response body
-(empty)
REST API for usecase UC_032-Admin get scheduler status
-Definition
+Response fields
- | Value | +Path | +Type | +Description |
---|---|---|---|---|
Path |
+
|
+
|
+The type description of the json content |
+|
|
+
|
+Name of the domain which will provide this encryption data elements |
+||
|
+
|
+Unique identifier |
+||
|
+
|
+Algorithm used for encryption |
+||
|
+
|
+Type of password source. Can be [NONE, ENVIRONMENT_VARIABLE] |
+||
|
+
|
+Data for password source. If type is ENVIRONMENT_VARIABLE then it is the the name of the environment variable. |
+||
|
+
|
+Map containing information about usage of this encryption |
+||
|
+
|
+Key value data |
+||
|
+
|
+Creation timestamp |
+||
|
+
|
+User id of admin who created the encryption entry |
+
Example
+Curl request
$ curl 'https://sechub.example.com/api/admin/encryption/status' -i -u 'user:secret' -X GET \
+ -H 'Content-Type: application/json;charset=UTF-8'
+Response body
{"type":"encryptionStatus","domains":[{"name":"schedule","data":[{"id":"1","algorithm":"AES_GCM_SIV_256","passwordSource":{"type":"ENVIRONMENT_VARIABLE","data":"SECRET_1"},"usage":{"job.state.cancel_requested":4,"job.state.canceled":5,"job.state.ended":6,"job.state.initializing":1,"job.state.ready_to_start":2,"job.state.started":3},"createdFrom":"admin-username","created":"2024-08-01T09:26:00"}]}]}
+REST API for usecase UC_030-Admin disables job processing in scheduler
+Definition
++ | Value | +
---|---|
Path |
+/api/admin/scheduler/disable/job-processing |
+
Method |
+POST |
+
Status code |
+202 ACCEPTED |
+
Request headers
Name | +Description | +
---|
Example
+Curl request
$ curl 'https://sechub.example.com/api/admin/scheduler/disable/job-processing' -i -u 'user:secret' -X POST \
+ -H 'Content-Type: application/json;charset=UTF-8'
+Response body
+(empty)
REST API for usecase UC_031-Admin enables scheduler job processing
+Definition
++ | Value | +
---|---|
Path |
+/api/admin/scheduler/enable/job-processing |
+
Method |
+POST |
+
Status code |
+202 ACCEPTED |
+
Request headers
Name | +Description | +
---|
Example
+Curl request
$ curl 'https://sechub.example.com/api/admin/scheduler/enable/job-processing' -i -u 'user:secret' -X POST \
+ -H 'Content-Type: application/json;charset=UTF-8'
+Response body
+(empty)
REST API for usecase UC_032-Admin get scheduler status
+Definition
++ | Value | +||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Path |
/api/admin/scheduler/status/refresh |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
240 |
Time in minutes when adapter result check will automatically time out and adapter stops execution automatically. When -1 timeout is 7200 minutes |
+|
sechub.adapter.pds.resilience.encryption-out-of-sync.retry.max |
+3 |
+Amount of retries done when a PDS encryption out of sync problem happens |
+
sechub.adapter.pds.resilience.encryption-out-of-sync.retry.wait |
+2000 |
+Time to wait until retry is done when a PDS encryption out of sync problem happens |
+
sechub.config.trigger.healthcheck.enabled |
true |
-When enabled each trigger will do an healtching by monitoring service. If system has too much CPU load or uses too much memory, the trigger will not execute until memory and CPU load is at normal level! |
+When enabled each trigger will do an health check by monitoring service. If system has too much CPU load or uses too much memory, the trigger will not execute until memory and CPU load is at normal level! |
sechub.config.trigger.nextjob.delay |
@@ -17737,7 +18371,7 @@ |||
sechub.config.trigger.nextjob.maxwaitretry |
300 |
-When retry mechanism is enabled by |
+When retry mechanism is enabled by |
sechub.config.trigger.nextjob.retries |
@@ -17766,8 +18400,8 @@
Maximum limit for job information list entries per page |
||
sechub.schedule.encryption.refresh.accept-outdated.milliseconds |
+1800000 |
+The maximum amount of milliseconds an outdated encryption pool is still accepted in refresh phase |
+
sechub.server.baseurl |
Base url of SecHub server - e.g. https://sechub.example.org |
initial delay:${sechub.config.trigger.nextjob.initialdelay:5000} fixed delay:${sechub.config.trigger.nextjob.delay:10000} |
Job scheduling is triggered by a cron job operation - default is 10 seconds to delay after last execution. For initial delay 5000 milliseconds are defined. It can be configured differently. This is useful when you need to startup a cluster. Simply change the initial delay values in to allow the cluster to startup. |
+|
Fixed |
+initial delay:${sechub.schedule.encryption.refresh.initialdelay:5000} fixed delay:${sechub.schedule.encryption.refresh.delay:300000} |
+Defines the initial and also the fixed delay for the refresh interval. These values are also used for calculation of remaining run time of outdated encrytion pools (when refresh fails) |
+
+ + | +
+
+
+If the secret key is not a base 64 value the server startup will fail! + |
+
There is no complete rotation of encryption - old data will have no encryption update.
+But an administrator is able to do re-deployment of the PDS cluster +and using other secret or algorithm.
+This will
+use new encryption setup for all new PDS jobs
+keep existing encrypted data as is
+can lead to a rare race condition when SecHub has created the job with old PDS instance and +new PDS instance tries to run the PDS job (the access to the encrypted data is no longer possible)
++ + | +
+
+
+Via auto cleanup the old data will automatically disappear. +If an encryption cleanup for PDS via auto cleanup is too late (e.g. credentials were leaked and +an update is really urgent) , it is still possible to just delete +via SQL all jobs at database which have a timestamp older then the newest deployment time (or +just all). + |
+
There is no direct possibility to check encryption status. But the job contains a creation time stamp +and can be mapped to the startup of containers if this would become necessary.
+Auto Cleanup automatically removes old information. +This means that old encrypted information (with older encryption settings) automatically +disappears after a certain period of time.
+Since no other encryption data is persisted except in the PDS job, nothing else needs to be cleaned up.
+The PDS provides an auto cleanup mechanism which will remove old PDS jobs automatically.
+The default configuration is set to 2 days. +Administrators can change the default configuration via REST.
+PDS needs - like SecHub - the possiblity to store job data in a central storage location when operating inside a cluster (it’s not clear which cluster member uploads job data and which one does execute the job and need the data at exectuion time).
In the next example PDS and SecHub are using the same S3 bucket to store files uploaded by the user.
In the next example PDS and SecHub are using different S3 buckets as storage.
In the next example PDS server and SecHub are using same shared volume as storage.
In the next example PDS and SecHub are using different shared volumes as storage.
This example is only mentioned for the sake of completeness: It is the same as before described for different S3 and different shared volumes:
pds.config.use.sechub.storage
cannot be used in this case.
PDS instances are executing so called caller scripts
by spanning a new process. At this time
dedicated environment variables are automatically injected and available inside the scripts.
We use error.txt
and output.txt
inside the workspace location of
a running PDS job.
When communication of PDS with the used product is stateful and is a long running operation, it can be useful to store such state/meta data.
@@ -19410,7 +20257,7 @@The PDS solution for Checkmarx
does reuse the already existing CheckmarxAdapter
class.
A sechub-wrapper-checkmarx
gradle project was introduced which contains a simple spring boot
@@ -19428,14 +20275,14 @@
The PDS
does automatically fetch uploaded files from shared storage
temporary into its local filesystem. After the scan has been done, the temporary local files
will be automatically deleted.
Source code is always contained in a file called sourcecode.zip
.
When a PDS
starts a new job, it will fetch the complete ZIP file from storage
@@ -19450,7 +20297,7 @@
Binaries are always contained in a file called binaries.tar
.
When a PDS
starts a new job and the scan does references a binary data section, it will fetch
@@ -19465,7 +20312,7 @@
The data structure inside TAR
and ZIP
files contains
data configuration parts inside data
folder.
Only files and folders which are available for the configured scan type will be automatically
extracted!
@@ -19809,7 +20656,7 @@
Sometimes it is necessary that the PDS inform the script about changes. This can be done by execution events.
The product adapter is able to read and write events into a dedicated folder inside the workspace.
This is utilized by the PDSWorkspaceService
class.
The launcher scripts (or in started wrapper applications by these scripts) have the
environment variable PDS_JOB_EVENTS_FOLDER
injected.
The different PDS product executors have different config builders which inherit from different abstract base classes
(e.g. AbstractCodeScanAdapterConfigBuilder
). We have no multi inheritance in Java, but we do also not
@@ -19903,7 +20750,7 @@
With PDS
there is a default REST
API
available.
The Adapter will always be the same, but filled with other necessary parameters.
Having new security product XYZ but being a command line tool, we
+ + | +
+
+
+Output and error stream of a PDS launcher script are stored in PDS database as plain text! +Means: NEVER log any sensitive data in launcher scripts! +
+
+If you want to give hints for debugging etc. you have to mask the information in log output. + |
+
The data structure concept does need an automated archive
extraction. The main java class is ArchiveSupport
.
SecHub must be able to handle false positives of used products.
Instead of configuring false positives for each product (e.g. by calling a REST API) we do the filtering of false positives always at SecHub side only!
@@ -20082,12 +20947,12 @@Some people prefer code/API-centric way to define false positives, some prefer a WebUI.
Define false positive handling in JSON
by referencing a former SecHub job UUID and the
corresponding finding entry (by id) and post it to REST API.
Just uses the API centric approach (by using given REST API,) over UI.
Inside source code / deployment scripts etc. users can define comments to define false positive handling - this is only possible for situations where we have access to source code - means SAST @@ -20207,14 +21072,14 @@
see general concept
We will provide single comments (//
)
Not possible
Not possible
see general concept
To have the possibility of using dedicated security products for different projects, to disable/enable products on demand without server restart or just to test new products in one evaluation project but @@ -20438,23 +21303,23 @@
This is provided by execution profiles and and executor configurations.
An executor configuration represents a runtime configuration for product executors. The configuration has an enabled state. So it is possible to enable/disable product execution.
An execution profile can contain multiple executor configurations. The configurations can be shared between multiple profiles. E.g. a config with name "pds-gosec-1" can be used in profiles "profileA" @@ -20469,7 +21334,7 @@
ScanService
is called by SecHub batch operation from scheduler and contains the project id for the
project to scan for.
All of the results returned by the dedicated product executors are stored in database. After this has been done,
the configured report product executor(s) is (are) executed (if none has been defined in at least one profile, the
@@ -20489,7 +21354,7 @@ 9.9.4.1
Product results can be either from security products or from reporting products.
Every product can add custom messages which shall be available to user.
The product adapter fetches the information from the product and delivers it to
the product executor, who stores the SecHub messages inside the ProductResult
entity.
SerecoProductExecutor
collects all SecHub messages from other job results and combines them
inside its own data as SerecoAnnotation
. The annotations will be inspected on report creation
@@ -20545,14 +21410,14 @@
Here a reduced class model of the report data model:
Here a graphical overview how the report data is created by the ScanService
and
finally written as ScanReport
entity into the database:
When the user downloads the report, the result inside the persisted scan report entity will be used.
After a SecHub job has been created, it has a status which will change at the different process steps. Some of these steps are described here.
An administrator is able to cancel a running SecHub job. This is done across different domains and there are multiple events involved. The next diagram shall bring an overview.
@@ -20628,14 +21493,17 @@To prevent full hard drives there is an option to automatically remove old data.
It also cleans up old encryption settings when it comes to encryption rotation.
+Administrators can configure the auto cleanup configuration by uploading a json configuration via REST (see REST API for UC_065-Admin updates auto cleanup configuration ).
@@ -20717,13 +21585,13 @@The execution is automatically done by SecHub.
All data which is older than the defined time period is removed from:
It is easy to integrate security products, even command line tools without a network API, into
SecHub
via PDS
(Product delegation server).
The checkmarx PDS solution uses sechub-wrapper-checkmarx
which is a standalone Spring Boot application.
If started in non production mode, the data will be mocked when inside IDE.
We want
+Data consistency
It shall not be possible that we loose data by encryption in any way.
+It must be ensured that the servers are always able to read and write data.
Full automated cipher rotation
+There is no need for manual interaction - means it is not necessary to create any cron jobs or
+something else to convert non encrypted data to encrypted data or to rotate a password or to
+use a new encryption method.
Data protection /Privacy policy
+Even for administrators it shall not be possible to fetch the information directly
+(of course a person who knows the encryption password and has access to the database will always
+ be able to calculate values - but we separate here between administration and operation inside
+ this concept, so protection is fully possible)
The data must not be accidentally made available in decrypted form - for example through a REST +call in which the data object is passed along unencrypted.
+Easy encryption administration
+It shall be possible for an administrator to configure a new cipher entry via REST
+Secure storage of encryption passwords
Encryption passwords are always provided via environment entries, we store always +the environment variable name to use inside the database but never plain values!
+A SecHub server will stop on startup phase when one of the entries inside the cipher pool cannot +be handled by this server.
+This ensures that every new started server is able to handle all of them / is always readable.
+An administrator is able to start encryption rotation via REST. This will
+use new encryption setup for all new data
+automatically convert existing encrypted data with new encryption setup in background
+An administrator is able to fetch encryption status from SecHub server. All domains which are +doing data encryption add their current status information into result.
+Auto Cleanup automatically removes old information. +This means that old encrypted information that cannot be updated for some reason may eventually +disappear and old encryption configurations are then no longer needed and can be removed.
+To fully automate this, after the respective Auto Cleanup, the domains are always checked for encryption configurations that are no longer used and these are then automatically removed (except for the most recent encryption configuration).
++ + | +
+
+
+If you have setup auto cleanup to 0 days, the auto cleanup is disabled completely and +unused encryption setup will also not be removed. + |
+
Inside the schedule domain, the sensitive information is the sechub job configuration.
+We store the cipher information inside table: SCHEDULE_CIPHER_POOL_DATA
.
+ + | +
+
+
+Why in schedule domain and only there? Because it is the responsible domain for the storage. All other
+domains may NEVER persist this information (for |
+
Here an an overview of the table (names can be different in database):
+id | +algorithm | +password_source_type | +password_source_data | +encoding | +test_text | +test_initial_vector | +test_encrypted | +creation_timestamp | +created_from | +
---|---|---|---|---|---|---|---|---|---|
0 |
+NO_ENCRYPTION |
+PLAIN_TEXT |
++ | PLAIN |
+no-encryption |
++ | no-encryption |
+2024-06-24_10:00:01 |
+null |
+
1 |
+AES_GCM_SIV_128 |
+ENVIRONMENT_VARIABLE |
+SECHUB_CRYPTO_P0 |
+PLAIN |
+SecHub |
+easdfa313334 |
+53d$125666eeffeded |
+2024-06-24_10:05:34 |
+Admin1 |
+
2 |
+AES_GCM_SIV_256 |
+ENVIRONMENT_VARIABLE |
+SECHUB_CRYPTO_P1 |
+PLAIN |
+Apfel |
+fxadsfeec33s |
+13x313412124$rfewd |
+2024-06-24_11:02:14 |
+Admin2 |
+
algorithm
+Algorithm to use in encryption - currently we provide:
+NONE (means not encrypted!)
+AES_GCM_SIV_128
+AES_GCM_SIV_256
+password_source_type
+Currently supported password source types are
+ENVIRONMENT_VARIABLE
+Here we provide environment variables, the password source data is the name of the environment variable
NONE
+No password - only allowed for NONE
algorithm
We separated source type and source data to be able to provide additional source - e.g. a password fault for the future.
+password_source_data
+Depends on the source
+If source is env
than this is the name of the environment variable which holds the secret
Inside the encrypted rows we will persist the pool id together with an initial vector
+initial vector
+Some algorithm like AES_GCM_SIV
do need an initial vector to encrypt secure. The value here is
+auto generated by SecHub and is dependent on the algorithm.
SecHub will always auto generate a dedicate value when it comes to encryption and the vector +will be stored together with the encrypted data. If the initial vector is changed, the row cannot +be decrypted, even when the secret key is known!
+The only situation we need to access the encrypted job configuration is the point, when +it comes to job execution. At all other situations it does not matter if the configuration +can be decrypted or not.
+This means that it may not be possible that an scheduler instance executes a job which is +not supported by the current encryption pool!
+Old server versions do not have the encryption field inside the scheduler job table or the cipher pool table.
+Our SQL migration scripts will initialize scheduler cipher pool table on creation time with a
+NONE
entry (pool id = 0). This is encryption setup (meaning no encryption) will be added
+to all existing jobs.
We want to have zero downtime and rolling updates with k8s and SecHub. To provide this,
+it must be ensured, that there is no old server running which creates new jobs with
+plain text configurations while update is running. To prevent such a situation
+the column name inside schedule_sechub_job
have been renamed from configuration
to unencrypted_configuration
.
+If there appears any race conditions, old servers would no longer be able to write data and a
+SQL error would happen.
For a downgrade from SecHub server V2.x to V1.x it is necessary to ensure, that all data is
+encrypted with NONE
cipher type (can be done by encryption rotation). When ensured that everything
+is "encrypted" with this cipher type, the old server version can be deployed/used and migration
+is automatically done as usual.
JVM crash dumps contain string information. Classes containing sensitive information shall +store such information inside sealed objects.
+The SecHub configuration is encrypted, because it can contain sensitive data. E.g. when defining a remote data +section.
+There exists a REST endpoint which gives users the possiblity to fetch job information, together with +the meta data defined inside the SecHub configuration.
+To obtain this information, the configuration will be decrypted temporary at runtime and the meta +data are resolved and returned.
+Because meta data shall not contain any sensitive information, this will not be audit logged.
+