gitlabcis 1.3.2__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.
- gitlabcis/__init__.py +12 -0
- gitlabcis/__main__.py +7 -0
- gitlabcis/benchmarks/__init__.py +8 -0
- gitlabcis/benchmarks/artifacts_4/__init__.py +4 -0
- gitlabcis/benchmarks/artifacts_4/access_to_artifacts_4_2.py +139 -0
- gitlabcis/benchmarks/artifacts_4/origin_traceability_4_4.py +11 -0
- gitlabcis/benchmarks/artifacts_4/package_registries_4_3.py +105 -0
- gitlabcis/benchmarks/artifacts_4/verification_4_1.py +83 -0
- gitlabcis/benchmarks/build_pipelines_2/__init__.py +4 -0
- gitlabcis/benchmarks/build_pipelines_2/build_environment_2_1.py +268 -0
- gitlabcis/benchmarks/build_pipelines_2/build_worker_2_2.py +129 -0
- gitlabcis/benchmarks/build_pipelines_2/pipeline_instructions_2_3.py +444 -0
- gitlabcis/benchmarks/build_pipelines_2/pipeline_integrity_2_4.py +146 -0
- gitlabcis/benchmarks/dependencies_3/__init__.py +2 -0
- gitlabcis/benchmarks/dependencies_3/third_party_packages_3_1.py +171 -0
- gitlabcis/benchmarks/dependencies_3/validate_packages_3_2.py +182 -0
- gitlabcis/benchmarks/deployment_5/__init__.py +2 -0
- gitlabcis/benchmarks/deployment_5/deployment_configuration_5_1.py +165 -0
- gitlabcis/benchmarks/deployment_5/deployment_environment_5_2.py +66 -0
- gitlabcis/benchmarks/source_code_1/__init__.py +6 -0
- gitlabcis/benchmarks/source_code_1/code_changes_1_1.py +665 -0
- gitlabcis/benchmarks/source_code_1/code_risks_1_5.py +506 -0
- gitlabcis/benchmarks/source_code_1/contribution_access_1_3.py +334 -0
- gitlabcis/benchmarks/source_code_1/repository_management_1_2.py +168 -0
- gitlabcis/benchmarks/source_code_1/third_party_1_4.py +139 -0
- gitlabcis/cli/__init__.py +0 -0
- gitlabcis/cli/log.py +30 -0
- gitlabcis/cli/main.py +541 -0
- gitlabcis/cli/output.py +151 -0
- gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/external_auth_server.yml +51 -0
- gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/limit_artifact_uploaders.yml +57 -0
- gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/limit_certifying_artifacts.yml +53 -0
- gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/minimum_package_registry_admins.yml +54 -0
- gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/readme.md +14 -0
- gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/require_mfa_to_package_registry.yml +52 -0
- gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/restrict_anonymous_access.yml +67 -0
- gitlabcis/recommendations/artifacts_4/origin_traceability_4_4/artifact_origin_info.yml +56 -0
- gitlabcis/recommendations/artifacts_4/origin_traceability_4_4/readme.md +7 -0
- gitlabcis/recommendations/artifacts_4/package_registries_4_3/all_artifact_versions_signed.yml +70 -0
- gitlabcis/recommendations/artifacts_4/package_registries_4_3/audit_package_registry_config.yml +46 -0
- gitlabcis/recommendations/artifacts_4/package_registries_4_3/readme.md +12 -0
- gitlabcis/recommendations/artifacts_4/package_registries_4_3/secure_repo_webhooks.yml +50 -0
- gitlabcis/recommendations/artifacts_4/package_registries_4_3/validate_signed_artifacts_on_upload.yml +72 -0
- gitlabcis/recommendations/artifacts_4/readme.md +12 -0
- gitlabcis/recommendations/artifacts_4/verification_4_1/encrypt_artifacts_before_distribution.yml +47 -0
- gitlabcis/recommendations/artifacts_4/verification_4_1/only_authorized_platforms_can_decrypt_artifacts.yml +59 -0
- gitlabcis/recommendations/artifacts_4/verification_4_1/readme.md +11 -0
- gitlabcis/recommendations/artifacts_4/verification_4_1/sign_artifacts_in_build_pipeline.yml +40 -0
- gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/authenticate_build_access.yml +55 -0
- gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/build_automation.yml +54 -0
- gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/build_env_admins.yml +55 -0
- gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/build_logging.yml +49 -0
- gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/disable_build_tools_default_passwords.yml +54 -0
- gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/immutable_pipeline_infrastructure.yml +60 -0
- gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/limit_build_access.yml +64 -0
- gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/limit_build_secrets_scope.yml +56 -0
- gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/readme.md +19 -0
- gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/secure_build_env_webhooks.yml +43 -0
- gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/single_responsibility_pipeline.yml +58 -0
- gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/vuln_scanning.yml +64 -0
- gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/build_worker_vuln_scanning.yml +58 -0
- gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/monitor_worker_resource_consumption.yml +59 -0
- gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/pass_worker_envs_and_commands.yml +48 -0
- gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/readme.md +16 -0
- gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/restrict_worker_connectivity.yml +61 -0
- gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/segregate_worker_duties.yml +78 -0
- gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/single_use_workers.yml +47 -0
- gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/store_worker_config.yml +62 -0
- gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/worker_runtime_security.yml +37 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/build_stage_io.yml +49 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/build_steps_as_code.yml +42 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/limit_pipeline_triggers.yml +76 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/pipeline_misconfiguration_scanning.yml +48 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/pipeline_secret_scanning.yml +56 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/pipeline_vuln_scanning.yml +44 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/readme.md +16 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/secure_pipeline_output.yml +52 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/track_pipeline_files.yml +48 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/create_reproducible_artifacts.yml +52 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/lock_dependencies.yml +59 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/pipeline_produces_sbom.yml +81 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/pipeline_signs_sbom.yml +38 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/readme.md +14 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/sign_artifacts.yml +35 -0
- gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/validate_dependencies.yml +63 -0
- gitlabcis/recommendations/build_pipelines_2/readme.md +12 -0
- gitlabcis/recommendations/dependencies_3/readme.md +10 -0
- gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/define_package_managers.yml +84 -0
- gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/dependency_sbom.yml +84 -0
- gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/monitor_dependencies.yml +61 -0
- gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/packages_over_60_days_old.yml +95 -0
- gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/pin_dependency_version.yml +48 -0
- gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/readme.md +14 -0
- gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/third_party_sbom_required.yml +70 -0
- gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/verify_artifacts.yml +45 -0
- gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/verify_signed_metadata.yml +41 -0
- gitlabcis/recommendations/dependencies_3/validate_packages_3_2/org_wide_dependency_policy.yml +47 -0
- gitlabcis/recommendations/dependencies_3/validate_packages_3_2/package_license_scanning.yml +47 -0
- gitlabcis/recommendations/dependencies_3/validate_packages_3_2/package_ownership_change.yml +42 -0
- gitlabcis/recommendations/dependencies_3/validate_packages_3_2/package_vuln_scanning.yml +62 -0
- gitlabcis/recommendations/dependencies_3/validate_packages_3_2/readme.md +10 -0
- gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/audit_deployment_config.yml +46 -0
- gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/limit_deployment_config_access.yml +51 -0
- gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/pin_deployment_config_manifests.yml +59 -0
- gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/readme.md +13 -0
- gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/scan_iac.yml +72 -0
- gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/secret_scan_deployment_config.yml +45 -0
- gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/separate_deployment_config.yml +50 -0
- gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/verify_deployment_config.yml +49 -0
- gitlabcis/recommendations/deployment_5/deployment_environment_5_2/automate_deployment.yml +47 -0
- gitlabcis/recommendations/deployment_5/deployment_environment_5_2/disable_default_passwords.yml +63 -0
- gitlabcis/recommendations/deployment_5/deployment_environment_5_2/limit_prod_access.yml +45 -0
- gitlabcis/recommendations/deployment_5/deployment_environment_5_2/readme.md +12 -0
- gitlabcis/recommendations/deployment_5/deployment_environment_5_2/reproducible_deployment.yml +50 -0
- gitlabcis/recommendations/deployment_5/readme.md +10 -0
- gitlabcis/recommendations/readme.md +24 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/audit_branch_protections.yml +56 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/auto_risk_scan_merges.yml +62 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/branch_protections_for_admins.yml +60 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/branches_updated_before_merging.yml +56 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/checks_pass_before_merging.yml +57 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/code_approval_dismissals.yml +62 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/code_approvals.yml +65 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/code_changes_require_code_owners.yml +68 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/code_dismissal_restrictions.yml +69 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/code_owners.yml +61 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/code_tracing.yml +52 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/comments_resolved_before_merging.yml +59 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/commits_must_be_signed_before_merging.yml +63 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/default_branch_protected.yml +85 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/deny_branch_deletions.yml +76 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/ensure_force_push_is_denied.yml +59 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/linear_history_required.yml +56 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/merging_restrictions.yml +65 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/readme.md +26 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/stale_branch_reviews.yml +72 -0
- gitlabcis/recommendations/source_code_1/code_changes_1_1/version_control.yml +45 -0
- gitlabcis/recommendations/source_code_1/code_risks_1_5/dast_api_scanning.yml +50 -0
- gitlabcis/recommendations/source_code_1/code_risks_1_5/dast_web_scanning.yml +51 -0
- gitlabcis/recommendations/source_code_1/code_risks_1_5/dependency_scanning.yml +84 -0
- gitlabcis/recommendations/source_code_1/code_risks_1_5/enable_secret_detection.yml +45 -0
- gitlabcis/recommendations/source_code_1/code_risks_1_5/license_scanning.yml +47 -0
- gitlabcis/recommendations/source_code_1/code_risks_1_5/readme.md +14 -0
- gitlabcis/recommendations/source_code_1/code_risks_1_5/secure_iac_instructions.yml +81 -0
- gitlabcis/recommendations/source_code_1/code_risks_1_5/secure_pipeline_instructions.yml +62 -0
- gitlabcis/recommendations/source_code_1/code_risks_1_5/vulnerability_scanning.yml +48 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/domain_verification.yml +65 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/ensure_2_admins_per_repo.yml +56 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/limit_top_level_group_creation.yml +61 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/limit_user_registration_domain.yml +58 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/minimum_number_of_admins.yml +56 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/org_provided_ssh_certs.yml +70 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/readme.md +21 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/require_mfa_at_org_level.yml +89 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/require_mfa_for_contributors.yml +76 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/restrict_ip_addresses.yml +84 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/review_and_remove_inactive_users.yml +62 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/scm_notification_restriction.yml +46 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/strict_permissions_for_repo.yml +62 -0
- gitlabcis/recommendations/source_code_1/contribution_access_1_3/track_code_anomalies.yml +43 -0
- gitlabcis/recommendations/source_code_1/readme.md +13 -0
- gitlabcis/recommendations/source_code_1/repository_management_1_2/limit_issue_deletions.yml +57 -0
- gitlabcis/recommendations/source_code_1/repository_management_1_2/limit_repo_creations.yml +64 -0
- gitlabcis/recommendations/source_code_1/repository_management_1_2/limit_repo_deletions.yml +57 -0
- gitlabcis/recommendations/source_code_1/repository_management_1_2/public_repos_have_security_file.yml +59 -0
- gitlabcis/recommendations/source_code_1/repository_management_1_2/readme.md +15 -0
- gitlabcis/recommendations/source_code_1/repository_management_1_2/review_and_archive_stale_repos.yml +65 -0
- gitlabcis/recommendations/source_code_1/repository_management_1_2/track_forks.yml +74 -0
- gitlabcis/recommendations/source_code_1/repository_management_1_2/track_project_visibility_status.yml +74 -0
- gitlabcis/recommendations/source_code_1/third_party_1_4/README.md +12 -0
- gitlabcis/recommendations/source_code_1/third_party_1_4/admin_approval_for_app_installs.yml +83 -0
- gitlabcis/recommendations/source_code_1/third_party_1_4/least_privilge_app_permissions.yml +103 -0
- gitlabcis/recommendations/source_code_1/third_party_1_4/secure_webhooks.yml +73 -0
- gitlabcis/recommendations/source_code_1/third_party_1_4/stale_app_reviews.yml +66 -0
- gitlabcis/recommendations/template.yml +30 -0
- gitlabcis/tests/__init__.py +0 -0
- gitlabcis/tests/input/__init__.py +0 -0
- gitlabcis/tests/input/conftest.py +29 -0
- gitlabcis/tests/input/no_input_test.py +82 -0
- gitlabcis/tests/input/switch_test.py +19 -0
- gitlabcis/tests/input/version_test.py +7 -0
- gitlabcis/tests/unit/__init__.py +0 -0
- gitlabcis/tests/unit/benchmarks/artifacts_4/access_to_artifacts_4_2_test.py +131 -0
- gitlabcis/tests/unit/benchmarks/artifacts_4/origin_traceability_4_4_test.py +15 -0
- gitlabcis/tests/unit/benchmarks/artifacts_4/package_registries_4_3_test.py +102 -0
- gitlabcis/tests/unit/benchmarks/artifacts_4/verification_4_1_test.py +78 -0
- gitlabcis/tests/unit/benchmarks/build_pipelines_2/build_environment_2_1_test.py +239 -0
- gitlabcis/tests/unit/benchmarks/build_pipelines_2/build_worker_2_2_test.py +105 -0
- gitlabcis/tests/unit/benchmarks/build_pipelines_2/pipeline_instructions_2_3_test.py +340 -0
- gitlabcis/tests/unit/benchmarks/build_pipelines_2/pipeline_integrity_2_4_test.py +115 -0
- gitlabcis/tests/unit/benchmarks/conftest.py +47 -0
- gitlabcis/tests/unit/benchmarks/dependencies_3/third_party_packages_3_1_test.py +135 -0
- gitlabcis/tests/unit/benchmarks/dependencies_3/validate_packages_3_2_test.py +171 -0
- gitlabcis/tests/unit/benchmarks/deployment_5/deployment_configuration_5_1_test.py +140 -0
- gitlabcis/tests/unit/benchmarks/deployment_5/deployment_environment_5_2_test.py +60 -0
- gitlabcis/tests/unit/benchmarks/function_test.py +24 -0
- gitlabcis/tests/unit/benchmarks/source_code_1/code_changes_1_1_test.py +565 -0
- gitlabcis/tests/unit/benchmarks/source_code_1/code_risks_1_5_test.py +419 -0
- gitlabcis/tests/unit/benchmarks/source_code_1/contribution_access_1_3_test.py +265 -0
- gitlabcis/tests/unit/benchmarks/source_code_1/repository_management_1_2_test.py +142 -0
- gitlabcis/tests/unit/benchmarks/source_code_1/third_party_1_4_test.py +119 -0
- gitlabcis/tests/unit/conftest.py +94 -0
- gitlabcis/tests/unit/log/log_test.py +23 -0
- gitlabcis/tests/unit/utils/argfilters_test.py +9 -0
- gitlabcis/tests/unit/utils/ci_test.py +156 -0
- gitlabcis/tests/unit/utils/output_test.py +95 -0
- gitlabcis/tests/unit/utils/utils_general_test.py +149 -0
- gitlabcis/tests/unit/utils/version_test.py +11 -0
- gitlabcis/tests/unit/yaml/bad_file_test.py +15 -0
- gitlabcis/tests/unit/yaml/recommendation_test.py +123 -0
- gitlabcis/utils/__init__.py +146 -0
- gitlabcis/utils/ci.py +132 -0
- gitlabcis-1.3.2.dist-info/LICENSE +21 -0
- gitlabcis-1.3.2.dist-info/METADATA +241 -0
- gitlabcis-1.3.2.dist-info/RECORD +218 -0
- gitlabcis-1.3.2.dist-info/WHEEL +5 -0
- gitlabcis-1.3.2.dist-info/entry_points.txt +2 -0
- gitlabcis-1.3.2.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 1.5.2
|
|
3
|
+
name: secure_pipeline_instructions
|
|
4
|
+
title: Detect and prevent misconfigurations and insecure instructions in CI pipelines
|
|
5
|
+
profile: 2
|
|
6
|
+
category: source_code
|
|
7
|
+
sub_category: code_risks
|
|
8
|
+
description: >-
|
|
9
|
+
Detect and prevent misconfigurations and insecure instructions in CI pipelines
|
|
10
|
+
rationale: >-
|
|
11
|
+
Detecting and fixing misconfigurations or insecure instructions in CI pipelines decreases
|
|
12
|
+
the risk for a successful attack through or on the CI pipeline. The more secure the
|
|
13
|
+
pipeline, the less risk there is for potential exposure of sensitive data, a deployment
|
|
14
|
+
being compromised, or external access mistakenly being granted to the CI infrastructure
|
|
15
|
+
or the source code.
|
|
16
|
+
impact: >-
|
|
17
|
+
audit: |
|
|
18
|
+
For every project:
|
|
19
|
+
• Identify if one or more CI configuration files exist
|
|
20
|
+
• Review CI configuration files for misconfigurations or insecure instructions
|
|
21
|
+
• Review whether the absence of any CI configuration is itself a misconfiguration
|
|
22
|
+
remediation: |
|
|
23
|
+
For every project identified during the Audit as having misconfigured or insecure CI instructions:
|
|
24
|
+
• Update the CI instructions
|
|
25
|
+
• Consider using Scan Execution Policies at the project or group level to enforce security scans
|
|
26
|
+
• Consider using the Compliance Framework feature to enforce pipeline configuration
|
|
27
|
+
• Consider procuring and enabling a CI instructions scanning tool to identify and
|
|
28
|
+
prevent misconfigurations and insecure instructions and scans all CI pipelines.
|
|
29
|
+
default_value:
|
|
30
|
+
references:
|
|
31
|
+
cis_controls:
|
|
32
|
+
- id: 7.5
|
|
33
|
+
version: 8
|
|
34
|
+
name: Perform Automated Vulnerability Scans of Internal Enterprise Assets
|
|
35
|
+
description: >-
|
|
36
|
+
Perform automated vulnerability scans of internal enterprise assets on a
|
|
37
|
+
quarterly, or more frequent, basis. Conduct both authenticated and
|
|
38
|
+
unauthenticated scans, using a SCAP-compliant vulnerability scanning tool.
|
|
39
|
+
implementation_groups:
|
|
40
|
+
- IG2
|
|
41
|
+
- IG3
|
|
42
|
+
- id: 7.6
|
|
43
|
+
version: 8
|
|
44
|
+
name: Perform Automated Vulnerability Scans of Externally-Exposed Enterprise Assets
|
|
45
|
+
description: >-
|
|
46
|
+
Perform automated vulnerability scans of externally-exposed enterprise assets
|
|
47
|
+
using a SCAP-compliant vulnerability scanning tool. Perform scans on a monthly,
|
|
48
|
+
or more frequent, basis.
|
|
49
|
+
implementation_groups:
|
|
50
|
+
- IG2
|
|
51
|
+
- IG3
|
|
52
|
+
- id: 3.1
|
|
53
|
+
version: 7
|
|
54
|
+
name: Run Automated Vulnerability Scanning Tools
|
|
55
|
+
description: >-
|
|
56
|
+
Utilize an up-to-date SCAP-compliant vulnerability scanning tool to
|
|
57
|
+
automatically scan all systems on the network on a weekly or more frequent basis
|
|
58
|
+
to identify all potential vulnerabilities on the organization's systems.
|
|
59
|
+
implementation_groups:
|
|
60
|
+
- IG2
|
|
61
|
+
- IG3
|
|
62
|
+
additional_info: >-
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 1.5.4
|
|
3
|
+
name: vulnerability_scanning
|
|
4
|
+
title: Ensure scanners are in place for code vulnerabilities
|
|
5
|
+
profile: 2
|
|
6
|
+
category: source_code
|
|
7
|
+
sub_category: code_risks
|
|
8
|
+
description: >-
|
|
9
|
+
Detect and prevent known open source vulnerabilities in the code.
|
|
10
|
+
rationale: >-
|
|
11
|
+
Open source code blocks are used a lot in developed software. This has its own
|
|
12
|
+
advantages, but it also has risks. Because the code is open for everyone, it means that
|
|
13
|
+
attackers can publish or add malicious code to these open-source code blocks, or use
|
|
14
|
+
their knowledge to find vulnerabilities in an existing code. Detecting and fixing such
|
|
15
|
+
code vulnerabilities, by SCA (Software Composition Analysis) prevents insecure flaws
|
|
16
|
+
from reaching production. It gives another opportunity for developers to secure the
|
|
17
|
+
source code before it is deployed in production, where it is far more exposed and
|
|
18
|
+
vulnerable to attacks.
|
|
19
|
+
impact: >-
|
|
20
|
+
audit: |
|
|
21
|
+
For every repository that is in use, verify that a scanning tool is set to identify and prevent code vulnerabilities by performing the following:
|
|
22
|
+
1. On GitLab, navigate to the main page of the repository.
|
|
23
|
+
2. Review the CI pipeline configuration to verify that SAST has been configured to run on this project.
|
|
24
|
+
remediation: |
|
|
25
|
+
For every repository that is in use, set a scanning tool to identify and prevent code vulnerabilities by performing the following:
|
|
26
|
+
1. On GitLab, navigate to the main page of the repository.
|
|
27
|
+
2. Configure SAST to run on this project.
|
|
28
|
+
default_value:
|
|
29
|
+
references:
|
|
30
|
+
cis_controls:
|
|
31
|
+
- id: 16.12
|
|
32
|
+
version: 8
|
|
33
|
+
name: Implement Code-Level Security Checks
|
|
34
|
+
description: >-
|
|
35
|
+
Apply static and dynamic analysis tools within the application life cycle to verify
|
|
36
|
+
that secure coding practices are being followed.
|
|
37
|
+
implementation_groups:
|
|
38
|
+
- IG3
|
|
39
|
+
- id: 18.7
|
|
40
|
+
version: 7
|
|
41
|
+
name: Apply Static and Dynamic Code Analysis Tools
|
|
42
|
+
description: >-
|
|
43
|
+
Apply static and dynamic analysis tools to verify that secure coding
|
|
44
|
+
practices are being adhered to for internally developed software.
|
|
45
|
+
implementation_groups:
|
|
46
|
+
- IG2
|
|
47
|
+
- IG3
|
|
48
|
+
additional_info: >-
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 1.3.9
|
|
3
|
+
name: domain_verification
|
|
4
|
+
title: Ensure an organization's identity is confirmed with a “Verified” badge
|
|
5
|
+
profile: 2
|
|
6
|
+
category: source_code
|
|
7
|
+
sub_category: contribution_access
|
|
8
|
+
description: >-
|
|
9
|
+
Confirm the domains an organization owns with a "Verified" badge.
|
|
10
|
+
rationale: >-
|
|
11
|
+
Verifying the organization's domain gives developers assurance that a given domain is
|
|
12
|
+
truly the official home for a public organization. Attackers can pretend to be an
|
|
13
|
+
organization and steal information via a faked/spoof domain, therefore the use of a
|
|
14
|
+
"Verified" badge instills more confidence and trust between developers and the open-
|
|
15
|
+
source community.
|
|
16
|
+
impact: >-
|
|
17
|
+
audit: >-
|
|
18
|
+
On the left sidebar, select Search or go to and find your top-level group.
|
|
19
|
+
Select Settings > Domain Verification.
|
|
20
|
+
View your domains and if they are verified or unverified.
|
|
21
|
+
remediation: |
|
|
22
|
+
Step 1:
|
|
23
|
+
• On the left sidebar, select Search or go to and find your top-level group.
|
|
24
|
+
• Select Settings > Domain Verification.
|
|
25
|
+
• In the upper-right corner, select Add Domain.
|
|
26
|
+
• In Domain, enter the domain name.
|
|
27
|
+
• In Project, link to a project.
|
|
28
|
+
• In Certificate:
|
|
29
|
+
• If you do not have or do not want to use an SSL certificate, leave Automatic certificate management using Let's Encrypt selected.
|
|
30
|
+
• Optional. Turn on the Manually enter certificate information toggle to add an SSL/TLS certificate. You can also add the certificate and key later.
|
|
31
|
+
• Select Add Domain.
|
|
32
|
+
Step 2:
|
|
33
|
+
• After you create a new domain, the verification code prompts you. Copy the values from GitLab and paste them in your domain's control panel as a TXT record.
|
|
34
|
+
Step 3:
|
|
35
|
+
After you have added all the DNS records:
|
|
36
|
+
• On the left sidebar, select Search or go to and find your group.
|
|
37
|
+
• Select Settings > Domain Verification.
|
|
38
|
+
• On the domain table row, Select Retry verification ().
|
|
39
|
+
default_value:
|
|
40
|
+
references:
|
|
41
|
+
- https://docs.gitlab.com/ee/user/enterprise_user/#verified-domains-for-groups
|
|
42
|
+
cis_controls:
|
|
43
|
+
- id: 16.1
|
|
44
|
+
version: 8
|
|
45
|
+
name: Establish and Maintain a Secure Application Development Process
|
|
46
|
+
description: >-
|
|
47
|
+
Establish and maintain a secure application development process. In the
|
|
48
|
+
process, address such items as: secure application design standards, secure coding
|
|
49
|
+
practices, developer training, vulnerability management, security of third-party code,
|
|
50
|
+
and application security testing procedures. Review and update documentation
|
|
51
|
+
annually, or when significant enterprise changes occur that could impact this
|
|
52
|
+
Safeguard.
|
|
53
|
+
implementation_groups:
|
|
54
|
+
- IG2
|
|
55
|
+
- IG3
|
|
56
|
+
- id: 18.1
|
|
57
|
+
version: 7
|
|
58
|
+
name: Establish Secure Coding Practices
|
|
59
|
+
description: >-
|
|
60
|
+
Establish secure coding practices appropriate to the programming language and
|
|
61
|
+
development environment being used.
|
|
62
|
+
implementation_groups:
|
|
63
|
+
- IG2
|
|
64
|
+
- IG3
|
|
65
|
+
additional_info: >-
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 1.3.7
|
|
3
|
+
name: ensure_2_admins_per_repo
|
|
4
|
+
title: Ensure two administrators are set for each repository
|
|
5
|
+
profile: 2
|
|
6
|
+
category: source_code
|
|
7
|
+
sub_category: contribution_access
|
|
8
|
+
description: >-
|
|
9
|
+
Ensure every repository has two users with administrative permissions.
|
|
10
|
+
rationale: >-
|
|
11
|
+
Repository administrators have the highest permissions to said repository. These
|
|
12
|
+
include the ability to add/remove collaborators, change branch protection policy, and
|
|
13
|
+
convert to a publicly-accessible repository. Due to the liberal access granted to a
|
|
14
|
+
repository administrator, it is highly recommended that only two contributors occupy this
|
|
15
|
+
role.
|
|
16
|
+
impact: >-
|
|
17
|
+
Removing administrative users from a repository would result in them losing high-level
|
|
18
|
+
access to that repository.
|
|
19
|
+
audit: |
|
|
20
|
+
For every group, verify there are two administrators by performing the following:
|
|
21
|
+
• On the left sidebar, at the bottom, select Admin Area.
|
|
22
|
+
• Select Overview > Users.
|
|
23
|
+
• List users selecting the Admin tab.
|
|
24
|
+
• Verify that there are only 2 members with Admin permission.
|
|
25
|
+
remediation: |
|
|
26
|
+
For every group in use, set two administrators by performing the following:
|
|
27
|
+
• On the left sidebar, at the bottom, select Admin Area.
|
|
28
|
+
• Select Overview > Users.
|
|
29
|
+
• List users selecting the Admin tab.
|
|
30
|
+
• Find the team or person whose you'd like to revoke admin permissions. To edit a user, in the user's row, select Edit.
|
|
31
|
+
default_value:
|
|
32
|
+
references:
|
|
33
|
+
- https://docs.gitlab.com/ee/administration/admin_area.html#administering-users
|
|
34
|
+
cis_controls:
|
|
35
|
+
- id: 3.3
|
|
36
|
+
version: 8
|
|
37
|
+
name: Configure Data Access Control Lists
|
|
38
|
+
description: >-
|
|
39
|
+
Configure data access control lists based on a user's need to know. Apply data
|
|
40
|
+
access control lists, also known as access permissions, to local and remote file
|
|
41
|
+
systems, databases, and applications.
|
|
42
|
+
implementation_groups:
|
|
43
|
+
- IG1
|
|
44
|
+
- IG2
|
|
45
|
+
- IG3
|
|
46
|
+
- id: 14.6
|
|
47
|
+
version: 7
|
|
48
|
+
name: Protect Information through Access Control Lists
|
|
49
|
+
description: >-
|
|
50
|
+
Protect all information stored on systems with file system, network share,
|
|
51
|
+
claims, application, or database specific access control lists. These controls will
|
|
52
|
+
enforce the principle that only authorized individuals should have access to the
|
|
53
|
+
information based on their need to access the information as a part of their
|
|
54
|
+
responsibilities.
|
|
55
|
+
implementation_groups:
|
|
56
|
+
additional_info: >-
|
gitlabcis/recommendations/source_code_1/contribution_access_1_3/limit_top_level_group_creation.yml
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 1.3.2
|
|
3
|
+
name: limit_top_level_group_creation
|
|
4
|
+
title: Ensure top-level group creation is limited to specific members
|
|
5
|
+
profile: 1
|
|
6
|
+
category: source_code
|
|
7
|
+
sub_category: contribution_access
|
|
8
|
+
description: >-
|
|
9
|
+
Limit ability to create teams to trusted and specific users.
|
|
10
|
+
rationale: >-
|
|
11
|
+
The ability to create new teams should be restricted to specific members in order to
|
|
12
|
+
keep the organization orderly and ensure users have access to only the lowest privilege
|
|
13
|
+
level necessary. Teams typically inherit permissions from their parent team, thus if base
|
|
14
|
+
permissions are less restricted and any user has the ability to create a team, a
|
|
15
|
+
permission leverage could occur in which certain data is made available to users who
|
|
16
|
+
should not have access to it. Such a situation could potentially lead to the creation of
|
|
17
|
+
shadow teams by an attacker. Restricting team creation will also reduce additional
|
|
18
|
+
clutter in the organizational structure, and as a result will make it easier to track
|
|
19
|
+
changes and anomalies.
|
|
20
|
+
impact: >-
|
|
21
|
+
Only specific users will be able to create new teams.
|
|
22
|
+
audit: |
|
|
23
|
+
For every organization, ensure that top-level group creation is limited to specific, trusted users by performing the following:
|
|
24
|
+
• On the left sidebar, at the bottom, select Admin Area.
|
|
25
|
+
• Select Settings > General.
|
|
26
|
+
• Expand Account and limit.
|
|
27
|
+
• Verify that the Allow new users to create top-level groups checkbox is not checked.
|
|
28
|
+
remediation: |
|
|
29
|
+
For every organization, limit top-level group creation to specific, trusted users by performing the following:
|
|
30
|
+
• On the left sidebar, at the bottom, select Admin Area.
|
|
31
|
+
• Select Settings > General.
|
|
32
|
+
• Expand Account and limit.
|
|
33
|
+
• Clear the Allow new users to create top-level groups checkbox.
|
|
34
|
+
default_value:
|
|
35
|
+
references:
|
|
36
|
+
- https://docs.gitlab.com/ee/administration/settings/account_and_limit_settings.html#prevent-new-users-from-creating-top-level-groups
|
|
37
|
+
cis_controls:
|
|
38
|
+
- id: 5.4
|
|
39
|
+
version: 8
|
|
40
|
+
name: Restrict Administrator Privileges to Dedicated Administrator Accounts
|
|
41
|
+
description: >-
|
|
42
|
+
Restrict administrator privileges to dedicated administrator accounts on
|
|
43
|
+
enterprise assets. Conduct general computing activities, such as internet
|
|
44
|
+
browsing, email, and productivity suite use, from the user's primary, non-privileged
|
|
45
|
+
account.
|
|
46
|
+
implementation_groups:
|
|
47
|
+
- IG1
|
|
48
|
+
- IG2
|
|
49
|
+
- IG3
|
|
50
|
+
- id: 4.3
|
|
51
|
+
version: 7
|
|
52
|
+
name: Ensure the Use of Dedicated Administrative Accounts
|
|
53
|
+
description: >-
|
|
54
|
+
Ensure that all users with administrative account access use a dedicated or
|
|
55
|
+
secondary account for elevated activities. This account should only be used for
|
|
56
|
+
administrative activities and not internet browsing, email, or similar activities.
|
|
57
|
+
implementation_groups:
|
|
58
|
+
- IG1
|
|
59
|
+
- IG2
|
|
60
|
+
- IG3
|
|
61
|
+
additional_info: >-
|
gitlabcis/recommendations/source_code_1/contribution_access_1_3/limit_user_registration_domain.yml
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 1.3.6
|
|
3
|
+
name: limit_user_registration_domain
|
|
4
|
+
title: Ensure new members are required to be invited using company-approved email
|
|
5
|
+
profile: 2
|
|
6
|
+
category: source_code
|
|
7
|
+
sub_category: contribution_access
|
|
8
|
+
description: >-
|
|
9
|
+
Existing members of an organization can invite new members to join, however new
|
|
10
|
+
members must only be invited with their company-approved email.
|
|
11
|
+
rationale: >-
|
|
12
|
+
Ensuring new members of an organization have company-approved email prevents
|
|
13
|
+
existing members of the organization from inviting arbitrary new users to join. Without
|
|
14
|
+
this verification, they can invite anyone who is using the organization's version control
|
|
15
|
+
system or has an active email account, thus allowing outside users (and potential threat
|
|
16
|
+
actors) to easily gain access to company private code and resources. This practice will
|
|
17
|
+
subsequently reduce the chance of human error or typos when inviting a new member.
|
|
18
|
+
impact: >-
|
|
19
|
+
Existing members would not be able to invite new users who do not have a company-
|
|
20
|
+
approved email address.
|
|
21
|
+
audit: >-
|
|
22
|
+
For each group in use, verify for every invitation that the invited email address is
|
|
23
|
+
company-approved by performing the following:
|
|
24
|
+
On the left sidebar, select Search or go to and find your group.
|
|
25
|
+
Select Manage > Members.
|
|
26
|
+
Members that are not automatically added are displayed on the Invited tab.
|
|
27
|
+
Verify that each invitation email is company approved by your company.
|
|
28
|
+
remediation: >-
|
|
29
|
+
For each group, allow only users with company-approved email to be invited. If a user
|
|
30
|
+
was invited without company-approved email, perform the following:
|
|
31
|
+
On the left sidebar, select Search or go to and find your group.
|
|
32
|
+
Select Manage > Members.
|
|
33
|
+
Members that are not automatically added are displayed on the Invited tab.
|
|
34
|
+
Verify that each invitation email is company approved by your company.
|
|
35
|
+
To cancel the user's invitation to join your organization, click Cancel invitation.
|
|
36
|
+
default_value:
|
|
37
|
+
references:
|
|
38
|
+
- https://docs.gitlab.com/ee/user/group/#add-users-to-a-group
|
|
39
|
+
cis_controls:
|
|
40
|
+
- id: 6.1
|
|
41
|
+
version: 8
|
|
42
|
+
name: Establish an Access Granting Process
|
|
43
|
+
description: >-
|
|
44
|
+
Establish and follow a process, preferably automated, for granting access to
|
|
45
|
+
enterprise assets upon new hire, rights grant, or role change of a user.
|
|
46
|
+
implementation_groups:
|
|
47
|
+
- IG1
|
|
48
|
+
- IG2
|
|
49
|
+
- IG3
|
|
50
|
+
- id: 14.7
|
|
51
|
+
version: 7
|
|
52
|
+
name: Enforce Access Control to Data through Automated Tools
|
|
53
|
+
description: >-
|
|
54
|
+
Use an automated tool, such as host-based Data Loss Prevention, to
|
|
55
|
+
enforce access controls to data even when data is copied off a system.
|
|
56
|
+
implementation_groups:
|
|
57
|
+
- IG3
|
|
58
|
+
additional_info: >-
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 1.3.3
|
|
3
|
+
name: minimum_number_of_admins
|
|
4
|
+
title: Ensure minimum number of administrators are set for the organization
|
|
5
|
+
profile: 1
|
|
6
|
+
category: source_code
|
|
7
|
+
sub_category: contribution_access
|
|
8
|
+
description: >-
|
|
9
|
+
Ensure the organization has a minimum number of administrators.
|
|
10
|
+
rationale: >-
|
|
11
|
+
Organization administrators have the highest level of permissions, including the ability
|
|
12
|
+
to add/remove collaborators, create or delete repositories, change branch protection
|
|
13
|
+
policy, and convert to a publicly-accessible repository. Due to the permissive access
|
|
14
|
+
granted to an organization administrator, it is highly recommended to keep the number
|
|
15
|
+
of administrator accounts as minimal as possible.
|
|
16
|
+
impact: >-
|
|
17
|
+
audit: |
|
|
18
|
+
Verify the minimum number of administrators in your project by performing the following:
|
|
19
|
+
• On the left sidebar, select Search or go to and find your project.
|
|
20
|
+
• Select Manage > Members.
|
|
21
|
+
• At the top of the member list, from the dropdown list, select Max role the members have in the group and descending order.
|
|
22
|
+
• If there are minimum number of members with Owner/Maintainer role in the list, you are compliant.
|
|
23
|
+
remediation: |
|
|
24
|
+
Set the minimum number of administrators in your project by performing the following:
|
|
25
|
+
• On the left sidebar, select Search or go to and find your project.
|
|
26
|
+
• Select Manage > Members.
|
|
27
|
+
• At the top of the member list, from the dropdown list, select Max role the members have in the group and descending order.
|
|
28
|
+
• Next to the project member you want to remove, select Remove member.
|
|
29
|
+
default_value:
|
|
30
|
+
references:
|
|
31
|
+
- https://docs.gitlab.com/ee/user/project/members/#filter-and-sort-project-members
|
|
32
|
+
cis_controls:
|
|
33
|
+
- id: 5.4
|
|
34
|
+
version: 8
|
|
35
|
+
name: Restrict Administrator Privileges to Dedicated Administrator Accounts
|
|
36
|
+
description: >-
|
|
37
|
+
Restrict administrator privileges to dedicated administrator accounts on
|
|
38
|
+
enterprise assets. Conduct general computing activities, such as internet
|
|
39
|
+
browsing, email, and productivity suite use, from the user's primary, non-privileged
|
|
40
|
+
account.
|
|
41
|
+
implementation_groups:
|
|
42
|
+
- IG1
|
|
43
|
+
- IG2
|
|
44
|
+
- IG3
|
|
45
|
+
- id: 4.3
|
|
46
|
+
version: 7
|
|
47
|
+
name: Ensure the Use of Dedicated Administrative Accounts
|
|
48
|
+
description: >-
|
|
49
|
+
Ensure that all users with administrative account access use a dedicated or
|
|
50
|
+
secondary account for elevated activities. This account should only be used for
|
|
51
|
+
administrative activities and not internet browsing, email, or similar activities.
|
|
52
|
+
implementation_groups:
|
|
53
|
+
- IG1
|
|
54
|
+
- IG2
|
|
55
|
+
- IG3
|
|
56
|
+
additional_info: >-
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 1.3.11
|
|
3
|
+
name: org_provided_ssh_certs
|
|
4
|
+
title: Ensure an organization provides SSH certificates
|
|
5
|
+
profile: 2
|
|
6
|
+
category: source_code
|
|
7
|
+
sub_category: contribution_access
|
|
8
|
+
description: >-
|
|
9
|
+
As an organization, become an SSH Certificate Authority and provide SSH keys for
|
|
10
|
+
accessing repositories.
|
|
11
|
+
rationale: >-
|
|
12
|
+
There are two ways for remotely working with Source Code Management: via HTTPS,
|
|
13
|
+
which requires authentication by user/password, or via SSH, which requires the use of
|
|
14
|
+
SSH keys. SSH authentication is better in terms of security; key creation and
|
|
15
|
+
distribution, however, must be done in a secure manner. This can be accomplished by
|
|
16
|
+
implementing SSH certificates, which are used to validate the server's identity. A
|
|
17
|
+
developer will not be able to connect to a Git server if its key cannot be verified by the
|
|
18
|
+
SSH Certificate Authority (CA) server. As an organization, one can verify the SSH
|
|
19
|
+
certificate signature used to authenticate if a CA is defined and used. This ensures that
|
|
20
|
+
only verified developers can access organization repositories, as their SSH key will be
|
|
21
|
+
the only one signed by the CA certificate. This reduces the risk of misuse and malicious
|
|
22
|
+
code commits.
|
|
23
|
+
impact: >-
|
|
24
|
+
Members with unverified keys will not be able to clone organization repositories.
|
|
25
|
+
Signing, certification, and verification might also slow down the development process.
|
|
26
|
+
audit: |
|
|
27
|
+
GitLab allows you to restrict the allowed SSH key technology as well as specify the minimum key length for each technology:
|
|
28
|
+
1. On the left sidebar, at the bottom, select Admin Area.
|
|
29
|
+
2. Select Settings > General .
|
|
30
|
+
3. Expand Visibility and access controls
|
|
31
|
+
4. If a restriction is imposed on any key type, users cannot upload new SSH keys that don't meet the requirement. Any existing keys that don't meet it are disabled but not removed and users cannot pull or push code using them.
|
|
32
|
+
remediation: |
|
|
33
|
+
If you do not have an existing SSH key pair, generate a new one:
|
|
34
|
+
1. Open a terminal.
|
|
35
|
+
2. Run ssh-keygen -t followed by the key type and an optional comment. This comment is included in the .pub file that's created.
|
|
36
|
+
3. Press Enter.
|
|
37
|
+
4. Accept the suggested filename and directory, unless you are generating a deploy key or want to save in a specific directory where you store other keys.
|
|
38
|
+
5. Specify a passphrase
|
|
39
|
+
6. A confirmation is displayed, including information about where your files are stored. A public and private key are generated.
|
|
40
|
+
7. Add the public SSH key to your GitLab account and keep the private key secure.
|
|
41
|
+
default_value:
|
|
42
|
+
references:
|
|
43
|
+
- https://docs.gitlab.com/ee/user/ssh.html#generate-an-ssh-key-pair
|
|
44
|
+
- https://docs.gitlab.com/ee/security/ssh_keys_restrictions.html
|
|
45
|
+
cis_controls:
|
|
46
|
+
- id: 12.5
|
|
47
|
+
version: 8
|
|
48
|
+
name: Centralize Network Authentication, Authorization, and Auditing (AAA)
|
|
49
|
+
description: >-
|
|
50
|
+
Centralize network AAA.
|
|
51
|
+
implementation_groups:
|
|
52
|
+
- IG2
|
|
53
|
+
- IG3
|
|
54
|
+
- id: 12.7
|
|
55
|
+
version: 8
|
|
56
|
+
name: Ensure Remote Devices Utilize a VPN and are Connecting to an Enterprise's AAA Infrastructure
|
|
57
|
+
description: >-
|
|
58
|
+
Require users to authenticate to enterprise-managed VPN and authentication
|
|
59
|
+
services prior to accessing enterprise resources on end-user devices.
|
|
60
|
+
implementation_groups:
|
|
61
|
+
- IG2
|
|
62
|
+
- IG3
|
|
63
|
+
- id: 1.8
|
|
64
|
+
version: 7
|
|
65
|
+
name: Utilize Client Certificates to Authenticate Hardware Assets
|
|
66
|
+
description: >-
|
|
67
|
+
Use client certificates to authenticate hardware assets connecting to the organization's trusted network.
|
|
68
|
+
implementation_groups:
|
|
69
|
+
- IG3
|
|
70
|
+
additional_info: >-
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# 1.3 Contribution Access
|
|
2
|
+
|
|
3
|
+
This section consists of security recommendations for managing access to the application code. This includes managing both internal and external access, administrator accounts, permissions, identification methods, etc. Securing these items is important for software safety because every security constraint on access is an obstacle in the way of attacks.
|
|
4
|
+
|
|
5
|
+
This section differentiates between the common user account and an admin account. It is important to understand that due to the high permissions of the admin account, it should be used only for administrative work and not for everyday tasks.
|
|
6
|
+
|
|
7
|
+
## Recommendations
|
|
8
|
+
|
|
9
|
+
* [1.3.1 - review_and_remove_inactive_users.yml](./review_and_remove_inactive_users.yml)
|
|
10
|
+
* [1.3.2 - limit_top_level_group_creation.yml](./limit_top_level_group_creation.yml)
|
|
11
|
+
* [1.3.3 - minimum_number_of_admins.yml](./minimum_number_of_admins.yml)
|
|
12
|
+
* [1.3.4 - require_mfa_for_contributors.yml](./require_mfa_for_contributors.yml)
|
|
13
|
+
* [1.3.5 - require_mfa_at_org_level.yml](./require_mfa_at_org_level.yml)
|
|
14
|
+
* [1.3.6 - limit_user_registration_domain.yml](./limit_user_registration_domain.yml)
|
|
15
|
+
* [1.3.7 - ensure_2_admins_per_repo.yml](./ensure_2_admins_per_repo.yml)
|
|
16
|
+
* [1.3.8 - strict_permissions_for_repo.yml](./strict_permissions_for_repo.yml)
|
|
17
|
+
* [1.3.9 - domain_verification.yml](./domain_verification.yml)
|
|
18
|
+
* [1.3.10 - scm_notification_restriction.yml](./scm_notification_restriction.yml)
|
|
19
|
+
* [1.3.11 - org_provided_ssh_certs.yml](./org_provided_ssh_certs.yml)
|
|
20
|
+
* [1.3.12 - restrict_ip_addresses.yml](./restrict_ip_addresses.yml)
|
|
21
|
+
* [1.3.13 - track_code_anomalies.yml](./track_code_anomalies.yml)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 1.3.5
|
|
3
|
+
name: require_mfa_at_org_level
|
|
4
|
+
title: Ensure the organization is requiring members to use Multi-Factor Authentication (MFA)
|
|
5
|
+
profile: 2
|
|
6
|
+
category: source_code
|
|
7
|
+
sub_category: contribution_access
|
|
8
|
+
description: >-
|
|
9
|
+
Require members of the organization to use Multi-Factor Authentication (MFA) in
|
|
10
|
+
addition to a standard user name and password when authenticating to the source code
|
|
11
|
+
management platform.
|
|
12
|
+
rationale: >-
|
|
13
|
+
By default every user authenticates within the system by password only. If the password
|
|
14
|
+
of a user is compromised, however, the user account and every repository to which they
|
|
15
|
+
have access are in danger of data loss, malicious code commits, and data theft. It is
|
|
16
|
+
therefore recommended that each user has Multi-Factor Authentication enabled. This
|
|
17
|
+
adds an additional layer of protection to ensure the account remains secure even if the
|
|
18
|
+
user's password is compromised.
|
|
19
|
+
impact: >-
|
|
20
|
+
Members will be removed from the organization if they don't have Multi-Factor
|
|
21
|
+
Authentication already enabled. If this is the case, it is recommended that an invitation
|
|
22
|
+
be sent to reinstate the user's access and former privileges. They must enable Multi-
|
|
23
|
+
Factor Authentication to accept the invitation.
|
|
24
|
+
audit: |
|
|
25
|
+
For every organization that exists in your GitLab platform, verify that Two-Factor Authentication is enforced and is the only way to authenticate. Administrators can enforce 2FA for all users in two different ways:
|
|
26
|
+
• Enforce on next sign in.
|
|
27
|
+
• Suggest on next sign in, but allow a grace period before enforcing.
|
|
28
|
+
|
|
29
|
+
Use the UI:
|
|
30
|
+
1. On the left sidebar, select Search or go to.
|
|
31
|
+
2. Select Admin Area.
|
|
32
|
+
3. On the left sidebar, select Settings > General.
|
|
33
|
+
4. Expand the Sign-in restrictions section:
|
|
34
|
+
5. Verify that Enforce two-factor authentication is enabled.
|
|
35
|
+
remediation: |
|
|
36
|
+
Use the UI:
|
|
37
|
+
1. On the left sidebar, select Search or go to.
|
|
38
|
+
2. Select Admin Area.
|
|
39
|
+
3. On the left sidebar, select Settings > General.
|
|
40
|
+
4. Expand the Sign-in restrictions section:
|
|
41
|
+
• Select Enforce two-factor authentication to enable this feature.
|
|
42
|
+
• In Two-factor grace period, enter a number of hours. If you want to enforce 2FA on next sign-in attempt, enter 0.
|
|
43
|
+
|
|
44
|
+
Use the API:
|
|
45
|
+
Use the application settings API to modify the following settings:
|
|
46
|
+
• require_two_factor_authentication, set to TRUE.
|
|
47
|
+
default_value:
|
|
48
|
+
references:
|
|
49
|
+
- https://docs.gitlab.com/ee/security/two_factor_authentication.html
|
|
50
|
+
cis_controls:
|
|
51
|
+
- id: 6.3
|
|
52
|
+
version: 8
|
|
53
|
+
name: Require MFA for Externally-Exposed Applications
|
|
54
|
+
description: >-
|
|
55
|
+
Require all externally-exposed enterprise or third-party applications to enforce
|
|
56
|
+
MFA, where supported. Enforcing MFA through a directory service or SSO
|
|
57
|
+
provider is a satisfactory implementation of this Safeguard.
|
|
58
|
+
implementation_groups:
|
|
59
|
+
- IG2
|
|
60
|
+
- IG3
|
|
61
|
+
- id: 6.4
|
|
62
|
+
version: 8
|
|
63
|
+
name: Require MFA for Remote Network Access
|
|
64
|
+
description: >-
|
|
65
|
+
Require MFA for remote network access
|
|
66
|
+
implementation_groups:
|
|
67
|
+
- IG1
|
|
68
|
+
- IG2
|
|
69
|
+
- IG3
|
|
70
|
+
- id: 6.5
|
|
71
|
+
version: 8
|
|
72
|
+
name: Require MFA for Administrative Access
|
|
73
|
+
description: >-
|
|
74
|
+
Require MFA for all administrative access accounts, where supported, on all
|
|
75
|
+
enterprise assets, whether managed on-site or through a third-party provider.
|
|
76
|
+
implementation_groups:
|
|
77
|
+
- IG1
|
|
78
|
+
- IG2
|
|
79
|
+
- IG3
|
|
80
|
+
- id: 16.3
|
|
81
|
+
version: 7
|
|
82
|
+
name: Require Multi-factor Authentication
|
|
83
|
+
description: >-
|
|
84
|
+
Require multi-factor authentication for all user accounts, on all systems,
|
|
85
|
+
whether managed onsite or by a third-party provider.
|
|
86
|
+
implementation_groups:
|
|
87
|
+
- IG2
|
|
88
|
+
- IG3
|
|
89
|
+
additional_info: >-
|
gitlabcis/recommendations/source_code_1/contribution_access_1_3/require_mfa_for_contributors.yml
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 1.3.4
|
|
3
|
+
name: require_mfa_for_contributors
|
|
4
|
+
title: Ensure Multi-Factor Authentication (MFA) is required for contributors of new code
|
|
5
|
+
profile: 2
|
|
6
|
+
category: source_code
|
|
7
|
+
sub_category: contribution_access
|
|
8
|
+
description: >-
|
|
9
|
+
Require collaborators from outside the organization to use Multi-Factor Authentication
|
|
10
|
+
(MFA) in addition to a standard user name and password when authenticating to the
|
|
11
|
+
source code management platform.
|
|
12
|
+
rationale: >-
|
|
13
|
+
By default every user authenticates within the system by password only. If the password
|
|
14
|
+
of a user is compromised, however, the user account and every repository to which they
|
|
15
|
+
have access are in danger of data loss, malicious code commits, and data theft. It is
|
|
16
|
+
therefore recommended that each user has Multi-Factor Authentication enabled. This
|
|
17
|
+
adds an additional layer of protection to ensure the account remains secure even if the
|
|
18
|
+
user's password is compromised.
|
|
19
|
+
impact: >-
|
|
20
|
+
A member without enabled Multi-Factor Authentication cannot contribute to the project.
|
|
21
|
+
They must enable Multi-Factor Authentication a before they can contribute any code.
|
|
22
|
+
audit: |
|
|
23
|
+
For your top-level group, verify that Multi-Factor Authentication is enforced for contributors and is the only way to authenticate, by doing the following:
|
|
24
|
+
• On the left sidebar, at the bottom, select Admin Area.
|
|
25
|
+
• Select Settings > General.
|
|
26
|
+
• Expand Sign-in restrictions:
|
|
27
|
+
• Check if Enforce two-factor authentication is enabled. If so, you are compliant.
|
|
28
|
+
remediation: |
|
|
29
|
+
For your top-level group, enforce that Multi-Factor Authentication is enforced for contributors and is the only way to authenticate, by doing the following:
|
|
30
|
+
• On the left sidebar, at the bottom, select Admin Area.
|
|
31
|
+
• Select Settings > General.
|
|
32
|
+
• Expand Sign-in restrictions:
|
|
33
|
+
• Select Enforce two-factor authentication to enable this feature.
|
|
34
|
+
default_value:
|
|
35
|
+
references:
|
|
36
|
+
- https://docs.gitlab.com/ee/security/two_factor_authentication.html
|
|
37
|
+
cis_controls:
|
|
38
|
+
- id: 6.3
|
|
39
|
+
version: 8
|
|
40
|
+
name: Require MFA for Externally-Exposed Applications
|
|
41
|
+
description: >-
|
|
42
|
+
Require all externally-exposed enterprise or third-party applications to enforce
|
|
43
|
+
MFA, where supported. Enforcing MFA through a directory service or SSO
|
|
44
|
+
provider is a satisfactory implementation of this Safeguard.
|
|
45
|
+
implementation_groups:
|
|
46
|
+
- IG2
|
|
47
|
+
- IG3
|
|
48
|
+
- id: 6.4
|
|
49
|
+
version: 8
|
|
50
|
+
name: Require MFA for Remote Network Access
|
|
51
|
+
description: >-
|
|
52
|
+
Require MFA for remote network access
|
|
53
|
+
implementation_groups:
|
|
54
|
+
- IG1
|
|
55
|
+
- IG2
|
|
56
|
+
- IG3
|
|
57
|
+
- id: 6.5
|
|
58
|
+
version: 8
|
|
59
|
+
name: Require MFA for Administrative Access
|
|
60
|
+
description: >-
|
|
61
|
+
Require MFA for all administrative access accounts, where supported, on all
|
|
62
|
+
enterprise assets, whether managed on-site or through a third-party provider.
|
|
63
|
+
implementation_groups:
|
|
64
|
+
- IG1
|
|
65
|
+
- IG2
|
|
66
|
+
- IG3
|
|
67
|
+
- id: 16.3
|
|
68
|
+
version: 7
|
|
69
|
+
name: Require Multi-factor Authentication
|
|
70
|
+
description: >-
|
|
71
|
+
Require multi-factor authentication for all user accounts, on all systems,
|
|
72
|
+
whether managed onsite or by a third-party provider.
|
|
73
|
+
implementation_groups:
|
|
74
|
+
- IG2
|
|
75
|
+
- IG3
|
|
76
|
+
additional_info: >-
|