From 3b196758b357a3ce638ccd5965b0420a534c5db5 Mon Sep 17 00:00:00 2001 From: Anmol Virdi Date: Thu, 14 Dec 2023 22:41:23 +0530 Subject: [PATCH] Adding only keycloak for test Signed-off-by: Anmol Virdi --- .../airflow-scheduler/bitnami/README.md | 146 -- .../bitnami/assets/cve_reduction.webp | Bin 1788 -> 0 bytes .../bitnami/assets/metrics.webp | Bin 26026 -> 0 bytes .../airflow-scheduler/bitnami/image.yml | 24 - .../airflow/airflow-worker/bitnami/README.md | 146 -- .../bitnami/assets/cve_reduction.webp | Bin 1784 -> 0 bytes .../bitnami/assets/metrics.webp | Bin 25600 -> 0 bytes .../airflow/airflow-worker/bitnami/image.yml | 24 - .../airflow/airflow/bitnami/.rfignore | 4 - .../airflow/airflow/bitnami/README.md | 146 -- .../airflow/bitnami/assets/cve_reduction.webp | Bin 1816 -> 0 bytes .../airflow/bitnami/assets/metrics.webp | Bin 26172 -> 0 bytes .../airflow/airflow/bitnami/dc_coverage.sh | 12 - .../airflow/bitnami/docker-compose.yml | 56 - .../airflow/bitnami/docker_coverage.sh | 13 - .../airflow/airflow/bitnami/image.yml | 76 - .../airflow/airflow/bitnami/k8s_coverage.sh | 19 - .../airflow/airflow/bitnami/overrides.yml | 56 - .../bitnami/selenium_tests/airflow.side | 1474 ----------------- .../bitnami/selenium_tests/conftest.py | 23 - .../selenium_tests/test_enablealldags.py | 114 -- .../bitnami/selenium_tests/test_testadmin.py | 78 - .../bitnami/selenium_tests/test_viewbrowse.py | 83 - .../selenium_tests/test_viewsecurity.py | 73 - .../airflow/airflow/ironbank/.rfignore | 1 - .../airflow/airflow/ironbank/README.md | 145 -- .../ironbank/assets/cve_reduction.webp | Bin 1532 -> 0 bytes .../airflow/ironbank/assets/metrics.webp | Bin 26494 -> 0 bytes .../airflow/airflow/ironbank/dc_coverage.sh | 23 - .../airflow/ironbank/docker-compose.yml | 41 - .../airflow/airflow/ironbank/image.yml | 39 - .../ironbank/selenium_tests/conftest.py | 23 - .../selenium_tests/test_enablealldags.py | 108 -- .../ironbank/selenium_tests/test_testadmin.py | 73 - .../selenium_tests/test_viewbrowse.py | 78 - .../selenium_tests/test_viewsecurity.py | 69 - community_images/apache/bitnami/.rfignore | 6 - community_images/apache/bitnami/README.md | 142 -- .../apache/bitnami/assets/cve_reduction.webp | Bin 1832 -> 0 bytes .../apache/bitnami/assets/metrics.webp | Bin 27092 -> 0 bytes .../apache/bitnami/coverage_script.sh | 14 - .../apache/bitnami/dc_coverage.sh | 40 - .../apache/bitnami/docker-compose.yml | 14 - .../apache/bitnami/docker_coverage.sh | 19 - community_images/apache/bitnami/image.yml | 58 - .../apache/bitnami/k8s_coverage.sh | 32 - community_images/apache/bitnami/modules_list | 98 -- community_images/apache/bitnami/overrides.yml | 18 - community_images/apache/ironbank/README.md | 140 -- .../apache/ironbank/assets/cve_reduction.webp | Bin 1526 -> 0 bytes .../apache/ironbank/assets/metrics.webp | Bin 25174 -> 0 bytes .../apache/ironbank/configs/index.html | 9 - .../configs/server-configs/httpd.conf | 345 ---- .../configs/server-configs/httpd1.conf | 217 --- .../configs/server-configs/httpd2.conf | 190 --- .../configs/server-configs/httpd3.conf | 190 --- .../apache/ironbank/dc_coverage.sh | 63 - .../apache/ironbank/docker-compose.yml | 51 - community_images/apache/ironbank/image.yml | 37 - community_images/apache/official/.rfignore | 2 - community_images/apache/official/README.md | 142 -- .../apache/official/assets/cve_reduction.webp | Bin 1348 -> 0 bytes .../apache/official/assets/metrics.webp | Bin 25350 -> 0 bytes .../apache/official/configs/index.html | 9 - .../configs/server-configs/httpd1.conf | 209 --- .../configs/server-configs/httpd2.conf | 210 --- .../configs/server-configs/httpd3.conf | 210 --- .../apache/official/dc_coverage.sh | 56 - .../apache/official/docker-compose.yml | 38 - .../apache/official/docker_coverage.sh | 19 - community_images/apache/official/image.yml | 48 - .../apache/official/overrides.yml | 18 - community_images/cassandra/official/README.md | 142 -- .../official/assets/cve_reduction.webp | Bin 1742 -> 0 bytes .../cassandra/official/assets/metrics.webp | Bin 28352 -> 0 bytes .../cassandra/official/dc_coverage.sh | 22 - .../cassandra/official/docker-compose.yml | 20 - .../cassandra/official/docker_coverage.sh | 21 - community_images/cassandra/official/image.yml | 47 - .../cassandra/official/tests/test.cql | 64 - community_images/consul/bitnami/.rfignore | 4 - community_images/consul/bitnami/README.md | 142 -- .../consul/bitnami/assets/cve_reduction.webp | Bin 1602 -> 0 bytes .../consul/bitnami/assets/metrics.webp | Bin 22332 -> 0 bytes .../acls/consul-anonymous-token-policy.hcl | 6 - .../bitnami/configs/sample_service.json | 9 - .../consul/bitnami/configs/server.json | 23 - .../consul/bitnami/dc_acl_coverage.sh | 18 - .../consul/bitnami/dc_coverage.sh | 62 - .../consul/bitnami/docker-compose-acl.yml | 30 - .../consul/bitnami/docker-compose.yml | 96 -- community_images/consul/bitnami/image.yml | 62 - .../consul/bitnami/k8s_coverage.sh | 15 - community_images/consul/bitnami/overrides.yml | 33 - .../bitnami/scripts/client_container_test.sh | 25 - .../bitnami/scripts/client_coverage_script.sh | 17 - .../bitnami/scripts/server_coverage_script.sh | 51 - community_images/consul/bitnami/tls_certs.yml | 24 - community_images/consul/ironbank/README.md | 142 -- .../consul/ironbank/assets/cve_reduction.webp | Bin 1446 -> 0 bytes .../consul/ironbank/assets/metrics.webp | Bin 22392 -> 0 bytes .../acls/consul-anonymous-token-policy.hcl | 6 - .../ironbank/configs/sample_service.json | 9 - .../consul/ironbank/configs/server.json | 23 - .../consul/ironbank/dc_acl_coverage.sh | 18 - .../consul/ironbank/dc_coverage.sh | 66 - .../consul/ironbank/docker-compose-acl.yml | 30 - .../consul/ironbank/docker-compose.yml | 57 - community_images/consul/ironbank/image.yml | 56 - .../scripts/client_coverage_script.sh | 17 - .../scripts/server2_coverage_script.sh | 15 - .../scripts/server_coverage_script.sh | 51 - community_images/consul/official/.rfignore | 1 - community_images/consul/official/README.md | 146 -- .../consul/official/assets/cve_reduction.webp | Bin 1264 -> 0 bytes .../consul/official/assets/metrics.webp | Bin 23674 -> 0 bytes .../acls/consul-anonymous-token-policy.hcl | 6 - .../official/configs/sample_service.json | 9 - .../consul/official/configs/server.json | 23 - .../consul/official/dc_acl_coverage.sh | 18 - .../consul/official/dc_coverage.sh | 69 - .../consul/official/docker-compose-acl.yml | 30 - .../consul/official/docker-compose.yml | 72 - community_images/consul/official/image.yml | 63 - .../official/scripts/client_container_test.sh | 21 - .../scripts/client_coverage_script.sh | 17 - .../scripts/server_coverage_script.sh | 51 - community_images/couchdb/bitnami/.rfignore | 5 - community_images/couchdb/bitnami/README.md | 142 -- .../couchdb/bitnami/assets/cve_reduction.webp | Bin 1884 -> 0 bytes .../couchdb/bitnami/assets/metrics.webp | Bin 26870 -> 0 bytes community_images/couchdb/bitnami/coverage.sh | 49 - .../couchdb/bitnami/dc_coverage.sh | 22 - .../couchdb/bitnami/docker-compose.yml | 21 - .../couchdb/bitnami/host_coverage.sh | 11 - community_images/couchdb/bitnami/image.yml | 34 - community_images/couchdb/ironbank/README.md | 138 -- .../ironbank/assets/cve_reduction.webp | Bin 1790 -> 0 bytes .../couchdb/ironbank/assets/metrics.webp | Bin 25958 -> 0 bytes community_images/couchdb/ironbank/coverage.sh | 49 - .../couchdb/ironbank/dc_coverage.sh | 22 - .../couchdb/ironbank/docker-compose.yml | 20 - .../couchdb/ironbank/host_coverage.sh | 10 - community_images/couchdb/ironbank/image.yml | 32 - community_images/couchdb/official/.rfignore | 1 - community_images/couchdb/official/README.md | 138 -- .../official/assets/cve_reduction.webp | Bin 1826 -> 0 bytes .../couchdb/official/assets/metrics.webp | Bin 26742 -> 0 bytes community_images/couchdb/official/coverage.sh | 49 - .../couchdb/official/dc_coverage.sh | 22 - .../couchdb/official/docker-compose.yml | 21 - .../couchdb/official/host_coverage.sh | 10 - community_images/couchdb/official/image.yml | 38 - community_images/curl/curlimages/README.md | 153 -- .../curl/curlimages/assets/cve_reduction.webp | Bin 1168 -> 0 bytes .../curl/curlimages/assets/metrics.webp | Bin 20232 -> 0 bytes .../curl/curlimages/docker_coverage.sh | 42 - community_images/curl/curlimages/image.yml | 51 - .../curl/curlimages/sleep_script.sh | 4 - community_images/curl/curlimages/test.txt | 1 - .../elasticsearch/bitnami/.rfignore | 5 - .../elasticsearch/bitnami/README.md | 143 -- .../bitnami/assets/cve_reduction.webp | Bin 1652 -> 0 bytes .../elasticsearch/bitnami/assets/metrics.webp | Bin 22538 -> 0 bytes .../elasticsearch/bitnami/coverage.sh | 60 - .../elasticsearch/bitnami/dc_coverage.sh | 25 - .../elasticsearch/bitnami/docker-compose.yml | 27 - .../elasticsearch/bitnami/es_test.py | 53 - .../elasticsearch/bitnami/image.yml | 37 - .../elasticsearch/bitnami/overrides.yml | 18 - .../elasticsearch/official/.rfignore | 1 - .../elasticsearch/official/README.md | 141 -- .../official/assets/cve_reduction.webp | Bin 1758 -> 0 bytes .../official/assets/metrics.webp | Bin 27290 -> 0 bytes .../elasticsearch/official/coverage.sh | 60 - .../elasticsearch/official/dc_coverage.sh | 26 - .../elasticsearch/official/docker-compose.yml | 28 - .../elasticsearch/official/es_test.py | 53 - .../elasticsearch/official/image.yml | 40 - .../elasticsearch/official/overrides.yml | 18 - community_images/envoy/bitnami/.rfignore | 4 - community_images/envoy/bitnami/README.md | 142 -- .../envoy/bitnami/assets/cve_reduction.webp | Bin 1690 -> 0 bytes .../envoy/bitnami/assets/metrics.webp | Bin 25662 -> 0 bytes .../bitnami/configs/dynamic/bootstrap.yaml | 33 - .../envoy/bitnami/configs/dynamic/cds.yaml | 32 - .../envoy/bitnami/configs/dynamic/lds.yaml | 47 - .../envoy/bitnami/configs/envoy.yaml | 105 -- .../envoy/bitnami/configs/envoy_non_tls.yaml | 34 - .../envoy/bitnami/coverage_script.sh | 6 - community_images/envoy/bitnami/dc_coverage.sh | 40 - .../envoy/bitnami/docker-compose.yml | 31 - .../envoy/bitnami/docker_coverage.sh | 18 - community_images/envoy/bitnami/image.yml | 49 - community_images/envoy/official/README.md | 138 -- .../envoy/official/assets/cve_reduction.webp | Bin 1512 -> 0 bytes .../envoy/official/assets/metrics.webp | Bin 25160 -> 0 bytes .../official/configs/dynamic/bootstrap.yaml | 33 - .../envoy/official/configs/dynamic/cds.yaml | 32 - .../envoy/official/configs/dynamic/lds.yaml | 47 - .../envoy/official/configs/envoy.yaml | 105 -- .../envoy/official/configs/envoy_non_tls.yaml | 34 - .../envoy/official/coverage_script.sh | 6 - .../envoy/official/dc_coverage.sh | 40 - .../envoy/official/docker-compose.yml | 32 - .../envoy/official/docker_coverage.sh | 18 - community_images/envoy/official/image.yml | 32 - community_images/etcd/bitnami/.rfignore | 4 - community_images/etcd/bitnami/README.md | 143 -- .../etcd/bitnami/assets/cve_reduction.webp | Bin 1900 -> 0 bytes .../etcd/bitnami/assets/metrics.webp | Bin 27204 -> 0 bytes community_images/etcd/bitnami/dc_coverage.sh | 10 - .../etcd/bitnami/docker-compose.yml | 45 - .../etcd/bitnami/docker_coverage.sh | 10 - community_images/etcd/bitnami/etcd_test.sh | 46 - community_images/etcd/bitnami/image.yml | 54 - community_images/etcd/bitnami/k8s_coverage.sh | 24 - community_images/etcd/bitnami/overrides.yml | 18 - community_images/etcd/ironbank/.rfignore | 1 - community_images/etcd/ironbank/README.md | 139 -- .../etcd/ironbank/assets/cve_reduction.webp | Bin 1578 -> 0 bytes .../etcd/ironbank/assets/metrics.webp | Bin 26212 -> 0 bytes community_images/etcd/ironbank/dc_coverage.sh | 22 - .../etcd/ironbank/docker-compose.yml | 62 - community_images/etcd/ironbank/etcd_test.sh | 41 - community_images/etcd/ironbank/image.yml | 32 - community_images/fluentd/bitnami/.rfignore | 4 - community_images/fluentd/bitnami/README.md | 142 -- .../fluentd/bitnami/assets/cve_reduction.webp | Bin 1890 -> 0 bytes .../fluentd/bitnami/assets/metrics.webp | Bin 25662 -> 0 bytes .../fluentd/bitnami/dc_coverage.sh | 10 - .../fluentd/bitnami/docker-compose.yml | 60 - .../fluentd/bitnami/docker_coverage.sh | 27 - community_images/fluentd/bitnami/image.yml | 48 - .../fluentd/bitnami/k8s_coverage.sh | 10 - .../fluentd/bitnami/overrides.yml | 35 - community_images/fluentd/ironbank/.rfignore | 1 - community_images/fluentd/ironbank/README.md | 139 -- .../ironbank/assets/cve_reduction.webp | Bin 1598 -> 0 bytes .../fluentd/ironbank/assets/metrics.webp | Bin 25166 -> 0 bytes .../fluentd/ironbank/dc_coverage.sh | 22 - .../fluentd/ironbank/docker-compose.yml | 60 - community_images/fluentd/ironbank/image.yml | 33 - community_images/fluentd/official/.rfignore | 1 - community_images/fluentd/official/README.md | 141 -- .../official/assets/cve_reduction.webp | Bin 1524 -> 0 bytes .../fluentd/official/assets/metrics.webp | Bin 21732 -> 0 bytes .../fluentd/official/dc_coverage.sh | 22 - .../fluentd/official/docker-compose.yml | 60 - community_images/fluentd/official/image.yml | 41 - community_images/ghost/bitnami/.rfignore | 4 - community_images/ghost/bitnami/README.md | 142 -- .../ghost/bitnami/assets/cve_reduction.webp | Bin 1810 -> 0 bytes .../ghost/bitnami/assets/metrics.webp | Bin 22816 -> 0 bytes community_images/ghost/bitnami/dc_coverage.sh | 59 - .../ghost/bitnami/docker-compose.yml | 33 - community_images/ghost/bitnami/image.yml | 54 - .../ghost/bitnami/k8s_coverage.sh | 15 - community_images/ghost/bitnami/overrides.yml | 18 - .../ghost/bitnami/selenium_tests/conftest.py | 23 - .../ghost/bitnami/selenium_tests/ghost.side | 254 --- .../selenium_tests/test_primaryFunctions.py | 55 - community_images/grafana/ironbank/.rfignore | 1 - community_images/grafana/ironbank/README.md | 141 -- .../grafana/ironbank/dc_coverage.sh | 30 - .../grafana/ironbank/docker-compose.yml | 23 - community_images/grafana/ironbank/image.yml | 38 - .../ironbank/selenium_tests/__init__.py | 0 .../ironbank/selenium_tests/conftest.py | 23 - .../selenium_tests/grafana_selenium_test.py | 165 -- community_images/haproxy/bitnami/.rfignore | 4 - community_images/haproxy/bitnami/README.md | 142 -- .../haproxy/bitnami/assets/cve_reduction.webp | Bin 1592 -> 0 bytes .../haproxy/bitnami/assets/metrics.webp | Bin 21414 -> 0 bytes .../haproxy/bitnami/configs/haproxy-tcp.cfg | 48 - .../haproxy/bitnami/configs/haproxy.cfg | 45 - .../bitnami/configs/sample-server/app/app.py | 48 - .../sample-server/app/templates/error.html | 10 - .../sample-server/app/templates/index.html | 10 - .../haproxy/bitnami/dc_coverage.sh | 78 - .../haproxy/bitnami/dc_coverage_tcp.sh | 61 - .../haproxy/bitnami/docker-compose-tcp.yml | 58 - .../haproxy/bitnami/docker-compose.yml | 96 -- community_images/haproxy/bitnami/image.yml | 63 - .../haproxy/bitnami/k8s_coverage.sh | 15 - .../haproxy/bitnami/overrides.yml | 17 - community_images/haproxy/ironbank/README.md | 139 -- .../ironbank/assets/cve_reduction.webp | Bin 1470 -> 0 bytes .../haproxy/ironbank/assets/metrics.webp | Bin 25194 -> 0 bytes .../ironbank/configs/http-mode/haproxy1.cfg | 45 - .../ironbank/configs/http-mode/haproxy2.cfg | 45 - .../ironbank/configs/http-mode/haproxy3.cfg | 45 - .../ironbank/configs/sample-server/app/app.py | 48 - .../sample-server/app/templates/error.html | 10 - .../sample-server/app/templates/index.html | 10 - .../configs/tcp-mode/haproxy-tcp1.cfg | 47 - .../configs/tcp-mode/haproxy-tcp2.cfg | 47 - .../configs/tcp-mode/haproxy-tcp3.cfg | 47 - .../haproxy/ironbank/dc_coverage.sh | 73 - .../haproxy/ironbank/dc_coverage_tcp.sh | 57 - .../haproxy/ironbank/docker-compose-tcp.yml | 90 - .../haproxy/ironbank/docker-compose.yml | 132 -- community_images/haproxy/ironbank/image.yml | 49 - community_images/haproxy/official/.rfignore | 1 - community_images/haproxy/official/README.md | 144 -- .../official/assets/cve_reduction.webp | Bin 1694 -> 0 bytes .../haproxy/official/assets/metrics.webp | Bin 25246 -> 0 bytes .../official/configs/http-mode/haproxy1.cfg | 45 - .../official/configs/http-mode/haproxy2.cfg | 45 - .../official/configs/http-mode/haproxy3.cfg | 45 - .../official/configs/sample-server/app/app.py | 48 - .../sample-server/app/templates/error.html | 10 - .../sample-server/app/templates/index.html | 10 - .../configs/tcp-mode/haproxy-tcp1.cfg | 48 - .../configs/tcp-mode/haproxy-tcp2.cfg | 48 - .../configs/tcp-mode/haproxy-tcp3.cfg | 48 - .../haproxy/official/dc_coverage.sh | 73 - .../haproxy/official/dc_coverage_tcp.sh | 57 - .../haproxy/official/docker-compose-tcp.yml | 90 - .../haproxy/official/docker-compose.yml | 132 -- community_images/haproxy/official/image.yml | 65 - community_images/influxdb/bitnami/.rfignore | 4 - community_images/influxdb/bitnami/README.md | 142 -- .../bitnami/assets/cve_reduction.webp | Bin 1510 -> 0 bytes .../influxdb/bitnami/assets/metrics.webp | Bin 23508 -> 0 bytes .../influxdb/bitnami/dc_coverage.sh | 10 - .../influxdb/bitnami/docker-compose.yml | 20 - community_images/influxdb/bitnami/docker.env | 5 - .../influxdb/bitnami/docker_coverage.sh | 10 - community_images/influxdb/bitnami/image.yml | 49 - .../influxdb/bitnami/k8s_coverage.sh | 29 - .../influxdb/bitnami/overrides.yml | 28 - .../influxdb/bitnami/tests/example.csv | 8 - .../influxdb/bitnami/tests/query.flux | 2 - community_images/kong/official/README.md | 142 -- .../kong/official/assets/cve_reduction.webp | Bin 1296 -> 0 bytes .../kong/official/assets/metrics.webp | Bin 20996 -> 0 bytes community_images/kong/official/dc_coverage.sh | 182 -- .../kong/official/docker-compose.yml | 98 -- .../kong/official/docker_coverage.sh | 13 - community_images/kong/official/image.yml | 51 - .../kong/official/k8s_coverage.sh | 11 - community_images/kong/official/kong_setup.sh | 11 - community_images/kong/official/overrides.yml | 17 - community_images/mariadb/bitnami/.rfignore | 4 - community_images/mariadb/bitnami/README.md | 148 -- .../mariadb/bitnami/assets/cve_reduction.webp | Bin 1766 -> 0 bytes .../mariadb/bitnami/assets/metrics.webp | Bin 25744 -> 0 bytes .../mariadb/bitnami/docker-compose.yml | 52 - community_images/mariadb/bitnami/image.yml | 61 - .../mariadb/bitnami/k8s_coverage.sh | 71 - .../mariadb/bitnami/overrides.yml | 35 - community_images/mariadb/ironbank/.rfignore | 1 - community_images/mariadb/ironbank/README.md | 139 -- .../ironbank/assets/cve_reduction.webp | Bin 1850 -> 0 bytes .../mariadb/ironbank/assets/metrics.webp | Bin 26276 -> 0 bytes .../mariadb/ironbank/docker_coverage.sh | 77 - community_images/mariadb/ironbank/image.yml | 35 - community_images/mariadb/official/README.md | 139 -- .../official/assets/cve_reduction.webp | Bin 1714 -> 0 bytes .../mariadb/official/assets/metrics.webp | Bin 25958 -> 0 bytes .../mariadb/official/docker_coverage.sh | 77 - community_images/mariadb/official/image.yml | 35 - .../mariadb/official/k8s_coverage.sh | 71 - .../mariadb/official/overrides.yml | 35 - community_images/memcached/bitnami/.rfignore | 4 - community_images/memcached/bitnami/README.md | 143 -- .../bitnami/assets/cve_reduction.webp | Bin 1382 -> 0 bytes .../memcached/bitnami/assets/metrics.webp | Bin 20554 -> 0 bytes .../memcached/bitnami/dc_coverage.sh | 20 - .../memcached/bitnami/docker-compose.yml | 9 - community_images/memcached/bitnami/image.yml | 46 - community_images/memcached/bitnami/mc_cli.sh | 57 - .../memcached/bitnami/overrides.yml | 18 - community_images/memcached/ironbank/README.md | 139 -- .../ironbank/assets/cve_reduction.webp | Bin 1340 -> 0 bytes .../memcached/ironbank/assets/metrics.webp | Bin 24858 -> 0 bytes .../memcached/ironbank/dc_coverage.sh | 20 - .../memcached/ironbank/docker-compose.yml | 9 - community_images/memcached/ironbank/image.yml | 33 - community_images/memcached/ironbank/mc_cli.sh | 58 - community_images/memcached/official/README.md | 141 -- .../official/assets/cve_reduction.webp | Bin 1736 -> 0 bytes .../memcached/official/assets/metrics.webp | Bin 25830 -> 0 bytes .../memcached/official/dc_coverage.sh | 20 - .../memcached/official/docker-compose.yml | 9 - community_images/memcached/official/image.yml | 39 - community_images/memcached/official/mc_cli.sh | 57 - .../ironbank/README.md | 140 -- .../ironbank/assets/cve_reduction.webp | Bin 1832 -> 0 bytes .../ironbank/assets/metrics.webp | Bin 26472 -> 0 bytes .../ironbank/dc_coverage.sh | 27 - .../ironbank/docker-compose.yml | 13 - .../ironbank/image.yml | 39 - .../ironbank/tests/azure_ib.ms_sql | 271 --- .../ironbank/tests/azure_ib_bak.ms_sql | 22 - community_images/mongodb/bitnami/.rfignore | 4 - community_images/mongodb/bitnami/README.md | 144 -- .../mongodb/bitnami/assets/cve_reduction.webp | Bin 1822 -> 0 bytes .../mongodb/bitnami/assets/metrics.webp | Bin 27954 -> 0 bytes .../mongodb/bitnami/client.yml.base | 21 - .../mongodb/bitnami/dc_coverage.sh | 10 - .../mongodb/bitnami/docker-compose.yml | 44 - .../mongodb/bitnami/docker-compose.yml.base | 44 - .../mongodb/bitnami/docker_coverage.sh | 25 - community_images/mongodb/bitnami/image.yml | 54 - .../mongodb/bitnami/k8s_coverage.sh | 56 - .../mongodb/bitnami/mongo_helpers.sh | 45 - .../mongodb/bitnami/overrides.yml | 38 - .../mongodb/bitnami/perf_test/Dockerfile | 9 - .../mongodb/bitnami/perf_test/build_docker.sh | 16 - .../mongodb/bitnami/perf_test/entrypoint.sh | 24 - community_images/mongodb/ironbank/README.md | 138 -- .../ironbank/assets/cve_reduction.webp | Bin 1692 -> 0 bytes .../mongodb/ironbank/assets/metrics.webp | Bin 27212 -> 0 bytes .../mongodb/ironbank/dc_coverage.sh | 18 - .../mongodb/ironbank/docker-compose.yml | 19 - community_images/mongodb/ironbank/image.yml | 38 - .../mongodb/ironbank/use_mongodb.js | 9 - community_images/mongodb/official/README.md | 142 -- .../official/assets/cve_reduction.webp | Bin 1772 -> 0 bytes .../mongodb/official/assets/metrics.webp | Bin 27964 -> 0 bytes .../mongodb/official/dc_coverage.sh | 18 - .../mongodb/official/docker-compose.yml | 19 - community_images/mongodb/official/image.yml | 55 - .../mongodb/official/use_mongodb.js | 9 - community_images/mysql/bitnami/.rfignore | 4 - community_images/mysql/bitnami/README.md | 143 -- .../mysql/bitnami/assets/cve_reduction.webp | Bin 1526 -> 0 bytes .../mysql/bitnami/assets/metrics.webp | Bin 25648 -> 0 bytes .../mysql/bitnami/docker-compose.yml | 54 - community_images/mysql/bitnami/image.yml | 53 - .../mysql/bitnami/k8s_coverage.sh | 86 - community_images/mysql/bitnami/overrides.yml | 35 - community_images/mysql/ironbank/.rfignore | 1 - community_images/mysql/ironbank/README.md | 139 -- .../mysql/ironbank/assets/cve_reduction.webp | Bin 1488 -> 0 bytes .../mysql/ironbank/assets/metrics.webp | Bin 21612 -> 0 bytes .../mysql/ironbank/docker_coverage.sh | 77 - community_images/mysql/ironbank/image.yml | 35 - community_images/mysql/official/.rfignore | 1 - community_images/mysql/official/README.md | 140 -- .../mysql/official/assets/cve_reduction.webp | Bin 1826 -> 0 bytes .../mysql/official/assets/metrics.webp | Bin 25810 -> 0 bytes .../mysql/official/docker_coverage.sh | 77 - community_images/mysql/official/image.yml | 39 - community_images/nats/bitnami/.rfignore | 7 - community_images/nats/bitnami/README.md | 142 -- .../nats/bitnami/assets/cve_reduction.webp | Bin 1506 -> 0 bytes .../nats/bitnami/assets/metrics.webp | Bin 21552 -> 0 bytes community_images/nats/bitnami/coverage.sh | 36 - community_images/nats/bitnami/dc_coverage.sh | 10 - .../nats/bitnami/docker-compose.yml | 11 - .../nats/bitnami/docker_coverage.sh | 10 - community_images/nats/bitnami/image.yml | 47 - community_images/nats/bitnami/k8s_coverage.sh | 17 - community_images/nats/bitnami/overrides.yml | 20 - community_images/nats/ironbank/README.md | 139 -- .../nats/ironbank/assets/cve_reduction.webp | Bin 1758 -> 0 bytes .../nats/ironbank/assets/metrics.webp | Bin 22758 -> 0 bytes community_images/nats/ironbank/coverage.sh | 45 - community_images/nats/ironbank/image.yml | 36 - .../nats/ironbank/k8s_coverage.sh | 17 - community_images/nats/ironbank/overrides.yml | 20 - community_images/nats/official/README.md | 141 -- .../nats/official/assets/cve_reduction.webp | Bin 1168 -> 0 bytes .../nats/official/assets/metrics.webp | Bin 21104 -> 0 bytes community_images/nats/official/coverage.sh | 38 - community_images/nats/official/dc_coverage.sh | 10 - .../nats/official/docker-compose.yml | 11 - .../nats/official/docker_coverage.sh | 10 - community_images/nats/official/image.yml | 55 - .../nats/official/k8s_coverage.sh | 17 - community_images/nats/official/overrides.yml | 20 - community_images/nginx/bitnami/.rfignore | 6 - community_images/nginx/bitnami/README.md | 143 -- .../nginx/bitnami/assets/cve_reduction.webp | Bin 1630 -> 0 bytes .../nginx/bitnami/assets/metrics.webp | Bin 21318 -> 0 bytes .../configs/server_block_backends.conf | 9 - .../configs/server_include_backends.conf | 27 - .../nginx/bitnami/coverage_script.sh | 16 - community_images/nginx/bitnami/dc_coverage.sh | 40 - .../nginx/bitnami/docker-compose.yml | 39 - community_images/nginx/bitnami/image.yml | 54 - .../nginx/bitnami/k8s_coverage.sh | 25 - community_images/nginx/bitnami/overrides.yml | 23 - community_images/nginx/ironbank/.rfignore | 6 - community_images/nginx/ironbank/README.md | 139 -- .../nginx/ironbank/assets/cve_reduction.webp | Bin 1436 -> 0 bytes .../nginx/ironbank/assets/metrics.webp | Bin 20352 -> 0 bytes .../nginx/ironbank/dc_coverage.sh | 45 - .../nginx/ironbank/docker-compose.yml | 39 - community_images/nginx/ironbank/image.yml | 38 - community_images/nginx/ironbank/nginx.conf | 108 -- community_images/nginx/official/.rfignore | 1 - community_images/nginx/official/README.md | 144 -- .../nginx/official/assets/cve_reduction.webp | Bin 1604 -> 0 bytes .../nginx/official/assets/metrics.webp | Bin 22394 -> 0 bytes .../nginx/official/configs/nginx.conf | 122 -- .../nginx/official/dc_coverage.sh | 40 - .../nginx/official/docker-compose.yml | 39 - community_images/nginx/official/image.yml | 45 - community_images/nginx/official/overrides.yml | 23 - community_images/oncall/grafana/.env_hobby | 7 - community_images/oncall/grafana/.rfignore | 8 - community_images/oncall/grafana/README.md | 163 -- .../oncall/grafana/assets/cve_reduction.webp | Bin 1690 -> 0 bytes .../oncall/grafana/assets/metrics.webp | Bin 26852 -> 0 bytes .../oncall/grafana/dc_coverage.sh | 23 - .../oncall/grafana/docker-compose.yml | 187 --- community_images/oncall/grafana/image.yml | 58 - community_images/oncall/grafana/overrides.yml | 18 - community_images/postgresql/bitnami/.rfignore | 8 - community_images/postgresql/bitnami/README.md | 146 -- .../bitnami/assets/cve_reduction.webp | Bin 1794 -> 0 bytes .../postgresql/bitnami/assets/metrics.webp | Bin 27008 -> 0 bytes .../postgresql/bitnami/dc_coverage.sh | 21 - .../postgresql/bitnami/docker-compose.yml | 62 - .../postgresql/bitnami/docker_coverage.sh | 18 - community_images/postgresql/bitnami/image.yml | 57 - .../postgresql/bitnami/k8s_coverage.sh | 29 - .../postgresql/bitnami/overrides.yml | 35 - .../postgresql/ironbank/.rfignore | 9 - .../postgresql/ironbank/README.md | 139 -- .../ironbank/assets/cve_reduction.webp | Bin 1542 -> 0 bytes .../postgresql/ironbank/assets/metrics.webp | Bin 25568 -> 0 bytes .../postgresql/ironbank/dc_coverage.sh | 27 - .../postgresql/ironbank/docker-compose.yml | 23 - .../postgresql/ironbank/docker_coverage.sh | 15 - .../postgresql/ironbank/image.yml | 38 - .../postgresql/official/README.md | 145 -- .../official/assets/cve_reduction.webp | Bin 1820 -> 0 bytes .../postgresql/official/assets/metrics.webp | Bin 26782 -> 0 bytes .../postgresql/official/dc_coverage.sh | 29 - .../postgresql/official/docker-compose.yml | 23 - .../postgresql/official/image.yml | 57 - community_images/prometheus/bitnami/.rfignore | 4 - .../prometheus/bitnami/Dockerfile | 15 - community_images/prometheus/bitnami/README.md | 142 -- .../bitnami/assets/cve_reduction.webp | Bin 1692 -> 0 bytes .../prometheus/bitnami/assets/metrics.webp | Bin 26930 -> 0 bytes .../prometheus/bitnami/build_docker.sh | 13 - .../bitnami/config/prometheus/prometheus.yml | 33 - .../prometheus/bitnami/coverage.sh | 67 - .../prometheus/bitnami/dc_coverage.sh | 10 - .../prometheus/bitnami/docker-compose.yml | 9 - .../prometheus/bitnami/docker_coverage.sh | 10 - .../prometheus/bitnami/flask_app.py | 43 - .../prometheus/bitnami/helpers/middleware.py | 41 - community_images/prometheus/bitnami/image.yml | 46 - .../prometheus/bitnami/k8s_coverage.sh | 26 - .../prometheus/bitnami/overrides.yml | 20 - .../prometheus/bitnami/requirements.txt | 8 - .../bitnami/selenium_tests/__init__.py | 0 .../bitnami/selenium_tests/conftest.py | 23 - .../prometheus_selenium_test.py | 77 - .../prometheus/ironbank/.rfignore | 1 - .../prometheus/ironbank/README.md | 141 -- .../ironbank/assets/cve_reduction.webp | Bin 1700 -> 0 bytes .../prometheus/ironbank/assets/metrics.webp | Bin 26690 -> 0 bytes .../ironbank/config/prometheus/prometheus.yml | 33 - .../prometheus/ironbank/coverage.sh | 67 - .../prometheus/ironbank/image.yml | 38 - .../prometheus/ironbank/k8s_coverage.sh | 26 - .../prometheus/ironbank/overrides.yml | 20 - .../ironbank/selenium_tests/__init__.py | 0 .../ironbank/selenium_tests/conftest.py | 23 - .../prometheus_selenium_test.py | 77 - community_images/rabbitmq/bitnami/.rfignore | 5 - community_images/rabbitmq/bitnami/README.md | 144 -- .../bitnami/assets/cve_reduction.webp | Bin 1870 -> 0 bytes .../rabbitmq/bitnami/assets/metrics.webp | Bin 27546 -> 0 bytes community_images/rabbitmq/bitnami/consume.py | 57 - community_images/rabbitmq/bitnami/coverage.sh | 72 - .../rabbitmq/bitnami/dc_coverage.sh | 10 - .../rabbitmq/bitnami/docker-compose.yml | 15 - .../rabbitmq/bitnami/docker_coverage.sh | 10 - community_images/rabbitmq/bitnami/image.yml | 51 - .../rabbitmq/bitnami/k8s_coverage.sh | 24 - .../rabbitmq/bitnami/overrides.yml | 20 - community_images/rabbitmq/bitnami/publish.py | 39 - .../redis-cluster/bitnami/.rfignore | 4 - .../redis-cluster/bitnami/README.md | 143 -- .../bitnami/assets/cve_reduction.webp | Bin 1766 -> 0 bytes .../redis-cluster/bitnami/assets/metrics.webp | Bin 25632 -> 0 bytes .../redis-cluster/bitnami/dc_coverage.sh | 31 - .../redis-cluster/bitnami/docker-compose.yml | 88 - .../redis-cluster/bitnami/image.yml | 65 - .../redis-cluster/bitnami/k8s_tls_coverage.sh | 18 - .../redis-cluster/bitnami/overrides.yml | 18 - .../bitnami/redis_cluster_runner.sh | 21 - .../redis-cluster/bitnami/tls_certs.yml | 24 - community_images/redis/bitnami/.rfignore | 6 - community_images/redis/bitnami/README.md | 144 -- .../redis/bitnami/assets/cve_reduction.webp | Bin 1766 -> 0 bytes .../redis/bitnami/assets/metrics.webp | Bin 25580 -> 0 bytes .../redis/bitnami/docker-compose.yml | 35 - community_images/redis/bitnami/image.yml | 76 - .../redis/bitnami/k8s_coverage.sh | 45 - .../redis/bitnami/k8s_tls_coverage.sh | 22 - community_images/redis/bitnami/overrides.yml | 33 - community_images/redis/bitnami/tls_certs.yml | 24 - community_images/redis/ironbank/.rfignore | 4 - community_images/redis/ironbank/README.md | 139 -- .../redis/ironbank/assets/cve_reduction.webp | Bin 1542 -> 0 bytes .../redis/ironbank/assets/metrics.webp | Bin 25392 -> 0 bytes .../redis/ironbank/dc_coverage.sh | 19 - .../redis/ironbank/docker-compose.yml | 37 - .../redis/ironbank/docker_coverage.sh | 24 - community_images/redis/ironbank/image.yml | 37 - community_images/redis/official/.rfignore | 4 - community_images/redis/official/README.md | 146 -- .../redis/official/assets/cve_reduction.webp | Bin 1168 -> 0 bytes .../redis/official/assets/metrics.webp | Bin 23848 -> 0 bytes .../redis/official/dc_coverage.sh | 19 - .../redis/official/docker-compose.yml | 37 - .../redis/official/docker.env.temp | 2 - .../redis/official/docker_coverage.sh | 24 - community_images/redis/official/image.yml | 65 - community_images/telegraf/bitnami/README.md | 142 -- .../bitnami/assets/cve_reduction.webp | Bin 1684 -> 0 bytes .../telegraf/bitnami/assets/metrics.webp | Bin 27208 -> 0 bytes community_images/telegraf/bitnami/coverage.sh | 43 - .../telegraf/bitnami/dc_coverage.sh | 17 - .../telegraf/bitnami/docker-compose.yml | 44 - community_images/telegraf/bitnami/docker.env | 5 - .../telegraf/bitnami/docker_coverage.sh | 10 - community_images/telegraf/bitnami/image.yml | 34 - .../telegraf/bitnami/init_influxdb.sh | 5 - .../telegraf/bitnami/k8s_coverage.sh | 29 - .../telegraf/bitnami/overrides.yml | 28 - .../telegraf/bitnami/telegraf.conf | 1127 ------------- community_images/traefik/ironbank/README.md | 141 -- .../ironbank/assets/cve_reduction.webp | Bin 1632 -> 0 bytes .../traefik/ironbank/assets/metrics.webp | Bin 26658 -> 0 bytes .../traefik/ironbank/dc_coverage.sh | 42 - .../traefik/ironbank/docker-compose.yml | 51 - .../ironbank/dockerProvider/certificates.yml | 4 - community_images/traefik/ironbank/image.yml | 39 - community_images/traefik/traefik/README.md | 144 -- .../traefik/traefik/assets/cve_reduction.webp | Bin 1544 -> 0 bytes .../traefik/traefik/assets/metrics.webp | Bin 23940 -> 0 bytes .../traefik/traefik/dc_coverage.sh | 43 - .../traefik/traefik/docker-compose.yml | 51 - .../traefik/dockerProvider/certificates.yml | 4 - community_images/traefik/traefik/image.yml | 43 - community_images/vault/hashicorp/.rfignore | 1 - community_images/vault/hashicorp/README.md | 142 -- .../vault/hashicorp/assets/cve_reduction.webp | Bin 1602 -> 0 bytes .../vault/hashicorp/assets/metrics.webp | Bin 28252 -> 0 bytes community_images/vault/hashicorp/coverage.sh | 51 - .../vault/hashicorp/dc_coverage.sh | 12 - .../vault/hashicorp/deployment-webapp.yml | 29 - .../vault/hashicorp/docker-compose.yml | 10 - .../vault/hashicorp/docker_coverage.sh | 13 - community_images/vault/hashicorp/image.yml | 47 - .../vault/hashicorp/k8s_coverage.sh | 21 - .../vault/hashicorp/overrides.yml | 21 - community_images/vault/hashicorp/policy.hcl | 3 - .../vault/hashicorp/serviceaccount.yml | 4 - .../vault/hashicorp/vault_health_check.sh | 29 - community_images/wordpress/bitnami/.rfignore | 3 - community_images/wordpress/bitnami/README.md | 142 -- .../bitnami/assets/cve_reduction.webp | Bin 1484 -> 0 bytes .../wordpress/bitnami/assets/metrics.webp | Bin 23450 -> 0 bytes .../wordpress/bitnami/docker-compose.yml | 35 - community_images/wordpress/bitnami/image.yml | 44 - .../wordpress/bitnami/k8s_coverage.sh | 17 - .../wordpress/bitnami/overrides.yml | 20 - .../bitnami/selenium_tests/__init__.py | 0 .../bitnami/selenium_tests/conftest.py | 23 - .../selenium_tests/wordpress_selenium_test.py | 136 -- community_images/wordpress/ironbank/.rfignore | 1 - community_images/wordpress/ironbank/README.md | 141 -- .../ironbank/assets/cve_reduction.webp | Bin 1746 -> 0 bytes .../wordpress/ironbank/assets/metrics.webp | Bin 22378 -> 0 bytes .../wordpress/ironbank/dc_coverage.sh | 18 - .../wordpress/ironbank/docker-compose.yml | 43 - community_images/wordpress/ironbank/image.yml | 37 - .../ironbank/selenium_tests/__init__.py | 0 .../ironbank/selenium_tests/conftest.py | 23 - .../selenium_tests/wordpress_selenium_test.py | 129 -- community_images/yourls/official/README.md | 141 -- .../yourls/official/assets/cve_reduction.webp | Bin 1778 -> 0 bytes .../yourls/official/assets/metrics.webp | Bin 26406 -> 0 bytes .../yourls/official/dc_coverage.sh | 31 - .../yourls/official/docker-compose.yml | 43 - community_images/yourls/official/image.yml | 40 - .../official/selenium_tests/conftest.py | 23 - .../selenium_tests/test_yourlsuitest.py | 69 - .../official/selenium_tests/yourls.side | 239 --- .../yugabyte/yugabytedb/README.md | 150 -- .../yugabytedb/assets/cve_reduction.webp | Bin 4714 -> 0 bytes .../yugabyte/yugabytedb/assets/metrics.webp | Bin 16448 -> 0 bytes .../yugabyte/yugabytedb/dc_coverage.sh | 46 - .../yugabyte/yugabytedb/docker-compose.yml | 18 - .../yugabyte/yugabytedb/image.yml | 55 - community_images/zookeeper/bitnami/.rfignore | 4 - community_images/zookeeper/bitnami/README.md | 144 -- .../bitnami/assets/cve_reduction.webp | Bin 1810 -> 0 bytes .../zookeeper/bitnami/assets/metrics.webp | Bin 26458 -> 0 bytes .../zookeeper/bitnami/coverage.sh | 18 - .../zookeeper/bitnami/dc_coverage.sh | 23 - .../zookeeper/bitnami/docker-compose.yml | 16 - community_images/zookeeper/bitnami/docker.env | 1 - .../zookeeper/bitnami/docker_coverage.sh | 13 - community_images/zookeeper/bitnami/image.yml | 60 - .../zookeeper/bitnami/k8s_coverage.sh | 28 - .../zookeeper/bitnami/overrides.yml | 18 - .../scripts/zookeeper_coverage_script.sh | 47 - community_images/zookeeper/ironbank/README.md | 138 -- .../ironbank/assets/cve_reduction.webp | Bin 1512 -> 0 bytes .../zookeeper/ironbank/assets/metrics.webp | Bin 26162 -> 0 bytes .../zookeeper/ironbank/coverage.sh | 11 - .../zookeeper/ironbank/dc_coverage.sh | 22 - .../zookeeper/ironbank/docker-compose.yml | 16 - .../zookeeper/ironbank/docker.env | 1 - .../zookeeper/ironbank/docker_coverage.sh | 13 - community_images/zookeeper/ironbank/image.yml | 36 - .../zookeeper/ironbank/k8s_coverage.sh | 28 - .../zookeeper/ironbank/overrides.yml | 18 - .../scripts/zookeeper_coverage_script.sh | 47 - community_images/zookeeper/official/.rfignore | 2 - community_images/zookeeper/official/README.md | 140 -- .../official/assets/cve_reduction.webp | Bin 1308 -> 0 bytes .../zookeeper/official/assets/metrics.webp | Bin 25684 -> 0 bytes .../zookeeper/official/coverage.sh | 18 - .../zookeeper/official/docker.env | 1 - .../zookeeper/official/docker_coverage.sh | 10 - community_images/zookeeper/official/image.yml | 49 - .../zookeeper/official/k8s_coverage.sh | 28 - .../zookeeper/official/overrides.yml | 18 - .../scripts/zookeeper_coverage_script.sh | 47 - 733 files changed, 32040 deletions(-) delete mode 100644 community_images/airflow/airflow-scheduler/bitnami/README.md delete mode 100644 community_images/airflow/airflow-scheduler/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/airflow/airflow-scheduler/bitnami/assets/metrics.webp delete mode 100644 community_images/airflow/airflow-scheduler/bitnami/image.yml delete mode 100644 community_images/airflow/airflow-worker/bitnami/README.md delete mode 100644 community_images/airflow/airflow-worker/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/airflow/airflow-worker/bitnami/assets/metrics.webp delete mode 100644 community_images/airflow/airflow-worker/bitnami/image.yml delete mode 100644 community_images/airflow/airflow/bitnami/.rfignore delete mode 100644 community_images/airflow/airflow/bitnami/README.md delete mode 100644 community_images/airflow/airflow/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/airflow/airflow/bitnami/assets/metrics.webp delete mode 100755 community_images/airflow/airflow/bitnami/dc_coverage.sh delete mode 100644 community_images/airflow/airflow/bitnami/docker-compose.yml delete mode 100755 community_images/airflow/airflow/bitnami/docker_coverage.sh delete mode 100644 community_images/airflow/airflow/bitnami/image.yml delete mode 100755 community_images/airflow/airflow/bitnami/k8s_coverage.sh delete mode 100644 community_images/airflow/airflow/bitnami/overrides.yml delete mode 100644 community_images/airflow/airflow/bitnami/selenium_tests/airflow.side delete mode 100644 community_images/airflow/airflow/bitnami/selenium_tests/conftest.py delete mode 100644 community_images/airflow/airflow/bitnami/selenium_tests/test_enablealldags.py delete mode 100644 community_images/airflow/airflow/bitnami/selenium_tests/test_testadmin.py delete mode 100644 community_images/airflow/airflow/bitnami/selenium_tests/test_viewbrowse.py delete mode 100644 community_images/airflow/airflow/bitnami/selenium_tests/test_viewsecurity.py delete mode 100644 community_images/airflow/airflow/ironbank/.rfignore delete mode 100644 community_images/airflow/airflow/ironbank/README.md delete mode 100644 community_images/airflow/airflow/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/airflow/airflow/ironbank/assets/metrics.webp delete mode 100755 community_images/airflow/airflow/ironbank/dc_coverage.sh delete mode 100644 community_images/airflow/airflow/ironbank/docker-compose.yml delete mode 100644 community_images/airflow/airflow/ironbank/image.yml delete mode 100644 community_images/airflow/airflow/ironbank/selenium_tests/conftest.py delete mode 100644 community_images/airflow/airflow/ironbank/selenium_tests/test_enablealldags.py delete mode 100644 community_images/airflow/airflow/ironbank/selenium_tests/test_testadmin.py delete mode 100644 community_images/airflow/airflow/ironbank/selenium_tests/test_viewbrowse.py delete mode 100644 community_images/airflow/airflow/ironbank/selenium_tests/test_viewsecurity.py delete mode 100644 community_images/apache/bitnami/.rfignore delete mode 100644 community_images/apache/bitnami/README.md delete mode 100644 community_images/apache/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/apache/bitnami/assets/metrics.webp delete mode 100755 community_images/apache/bitnami/coverage_script.sh delete mode 100755 community_images/apache/bitnami/dc_coverage.sh delete mode 100644 community_images/apache/bitnami/docker-compose.yml delete mode 100755 community_images/apache/bitnami/docker_coverage.sh delete mode 100644 community_images/apache/bitnami/image.yml delete mode 100755 community_images/apache/bitnami/k8s_coverage.sh delete mode 100644 community_images/apache/bitnami/modules_list delete mode 100644 community_images/apache/bitnami/overrides.yml delete mode 100755 community_images/apache/ironbank/README.md delete mode 100644 community_images/apache/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/apache/ironbank/assets/metrics.webp delete mode 100644 community_images/apache/ironbank/configs/index.html delete mode 100644 community_images/apache/ironbank/configs/server-configs/httpd.conf delete mode 100755 community_images/apache/ironbank/configs/server-configs/httpd1.conf delete mode 100755 community_images/apache/ironbank/configs/server-configs/httpd2.conf delete mode 100755 community_images/apache/ironbank/configs/server-configs/httpd3.conf delete mode 100755 community_images/apache/ironbank/dc_coverage.sh delete mode 100755 community_images/apache/ironbank/docker-compose.yml delete mode 100755 community_images/apache/ironbank/image.yml delete mode 100644 community_images/apache/official/.rfignore delete mode 100755 community_images/apache/official/README.md delete mode 100644 community_images/apache/official/assets/cve_reduction.webp delete mode 100644 community_images/apache/official/assets/metrics.webp delete mode 100644 community_images/apache/official/configs/index.html delete mode 100644 community_images/apache/official/configs/server-configs/httpd1.conf delete mode 100644 community_images/apache/official/configs/server-configs/httpd2.conf delete mode 100644 community_images/apache/official/configs/server-configs/httpd3.conf delete mode 100755 community_images/apache/official/dc_coverage.sh delete mode 100755 community_images/apache/official/docker-compose.yml delete mode 100755 community_images/apache/official/docker_coverage.sh delete mode 100755 community_images/apache/official/image.yml delete mode 100755 community_images/apache/official/overrides.yml delete mode 100644 community_images/cassandra/official/README.md delete mode 100644 community_images/cassandra/official/assets/cve_reduction.webp delete mode 100644 community_images/cassandra/official/assets/metrics.webp delete mode 100755 community_images/cassandra/official/dc_coverage.sh delete mode 100644 community_images/cassandra/official/docker-compose.yml delete mode 100755 community_images/cassandra/official/docker_coverage.sh delete mode 100644 community_images/cassandra/official/image.yml delete mode 100644 community_images/cassandra/official/tests/test.cql delete mode 100644 community_images/consul/bitnami/.rfignore delete mode 100644 community_images/consul/bitnami/README.md delete mode 100644 community_images/consul/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/consul/bitnami/assets/metrics.webp delete mode 100644 community_images/consul/bitnami/configs/acls/consul-anonymous-token-policy.hcl delete mode 100644 community_images/consul/bitnami/configs/sample_service.json delete mode 100644 community_images/consul/bitnami/configs/server.json delete mode 100755 community_images/consul/bitnami/dc_acl_coverage.sh delete mode 100755 community_images/consul/bitnami/dc_coverage.sh delete mode 100755 community_images/consul/bitnami/docker-compose-acl.yml delete mode 100755 community_images/consul/bitnami/docker-compose.yml delete mode 100644 community_images/consul/bitnami/image.yml delete mode 100755 community_images/consul/bitnami/k8s_coverage.sh delete mode 100644 community_images/consul/bitnami/overrides.yml delete mode 100755 community_images/consul/bitnami/scripts/client_container_test.sh delete mode 100755 community_images/consul/bitnami/scripts/client_coverage_script.sh delete mode 100755 community_images/consul/bitnami/scripts/server_coverage_script.sh delete mode 100644 community_images/consul/bitnami/tls_certs.yml delete mode 100755 community_images/consul/ironbank/README.md delete mode 100644 community_images/consul/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/consul/ironbank/assets/metrics.webp delete mode 100755 community_images/consul/ironbank/configs/acls/consul-anonymous-token-policy.hcl delete mode 100644 community_images/consul/ironbank/configs/sample_service.json delete mode 100644 community_images/consul/ironbank/configs/server.json delete mode 100755 community_images/consul/ironbank/dc_acl_coverage.sh delete mode 100755 community_images/consul/ironbank/dc_coverage.sh delete mode 100755 community_images/consul/ironbank/docker-compose-acl.yml delete mode 100755 community_images/consul/ironbank/docker-compose.yml delete mode 100755 community_images/consul/ironbank/image.yml delete mode 100755 community_images/consul/ironbank/scripts/client_coverage_script.sh delete mode 100644 community_images/consul/ironbank/scripts/server2_coverage_script.sh delete mode 100755 community_images/consul/ironbank/scripts/server_coverage_script.sh delete mode 100644 community_images/consul/official/.rfignore delete mode 100755 community_images/consul/official/README.md delete mode 100644 community_images/consul/official/assets/cve_reduction.webp delete mode 100644 community_images/consul/official/assets/metrics.webp delete mode 100644 community_images/consul/official/configs/acls/consul-anonymous-token-policy.hcl delete mode 100644 community_images/consul/official/configs/sample_service.json delete mode 100644 community_images/consul/official/configs/server.json delete mode 100755 community_images/consul/official/dc_acl_coverage.sh delete mode 100755 community_images/consul/official/dc_coverage.sh delete mode 100755 community_images/consul/official/docker-compose-acl.yml delete mode 100755 community_images/consul/official/docker-compose.yml delete mode 100755 community_images/consul/official/image.yml delete mode 100755 community_images/consul/official/scripts/client_container_test.sh delete mode 100755 community_images/consul/official/scripts/client_coverage_script.sh delete mode 100755 community_images/consul/official/scripts/server_coverage_script.sh delete mode 100644 community_images/couchdb/bitnami/.rfignore delete mode 100644 community_images/couchdb/bitnami/README.md delete mode 100644 community_images/couchdb/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/couchdb/bitnami/assets/metrics.webp delete mode 100755 community_images/couchdb/bitnami/coverage.sh delete mode 100755 community_images/couchdb/bitnami/dc_coverage.sh delete mode 100644 community_images/couchdb/bitnami/docker-compose.yml delete mode 100755 community_images/couchdb/bitnami/host_coverage.sh delete mode 100644 community_images/couchdb/bitnami/image.yml delete mode 100755 community_images/couchdb/ironbank/README.md delete mode 100644 community_images/couchdb/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/couchdb/ironbank/assets/metrics.webp delete mode 100755 community_images/couchdb/ironbank/coverage.sh delete mode 100755 community_images/couchdb/ironbank/dc_coverage.sh delete mode 100755 community_images/couchdb/ironbank/docker-compose.yml delete mode 100755 community_images/couchdb/ironbank/host_coverage.sh delete mode 100755 community_images/couchdb/ironbank/image.yml delete mode 100644 community_images/couchdb/official/.rfignore delete mode 100644 community_images/couchdb/official/README.md delete mode 100644 community_images/couchdb/official/assets/cve_reduction.webp delete mode 100644 community_images/couchdb/official/assets/metrics.webp delete mode 100755 community_images/couchdb/official/coverage.sh delete mode 100755 community_images/couchdb/official/dc_coverage.sh delete mode 100644 community_images/couchdb/official/docker-compose.yml delete mode 100755 community_images/couchdb/official/host_coverage.sh delete mode 100644 community_images/couchdb/official/image.yml delete mode 100644 community_images/curl/curlimages/README.md delete mode 100644 community_images/curl/curlimages/assets/cve_reduction.webp delete mode 100644 community_images/curl/curlimages/assets/metrics.webp delete mode 100755 community_images/curl/curlimages/docker_coverage.sh delete mode 100644 community_images/curl/curlimages/image.yml delete mode 100755 community_images/curl/curlimages/sleep_script.sh delete mode 100644 community_images/curl/curlimages/test.txt delete mode 100644 community_images/elasticsearch/bitnami/.rfignore delete mode 100644 community_images/elasticsearch/bitnami/README.md delete mode 100644 community_images/elasticsearch/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/elasticsearch/bitnami/assets/metrics.webp delete mode 100755 community_images/elasticsearch/bitnami/coverage.sh delete mode 100755 community_images/elasticsearch/bitnami/dc_coverage.sh delete mode 100644 community_images/elasticsearch/bitnami/docker-compose.yml delete mode 100755 community_images/elasticsearch/bitnami/es_test.py delete mode 100644 community_images/elasticsearch/bitnami/image.yml delete mode 100644 community_images/elasticsearch/bitnami/overrides.yml delete mode 100755 community_images/elasticsearch/official/.rfignore delete mode 100755 community_images/elasticsearch/official/README.md delete mode 100644 community_images/elasticsearch/official/assets/cve_reduction.webp delete mode 100644 community_images/elasticsearch/official/assets/metrics.webp delete mode 100755 community_images/elasticsearch/official/coverage.sh delete mode 100755 community_images/elasticsearch/official/dc_coverage.sh delete mode 100755 community_images/elasticsearch/official/docker-compose.yml delete mode 100755 community_images/elasticsearch/official/es_test.py delete mode 100755 community_images/elasticsearch/official/image.yml delete mode 100644 community_images/elasticsearch/official/overrides.yml delete mode 100644 community_images/envoy/bitnami/.rfignore delete mode 100644 community_images/envoy/bitnami/README.md delete mode 100644 community_images/envoy/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/envoy/bitnami/assets/metrics.webp delete mode 100644 community_images/envoy/bitnami/configs/dynamic/bootstrap.yaml delete mode 100644 community_images/envoy/bitnami/configs/dynamic/cds.yaml delete mode 100644 community_images/envoy/bitnami/configs/dynamic/lds.yaml delete mode 100644 community_images/envoy/bitnami/configs/envoy.yaml delete mode 100644 community_images/envoy/bitnami/configs/envoy_non_tls.yaml delete mode 100755 community_images/envoy/bitnami/coverage_script.sh delete mode 100755 community_images/envoy/bitnami/dc_coverage.sh delete mode 100644 community_images/envoy/bitnami/docker-compose.yml delete mode 100755 community_images/envoy/bitnami/docker_coverage.sh delete mode 100644 community_images/envoy/bitnami/image.yml delete mode 100644 community_images/envoy/official/README.md delete mode 100644 community_images/envoy/official/assets/cve_reduction.webp delete mode 100644 community_images/envoy/official/assets/metrics.webp delete mode 100644 community_images/envoy/official/configs/dynamic/bootstrap.yaml delete mode 100644 community_images/envoy/official/configs/dynamic/cds.yaml delete mode 100644 community_images/envoy/official/configs/dynamic/lds.yaml delete mode 100644 community_images/envoy/official/configs/envoy.yaml delete mode 100644 community_images/envoy/official/configs/envoy_non_tls.yaml delete mode 100755 community_images/envoy/official/coverage_script.sh delete mode 100755 community_images/envoy/official/dc_coverage.sh delete mode 100644 community_images/envoy/official/docker-compose.yml delete mode 100755 community_images/envoy/official/docker_coverage.sh delete mode 100644 community_images/envoy/official/image.yml delete mode 100644 community_images/etcd/bitnami/.rfignore delete mode 100644 community_images/etcd/bitnami/README.md delete mode 100644 community_images/etcd/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/etcd/bitnami/assets/metrics.webp delete mode 100755 community_images/etcd/bitnami/dc_coverage.sh delete mode 100644 community_images/etcd/bitnami/docker-compose.yml delete mode 100755 community_images/etcd/bitnami/docker_coverage.sh delete mode 100755 community_images/etcd/bitnami/etcd_test.sh delete mode 100644 community_images/etcd/bitnami/image.yml delete mode 100755 community_images/etcd/bitnami/k8s_coverage.sh delete mode 100644 community_images/etcd/bitnami/overrides.yml delete mode 100644 community_images/etcd/ironbank/.rfignore delete mode 100644 community_images/etcd/ironbank/README.md delete mode 100644 community_images/etcd/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/etcd/ironbank/assets/metrics.webp delete mode 100755 community_images/etcd/ironbank/dc_coverage.sh delete mode 100644 community_images/etcd/ironbank/docker-compose.yml delete mode 100755 community_images/etcd/ironbank/etcd_test.sh delete mode 100644 community_images/etcd/ironbank/image.yml delete mode 100644 community_images/fluentd/bitnami/.rfignore delete mode 100644 community_images/fluentd/bitnami/README.md delete mode 100644 community_images/fluentd/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/fluentd/bitnami/assets/metrics.webp delete mode 100755 community_images/fluentd/bitnami/dc_coverage.sh delete mode 100644 community_images/fluentd/bitnami/docker-compose.yml delete mode 100755 community_images/fluentd/bitnami/docker_coverage.sh delete mode 100644 community_images/fluentd/bitnami/image.yml delete mode 100755 community_images/fluentd/bitnami/k8s_coverage.sh delete mode 100644 community_images/fluentd/bitnami/overrides.yml delete mode 100755 community_images/fluentd/ironbank/.rfignore delete mode 100755 community_images/fluentd/ironbank/README.md delete mode 100644 community_images/fluentd/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/fluentd/ironbank/assets/metrics.webp delete mode 100755 community_images/fluentd/ironbank/dc_coverage.sh delete mode 100755 community_images/fluentd/ironbank/docker-compose.yml delete mode 100755 community_images/fluentd/ironbank/image.yml delete mode 100644 community_images/fluentd/official/.rfignore delete mode 100755 community_images/fluentd/official/README.md delete mode 100644 community_images/fluentd/official/assets/cve_reduction.webp delete mode 100644 community_images/fluentd/official/assets/metrics.webp delete mode 100755 community_images/fluentd/official/dc_coverage.sh delete mode 100755 community_images/fluentd/official/docker-compose.yml delete mode 100755 community_images/fluentd/official/image.yml delete mode 100644 community_images/ghost/bitnami/.rfignore delete mode 100755 community_images/ghost/bitnami/README.md delete mode 100644 community_images/ghost/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/ghost/bitnami/assets/metrics.webp delete mode 100755 community_images/ghost/bitnami/dc_coverage.sh delete mode 100755 community_images/ghost/bitnami/docker-compose.yml delete mode 100755 community_images/ghost/bitnami/image.yml delete mode 100755 community_images/ghost/bitnami/k8s_coverage.sh delete mode 100755 community_images/ghost/bitnami/overrides.yml delete mode 100755 community_images/ghost/bitnami/selenium_tests/conftest.py delete mode 100755 community_images/ghost/bitnami/selenium_tests/ghost.side delete mode 100755 community_images/ghost/bitnami/selenium_tests/test_primaryFunctions.py delete mode 100644 community_images/grafana/ironbank/.rfignore delete mode 100644 community_images/grafana/ironbank/README.md delete mode 100755 community_images/grafana/ironbank/dc_coverage.sh delete mode 100644 community_images/grafana/ironbank/docker-compose.yml delete mode 100644 community_images/grafana/ironbank/image.yml delete mode 100644 community_images/grafana/ironbank/selenium_tests/__init__.py delete mode 100644 community_images/grafana/ironbank/selenium_tests/conftest.py delete mode 100644 community_images/grafana/ironbank/selenium_tests/grafana_selenium_test.py delete mode 100644 community_images/haproxy/bitnami/.rfignore delete mode 100644 community_images/haproxy/bitnami/README.md delete mode 100644 community_images/haproxy/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/haproxy/bitnami/assets/metrics.webp delete mode 100644 community_images/haproxy/bitnami/configs/haproxy-tcp.cfg delete mode 100755 community_images/haproxy/bitnami/configs/haproxy.cfg delete mode 100644 community_images/haproxy/bitnami/configs/sample-server/app/app.py delete mode 100644 community_images/haproxy/bitnami/configs/sample-server/app/templates/error.html delete mode 100644 community_images/haproxy/bitnami/configs/sample-server/app/templates/index.html delete mode 100755 community_images/haproxy/bitnami/dc_coverage.sh delete mode 100755 community_images/haproxy/bitnami/dc_coverage_tcp.sh delete mode 100755 community_images/haproxy/bitnami/docker-compose-tcp.yml delete mode 100755 community_images/haproxy/bitnami/docker-compose.yml delete mode 100755 community_images/haproxy/bitnami/image.yml delete mode 100755 community_images/haproxy/bitnami/k8s_coverage.sh delete mode 100755 community_images/haproxy/bitnami/overrides.yml delete mode 100755 community_images/haproxy/ironbank/README.md delete mode 100644 community_images/haproxy/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/haproxy/ironbank/assets/metrics.webp delete mode 100755 community_images/haproxy/ironbank/configs/http-mode/haproxy1.cfg delete mode 100755 community_images/haproxy/ironbank/configs/http-mode/haproxy2.cfg delete mode 100755 community_images/haproxy/ironbank/configs/http-mode/haproxy3.cfg delete mode 100755 community_images/haproxy/ironbank/configs/sample-server/app/app.py delete mode 100644 community_images/haproxy/ironbank/configs/sample-server/app/templates/error.html delete mode 100644 community_images/haproxy/ironbank/configs/sample-server/app/templates/index.html delete mode 100755 community_images/haproxy/ironbank/configs/tcp-mode/haproxy-tcp1.cfg delete mode 100755 community_images/haproxy/ironbank/configs/tcp-mode/haproxy-tcp2.cfg delete mode 100755 community_images/haproxy/ironbank/configs/tcp-mode/haproxy-tcp3.cfg delete mode 100755 community_images/haproxy/ironbank/dc_coverage.sh delete mode 100755 community_images/haproxy/ironbank/dc_coverage_tcp.sh delete mode 100755 community_images/haproxy/ironbank/docker-compose-tcp.yml delete mode 100755 community_images/haproxy/ironbank/docker-compose.yml delete mode 100755 community_images/haproxy/ironbank/image.yml delete mode 100644 community_images/haproxy/official/.rfignore delete mode 100644 community_images/haproxy/official/README.md delete mode 100644 community_images/haproxy/official/assets/cve_reduction.webp delete mode 100644 community_images/haproxy/official/assets/metrics.webp delete mode 100644 community_images/haproxy/official/configs/http-mode/haproxy1.cfg delete mode 100644 community_images/haproxy/official/configs/http-mode/haproxy2.cfg delete mode 100644 community_images/haproxy/official/configs/http-mode/haproxy3.cfg delete mode 100644 community_images/haproxy/official/configs/sample-server/app/app.py delete mode 100644 community_images/haproxy/official/configs/sample-server/app/templates/error.html delete mode 100644 community_images/haproxy/official/configs/sample-server/app/templates/index.html delete mode 100644 community_images/haproxy/official/configs/tcp-mode/haproxy-tcp1.cfg delete mode 100644 community_images/haproxy/official/configs/tcp-mode/haproxy-tcp2.cfg delete mode 100644 community_images/haproxy/official/configs/tcp-mode/haproxy-tcp3.cfg delete mode 100755 community_images/haproxy/official/dc_coverage.sh delete mode 100755 community_images/haproxy/official/dc_coverage_tcp.sh delete mode 100755 community_images/haproxy/official/docker-compose-tcp.yml delete mode 100755 community_images/haproxy/official/docker-compose.yml delete mode 100644 community_images/haproxy/official/image.yml delete mode 100644 community_images/influxdb/bitnami/.rfignore delete mode 100644 community_images/influxdb/bitnami/README.md delete mode 100644 community_images/influxdb/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/influxdb/bitnami/assets/metrics.webp delete mode 100755 community_images/influxdb/bitnami/dc_coverage.sh delete mode 100644 community_images/influxdb/bitnami/docker-compose.yml delete mode 100644 community_images/influxdb/bitnami/docker.env delete mode 100755 community_images/influxdb/bitnami/docker_coverage.sh delete mode 100644 community_images/influxdb/bitnami/image.yml delete mode 100755 community_images/influxdb/bitnami/k8s_coverage.sh delete mode 100644 community_images/influxdb/bitnami/overrides.yml delete mode 100644 community_images/influxdb/bitnami/tests/example.csv delete mode 100644 community_images/influxdb/bitnami/tests/query.flux delete mode 100644 community_images/kong/official/README.md delete mode 100644 community_images/kong/official/assets/cve_reduction.webp delete mode 100644 community_images/kong/official/assets/metrics.webp delete mode 100755 community_images/kong/official/dc_coverage.sh delete mode 100644 community_images/kong/official/docker-compose.yml delete mode 100755 community_images/kong/official/docker_coverage.sh delete mode 100644 community_images/kong/official/image.yml delete mode 100755 community_images/kong/official/k8s_coverage.sh delete mode 100644 community_images/kong/official/kong_setup.sh delete mode 100644 community_images/kong/official/overrides.yml delete mode 100644 community_images/mariadb/bitnami/.rfignore delete mode 100644 community_images/mariadb/bitnami/README.md delete mode 100644 community_images/mariadb/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/mariadb/bitnami/assets/metrics.webp delete mode 100644 community_images/mariadb/bitnami/docker-compose.yml delete mode 100644 community_images/mariadb/bitnami/image.yml delete mode 100755 community_images/mariadb/bitnami/k8s_coverage.sh delete mode 100644 community_images/mariadb/bitnami/overrides.yml delete mode 100644 community_images/mariadb/ironbank/.rfignore delete mode 100644 community_images/mariadb/ironbank/README.md delete mode 100644 community_images/mariadb/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/mariadb/ironbank/assets/metrics.webp delete mode 100755 community_images/mariadb/ironbank/docker_coverage.sh delete mode 100644 community_images/mariadb/ironbank/image.yml delete mode 100644 community_images/mariadb/official/README.md delete mode 100644 community_images/mariadb/official/assets/cve_reduction.webp delete mode 100644 community_images/mariadb/official/assets/metrics.webp delete mode 100755 community_images/mariadb/official/docker_coverage.sh delete mode 100644 community_images/mariadb/official/image.yml delete mode 100755 community_images/mariadb/official/k8s_coverage.sh delete mode 100644 community_images/mariadb/official/overrides.yml delete mode 100644 community_images/memcached/bitnami/.rfignore delete mode 100644 community_images/memcached/bitnami/README.md delete mode 100644 community_images/memcached/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/memcached/bitnami/assets/metrics.webp delete mode 100755 community_images/memcached/bitnami/dc_coverage.sh delete mode 100644 community_images/memcached/bitnami/docker-compose.yml delete mode 100644 community_images/memcached/bitnami/image.yml delete mode 100755 community_images/memcached/bitnami/mc_cli.sh delete mode 100644 community_images/memcached/bitnami/overrides.yml delete mode 100755 community_images/memcached/ironbank/README.md delete mode 100644 community_images/memcached/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/memcached/ironbank/assets/metrics.webp delete mode 100755 community_images/memcached/ironbank/dc_coverage.sh delete mode 100755 community_images/memcached/ironbank/docker-compose.yml delete mode 100755 community_images/memcached/ironbank/image.yml delete mode 100755 community_images/memcached/ironbank/mc_cli.sh delete mode 100644 community_images/memcached/official/README.md delete mode 100644 community_images/memcached/official/assets/cve_reduction.webp delete mode 100644 community_images/memcached/official/assets/metrics.webp delete mode 100755 community_images/memcached/official/dc_coverage.sh delete mode 100644 community_images/memcached/official/docker-compose.yml delete mode 100644 community_images/memcached/official/image.yml delete mode 100755 community_images/memcached/official/mc_cli.sh delete mode 100755 community_images/microsoft-sql-server-2019/ironbank/README.md delete mode 100644 community_images/microsoft-sql-server-2019/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/microsoft-sql-server-2019/ironbank/assets/metrics.webp delete mode 100755 community_images/microsoft-sql-server-2019/ironbank/dc_coverage.sh delete mode 100755 community_images/microsoft-sql-server-2019/ironbank/docker-compose.yml delete mode 100755 community_images/microsoft-sql-server-2019/ironbank/image.yml delete mode 100644 community_images/microsoft-sql-server-2019/ironbank/tests/azure_ib.ms_sql delete mode 100644 community_images/microsoft-sql-server-2019/ironbank/tests/azure_ib_bak.ms_sql delete mode 100644 community_images/mongodb/bitnami/.rfignore delete mode 100644 community_images/mongodb/bitnami/README.md delete mode 100644 community_images/mongodb/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/mongodb/bitnami/assets/metrics.webp delete mode 100644 community_images/mongodb/bitnami/client.yml.base delete mode 100755 community_images/mongodb/bitnami/dc_coverage.sh delete mode 100644 community_images/mongodb/bitnami/docker-compose.yml delete mode 100644 community_images/mongodb/bitnami/docker-compose.yml.base delete mode 100755 community_images/mongodb/bitnami/docker_coverage.sh delete mode 100644 community_images/mongodb/bitnami/image.yml delete mode 100755 community_images/mongodb/bitnami/k8s_coverage.sh delete mode 100644 community_images/mongodb/bitnami/mongo_helpers.sh delete mode 100644 community_images/mongodb/bitnami/overrides.yml delete mode 100644 community_images/mongodb/bitnami/perf_test/Dockerfile delete mode 100755 community_images/mongodb/bitnami/perf_test/build_docker.sh delete mode 100755 community_images/mongodb/bitnami/perf_test/entrypoint.sh delete mode 100644 community_images/mongodb/ironbank/README.md delete mode 100644 community_images/mongodb/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/mongodb/ironbank/assets/metrics.webp delete mode 100755 community_images/mongodb/ironbank/dc_coverage.sh delete mode 100644 community_images/mongodb/ironbank/docker-compose.yml delete mode 100644 community_images/mongodb/ironbank/image.yml delete mode 100755 community_images/mongodb/ironbank/use_mongodb.js delete mode 100644 community_images/mongodb/official/README.md delete mode 100644 community_images/mongodb/official/assets/cve_reduction.webp delete mode 100644 community_images/mongodb/official/assets/metrics.webp delete mode 100755 community_images/mongodb/official/dc_coverage.sh delete mode 100644 community_images/mongodb/official/docker-compose.yml delete mode 100644 community_images/mongodb/official/image.yml delete mode 100755 community_images/mongodb/official/use_mongodb.js delete mode 100644 community_images/mysql/bitnami/.rfignore delete mode 100644 community_images/mysql/bitnami/README.md delete mode 100644 community_images/mysql/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/mysql/bitnami/assets/metrics.webp delete mode 100644 community_images/mysql/bitnami/docker-compose.yml delete mode 100644 community_images/mysql/bitnami/image.yml delete mode 100755 community_images/mysql/bitnami/k8s_coverage.sh delete mode 100644 community_images/mysql/bitnami/overrides.yml delete mode 100644 community_images/mysql/ironbank/.rfignore delete mode 100644 community_images/mysql/ironbank/README.md delete mode 100644 community_images/mysql/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/mysql/ironbank/assets/metrics.webp delete mode 100755 community_images/mysql/ironbank/docker_coverage.sh delete mode 100644 community_images/mysql/ironbank/image.yml delete mode 100644 community_images/mysql/official/.rfignore delete mode 100644 community_images/mysql/official/README.md delete mode 100644 community_images/mysql/official/assets/cve_reduction.webp delete mode 100644 community_images/mysql/official/assets/metrics.webp delete mode 100755 community_images/mysql/official/docker_coverage.sh delete mode 100644 community_images/mysql/official/image.yml delete mode 100644 community_images/nats/bitnami/.rfignore delete mode 100644 community_images/nats/bitnami/README.md delete mode 100644 community_images/nats/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/nats/bitnami/assets/metrics.webp delete mode 100644 community_images/nats/bitnami/coverage.sh delete mode 100755 community_images/nats/bitnami/dc_coverage.sh delete mode 100644 community_images/nats/bitnami/docker-compose.yml delete mode 100755 community_images/nats/bitnami/docker_coverage.sh delete mode 100644 community_images/nats/bitnami/image.yml delete mode 100755 community_images/nats/bitnami/k8s_coverage.sh delete mode 100644 community_images/nats/bitnami/overrides.yml delete mode 100644 community_images/nats/ironbank/README.md delete mode 100644 community_images/nats/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/nats/ironbank/assets/metrics.webp delete mode 100644 community_images/nats/ironbank/coverage.sh delete mode 100644 community_images/nats/ironbank/image.yml delete mode 100755 community_images/nats/ironbank/k8s_coverage.sh delete mode 100644 community_images/nats/ironbank/overrides.yml delete mode 100644 community_images/nats/official/README.md delete mode 100644 community_images/nats/official/assets/cve_reduction.webp delete mode 100644 community_images/nats/official/assets/metrics.webp delete mode 100644 community_images/nats/official/coverage.sh delete mode 100755 community_images/nats/official/dc_coverage.sh delete mode 100644 community_images/nats/official/docker-compose.yml delete mode 100755 community_images/nats/official/docker_coverage.sh delete mode 100644 community_images/nats/official/image.yml delete mode 100755 community_images/nats/official/k8s_coverage.sh delete mode 100644 community_images/nats/official/overrides.yml delete mode 100644 community_images/nginx/bitnami/.rfignore delete mode 100644 community_images/nginx/bitnami/README.md delete mode 100644 community_images/nginx/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/nginx/bitnami/assets/metrics.webp delete mode 100644 community_images/nginx/bitnami/configs/server_block_backends.conf delete mode 100644 community_images/nginx/bitnami/configs/server_include_backends.conf delete mode 100755 community_images/nginx/bitnami/coverage_script.sh delete mode 100755 community_images/nginx/bitnami/dc_coverage.sh delete mode 100644 community_images/nginx/bitnami/docker-compose.yml delete mode 100644 community_images/nginx/bitnami/image.yml delete mode 100755 community_images/nginx/bitnami/k8s_coverage.sh delete mode 100644 community_images/nginx/bitnami/overrides.yml delete mode 100644 community_images/nginx/ironbank/.rfignore delete mode 100644 community_images/nginx/ironbank/README.md delete mode 100644 community_images/nginx/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/nginx/ironbank/assets/metrics.webp delete mode 100755 community_images/nginx/ironbank/dc_coverage.sh delete mode 100644 community_images/nginx/ironbank/docker-compose.yml delete mode 100644 community_images/nginx/ironbank/image.yml delete mode 100644 community_images/nginx/ironbank/nginx.conf delete mode 100644 community_images/nginx/official/.rfignore delete mode 100644 community_images/nginx/official/README.md delete mode 100644 community_images/nginx/official/assets/cve_reduction.webp delete mode 100644 community_images/nginx/official/assets/metrics.webp delete mode 100644 community_images/nginx/official/configs/nginx.conf delete mode 100755 community_images/nginx/official/dc_coverage.sh delete mode 100755 community_images/nginx/official/docker-compose.yml delete mode 100644 community_images/nginx/official/image.yml delete mode 100644 community_images/nginx/official/overrides.yml delete mode 100644 community_images/oncall/grafana/.env_hobby delete mode 100644 community_images/oncall/grafana/.rfignore delete mode 100644 community_images/oncall/grafana/README.md delete mode 100644 community_images/oncall/grafana/assets/cve_reduction.webp delete mode 100644 community_images/oncall/grafana/assets/metrics.webp delete mode 100755 community_images/oncall/grafana/dc_coverage.sh delete mode 100644 community_images/oncall/grafana/docker-compose.yml delete mode 100644 community_images/oncall/grafana/image.yml delete mode 100644 community_images/oncall/grafana/overrides.yml delete mode 100644 community_images/postgresql/bitnami/.rfignore delete mode 100644 community_images/postgresql/bitnami/README.md delete mode 100644 community_images/postgresql/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/postgresql/bitnami/assets/metrics.webp delete mode 100755 community_images/postgresql/bitnami/dc_coverage.sh delete mode 100644 community_images/postgresql/bitnami/docker-compose.yml delete mode 100755 community_images/postgresql/bitnami/docker_coverage.sh delete mode 100644 community_images/postgresql/bitnami/image.yml delete mode 100755 community_images/postgresql/bitnami/k8s_coverage.sh delete mode 100644 community_images/postgresql/bitnami/overrides.yml delete mode 100644 community_images/postgresql/ironbank/.rfignore delete mode 100644 community_images/postgresql/ironbank/README.md delete mode 100644 community_images/postgresql/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/postgresql/ironbank/assets/metrics.webp delete mode 100755 community_images/postgresql/ironbank/dc_coverage.sh delete mode 100644 community_images/postgresql/ironbank/docker-compose.yml delete mode 100644 community_images/postgresql/ironbank/docker_coverage.sh delete mode 100644 community_images/postgresql/ironbank/image.yml delete mode 100644 community_images/postgresql/official/README.md delete mode 100644 community_images/postgresql/official/assets/cve_reduction.webp delete mode 100644 community_images/postgresql/official/assets/metrics.webp delete mode 100755 community_images/postgresql/official/dc_coverage.sh delete mode 100644 community_images/postgresql/official/docker-compose.yml delete mode 100644 community_images/postgresql/official/image.yml delete mode 100644 community_images/prometheus/bitnami/.rfignore delete mode 100644 community_images/prometheus/bitnami/Dockerfile delete mode 100644 community_images/prometheus/bitnami/README.md delete mode 100644 community_images/prometheus/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/prometheus/bitnami/assets/metrics.webp delete mode 100755 community_images/prometheus/bitnami/build_docker.sh delete mode 100644 community_images/prometheus/bitnami/config/prometheus/prometheus.yml delete mode 100755 community_images/prometheus/bitnami/coverage.sh delete mode 100755 community_images/prometheus/bitnami/dc_coverage.sh delete mode 100644 community_images/prometheus/bitnami/docker-compose.yml delete mode 100755 community_images/prometheus/bitnami/docker_coverage.sh delete mode 100644 community_images/prometheus/bitnami/flask_app.py delete mode 100644 community_images/prometheus/bitnami/helpers/middleware.py delete mode 100644 community_images/prometheus/bitnami/image.yml delete mode 100755 community_images/prometheus/bitnami/k8s_coverage.sh delete mode 100644 community_images/prometheus/bitnami/overrides.yml delete mode 100644 community_images/prometheus/bitnami/requirements.txt delete mode 100644 community_images/prometheus/bitnami/selenium_tests/__init__.py delete mode 100644 community_images/prometheus/bitnami/selenium_tests/conftest.py delete mode 100644 community_images/prometheus/bitnami/selenium_tests/prometheus_selenium_test.py delete mode 100644 community_images/prometheus/ironbank/.rfignore delete mode 100644 community_images/prometheus/ironbank/README.md delete mode 100644 community_images/prometheus/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/prometheus/ironbank/assets/metrics.webp delete mode 100644 community_images/prometheus/ironbank/config/prometheus/prometheus.yml delete mode 100755 community_images/prometheus/ironbank/coverage.sh delete mode 100644 community_images/prometheus/ironbank/image.yml delete mode 100755 community_images/prometheus/ironbank/k8s_coverage.sh delete mode 100644 community_images/prometheus/ironbank/overrides.yml delete mode 100644 community_images/prometheus/ironbank/selenium_tests/__init__.py delete mode 100644 community_images/prometheus/ironbank/selenium_tests/conftest.py delete mode 100644 community_images/prometheus/ironbank/selenium_tests/prometheus_selenium_test.py delete mode 100644 community_images/rabbitmq/bitnami/.rfignore delete mode 100644 community_images/rabbitmq/bitnami/README.md delete mode 100644 community_images/rabbitmq/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/rabbitmq/bitnami/assets/metrics.webp delete mode 100644 community_images/rabbitmq/bitnami/consume.py delete mode 100644 community_images/rabbitmq/bitnami/coverage.sh delete mode 100755 community_images/rabbitmq/bitnami/dc_coverage.sh delete mode 100644 community_images/rabbitmq/bitnami/docker-compose.yml delete mode 100755 community_images/rabbitmq/bitnami/docker_coverage.sh delete mode 100644 community_images/rabbitmq/bitnami/image.yml delete mode 100755 community_images/rabbitmq/bitnami/k8s_coverage.sh delete mode 100644 community_images/rabbitmq/bitnami/overrides.yml delete mode 100644 community_images/rabbitmq/bitnami/publish.py delete mode 100644 community_images/redis-cluster/bitnami/.rfignore delete mode 100644 community_images/redis-cluster/bitnami/README.md delete mode 100644 community_images/redis-cluster/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/redis-cluster/bitnami/assets/metrics.webp delete mode 100755 community_images/redis-cluster/bitnami/dc_coverage.sh delete mode 100644 community_images/redis-cluster/bitnami/docker-compose.yml delete mode 100644 community_images/redis-cluster/bitnami/image.yml delete mode 100755 community_images/redis-cluster/bitnami/k8s_tls_coverage.sh delete mode 100644 community_images/redis-cluster/bitnami/overrides.yml delete mode 100755 community_images/redis-cluster/bitnami/redis_cluster_runner.sh delete mode 100644 community_images/redis-cluster/bitnami/tls_certs.yml delete mode 100644 community_images/redis/bitnami/.rfignore delete mode 100644 community_images/redis/bitnami/README.md delete mode 100644 community_images/redis/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/redis/bitnami/assets/metrics.webp delete mode 100644 community_images/redis/bitnami/docker-compose.yml delete mode 100644 community_images/redis/bitnami/image.yml delete mode 100755 community_images/redis/bitnami/k8s_coverage.sh delete mode 100755 community_images/redis/bitnami/k8s_tls_coverage.sh delete mode 100644 community_images/redis/bitnami/overrides.yml delete mode 100644 community_images/redis/bitnami/tls_certs.yml delete mode 100644 community_images/redis/ironbank/.rfignore delete mode 100644 community_images/redis/ironbank/README.md delete mode 100644 community_images/redis/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/redis/ironbank/assets/metrics.webp delete mode 100755 community_images/redis/ironbank/dc_coverage.sh delete mode 100644 community_images/redis/ironbank/docker-compose.yml delete mode 100755 community_images/redis/ironbank/docker_coverage.sh delete mode 100644 community_images/redis/ironbank/image.yml delete mode 100644 community_images/redis/official/.rfignore delete mode 100644 community_images/redis/official/README.md delete mode 100644 community_images/redis/official/assets/cve_reduction.webp delete mode 100644 community_images/redis/official/assets/metrics.webp delete mode 100755 community_images/redis/official/dc_coverage.sh delete mode 100644 community_images/redis/official/docker-compose.yml delete mode 100644 community_images/redis/official/docker.env.temp delete mode 100755 community_images/redis/official/docker_coverage.sh delete mode 100644 community_images/redis/official/image.yml delete mode 100644 community_images/telegraf/bitnami/README.md delete mode 100644 community_images/telegraf/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/telegraf/bitnami/assets/metrics.webp delete mode 100755 community_images/telegraf/bitnami/coverage.sh delete mode 100755 community_images/telegraf/bitnami/dc_coverage.sh delete mode 100644 community_images/telegraf/bitnami/docker-compose.yml delete mode 100644 community_images/telegraf/bitnami/docker.env delete mode 100755 community_images/telegraf/bitnami/docker_coverage.sh delete mode 100644 community_images/telegraf/bitnami/image.yml delete mode 100755 community_images/telegraf/bitnami/init_influxdb.sh delete mode 100755 community_images/telegraf/bitnami/k8s_coverage.sh delete mode 100644 community_images/telegraf/bitnami/overrides.yml delete mode 100644 community_images/telegraf/bitnami/telegraf.conf delete mode 100644 community_images/traefik/ironbank/README.md delete mode 100644 community_images/traefik/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/traefik/ironbank/assets/metrics.webp delete mode 100755 community_images/traefik/ironbank/dc_coverage.sh delete mode 100644 community_images/traefik/ironbank/docker-compose.yml delete mode 100644 community_images/traefik/ironbank/dockerProvider/certificates.yml delete mode 100644 community_images/traefik/ironbank/image.yml delete mode 100644 community_images/traefik/traefik/README.md delete mode 100644 community_images/traefik/traefik/assets/cve_reduction.webp delete mode 100644 community_images/traefik/traefik/assets/metrics.webp delete mode 100755 community_images/traefik/traefik/dc_coverage.sh delete mode 100644 community_images/traefik/traefik/docker-compose.yml delete mode 100644 community_images/traefik/traefik/dockerProvider/certificates.yml delete mode 100644 community_images/traefik/traefik/image.yml delete mode 100644 community_images/vault/hashicorp/.rfignore delete mode 100644 community_images/vault/hashicorp/README.md delete mode 100644 community_images/vault/hashicorp/assets/cve_reduction.webp delete mode 100644 community_images/vault/hashicorp/assets/metrics.webp delete mode 100644 community_images/vault/hashicorp/coverage.sh delete mode 100755 community_images/vault/hashicorp/dc_coverage.sh delete mode 100644 community_images/vault/hashicorp/deployment-webapp.yml delete mode 100644 community_images/vault/hashicorp/docker-compose.yml delete mode 100755 community_images/vault/hashicorp/docker_coverage.sh delete mode 100644 community_images/vault/hashicorp/image.yml delete mode 100755 community_images/vault/hashicorp/k8s_coverage.sh delete mode 100644 community_images/vault/hashicorp/overrides.yml delete mode 100644 community_images/vault/hashicorp/policy.hcl delete mode 100644 community_images/vault/hashicorp/serviceaccount.yml delete mode 100644 community_images/vault/hashicorp/vault_health_check.sh delete mode 100644 community_images/wordpress/bitnami/.rfignore delete mode 100644 community_images/wordpress/bitnami/README.md delete mode 100644 community_images/wordpress/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/wordpress/bitnami/assets/metrics.webp delete mode 100644 community_images/wordpress/bitnami/docker-compose.yml delete mode 100644 community_images/wordpress/bitnami/image.yml delete mode 100755 community_images/wordpress/bitnami/k8s_coverage.sh delete mode 100644 community_images/wordpress/bitnami/overrides.yml delete mode 100644 community_images/wordpress/bitnami/selenium_tests/__init__.py delete mode 100644 community_images/wordpress/bitnami/selenium_tests/conftest.py delete mode 100644 community_images/wordpress/bitnami/selenium_tests/wordpress_selenium_test.py delete mode 100644 community_images/wordpress/ironbank/.rfignore delete mode 100644 community_images/wordpress/ironbank/README.md delete mode 100644 community_images/wordpress/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/wordpress/ironbank/assets/metrics.webp delete mode 100755 community_images/wordpress/ironbank/dc_coverage.sh delete mode 100644 community_images/wordpress/ironbank/docker-compose.yml delete mode 100644 community_images/wordpress/ironbank/image.yml delete mode 100644 community_images/wordpress/ironbank/selenium_tests/__init__.py delete mode 100644 community_images/wordpress/ironbank/selenium_tests/conftest.py delete mode 100644 community_images/wordpress/ironbank/selenium_tests/wordpress_selenium_test.py delete mode 100755 community_images/yourls/official/README.md delete mode 100644 community_images/yourls/official/assets/cve_reduction.webp delete mode 100644 community_images/yourls/official/assets/metrics.webp delete mode 100755 community_images/yourls/official/dc_coverage.sh delete mode 100755 community_images/yourls/official/docker-compose.yml delete mode 100755 community_images/yourls/official/image.yml delete mode 100644 community_images/yourls/official/selenium_tests/conftest.py delete mode 100644 community_images/yourls/official/selenium_tests/test_yourlsuitest.py delete mode 100644 community_images/yourls/official/selenium_tests/yourls.side delete mode 100755 community_images/yugabyte/yugabytedb/README.md delete mode 100644 community_images/yugabyte/yugabytedb/assets/cve_reduction.webp delete mode 100644 community_images/yugabyte/yugabytedb/assets/metrics.webp delete mode 100755 community_images/yugabyte/yugabytedb/dc_coverage.sh delete mode 100755 community_images/yugabyte/yugabytedb/docker-compose.yml delete mode 100755 community_images/yugabyte/yugabytedb/image.yml delete mode 100644 community_images/zookeeper/bitnami/.rfignore delete mode 100644 community_images/zookeeper/bitnami/README.md delete mode 100644 community_images/zookeeper/bitnami/assets/cve_reduction.webp delete mode 100644 community_images/zookeeper/bitnami/assets/metrics.webp delete mode 100755 community_images/zookeeper/bitnami/coverage.sh delete mode 100755 community_images/zookeeper/bitnami/dc_coverage.sh delete mode 100644 community_images/zookeeper/bitnami/docker-compose.yml delete mode 100644 community_images/zookeeper/bitnami/docker.env delete mode 100755 community_images/zookeeper/bitnami/docker_coverage.sh delete mode 100644 community_images/zookeeper/bitnami/image.yml delete mode 100755 community_images/zookeeper/bitnami/k8s_coverage.sh delete mode 100644 community_images/zookeeper/bitnami/overrides.yml delete mode 100755 community_images/zookeeper/bitnami/scripts/zookeeper_coverage_script.sh delete mode 100644 community_images/zookeeper/ironbank/README.md delete mode 100644 community_images/zookeeper/ironbank/assets/cve_reduction.webp delete mode 100644 community_images/zookeeper/ironbank/assets/metrics.webp delete mode 100755 community_images/zookeeper/ironbank/coverage.sh delete mode 100755 community_images/zookeeper/ironbank/dc_coverage.sh delete mode 100644 community_images/zookeeper/ironbank/docker-compose.yml delete mode 100644 community_images/zookeeper/ironbank/docker.env delete mode 100755 community_images/zookeeper/ironbank/docker_coverage.sh delete mode 100644 community_images/zookeeper/ironbank/image.yml delete mode 100755 community_images/zookeeper/ironbank/k8s_coverage.sh delete mode 100644 community_images/zookeeper/ironbank/overrides.yml delete mode 100755 community_images/zookeeper/ironbank/scripts/zookeeper_coverage_script.sh delete mode 100644 community_images/zookeeper/official/.rfignore delete mode 100644 community_images/zookeeper/official/README.md delete mode 100644 community_images/zookeeper/official/assets/cve_reduction.webp delete mode 100644 community_images/zookeeper/official/assets/metrics.webp delete mode 100755 community_images/zookeeper/official/coverage.sh delete mode 100644 community_images/zookeeper/official/docker.env delete mode 100755 community_images/zookeeper/official/docker_coverage.sh delete mode 100644 community_images/zookeeper/official/image.yml delete mode 100755 community_images/zookeeper/official/k8s_coverage.sh delete mode 100644 community_images/zookeeper/official/overrides.yml delete mode 100755 community_images/zookeeper/official/scripts/zookeeper_coverage_script.sh diff --git a/community_images/airflow/airflow-scheduler/bitnami/README.md b/community_images/airflow/airflow-scheduler/bitnami/README.md deleted file mode 100644 index 31ba0d6622..0000000000 --- a/community_images/airflow/airflow-scheduler/bitnami/README.md +++ /dev/null @@ -1,146 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Apache Airflow Scheduler - -RapidFort’s container optimization process hardened this Apache Airflow Scheduler container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Apache Airflow Scheduler][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Apache Airflow Scheduler? - -> Apache Airflow (or simply Airflow) is a platform to programmatically author, schedule, and monitor workflows. - -When workflows are defined as code, they become more maintainable, versionable, testable, and collaborative. - -Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The Airflow scheduler executes your tasks on an array of workers while following the specified dependencies. Rich command line utilities make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize pipelines running in production, monitor progress, and troubleshoot issues when needed. - - -[Overview of Apache Airflow Scheduler](https://airflow.apache.org/) - -Disclaimer: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Apache Airflow Scheduler image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install airflow, just replace repository with RapidFort registry -$ helm install my-airflow bitnami/airflow --set image.repository=rapidfort/airflow - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Apache Airflow Scheduler][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Apache Airflow Scheduler][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/airflow-scheduler][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`2`, `2-debian-11`, `2.7.3`, `2.7.3-debian-11-r` (2/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/airflow-scheduler/2/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=airflow-scheduler&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow-scheduler?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-scheduler&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow-scheduler?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-scheduler&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow-scheduler?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-scheduler&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow-scheduler?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-scheduler&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow-scheduler?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-scheduler&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/airflow-scheduler?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/airflow-scheduler?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/airflow/airflow-scheduler/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/airflow/airflow-scheduler/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/airflow-scheduler -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/airflow-scheduler diff --git a/community_images/airflow/airflow-scheduler/bitnami/assets/cve_reduction.webp b/community_images/airflow/airflow-scheduler/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 470cc1e8c40d5196e8721cd3a91b7663c730cfa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1788 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%0Ar|DxQO5Fau1Q;kUBU)~{n1(V9V( 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 -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Apache Airflow Worker - -RapidFort’s container optimization process hardened this Apache Airflow Worker container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Apache Airflow Worker][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Apache Airflow Worker? - -> Apache Airflow (or simply Airflow) is a platform to programmatically author, schedule, and monitor workflows. - -When workflows are defined as code, they become more maintainable, versionable, testable, and collaborative. - -Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The Airflow scheduler executes your tasks on an array of workers while following the specified dependencies. Rich command line utilities make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize pipelines running in production, monitor progress, and troubleshoot issues when needed. - - -[Overview of Apache Airflow Worker](https://airflow.apache.org/) - -Disclaimer: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Apache Airflow Worker image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install airflow, just replace repository with RapidFort registry -$ helm install my-airflow bitnami/airflow --set image.repository=rapidfort/airflow - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Apache Airflow Worker][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Apache Airflow Worker][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/airflow-worker][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`2`, `2-debian-11`, `2.7.3`, `2.7.3-debian-11-r` (2/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/airflow-worker/2/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=airflow-worker&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow-worker?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-worker&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow-worker?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-worker&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow-worker?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-worker&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow-worker?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-worker&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow-worker?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-worker&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/airflow-worker?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/airflow-worker?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/airflow/airflow-worker/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/airflow/airflow-worker/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/airflow-worker -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/airflow-worker diff --git a/community_images/airflow/airflow-worker/bitnami/assets/cve_reduction.webp b/community_images/airflow/airflow-worker/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 821e7c11902113f94dcf671e5165486acd0c48c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1784 zcmb`Hc{tQ*9KhchGC88$6%sa+BUG-4VN7F?>@?0clW}ETldDC|pZEKI-{<>%kLShXPMmlr1b{Qf z(!t5W$VCJIpbTj~444CeL!%w!;m{Dk<@r`n7l6Q^un;`fQrX4TO_}feA|9Thlm7z5X&_08q<_iLVH&6yR5ClBIA&3qGU7!aHpckWD3FTy|f*hE} zeHaRu1sY^v3sqJ2BMHKpS9TaBQb7FnimD!Uoq~X^ct}>=05LMT4^b7}}P1)BIvD zt2FkQ9J1+gD{8rW>u{OEfz)BGl z@%hm5=)Ez2VIB6Cr~e6qUCicY*+0h_>c6^)E$Vbj z8|>_u^w~_H;sV#mw3QD^WFETFHfdAKX>myNB3xWIPMRgQdDh{y!hGc?{LyW1W#BGv{HBi5#Y4i=}jc zzJunO7^Fg^%BT}xo^l+F8lfh~ONn^>A>Uh2!5WKgxOjJ#s9G{G%eijh9yl(yyN#CF z5LhW+a+b|LsVqy2DJ@7a?wX$OCt5@%G2TqNTaS|-V$|A<9|`*Z8GcGstjN5JhnU}q zS9g8TRV#Y>JZxnF(PM!T6GCC*ZA_KwsG8NIrHhDW|2&h&dG6ZC7;~V(-ZxlE5Rq%j z7G1v=Tt+({dA=|@otoB3Ban;HW#zL54ZgSMbCfixj)aWkNpyF;2Q7J$rb*qElgDyR z)y$kvZL89sp}$XAs)?VFqHHg;yY7cr7PLw?{sARXlUPx}($4`mmhCqh@SSem9NI|A zqkLUdY?ITYsTWnt=vtaifS(%6%rCf8NJw3*pHf^dYH$E^Crlxf(`G7C;}cZXV$n)S zkHqUt5J`6Um%koKEvt-wgDrV^u;`$PH!J%nTsL+0xwH^^_!#BPZpq~~dSSEkN)xvL zYc?JBY_f{;u%p<3iD|x9y9X0zQ7>2WUd}NwLh(0N9GlZMWInz0q{~`OAnD_rUAagH zNrahrTl28dbz%L5Y9DJ)`i}>ZwUgf>xc%jOYbV@nJnH$;WhB*5jyPT2JT%yHTeC z(dYhjnBtN%FzPw5k!C70P%V9X49?w*>7!}sORQ$LRifxq)vNNw5xm@R{ulo@c2uQp diff --git a/community_images/airflow/airflow-worker/bitnami/assets/metrics.webp b/community_images/airflow/airflow-worker/bitnami/assets/metrics.webp deleted file mode 100644 index d2f01a4d9d43b8068e95af0de9f77ab856ca7c67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25600 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 H4nP0^w>=oa diff --git a/community_images/airflow/airflow-worker/bitnami/image.yml b/community_images/airflow/airflow-worker/bitnami/image.yml deleted file mode 100644 index b7dacbf118..0000000000 --- a/community_images/airflow/airflow-worker/bitnami/image.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: airflow-worker -official_name: Apache Airflow Worker -official_website: https://airflow.apache.org/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/airflow-worker -source_image_repo_link: https://hub.docker.com/r/bitnami/airflow-worker -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/airflow-worker/README.md -rf_docker_link: rapidfort/airflow-worker -image_workflow_name: airflow_airflow_bitnami -github_location: airflow/airflow-worker/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow-worker -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install airflow, just replace repository with RapidFort registry - $ helm install my-airflow bitnami/airflow --set image.repository=rapidfort/airflow -what_is_text: | - Apache Airflow (or simply Airflow) is a platform to programmatically author, schedule, and monitor workflows. - - When workflows are defined as code, they become more maintainable, versionable, testable, and collaborative. - - Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The Airflow scheduler executes your tasks on an array of workers while following the specified dependencies. Rich command line utilities make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize pipelines running in production, monitor progress, and troubleshoot issues when needed. -disclaimer: | - Disclaimer: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. diff --git a/community_images/airflow/airflow/bitnami/.rfignore b/community_images/airflow/airflow/bitnami/.rfignore deleted file mode 100644 index ab2510e182..0000000000 --- a/community_images/airflow/airflow/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/licenses -opt/bitnami/airflow/licenses -usr/share/common-licenses diff --git a/community_images/airflow/airflow/bitnami/README.md b/community_images/airflow/airflow/bitnami/README.md deleted file mode 100644 index 256f3e6f17..0000000000 --- a/community_images/airflow/airflow/bitnami/README.md +++ /dev/null @@ -1,146 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Apache Airflow - -RapidFort’s container optimization process hardened this Apache Airflow container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Apache Airflow][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Apache Airflow? - -> Apache Airflow (or simply Airflow) is a platform to programmatically author, schedule, and monitor workflows. - -When workflows are defined as code, they become more maintainable, versionable, testable, and collaborative. - -Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The Airflow scheduler executes your tasks on an array of workers while following the specified dependencies. Rich command line utilities make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize pipelines running in production, monitor progress, and troubleshoot issues when needed. - - -[Overview of Apache Airflow](https://airflow.apache.org/) - -Disclaimer: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Apache Airflow image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install airflow, just replace repository with RapidFort registry -$ helm install my-airflow bitnami/airflow --set image.repository=rapidfort/airflow - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Apache Airflow][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Apache Airflow][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/airflow][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`2`, `2-debian-11`, `2.7.3`, `2.7.3-debian-11-r` (2/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/airflow/2/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=airflow&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/airflow?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/airflow?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/airflow/airflow/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/airflow/airflow/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/airflow -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/airflow diff --git a/community_images/airflow/airflow/bitnami/assets/cve_reduction.webp b/community_images/airflow/airflow/bitnami/assets/cve_reduction.webp deleted file mode 100644 index d725bb0ea2ec463aadfe5c7073624c2a5cddec22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1816 zcmb`HdpOf;9KhePwL}M@R8EE#-P}vU$fcSnw`MeD8{uh~5f-`Tk|BxHl3G;gL@6To zYZ~Ra%q0@4kyT7;a*OlZ>FLoQo#*^>zVGw>zMuE|e&6T&eJ{^zhuyzl3JHLtg{ckB zW)FT9000GP77Q2zfHgC-kr#o6Ktx_>;hF$=`vlPJ4w$0wPR=Ny?}re{{?s4*iyj8R zbPs?m0Gyq_nEx-An47yl848+&G=K&r2LR>Jp>6;C} z9svNNDa$_66#z8++R}{2H0otc8)I0zMxC0cx0v|vI>JVuIO`rvKLoWu^3FVwr0@q;MvSB6w z09N6p@eawXDs1cVNm8q8E=8nV7pk3?~J`JX(GD0wjn-Qsbo3MzQc+pVl z&fk!{=#n*D$52ZVc_k}n5y_^QROH=T2P5I`p02aJtcfP(PQFmIFg;Kd&m;u7YrpFV zowm3ay|U84A{{MY#Fhu)!}RXF4bGi6AAzesaFy;~VNKDzS`|Ag1#7_9C@i>;Rmt`{ zYr6MVG?qsD^R%L~F88C~jV&^^zMiEI9o`;(SY3kO`qDUOpWkBPeOE2!#S770?^w@! z_4!*L;W1NQT_+Yv4REogY`Uir-lY7VKrfC0x0r0YNB5=LpK|NP&en=wmqEUa{!DPj=3fsv zFzlgB(4wV{Cz0Kb9H}7HRCT8;z8}XGMR+U?yX^8UQJg+SIH<+i;ZSC)cI13MEmyx> zX`RC3!6f_QOA~uz`er1on%UZ8Ems!EUR0TL?DVr8 zZ0x!UHi1cNZm`0XD<|9tirYGAI9{)JJ+d(ft;(ufG(UStlfoLk8XY{dO57~6-JZAa zgzKDzHA!`NDO0PUq$#$pv)Z=WaqZl=1!4Ma_45!Li5b0NgknmHXK122HEJ7YZt{0| ziT)|Z>c4U~yfI9QfAG=$((rR%Go=o}b;@7=2-9TMZTEY{ z74<~%1i|lx-)dc$b{ssa7zli_< diff --git a/community_images/airflow/airflow/bitnami/assets/metrics.webp b/community_images/airflow/airflow/bitnami/assets/metrics.webp deleted file mode 100644 index 244ba64e7b410f6a62349d5418664e4425b64ea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26172 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 C1~otc diff --git a/community_images/airflow/airflow/bitnami/dc_coverage.sh b/community_images/airflow/airflow/bitnami/dc_coverage.sh deleted file mode 100755 index 9e539fb7a1..0000000000 --- a/community_images/airflow/airflow/bitnami/dc_coverage.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -# PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") diff --git a/community_images/airflow/airflow/bitnami/docker-compose.yml b/community_images/airflow/airflow/bitnami/docker-compose.yml deleted file mode 100644 index 4c2c3d3fe0..0000000000 --- a/community_images/airflow/airflow/bitnami/docker-compose.yml +++ /dev/null @@ -1,56 +0,0 @@ -version: '2' - -services: - postgresql: - image: docker.io/rapidfort/postgresql:10.22 - volumes: - - 'postgresql_data:/bitnami/postgresql' - environment: - - POSTGRESQL_DATABASE=bitnami_airflow - - POSTGRESQL_USERNAME=bn_airflow - - POSTGRESQL_PASSWORD=bitnami1 - # ALLOW_EMPTY_PASSWORD is recommended only for development. - - ALLOW_EMPTY_PASSWORD=yes - redis: - image: docker.io/rapidfort/redis:7.0 - volumes: - - 'redis_data:/bitnami' - environment: - # ALLOW_EMPTY_PASSWORD is recommended only for development. - - ALLOW_EMPTY_PASSWORD=yes - airflow-scheduler: - image: ${AIRFLOW_SCHEDULER_IMAGE_REPOSITORY}:${AIRFLOW_SCHEDULER_IMAGE_TAG} - cap_add: - - SYS_PTRACE - environment: - - AIRFLOW_DATABASE_NAME=bitnami_airflow - - AIRFLOW_DATABASE_USERNAME=bn_airflow - - AIRFLOW_DATABASE_PASSWORD=bitnami1 - - AIRFLOW_EXECUTOR=CeleryExecutor - - AIRFLOW_WEBSERVER_HOST=airflow - airflow-worker: - image: ${AIRFLOW_WORKER_IMAGE_REPOSITORY}:${AIRFLOW_WORKER_IMAGE_TAG} - cap_add: - - SYS_PTRACE - environment: - - AIRFLOW_DATABASE_NAME=bitnami_airflow - - AIRFLOW_DATABASE_USERNAME=bn_airflow - - AIRFLOW_DATABASE_PASSWORD=bitnami1 - - AIRFLOW_EXECUTOR=CeleryExecutor - - AIRFLOW_WEBSERVER_HOST=airflow - airflow: - image: ${AIRFLOW_IMAGE_REPOSITORY}:${AIRFLOW_IMAGE_TAG} - cap_add: - - SYS_PTRACE - environment: - - AIRFLOW_DATABASE_NAME=bitnami_airflow - - AIRFLOW_DATABASE_USERNAME=bn_airflow - - AIRFLOW_DATABASE_PASSWORD=bitnami1 - - AIRFLOW_EXECUTOR=CeleryExecutor - ports: - - '8080:8080' -volumes: - postgresql_data: - driver: local - redis_data: - driver: local diff --git a/community_images/airflow/airflow/bitnami/docker_coverage.sh b/community_images/airflow/airflow/bitnami/docker_coverage.sh deleted file mode 100755 index 87c7ba3798..0000000000 --- a/community_images/airflow/airflow/bitnami/docker_coverage.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -# NETWORK_NAME=$(jq -r '.network_name' < "$JSON_PARAMS") -# ENVOY_HOST=$(jq -r '.container_details.envoy.ip_address' < "$JSON_PARAMS") diff --git a/community_images/airflow/airflow/bitnami/image.yml b/community_images/airflow/airflow/bitnami/image.yml deleted file mode 100644 index 07315480f4..0000000000 --- a/community_images/airflow/airflow/bitnami/image.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: airflow -official_name: Apache Airflow -official_website: https://airflow.apache.org/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/airflow -source_image_repo_link: https://hub.docker.com/r/bitnami/airflow -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/airflow/README.md -rf_docker_link: rapidfort/airflow -image_workflow_name: airflow_airflow_bitnami -github_location: airflow/airflow/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fairflow -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install airflow, just replace repository with RapidFort registry - $ helm install my-airflow bitnami/airflow --set image.repository=rapidfort/airflow -what_is_text: | - Apache Airflow (or simply Airflow) is a platform to programmatically author, schedule, and monitor workflows. - - When workflows are defined as code, they become more maintainable, versionable, testable, and collaborative. - - Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The Airflow scheduler executes your tasks on an array of workers while following the specified dependencies. Rich command line utilities make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize pipelines running in production, monitor progress, and troubleshoot issues when needed. -disclaimer: | - Disclaimer: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - airflow: - input_base_tag: "2.7.1-debian-11-r" - airflow-scheduler: - input_base_tag: "2.7.1-debian-11-r" - airflow-worker: - input_base_tag: "2.7.1-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: airflow - readiness_wait_deployments_suffix: - - web - - scheduler - image_keys: - airflow: - repository: "image.repository" - tag: "image.tag" - airflow-scheduler: - repository: "scheduler.image.repository" - tag: "scheduler.image.tag" - airflow-worker: - repository: "worker.image.repository" - tag: "worker.image.tag" - override_file: "overrides.yml" - helm_additional_params: - auth.username: "rf-test" - auth.password: "rf_password123!" - git.dags.enabled: true - git.dags.repositories[0].repository: https://github.com/rapidfort/airflow-example-dags - git.dags.repositories[0].name: airflow-example-dags - git.dags.repositories[0].branch: main - - - type: docker_compose - compose_file: docker-compose.yml - wait_time_sec: 300 - image_keys: - airflow: - repository: "AIRFLOW_IMAGE_REPOSITORY" - tag: "AIRFLOW_IMAGE_TAG" - airflow-scheduler: - repository: "AIRFLOW_SCHEDULER_IMAGE_REPOSITORY" - tag: "AIRFLOW_SCHEDULER_IMAGE_TAG" - airflow-worker: - repository: "AIRFLOW_WORKER_IMAGE_REPOSITORY" - tag: "AIRFLOW_WORKER_IMAGE_TAG" diff --git a/community_images/airflow/airflow/bitnami/k8s_coverage.sh b/community_images/airflow/airflow/bitnami/k8s_coverage.sh deleted file mode 100755 index c79c8d43d9..0000000000 --- a/community_images/airflow/airflow/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for k8s coverage = $JSON" - -SCRIPTPATH=$(jq -r '.image_script_dir' < "$JSON_PARAMS") -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -AIRFLOW_SERVER="${RELEASE_NAME}"."${NAMESPACE}".svc.cluster.local -AIRFLOW_PORT='8080' - -"${SCRIPTPATH}"/../../../common/selenium_tests/runner.sh "${AIRFLOW_SERVER}" "${AIRFLOW_PORT}" "${SCRIPTPATH}"/selenium_tests "${NAMESPACE}" 2>&1 diff --git a/community_images/airflow/airflow/bitnami/overrides.yml b/community_images/airflow/airflow/bitnami/overrides.yml deleted file mode 100644 index f7f43109e0..0000000000 --- a/community_images/airflow/airflow/bitnami/overrides.yml +++ /dev/null @@ -1,56 +0,0 @@ -global: - imagePullSecrets: ["rf-regcred"] -web: - image: - pullPolicy: Always - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -scheduler: - image: - pullPolicy: Always - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -worker: - image: - pullPolicy: Always - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/airflow/airflow/bitnami/selenium_tests/airflow.side b/community_images/airflow/airflow/bitnami/selenium_tests/airflow.side deleted file mode 100644 index 867a688952..0000000000 --- a/community_images/airflow/airflow/bitnami/selenium_tests/airflow.side +++ /dev/null @@ -1,1474 +0,0 @@ -{ - "id": "ec24a438-207b-4565-b3ca-b9be555a0bc5", - "version": "2.0", - "name": "airflow", - "url": "http://172.31.36.230:8080", - "tests": [{ - "id": "c9ccfb35-304c-4227-80b6-c1c789642a8b", - "name": "enable-dags", - "commands": [{ - "id": "ab3487a5-59c6-4d5e-8b9e-eebefe7ad36c", - "comment": "", - "command": "open", - "target": "/login/?next=http%3A%2F%2F172.31.36.230%3A8080%2Fhome", - "targets": [], - "value": "" - }, { - "id": "56193521-7c51-4670-bcf5-f1ac75d00912", - "comment": "", - "command": "setWindowSize", - "target": "1200x1286", - "targets": [], - "value": "" - }, { - "id": "a775a588-e850-4d32-841f-3b0d279681f1", - "comment": "", - "command": "type", - "target": "id=username", - "targets": [ - ["id=username", "id"], - ["name=username", "name"], - ["css=#username", "css:finder"], - ["xpath=//input[@id='username']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[2]/div/div/input", "xpath:idRelative"], - ["xpath=//div/input", "xpath:position"] - ], - "value": "rf-test" - }, { - "id": "5e8fe5f4-e857-4dab-9273-ff636256b12c", - "comment": "", - "command": "type", - "target": "id=password", - "targets": [ - ["id=password", "id"], - ["name=password", "name"], - ["css=#password", "css:finder"], - ["xpath=//input[@id='password']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[2]/div/div[2]/input", "xpath:idRelative"], - ["xpath=//div[2]/input", "xpath:position"] - ], - "value": "rf_password123!" - }, { - "id": "c9200f66-f0f6-4278-9fea-b61c76541f9b", - "comment": "", - "command": "click", - "target": "css=.btn-primary", - "targets": [ - ["css=.btn-primary", "css:finder"], - ["xpath=//input[@value='Sign In']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[3]/div/div/input", "xpath:idRelative"], - ["xpath=//div[3]/div/div/input", "xpath:position"] - ], - "value": "" - }, { - "id": "398f07cb-7139-4ab4-8d5c-6f06e722653b", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(1) .switch", - "targets": [ - ["css=tr:nth-child(1) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr/td/label/span", "xpath:idRelative"], - ["xpath=//label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "c80c8ad4-7173-49de-ae36-31c4a7982197", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(2) .switch", - "targets": [ - ["css=tr:nth-child(2) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[2]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[2]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "feba23ea-458e-4b24-b5ff-52c06e486f49", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(3) .switch", - "targets": [ - ["css=tr:nth-child(3) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[3]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[3]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "70c33b2e-48d1-4a72-b287-b9ac37f73d21", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(4) .switch", - "targets": [ - ["css=tr:nth-child(4) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[4]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[4]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "887b4b73-fbcc-4910-ba2a-587ee5fc1319", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(5) .switch-label", - "targets": [ - ["css=tr:nth-child(5) .switch-label", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[5]/td/label", "xpath:idRelative"], - ["xpath=//tr[5]/td/label", "xpath:position"] - ], - "value": "" - }, { - "id": "863220e2-138c-4b28-b0bc-24f29be54d3d", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(6) .switch", - "targets": [ - ["css=tr:nth-child(6) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[6]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[6]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "697d9d5e-31f1-4cea-a58d-f8407c9daac5", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(7) .switch", - "targets": [ - ["css=tr:nth-child(7) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[7]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[7]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "35626dbc-518d-4bd7-8466-2cd827a47fbd", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(8) .switch", - "targets": [ - ["css=tr:nth-child(8) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[8]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[8]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "23ea3ae4-a724-486f-adcf-7a345743d1f9", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(9) .switch", - "targets": [ - ["css=tr:nth-child(9) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[9]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[9]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "ffef4934-33c6-40c5-8cd9-343c18c7951c", - "comment": "", - "command": "runScript", - "target": "window.scrollTo(0,41.5)", - "targets": [], - "value": "" - }, { - "id": "ac865b09-f8a2-4fb3-bf9e-77a5b761ce80", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(10) .switch", - "targets": [ - ["css=tr:nth-child(10) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[10]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[10]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "2e694974-3c3b-41c6-876b-bd2421142559", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(11) .switch", - "targets": [ - ["css=tr:nth-child(11) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[11]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[11]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "65b660f1-f759-450b-bc5b-ec4d3b8bb8b2", - "comment": "", - "command": "runScript", - "target": "window.scrollTo(0,109)", - "targets": [], - "value": "" - }, { - "id": "3c261b2c-29aa-4290-b9e6-8edd12446479", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(12) .switch", - "targets": [ - ["css=tr:nth-child(12) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[12]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[12]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "4217479b-dc6e-4821-85fe-eb9f1f54ce5e", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(13) .switch", - "targets": [ - ["css=tr:nth-child(13) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[13]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[13]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "2879ad86-29b4-4489-8757-753fcdf2670b", - "comment": "", - "command": "runScript", - "target": "window.scrollTo(0,298.5)", - "targets": [], - "value": "" - }, { - "id": "8a122220-5196-46b9-a531-1c3de1b27942", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(14) .switch", - "targets": [ - ["css=tr:nth-child(14) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[14]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[14]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "3ec89979-780f-488d-98fa-47484ca06ebd", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(15) .switch", - "targets": [ - ["css=tr:nth-child(15) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[15]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[15]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "63c857b1-3b09-4a07-9fb8-d91259cd0571", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(16) .switch", - "targets": [ - ["css=tr:nth-child(16) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[16]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[16]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "0afd6d23-fdda-49d8-83d8-cd4e6b698fd9", - "comment": "", - "command": "runScript", - "target": "window.scrollTo(0,626)", - "targets": [], - "value": "" - }, { - "id": "37b97bb1-8dd1-4cce-a6f1-8ee78dd25a1e", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(17) .switch", - "targets": [ - ["css=tr:nth-child(17) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[17]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[17]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "0196759d-b8f2-40f3-a9c7-a3e51b25ae01", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(18) .switch", - "targets": [ - ["css=tr:nth-child(18) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[18]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[18]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "fba733ca-cf45-4a60-a5a0-893122088970", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(19) .switch", - "targets": [ - ["css=tr:nth-child(19) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[19]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[19]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "90fae2f4-b81d-49c9-bf0e-ea667c311c5a", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(20) .switch", - "targets": [ - ["css=tr:nth-child(20) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[20]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[20]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "ad49b6a2-4512-4209-83a8-996ca29d4014", - "comment": "", - "command": "runScript", - "target": "window.scrollTo(0,696)", - "targets": [], - "value": "" - }, { - "id": "f79d3a65-704c-4419-95e0-8d0149d398c9", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(21) .switch", - "targets": [ - ["css=tr:nth-child(21) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[21]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[21]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "c7c42771-6d78-4f82-9765-a0982fd6cd83", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(22) .switch", - "targets": [ - ["css=tr:nth-child(22) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[22]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[22]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "ea11cbcc-b206-4c79-a7c8-c2e7773a2eb0", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(23) .switch", - "targets": [ - ["css=tr:nth-child(23) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[23]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[23]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "3658c739-cb08-42bf-8892-6ddbe15b8c05", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(24) .switch", - "targets": [ - ["css=tr:nth-child(24) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[24]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[24]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "601f5bbd-5856-408f-a1c7-12442dd38b5d", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(25) .switch", - "targets": [ - ["css=tr:nth-child(25) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[25]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[25]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "03f16611-2204-4b98-9735-b300f863078e", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(26) .switch", - "targets": [ - ["css=tr:nth-child(26) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[26]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[26]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "bfc8cc5a-310e-457d-a9da-0a6505937613", - "comment": "", - "command": "click", - "target": "css=tr:nth-child(27) .switch", - "targets": [ - ["css=tr:nth-child(27) .switch", "css:finder"], - ["xpath=//div[@id='main_content']/div[2]/div/table/tbody/tr[27]/td/label/span", "xpath:idRelative"], - ["xpath=//tr[27]/td/label/span", "xpath:position"] - ], - "value": "" - }, { - "id": "4506adf9-7693-457b-a098-3fee647e082d", - "comment": "", - "command": "runScript", - "target": "window.scrollTo(0,0)", - "targets": [], - "value": "" - }, { - "id": "7f5d7cee-61f5-466c-89ee-344bdcdf841e", - "comment": "", - "command": "mouseOver", - "target": "linkText=FL", - "targets": [ - ["linkText=FL", "linkText"], - ["css=.navbar-right > .dropdown:nth-child(2) > .dropdown-toggle", "css:finder"], - ["xpath=(//a[contains(@href, '#')])[7]", "xpath:href"], - ["xpath=//ul[2]/li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'FL\n ')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "9dd98ca7-dbfe-421d-af7d-d5b2d4559a37", - "comment": "", - "command": "click", - "target": "linkText=exit_to_appLog Out", - "targets": [ - ["linkText=exit_to_appLog Out", "linkText"], - ["css=.navbar-right > .dropdown:nth-child(2) li:nth-child(3) > a", "css:finder"], - ["xpath=//a[contains(@href, '/logout/')]", "xpath:href"], - ["xpath=//ul[2]/li[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'exit_to_appLog Out')]", "xpath:innerText"] - ], - "value": "" - }] - }, { - "id": "7a10ab5e-2868-43bf-bee3-f45230b54415", - "name": "view-security", - "commands": [{ - "id": "d2211051-be22-4981-86a8-44e088eea1c6", - "comment": "", - "command": "open", - "target": "/login/?next=http%3A%2F%2F172.31.36.230%3A8080%2Fhome", - "targets": [], - "value": "" - }, { - "id": "becb36c3-b99a-448b-82bb-22183ca0913f", - "comment": "", - "command": "setWindowSize", - "target": "1200x1286", - "targets": [], - "value": "" - }, { - "id": "044ec06c-eed8-4af2-8ddd-59c068b81e56", - "comment": "", - "command": "type", - "target": "id=username", - "targets": [ - ["id=username", "id"], - ["name=username", "name"], - ["css=#username", "css:finder"], - ["xpath=//input[@id='username']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[2]/div/div/input", "xpath:idRelative"], - ["xpath=//div/input", "xpath:position"] - ], - "value": "rf-test" - }, { - "id": "49d45eb9-13c3-4a91-bbf0-b3a47c2d30cf", - "comment": "", - "command": "type", - "target": "id=password", - "targets": [ - ["id=password", "id"], - ["name=password", "name"], - ["css=#password", "css:finder"], - ["xpath=//input[@id='password']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[2]/div/div[2]/input", "xpath:idRelative"], - ["xpath=//div[2]/input", "xpath:position"] - ], - "value": "rf_password123!" - }, { - "id": "524c4209-e4cd-476b-8923-f7f813ac805c", - "comment": "", - "command": "click", - "target": "css=.btn-primary", - "targets": [ - ["css=.btn-primary", "css:finder"], - ["xpath=//input[@value='Sign In']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[3]/div/div/input", "xpath:idRelative"], - ["xpath=//div[3]/div/div/input", "xpath:position"] - ], - "value": "" - }, { - "id": "df06905a-3687-44bd-b934-3ce3820348e1", - "comment": "", - "command": "mouseOver", - "target": "linkText=Security", - "targets": [ - ["linkText=Security", "linkText"], - ["css=.nav:nth-child(1) > .dropdown:nth-child(2) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Security')]", "xpath:link"], - ["xpath=//a[contains(@href, 'javascript:void(0)')]", "xpath:href"], - ["xpath=//li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'Security')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "17319951-3d14-43b2-afc2-4d39713c7a10", - "comment": "", - "command": "click", - "target": "linkText=List Users", - "targets": [ - ["linkText=List Users", "linkText"], - ["css=.nav:nth-child(1) > .dropdown:nth-child(2) li:nth-child(1) > a", "css:finder"], - ["xpath=//a[contains(text(),'List Users')]", "xpath:link"], - ["xpath=//a[contains(@href, '/users/list/')]", "xpath:href"], - ["xpath=//li[2]/ul/li/a", "xpath:position"], - ["xpath=//a[contains(.,'List Users')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "b71de319-0362-4d22-ba88-bd08d1418fa6", - "comment": "", - "command": "mouseOver", - "target": "linkText=Security", - "targets": [ - ["linkText=Security", "linkText"], - ["css=.nav:nth-child(1) > .dropdown:nth-child(2) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Security')]", "xpath:link"], - ["xpath=//a[contains(@href, 'javascript:void(0)')]", "xpath:href"], - ["xpath=//li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'Security')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "9ab4475b-3070-4593-bdf6-6ce86f67a1ef", - "comment": "", - "command": "click", - "target": "linkText=List Roles", - "targets": [ - ["linkText=List Roles", "linkText"], - ["css=.dropdown:nth-child(2) li:nth-child(2) > a", "css:finder"], - ["xpath=//a[contains(text(),'List Roles')]", "xpath:link"], - ["xpath=//a[contains(@href, '/roles/list/')]", "xpath:href"], - ["xpath=//li[2]/ul/li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'List Roles')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "5f877d07-005f-4f98-b08a-bf5eb6ab1ee6", - "comment": "", - "command": "mouseOver", - "target": "linkText=Security", - "targets": [ - ["linkText=Security", "linkText"], - ["css=.nav:nth-child(1) > .dropdown:nth-child(2) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Security')]", "xpath:link"], - ["xpath=//a[contains(@href, 'javascript:void(0)')]", "xpath:href"], - ["xpath=//li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'Security')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "c3550133-4f20-4402-b04e-46537da473d2", - "comment": "", - "command": "click", - "target": "linkText=User's Statistics", - "targets": [ - ["linkText=User's Statistics", "linkText"], - ["css=.nav:nth-child(1) > .dropdown:nth-child(2) li:nth-child(3) > a", "css:finder"], - ["xpath=//a[contains(@href, '/userstatschartview/chart/')]", "xpath:href"], - ["xpath=//li[3]/a", "xpath:position"] - ], - "value": "" - }, { - "id": "dd896f9f-3a5d-45b5-b5cb-a5087b627973", - "comment": "", - "command": "mouseOver", - "target": "linkText=Security", - "targets": [ - ["linkText=Security", "linkText"], - ["css=.nav:nth-child(1) > .dropdown:nth-child(2) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Security')]", "xpath:link"], - ["xpath=//a[contains(@href, 'javascript:void(0)')]", "xpath:href"], - ["xpath=//li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'Security')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "6804fb61-9dbe-4afb-ab82-5ff0140839ac", - "comment": "", - "command": "click", - "target": "linkText=Actions", - "targets": [ - ["linkText=Actions", "linkText"], - ["css=.dropdown:nth-child(2) li:nth-child(5) > a", "css:finder"], - ["xpath=//a[contains(text(),'Actions')]", "xpath:link"], - ["xpath=//a[contains(@href, '/actions/list/')]", "xpath:href"], - ["xpath=//li[5]/a", "xpath:position"], - ["xpath=//a[contains(.,'Actions')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "ff0cefbb-45db-420e-979d-2320e18dd95f", - "comment": "", - "command": "mouseOver", - "target": "linkText=Security", - "targets": [ - ["linkText=Security", "linkText"], - ["css=.nav:nth-child(1) > .dropdown:nth-child(2) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Security')]", "xpath:link"], - ["xpath=//a[contains(@href, 'javascript:void(0)')]", "xpath:href"], - ["xpath=//li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'Security')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "eae04a24-21db-43bc-8a9f-91477a8a9354", - "comment": "", - "command": "click", - "target": "linkText=Resources", - "targets": [ - ["linkText=Resources", "linkText"], - ["css=.dropdown:nth-child(2) li:nth-child(6) > a", "css:finder"], - ["xpath=//a[contains(text(),'Resources')]", "xpath:link"], - ["xpath=//a[contains(@href, '/resources/list/')]", "xpath:href"], - ["xpath=//li[6]/a", "xpath:position"], - ["xpath=//a[contains(.,'Resources')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "959e2e11-22c6-4ea8-ae0f-1ca1f004b4df", - "comment": "", - "command": "mouseOver", - "target": "linkText=Security", - "targets": [ - ["linkText=Security", "linkText"], - ["css=.nav:nth-child(1) > .dropdown:nth-child(2) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Security')]", "xpath:link"], - ["xpath=//a[contains(@href, 'javascript:void(0)')]", "xpath:href"], - ["xpath=//li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'Security')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "9b479d7b-cd63-4706-b042-ed77465f509a", - "comment": "", - "command": "click", - "target": "linkText=Permissions", - "targets": [ - ["linkText=Permissions", "linkText"], - ["css=.dropdown:nth-child(2) li:nth-child(7) > a", "css:finder"], - ["xpath=//a[contains(text(),'Permissions')]", "xpath:link"], - ["xpath=//a[contains(@href, '/permissions/list/')]", "xpath:href"], - ["xpath=//li[7]/a", "xpath:position"], - ["xpath=//a[contains(.,'Permissions')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "3b73c194-591f-4315-9496-52990e56687b", - "comment": "", - "command": "mouseOver", - "target": "linkText=FL", - "targets": [ - ["linkText=FL", "linkText"], - ["css=.navbar-right > .dropdown:nth-child(2) > .dropdown-toggle", "css:finder"], - ["xpath=(//a[contains(@href, '#')])[7]", "xpath:href"], - ["xpath=//ul[2]/li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'FL\n ')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "257748d9-b617-46a5-b31f-88cfe60c56e8", - "comment": "", - "command": "click", - "target": "linkText=exit_to_appLog Out", - "targets": [ - ["linkText=exit_to_appLog Out", "linkText"], - ["css=.navbar-right > .dropdown:nth-child(2) li:nth-child(3) > a", "css:finder"], - ["xpath=//a[contains(@href, '/logout/')]", "xpath:href"], - ["xpath=//ul[2]/li[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'exit_to_appLog Out')]", "xpath:innerText"] - ], - "value": "" - }] - }, { - "id": "210a57ed-eba1-4adc-a71f-266a2745cc04", - "name": "view-browse", - "commands": [{ - "id": "108e0c66-c2e0-4161-b45e-b7141019bc67", - "comment": "", - "command": "open", - "target": "/login/?next=http%3A%2F%2F172.31.36.230%3A8080%2Fhome", - "targets": [], - "value": "" - }, { - "id": "3b4dcaa0-0949-4781-b8e4-57786b2b4fe5", - "comment": "", - "command": "setWindowSize", - "target": "1200x1286", - "targets": [], - "value": "" - }, { - "id": "7a2c1def-2d42-40d5-be38-3a9a8ff30a63", - "comment": "", - "command": "type", - "target": "id=username", - "targets": [ - ["id=username", "id"], - ["name=username", "name"], - ["css=#username", "css:finder"], - ["xpath=//input[@id='username']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[2]/div/div/input", "xpath:idRelative"], - ["xpath=//div/input", "xpath:position"] - ], - "value": "rf-test" - }, { - "id": "73334175-0d89-45c5-8fc2-a1dc94af8549", - "comment": "", - "command": "type", - "target": "id=password", - "targets": [ - ["id=password", "id"], - ["name=password", "name"], - ["css=#password", "css:finder"], - ["xpath=//input[@id='password']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[2]/div/div[2]/input", "xpath:idRelative"], - ["xpath=//div[2]/input", "xpath:position"] - ], - "value": "rf_password123!" - }, { - "id": "4b1a47b3-be41-404b-9174-7cbe64df63dd", - "comment": "", - "command": "click", - "target": "css=.btn-primary", - "targets": [ - ["css=.btn-primary", "css:finder"], - ["xpath=//input[@value='Sign In']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[3]/div/div/input", "xpath:idRelative"], - ["xpath=//div[3]/div/div/input", "xpath:position"] - ], - "value": "" - }, { - "id": "7ccc80e3-afa0-4444-8cca-331c8389c553", - "comment": "", - "command": "mouseOver", - "target": "linkText=Browse", - "targets": [ - ["linkText=Browse", "linkText"], - ["css=.dropdown:nth-child(3) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Browse')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[2]", "xpath:href"], - ["xpath=//div[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'Browse')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "7fcfb079-6a9c-4042-8151-67952856b996", - "comment": "", - "command": "click", - "target": "linkText=DAG Runs", - "targets": [ - ["linkText=DAG Runs", "linkText"], - ["css=.dropdown:nth-child(3) li:nth-child(1) > a", "css:finder"], - ["xpath=//a[contains(text(),'DAG Runs')]", "xpath:link"], - ["xpath=//a[contains(@href, '/dagrun/list/')]", "xpath:href"], - ["xpath=//li[3]/ul/li/a", "xpath:position"], - ["xpath=//a[contains(.,'DAG Runs')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "dd990db9-f0f3-436d-9325-8c5512556c51", - "comment": "", - "command": "mouseOver", - "target": "linkText=Browse", - "targets": [ - ["linkText=Browse", "linkText"], - ["css=.dropdown:nth-child(3) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Browse')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[2]", "xpath:href"], - ["xpath=//div[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'Browse')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "43aa0fa7-4afa-4636-b40f-4f5fd5678d7f", - "comment": "", - "command": "click", - "target": "linkText=Jobs", - "targets": [ - ["linkText=Jobs", "linkText"], - ["css=.dropdown:nth-child(3) li:nth-child(2) > a", "css:finder"], - ["xpath=//a[contains(text(),'Jobs')]", "xpath:link"], - ["xpath=//a[contains(@href, '/job/list/')]", "xpath:href"], - ["xpath=//li[3]/ul/li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'Jobs')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "4e5db979-c2ff-4c36-9c09-e1c87de938c0", - "comment": "", - "command": "click", - "target": "linkText=2", - "targets": [ - ["linkText=2", "linkText"], - ["css=.pagination > li:nth-child(4) > a", "css:finder"], - ["xpath=//a[contains(text(),'2')]", "xpath:link"], - ["xpath=//a[contains(@href, '/job/list/?page_JobModelView=1')]", "xpath:href"], - ["xpath=//div[2]/div/ul/li[4]/a", "xpath:position"] - ], - "value": "" - }, { - "id": "a254f539-edf2-484a-9e48-e5746842195b", - "comment": "", - "command": "click", - "target": "linkText=3", - "targets": [ - ["linkText=3", "linkText"], - ["css=.pagination > li:nth-child(5) > a", "css:finder"], - ["xpath=//a[contains(text(),'3')]", "xpath:link"], - ["xpath=//a[contains(@href, '/job/list/?page_JobModelView=2')]", "xpath:href"], - ["xpath=//div[2]/div/ul/li[5]/a", "xpath:position"], - ["xpath=//a[contains(.,'3')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "eae808fa-ce9b-4d06-acb2-599d70925eb6", - "comment": "", - "command": "mouseOver", - "target": "linkText=Browse", - "targets": [ - ["linkText=Browse", "linkText"], - ["css=.dropdown:nth-child(3) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Browse')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[2]", "xpath:href"], - ["xpath=//div[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'Browse')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "a07c856b-4df1-4399-962d-6ed734f18a68", - "comment": "", - "command": "click", - "target": "linkText=Audit Logs", - "targets": [ - ["linkText=Audit Logs", "linkText"], - ["css=.dropdown:nth-child(3) li:nth-child(3) > a", "css:finder"], - ["xpath=//a[contains(text(),'Audit Logs')]", "xpath:link"], - ["xpath=//a[contains(@href, '/log/list/')]", "xpath:href"], - ["xpath=//li[3]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'Audit Logs')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "8644bc4d-245e-480f-b76d-b027fec477d0", - "comment": "", - "command": "mouseOver", - "target": "linkText=Browse", - "targets": [ - ["linkText=Browse", "linkText"], - ["css=.dropdown:nth-child(3) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Browse')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[2]", "xpath:href"], - ["xpath=//div[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'Browse')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "90aa7911-0971-40c6-a6f5-f7e353f095b1", - "comment": "", - "command": "click", - "target": "linkText=Task Instances", - "targets": [ - ["linkText=Task Instances", "linkText"], - ["css=.dropdown:nth-child(3) li:nth-child(4) > a", "css:finder"], - ["xpath=//a[contains(text(),'Task Instances')]", "xpath:link"], - ["xpath=//a[contains(@href, '/taskinstance/list/')]", "xpath:href"], - ["xpath=//li[4]/a", "xpath:position"], - ["xpath=//a[contains(.,'Task Instances')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "f0ce2e3d-b1e1-466a-9bdc-cdbb8cd255f2", - "comment": "", - "command": "click", - "target": "linkText=2", - "targets": [ - ["linkText=2", "linkText"], - ["css=.pagination > li:nth-child(4) > a", "css:finder"], - ["xpath=//a[contains(text(),'2')]", "xpath:link"], - ["xpath=//a[contains(@href, '/taskinstance/list/?page_TaskInstanceModelView=1')]", "xpath:href"], - ["xpath=//div[2]/div/ul/li[4]/a", "xpath:position"] - ], - "value": "" - }, { - "id": "b80ffa23-9e2b-425b-9fc9-40105e217c42", - "comment": "", - "command": "mouseOver", - "target": "linkText=Browse", - "targets": [ - ["linkText=Browse", "linkText"], - ["css=.dropdown:nth-child(3) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Browse')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[2]", "xpath:href"], - ["xpath=//div[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'Browse')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "b11a362d-9e4f-45a7-b060-56525f7072d5", - "comment": "", - "command": "click", - "target": "linkText=Task Reschedules", - "targets": [ - ["linkText=Task Reschedules", "linkText"], - ["css=.dropdown:nth-child(3) li:nth-child(5) > a", "css:finder"], - ["xpath=//a[contains(text(),'Task Reschedules')]", "xpath:link"], - ["xpath=//a[contains(@href, '/taskreschedule/list/')]", "xpath:href"], - ["xpath=//li[3]/ul/li[5]/a", "xpath:position"], - ["xpath=//a[contains(.,'Task Reschedules')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "401f2b37-43d9-4b94-87fd-c38c3fd3ad8d", - "comment": "", - "command": "mouseOver", - "target": "linkText=Browse", - "targets": [ - ["linkText=Browse", "linkText"], - ["css=.dropdown:nth-child(3) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Browse')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[2]", "xpath:href"], - ["xpath=//div[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'Browse')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "3d1074bf-0157-405f-81d3-89b5dab8a319", - "comment": "", - "command": "click", - "target": "linkText=Triggers", - "targets": [ - ["linkText=Triggers", "linkText"], - ["css=.dropdown:nth-child(3) li:nth-child(6) > a", "css:finder"], - ["xpath=//a[contains(text(),'Triggers')]", "xpath:link"], - ["xpath=//a[contains(@href, '/triggerview/list/')]", "xpath:href"], - ["xpath=//li[3]/ul/li[6]/a", "xpath:position"], - ["xpath=//a[contains(.,'Triggers')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "6d1d7136-b921-483d-9c38-5e015cf1f3cf", - "comment": "", - "command": "mouseOver", - "target": "linkText=Browse", - "targets": [ - ["linkText=Browse", "linkText"], - ["css=.dropdown:nth-child(3) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Browse')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[2]", "xpath:href"], - ["xpath=//div[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'Browse')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "0e15307d-b5d4-4ae6-8b9f-cce59a96d347", - "comment": "", - "command": "click", - "target": "linkText=SLA Misses", - "targets": [ - ["linkText=SLA Misses", "linkText"], - ["css=.dropdown:nth-child(3) li:nth-child(7) > a", "css:finder"], - ["xpath=//a[contains(text(),'SLA Misses')]", "xpath:link"], - ["xpath=//a[contains(@href, '/slamiss/list/')]", "xpath:href"], - ["xpath=//li[3]/ul/li[7]/a", "xpath:position"], - ["xpath=//a[contains(.,'SLA Misses')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "ed38201b-9ea8-4a40-919e-632590052974", - "comment": "", - "command": "mouseOver", - "target": "linkText=Browse", - "targets": [ - ["linkText=Browse", "linkText"], - ["css=.dropdown:nth-child(3) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Browse')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[2]", "xpath:href"], - ["xpath=//div[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'Browse')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "2954c362-0734-403a-b38b-0543bb424ffd", - "comment": "", - "command": "click", - "target": "linkText=DAG Dependencies", - "targets": [ - ["linkText=DAG Dependencies", "linkText"], - ["css=li:nth-child(8) > a", "css:finder"], - ["xpath=//a[contains(text(),'DAG Dependencies')]", "xpath:link"], - ["xpath=//a[contains(@href, '/dag-dependencies')]", "xpath:href"], - ["xpath=//li[8]/a", "xpath:position"], - ["xpath=//a[contains(.,'DAG Dependencies')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "57bc755a-2b19-4a12-a2bc-8066e7d9fb3e", - "comment": "", - "command": "mouseOver", - "target": "css=.navbar-user-icon > span", - "targets": [ - ["css=.navbar-user-icon > span", "css:finder"], - ["xpath=//span/span", "xpath:position"] - ], - "value": "" - }, { - "id": "ebb5974a-64ef-4754-81ea-621e7c276594", - "comment": "", - "command": "click", - "target": "linkText=exit_to_appLog Out", - "targets": [ - ["linkText=exit_to_appLog Out", "linkText"], - ["css=.navbar-right > .dropdown:nth-child(2) li:nth-child(3) > a", "css:finder"], - ["xpath=//a[contains(@href, '/logout/')]", "xpath:href"], - ["xpath=//ul[2]/li[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'exit_to_appLog Out')]", "xpath:innerText"] - ], - "value": "" - }] - }, { - "id": "34364c6a-2c61-4ba1-956f-493bfa972061", - "name": "test-admin", - "commands": [{ - "id": "c025a704-892f-4b1f-bd17-6e7df351b6a1", - "comment": "", - "command": "open", - "target": "/login/?next=http%3A%2F%2F172.31.36.230%3A8080%2Fhome", - "targets": [], - "value": "" - }, { - "id": "6c237660-786c-4ef3-9003-0ff0426f6229", - "comment": "", - "command": "setWindowSize", - "target": "1200x1286", - "targets": [], - "value": "" - }, { - "id": "49424ffd-ec36-4715-9f54-d21e7b9b745a", - "comment": "", - "command": "type", - "target": "id=username", - "targets": [ - ["id=username", "id"], - ["name=username", "name"], - ["css=#username", "css:finder"], - ["xpath=//input[@id='username']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[2]/div/div/input", "xpath:idRelative"], - ["xpath=//div/input", "xpath:position"] - ], - "value": "rf-test" - }, { - "id": "ed3bcf26-1899-4963-86c7-62bb5131baa6", - "comment": "", - "command": "type", - "target": "id=password", - "targets": [ - ["id=password", "id"], - ["name=password", "name"], - ["css=#password", "css:finder"], - ["xpath=//input[@id='password']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[2]/div/div[2]/input", "xpath:idRelative"], - ["xpath=//div[2]/input", "xpath:position"] - ], - "value": "rf_password123!" - }, { - "id": "4c2b270c-17ad-44a9-9f84-d07e8fb74c3a", - "comment": "", - "command": "click", - "target": "css=.btn-primary", - "targets": [ - ["css=.btn-primary", "css:finder"], - ["xpath=//input[@value='Sign In']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[3]/div/div/input", "xpath:idRelative"], - ["xpath=//div[3]/div/div/input", "xpath:position"] - ], - "value": "" - }, { - "id": "26ecf8d7-5c4a-4ba6-b59d-3e1451b1e53c", - "comment": "", - "command": "mouseOver", - "target": "linkText=Admin", - "targets": [ - ["linkText=Admin", "linkText"], - ["css=.dropdown:nth-child(4) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Admin')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[3]", "xpath:href"], - ["xpath=//div[2]/ul/li[4]/a", "xpath:position"], - ["xpath=//a[contains(.,'Admin')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "fc64018b-66b5-45ba-9c9c-cff9c5f438e5", - "comment": "", - "command": "click", - "target": "linkText=Variables", - "targets": [ - ["linkText=Variables", "linkText"], - ["css=.dropdown:nth-child(4) li:nth-child(1) > a", "css:finder"], - ["xpath=//a[contains(text(),'Variables')]", "xpath:link"], - ["xpath=//a[contains(@href, '/variable/list/')]", "xpath:href"], - ["xpath=//li[4]/ul/li/a", "xpath:position"], - ["xpath=//a[contains(.,'Variables')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "2a39a000-7f6b-43ae-a7b7-b715d4346e6e", - "comment": "", - "command": "mouseOver", - "target": "linkText=Admin", - "targets": [ - ["linkText=Admin", "linkText"], - ["css=.dropdown:nth-child(4) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Admin')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[3]", "xpath:href"], - ["xpath=//div[2]/ul/li[4]/a", "xpath:position"], - ["xpath=//a[contains(.,'Admin')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "6e546d77-48cb-4e81-9075-ae39906eebab", - "comment": "", - "command": "click", - "target": "linkText=Configurations", - "targets": [ - ["linkText=Configurations", "linkText"], - ["css=.dropdown:nth-child(4) li:nth-child(2) > a", "css:finder"], - ["xpath=//a[contains(text(),'Configurations')]", "xpath:link"], - ["xpath=//a[contains(@href, '/configuration')]", "xpath:href"], - ["xpath=//li[4]/ul/li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'Configurations')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "a3d1f773-8ff1-4f30-9d1f-f69677b06c04", - "comment": "", - "command": "mouseOver", - "target": "linkText=Admin", - "targets": [ - ["linkText=Admin", "linkText"], - ["css=.dropdown:nth-child(4) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Admin')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[3]", "xpath:href"], - ["xpath=//div[2]/ul/li[4]/a", "xpath:position"], - ["xpath=//a[contains(.,'Admin')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "9c3d5fce-5fd8-4fce-af57-9dbc1a6e8f38", - "comment": "", - "command": "click", - "target": "linkText=Connections", - "targets": [ - ["linkText=Connections", "linkText"], - ["css=.dropdown:nth-child(4) li:nth-child(3) > a", "css:finder"], - ["xpath=//a[contains(text(),'Connections')]", "xpath:link"], - ["xpath=//a[contains(@href, '/connection/list/')]", "xpath:href"], - ["xpath=//li[4]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'Connections')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "4f346035-2387-4600-aefc-5f1c1bcf66f3", - "comment": "", - "command": "mouseOver", - "target": "linkText=Admin", - "targets": [ - ["linkText=Admin", "linkText"], - ["css=.dropdown:nth-child(4) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Admin')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[3]", "xpath:href"], - ["xpath=//div[2]/ul/li[4]/a", "xpath:position"], - ["xpath=//a[contains(.,'Admin')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "726370af-681e-4f4b-8160-ca948fe87428", - "comment": "", - "command": "click", - "target": "linkText=Plugins", - "targets": [ - ["linkText=Plugins", "linkText"], - ["css=.dropdown:nth-child(4) li:nth-child(4) > a", "css:finder"], - ["xpath=//a[contains(text(),'Plugins')]", "xpath:link"], - ["xpath=//a[contains(@href, '/plugin')]", "xpath:href"], - ["xpath=//li[4]/ul/li[4]/a", "xpath:position"], - ["xpath=//a[contains(.,'Plugins')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "7e6a0d1f-3134-40b6-a2bb-8505d0e6761f", - "comment": "", - "command": "mouseOver", - "target": "linkText=Admin", - "targets": [ - ["linkText=Admin", "linkText"], - ["css=.dropdown:nth-child(4) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Admin')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[3]", "xpath:href"], - ["xpath=//div[2]/ul/li[4]/a", "xpath:position"], - ["xpath=//a[contains(.,'Admin')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "1b26c7b1-67a8-41e7-9cc3-4ad4aefa150b", - "comment": "", - "command": "click", - "target": "linkText=Providers", - "targets": [ - ["linkText=Providers", "linkText"], - ["css=.dropdown:nth-child(4) li:nth-child(5) > a", "css:finder"], - ["xpath=//a[contains(text(),'Providers')]", "xpath:link"], - ["xpath=//a[contains(@href, '/provider')]", "xpath:href"], - ["xpath=//li[4]/ul/li[5]/a", "xpath:position"], - ["xpath=//a[contains(.,'Providers')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "d5730038-47aa-459f-8b07-35b62ab26c05", - "comment": "", - "command": "mouseOver", - "target": "linkText=Admin", - "targets": [ - ["linkText=Admin", "linkText"], - ["css=.dropdown:nth-child(4) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Admin')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[3]", "xpath:href"], - ["xpath=//div[2]/ul/li[4]/a", "xpath:position"], - ["xpath=//a[contains(.,'Admin')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "59cc72fb-c120-4d55-a11a-46c324cb6123", - "comment": "", - "command": "click", - "target": "linkText=Pools", - "targets": [ - ["linkText=Pools", "linkText"], - ["css=.dropdown:nth-child(4) li:nth-child(6) > a", "css:finder"], - ["xpath=//a[contains(text(),'Pools')]", "xpath:link"], - ["xpath=//a[contains(@href, '/pool/list/')]", "xpath:href"], - ["xpath=//li[4]/ul/li[6]/a", "xpath:position"], - ["xpath=//a[contains(.,'Pools')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "9798d5ce-1b9d-4a33-aeb5-76630febbf48", - "comment": "", - "command": "mouseOver", - "target": "linkText=Admin", - "targets": [ - ["linkText=Admin", "linkText"], - ["css=.dropdown:nth-child(4) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Admin')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[3]", "xpath:href"], - ["xpath=//div[2]/ul/li[4]/a", "xpath:position"], - ["xpath=//a[contains(.,'Admin')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "2455c759-43fc-4053-b13c-2be2e20231db", - "comment": "", - "command": "click", - "target": "linkText=XComs", - "targets": [ - ["linkText=XComs", "linkText"], - ["css=.dropdown:nth-child(4) li:nth-child(7) > a", "css:finder"], - ["xpath=//a[contains(text(),'XComs')]", "xpath:link"], - ["xpath=//a[contains(@href, '/xcom/list/')]", "xpath:href"], - ["xpath=//li[4]/ul/li[7]/a", "xpath:position"], - ["xpath=//a[contains(.,'XComs')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "db3abae9-d3bc-4287-943c-8901a1ab19d5", - "comment": "", - "command": "click", - "target": "linkText=2", - "targets": [ - ["linkText=2", "linkText"], - ["css=.pagination > li:nth-child(4) > a", "css:finder"], - ["xpath=//a[contains(text(),'2')]", "xpath:link"], - ["xpath=//a[contains(@href, '/xcom/list/?page_XComModelView=1')]", "xpath:href"], - ["xpath=//div[2]/div/ul/li[4]/a", "xpath:position"] - ], - "value": "" - }, { - "id": "e4e6b4d0-d0e8-4c65-8d65-d7e52c3700d2", - "comment": "", - "command": "mouseOver", - "target": "css=.navbar-user-icon > span", - "targets": [ - ["css=.navbar-user-icon > span", "css:finder"], - ["xpath=//span/span", "xpath:position"] - ], - "value": "" - }, { - "id": "3fcc8bc8-811b-4859-a7ec-d6d4ff7faaf3", - "comment": "", - "command": "click", - "target": "linkText=exit_to_appLog Out", - "targets": [ - ["linkText=exit_to_appLog Out", "linkText"], - ["css=.navbar-right > .dropdown:nth-child(2) li:nth-child(3) > a", "css:finder"], - ["xpath=//a[contains(@href, '/logout/')]", "xpath:href"], - ["xpath=//ul[2]/li[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'exit_to_appLog Out')]", "xpath:innerText"] - ], - "value": "" - }] - }, { - "id": "a61723b5-71f2-4f32-a7d0-95fc037a2fd4", - "name": "test-docs", - "commands": [{ - "id": "e0e78768-61dd-4ac7-aa7e-b8375c113d42", - "comment": "", - "command": "open", - "target": "/login/?next=http%3A%2F%2F172.31.36.230%3A8080%2Fhome", - "targets": [], - "value": "" - }, { - "id": "8e1297fd-d906-4aab-ad92-da00d71325f6", - "comment": "", - "command": "setWindowSize", - "target": "1200x1286", - "targets": [], - "value": "" - }, { - "id": "8652a493-0598-45d0-b6dc-7d26216cdd0a", - "comment": "", - "command": "type", - "target": "id=username", - "targets": [ - ["id=username", "id"], - ["name=username", "name"], - ["css=#username", "css:finder"], - ["xpath=//input[@id='username']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[2]/div/div/input", "xpath:idRelative"], - ["xpath=//div/input", "xpath:position"] - ], - "value": "rf-test" - }, { - "id": "2b2e5049-805b-42d9-907d-b625821f8cdb", - "comment": "", - "command": "type", - "target": "id=password", - "targets": [ - ["id=password", "id"], - ["name=password", "name"], - ["css=#password", "css:finder"], - ["xpath=//input[@id='password']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[2]/div/div[2]/input", "xpath:idRelative"], - ["xpath=//div[2]/input", "xpath:position"] - ], - "value": "rf_password123!" - }, { - "id": "39df11d8-d9c0-4f79-94b8-8882409b34a8", - "comment": "", - "command": "sendKeys", - "target": "id=password", - "targets": [ - ["id=password", "id"], - ["name=password", "name"], - ["css=#password", "css:finder"], - ["xpath=//input[@id='password']", "xpath:attributes"], - ["xpath=//div[@id='loginbox']/div/div[2]/form/div[2]/div/div[2]/input", "xpath:idRelative"], - ["xpath=//div[2]/input", "xpath:position"] - ], - "value": "${KEY_ENTER}" - }, { - "id": "79dbb5a0-9224-4846-b61c-bb9a3a8f6c55", - "comment": "", - "command": "mouseOver", - "target": "linkText=Docs", - "targets": [ - ["linkText=Docs", "linkText"], - ["css=.dropdown:nth-child(5) > .dropdown-toggle", "css:finder"], - ["xpath=//a[contains(text(),'Docs')]", "xpath:link"], - ["xpath=(//a[contains(@href, 'javascript:void(0)')])[4]", "xpath:href"], - ["xpath=//div[2]/ul/li[5]/a", "xpath:position"], - ["xpath=//a[contains(.,'Docs')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "eed63b1e-ccae-42be-a5da-6c367452d64c", - "comment": "", - "command": "click", - "target": "linkText=REST API Reference (Swagger UI)", - "targets": [ - ["linkText=REST API Reference (Swagger UI)", "linkText"], - ["css=.dropdown:nth-child(5) li:nth-child(4) > a", "css:finder"], - ["xpath=//a[contains(text(),'REST API Reference (Swagger UI)')]", "xpath:link"], - ["xpath=//a[contains(@href, '/api/v1/ui/')]", "xpath:href"], - ["xpath=//li[5]/ul/li[4]/a", "xpath:position"], - ["xpath=//a[contains(.,'REST API Reference (Swagger UI)')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "bf981a40-4fe6-474a-9f96-3bb0ab680981", - "comment": "", - "command": "open", - "target": "/home", - "targets": [], - "value": "" - }, { - "id": "8cf59b96-1090-429d-8696-9fa0b123e913", - "comment": "", - "command": "mouseOver", - "target": "css=.dropdown:nth-child(5) .caret", - "targets": [ - ["css=.dropdown:nth-child(5) .caret", "css:finder"], - ["xpath=//li[5]/a/b", "xpath:position"] - ], - "value": "" - }, { - "id": "eb156e5a-ded5-42cc-99ba-32afb1e9568f", - "comment": "", - "command": "click", - "target": "linkText=REST API Reference (Redoc)", - "targets": [ - ["linkText=REST API Reference (Redoc)", "linkText"], - ["css=.dropdown:nth-child(5) li:nth-child(5) > a", "css:finder"], - ["xpath=//a[contains(text(),'REST API Reference (Redoc)')]", "xpath:link"], - ["xpath=//a[contains(@href, '/redoc')]", "xpath:href"], - ["xpath=//li[5]/ul/li[5]/a", "xpath:position"], - ["xpath=//a[contains(.,'REST API Reference (Redoc)')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "beb8950b-b825-4a5a-b5d6-f8141c4200e8", - "comment": "", - "command": "open", - "target": "/home", - "targets": [], - "value": "" - }, { - "id": "a874d4fc-d4bc-4e17-b103-65de1813af21", - "comment": "", - "command": "mouseOver", - "target": "css=.navbar-user-icon > span", - "targets": [ - ["css=.navbar-user-icon > span", "css:finder"], - ["xpath=//span/span", "xpath:position"] - ], - "value": "" - }, { - "id": "a405a102-f70d-4b9f-b19e-4e1d51e3d5d6", - "comment": "", - "command": "click", - "target": "linkText=exit_to_appLog Out", - "targets": [ - ["linkText=exit_to_appLog Out", "linkText"], - ["css=.navbar-right > .dropdown:nth-child(2) li:nth-child(3) > a", "css:finder"], - ["xpath=//a[contains(@href, '/logout/')]", "xpath:href"], - ["xpath=//ul[2]/li[2]/ul/li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'exit_to_appLog Out')]", "xpath:innerText"] - ], - "value": "" - }] - }], - "suites": [{ - "id": "85e0b6e8-8166-406f-b074-a857c6f11512", - "name": "Default Suite", - "persistSession": false, - "parallel": false, - "timeout": 300, - "tests": [] - }], - "urls": ["http://172.31.36.230:8080/"], - "plugins": [] -} \ No newline at end of file diff --git a/community_images/airflow/airflow/bitnami/selenium_tests/conftest.py b/community_images/airflow/airflow/bitnami/selenium_tests/conftest.py deleted file mode 100644 index ce945b43c0..0000000000 --- a/community_images/airflow/airflow/bitnami/selenium_tests/conftest.py +++ /dev/null @@ -1,23 +0,0 @@ -"""The conftest file for running selenium test.""" -# pylint: skip-file - -# conftest.py -import pytest # pylint: disable=import-error - - -def pytest_addoption(parser): - """The function to add options""" - parser.addoption("--server", action="store", help="wordpress server") - parser.addoption("--port", action="store", - help="port for wordpress container") - - -@pytest.fixture -def params(request): - """the params""" - config_params = {} - config_params['server'] = request.config.getoption('--server') - config_params['port'] = request.config.getoption('--port') - if config_params['server'] is None or config_params['port'] is None: - pytest.skip() - return config_params diff --git a/community_images/airflow/airflow/bitnami/selenium_tests/test_enablealldags.py b/community_images/airflow/airflow/bitnami/selenium_tests/test_enablealldags.py deleted file mode 100644 index 41499cb434..0000000000 --- a/community_images/airflow/airflow/bitnami/selenium_tests/test_enablealldags.py +++ /dev/null @@ -1,114 +0,0 @@ -# Generated by Selenium IDE -# pylint: skip-file - -import pytest -import time -import json -from selenium import webdriver -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.common.by import By -from selenium.webdriver.common.action_chains import ActionChains -from selenium.webdriver.support import expected_conditions -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities - - -class TestEnablealldags(): - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_enablealldags(self, params): - self.driver.get( - "http://{}:{}/".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - self.driver.set_window_size(1440, 790) - self.driver.find_element(By.ID, "username").send_keys("rf-test") - self.driver.find_element( - By.ID, "password").send_keys("rf_password123!") - self.driver.find_element(By.CSS_SELECTOR, ".btn-primary").click() - element = self.driver.find_element( - By.CSS_SELECTOR, ".active:nth-child(2) .material-icons") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - element = self.driver.find_element(By.CSS_SELECTOR, "body") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(1) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(2) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(3) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(4) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(5) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(6) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(7) > td:nth-child(1)").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(7) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(8) .switch").click() - self.driver.execute_script("window.scrollTo(0,624)") - self.driver.execute_script("window.scrollTo(0,567)") - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(9) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(10) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(11) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(12) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(13) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(14) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(15) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(16) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(17) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(18) .switch").click() - self.driver.execute_script("window.scrollTo(0,895)") - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(19) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(20) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(21) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(22) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(23) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(24) .switch").click() - element = self.driver.find_element(By.LINK_TEXT, "‹") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(25) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(26) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(27) .switch").click() - self.driver.close() diff --git a/community_images/airflow/airflow/bitnami/selenium_tests/test_testadmin.py b/community_images/airflow/airflow/bitnami/selenium_tests/test_testadmin.py deleted file mode 100644 index f53c24d809..0000000000 --- a/community_images/airflow/airflow/bitnami/selenium_tests/test_testadmin.py +++ /dev/null @@ -1,78 +0,0 @@ -# Generated by Selenium IDE -# pylint: skip-file - -import pytest -import time -import json -from selenium import webdriver -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.common.by import By -from selenium.webdriver.common.action_chains import ActionChains -from selenium.webdriver.support import expected_conditions -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities - - -class TestTestadmin(): - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_testadmin(self, params): - self.driver.get( - "http://{}:{}/".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - self.driver.set_window_size(1200, 1286) - self.driver.find_element(By.ID, "username").send_keys("rf-test") - self.driver.find_element( - By.ID, "password").send_keys("rf_password123!") - self.driver.find_element(By.CSS_SELECTOR, ".btn-primary").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Variables").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Configurations").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Connections").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Plugins").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Providers").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Pools").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "XComs").click() - element = self.driver.find_element( - By.CSS_SELECTOR, ".navbar-user-icon > span") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "exit_to_appLog Out").click() - self.driver.close() diff --git a/community_images/airflow/airflow/bitnami/selenium_tests/test_viewbrowse.py b/community_images/airflow/airflow/bitnami/selenium_tests/test_viewbrowse.py deleted file mode 100644 index 7416ba376e..0000000000 --- a/community_images/airflow/airflow/bitnami/selenium_tests/test_viewbrowse.py +++ /dev/null @@ -1,83 +0,0 @@ -# Generated by Selenium IDE -# pylint: skip-file - -import pytest -import time -import json -from selenium import webdriver -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.common.by import By -from selenium.webdriver.common.action_chains import ActionChains -from selenium.webdriver.support import expected_conditions -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities - - -class TestViewbrowse(): - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_viewbrowse(self, params): - self.driver.get( - "http://{}:{}/".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - self.driver.set_window_size(1200, 1286) - self.driver.find_element(By.ID, "username").send_keys("rf-test") - self.driver.find_element( - By.ID, "password").send_keys("rf_password123!") - self.driver.find_element(By.CSS_SELECTOR, ".btn-primary").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "DAG Runs").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Jobs").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Audit Logs").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Task Instances").click() - self.driver.find_element(By.LINK_TEXT, "2").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Task Reschedules").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Triggers").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "SLA Misses").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "DAG Dependencies").click() - element = self.driver.find_element( - By.CSS_SELECTOR, ".navbar-user-icon > span") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "exit_to_appLog Out").click() - self.driver.close() diff --git a/community_images/airflow/airflow/bitnami/selenium_tests/test_viewsecurity.py b/community_images/airflow/airflow/bitnami/selenium_tests/test_viewsecurity.py deleted file mode 100644 index 8caccbdb34..0000000000 --- a/community_images/airflow/airflow/bitnami/selenium_tests/test_viewsecurity.py +++ /dev/null @@ -1,73 +0,0 @@ -# Generated by Selenium IDE -# pylint: skip-file - -import pytest -import time -import json -from selenium import webdriver -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.common.by import By -from selenium.webdriver.common.action_chains import ActionChains -from selenium.webdriver.support import expected_conditions -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities - - -class TestViewsecurity(): - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_viewsecurity(self, params): - self.driver.get( - "http://{}:{}/".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - self.driver.set_window_size(1200, 1286) - self.driver.find_element(By.ID, "username").send_keys("rf-test") - self.driver.find_element( - By.ID, "password").send_keys("rf_password123!") - self.driver.find_element(By.CSS_SELECTOR, ".btn-primary").click() - element = self.driver.find_element(By.LINK_TEXT, "Security") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "List Users").click() - element = self.driver.find_element(By.LINK_TEXT, "Security") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "List Roles").click() - element = self.driver.find_element(By.LINK_TEXT, "Security") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "User\'s Statistics").click() - element = self.driver.find_element(By.LINK_TEXT, "Security") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Actions").click() - element = self.driver.find_element(By.LINK_TEXT, "Security") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Resources").click() - element = self.driver.find_element(By.LINK_TEXT, "Security") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Permissions").click() - element = self.driver.find_element(By.LINK_TEXT, "FL") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "exit_to_appLog Out").click() - self.driver.close() diff --git a/community_images/airflow/airflow/ironbank/.rfignore b/community_images/airflow/airflow/ironbank/.rfignore deleted file mode 100644 index 5259a7013b..0000000000 --- a/community_images/airflow/airflow/ironbank/.rfignore +++ /dev/null @@ -1 +0,0 @@ -/usr/share/licenses diff --git a/community_images/airflow/airflow/ironbank/README.md b/community_images/airflow/airflow/ironbank/README.md deleted file mode 100644 index 6aa92dad2f..0000000000 --- a/community_images/airflow/airflow/ironbank/README.md +++ /dev/null @@ -1,145 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Apache Airflow Ironbank - -RapidFort’s container optimization process hardened this Apache Airflow Ironbank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Apache Airflow Ironbank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Apache Airflow Ironbank? - -> Apache Airflow (or simply Airflow) is a platform to programmatically author, schedule, and monitor workflows. - -When workflows are defined as code, they become more maintainable, versionable, testable, and collaborative. - -Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The Airflow scheduler executes your tasks on an array of workers while following the specified dependencies. Rich command line utilities make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize pipelines running in production, monitor progress, and troubleshoot issues when needed. - - -[Overview of Apache Airflow Ironbank](https://airflow.apache.org/) - -Disclaimer: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Apache Airflow Ironbank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install airflow, just replace repository with RapidFort registry -$ helm install my-airflow bitnami/airflow --set image.repository=rapidfort/airflow-ib - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Apache Airflow Ironbank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One Apache Airflow Ironbank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/airflow-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=airflow-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fairflow%2Fairflow?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fairflow%2Fairflow?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fairflow%2Fairflow?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fairflow%2Fairflow?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fairflow%2Fairflow?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=airflow-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/airflow-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/airflow-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/airflow/airflow/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/airflow/airflow/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fapache%2Fairflow%2Fairflow -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/airflow-ib diff --git a/community_images/airflow/airflow/ironbank/assets/cve_reduction.webp b/community_images/airflow/airflow/ironbank/assets/cve_reduction.webp deleted file mode 100644 index c2c081bd061ac8af2bfbe3635b44db76e750c6d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1532 zcmWIYbaVT{%D@or>J$(bU=hK^z`&pY#0wc2>=_t5ot*VV2 z7YKk{%#)fI8VsZ(fLMm1m?4P4oxusnrYb;$XZ|7v28*u@49pV{Vo5U@7`C@EFi6}& zh^Z`KVBl|IVAyuPAh9SB>=+gx$&{AH!0>4~0|Rd)1B37d1_rKZm_reI5pjXTuL?jt zGC+Uk17SKt4nrz~0)r<*9z!yN9*||kV8CF=UfAU$X1gpNmYs& z&M)65tiNJtuu8)2V<-@WFugC2>|Fdy%gs_HN$5xGs+ltjBI=LX&fC3v_XE3$x?fms zyiO))TtlcfVci%Ja%SkMiU<@i=c?ptI0;+FZWd z!U3iyE!lOmRaaNZDZFD~`1kWi{jmo!U;8d?kICA;k#9!s!{?W>+Fu+mi2Ezec{g!# zacgXM$9u0-(b7lCXKW%ZyK|1DeJfyCapgqz+oScb%3fUT%Q>UD*Yo+Qe{!|g56Xr# zrlx;SUsJg8j{CctDO2{pe{a$JtFmq$+XarTWuJv4+9LiQJ9bB((VO+qvQIK`3_SWO zb@qM1ee!}OR`>4ylWlr5e__w2u8;Gx_&=_B6VCk8_}{v;i+&6a?gm`4o8_BVmg>*E zQ8UNDc5O+-*EvV_Pq7ibw?5BC{^dPw?H6Lx4UT`+G-N(ef2Q`=yN6P#P8S2e+n&oV zOnN1s#JNxY)P0A0`~OJoE?)h;`Ct8q%x!^rhboG``o*8E+4`#M@#;`rVUwg`Mb+eu?*_RVP$!D6!s?#5jAOH0;MfK2p3419&q zr+NN87xTY=nd|$JY*nS#w`+U^q?{&j70gdxV-?cTSpHX|GMjbxddXvR>^)Zpl>WPR z{n*^7f6XVS8k^}p-?sY$JM+oemtOVe{*hFBcIor7c?O%_zWcygH+@;RZgLOvGgXgA z9s46gLhpUuoBev4pmj5+vY1cuH<4TMv5#_^Hoe*D*y;GEm2oYzn(U|KKWtp{N_X{4 zfAHNZrRD%52aEBCeAo2*i}ShvOZIXdCowe8mb{vW?T{q%fRdsVJU zZWU8q(w9dUzhB`#$o(UWMUYECCUL>-xVqi7SMQzM(z?Mx{zk=_rCoUoD|g@QST;tVL_CjsiYUZnFZ$FydeXVfsv)^|PMLqF$ldIoVci`qe zu84>?T{Ewo`E5Ucp~!QGO{;mTye0@aIw-Auef<8`i6?)UpYRh}75%l>NRmasQFgXb zjI8L>skdKAMz`-U{h7OnXI;au|7lCC)9kgaufK3#7nS_BckW~VcArcsyIUC#fY}=W DhjuW6 diff --git a/community_images/airflow/airflow/ironbank/assets/metrics.webp b/community_images/airflow/airflow/ironbank/assets/metrics.webp deleted file mode 100644 index b110bbe053a99394c6fa8afab14e7b38a70f4e4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26494 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/dev/null 2>&1 ; pwd -P )" - -AIRFLOW_CONTAINER=${PROJECT_NAME}-airflow-ib-1 - -# Add a user for web app -docker exec "${AIRFLOW_CONTAINER}" airflow users create --role Admin --username rf-test --password rf_password123! --email rf-test@nomail.com --firstname rf --lastname test - -AIRFLOW_PORT='8080' -"${SCRIPTPATH}"/../../../common/selenium_tests/runner-dc.sh "localhost" "${AIRFLOW_PORT}" "${SCRIPTPATH}"/selenium_tests 2>&1 diff --git a/community_images/airflow/airflow/ironbank/docker-compose.yml b/community_images/airflow/airflow/ironbank/docker-compose.yml deleted file mode 100644 index 9802dfa587..0000000000 --- a/community_images/airflow/airflow/ironbank/docker-compose.yml +++ /dev/null @@ -1,41 +0,0 @@ -version: '3' - -services: - postgresql: - image: docker.io/rapidfort/postgresql:10.22 - volumes: - - 'postgresql_data:/bitnami/postgresql' - environment: - - POSTGRESQL_DATABASE=bitnami_airflow - - POSTGRESQL_USERNAME=bn_airflow - - POSTGRESQL_PASSWORD=bitnami1 - # ALLOW_EMPTY_PASSWORD is recommended only for development. - - ALLOW_EMPTY_PASSWORD=yes - redis: - image: docker.io/rapidfort/redis:7.0 - volumes: - - 'redis_data:/bitnami' - environment: - # ALLOW_EMPTY_PASSWORD is recommended only for development. - - ALLOW_EMPTY_PASSWORD=yes - airflow-ib: - image: ${AIRFLOW_IMAGE_REPOSITORY}:${AIRFLOW_IMAGE_TAG} - command: bash -c "airflow db init && (airflow webserver & airflow scheduler)" - cap_add: - - SYS_PTRACE - environment: - - AIRFLOW_DATABASE_NAME=bitnami_airflow - - AIRFLOW_DATABASE_USERNAME=bn_airflow - - AIRFLOW_DATABASE_PASSWORD=bitnami1 - - AIRFLOW_EXECUTOR=CeleryExecutor - - AIRFLOW__CORE__LOAD_EXAMPLES=true - ports: - - '8080:8080' - depends_on: - - postgresql - - redis -volumes: - postgresql_data: - driver: local - redis_data: - driver: local diff --git a/community_images/airflow/airflow/ironbank/image.yml b/community_images/airflow/airflow/ironbank/image.yml deleted file mode 100644 index 9f987e5c33..0000000000 --- a/community_images/airflow/airflow/ironbank/image.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: airflow-ib -official_name: Apache Airflow Ironbank -official_website: https://airflow.apache.org/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/apache/airflow/airflow -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fapache%2Fairflow%2Fairflow -source_image_readme: https://repo1.dso.mil/dsop/opensource/apache/airflow/airflow/-/blob/development/README.md -rf_docker_link: rapidfort/airflow-ib -image_workflow_name: airflow_airflow_ironbank -github_location: airflow/airflow/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fairflow%2Fairflow -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install airflow, just replace repository with RapidFort registry - $ helm install my-airflow bitnami/airflow --set image.repository=rapidfort/airflow-ib -what_is_text: | - Apache Airflow (or simply Airflow) is a platform to programmatically author, schedule, and monitor workflows. - - When workflows are defined as code, they become more maintainable, versionable, testable, and collaborative. - - Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The Airflow scheduler executes your tasks on an array of workers while following the specified dependencies. Rich command line utilities make performing complex surgeries on DAGs a snap. The rich user interface makes it easy to visualize pipelines running in production, monitor progress, and troubleshoot issues when needed. -disclaimer: | - Disclaimer: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/apache/airflow/airflow: - input_base_tag: "2.6." - output_repo: airflow-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - airflow-ib: - repository: "AIRFLOW_IMAGE_REPOSITORY" - tag: "AIRFLOW_IMAGE_TAG" diff --git a/community_images/airflow/airflow/ironbank/selenium_tests/conftest.py b/community_images/airflow/airflow/ironbank/selenium_tests/conftest.py deleted file mode 100644 index ce945b43c0..0000000000 --- a/community_images/airflow/airflow/ironbank/selenium_tests/conftest.py +++ /dev/null @@ -1,23 +0,0 @@ -"""The conftest file for running selenium test.""" -# pylint: skip-file - -# conftest.py -import pytest # pylint: disable=import-error - - -def pytest_addoption(parser): - """The function to add options""" - parser.addoption("--server", action="store", help="wordpress server") - parser.addoption("--port", action="store", - help="port for wordpress container") - - -@pytest.fixture -def params(request): - """the params""" - config_params = {} - config_params['server'] = request.config.getoption('--server') - config_params['port'] = request.config.getoption('--port') - if config_params['server'] is None or config_params['port'] is None: - pytest.skip() - return config_params diff --git a/community_images/airflow/airflow/ironbank/selenium_tests/test_enablealldags.py b/community_images/airflow/airflow/ironbank/selenium_tests/test_enablealldags.py deleted file mode 100644 index b20697c6d6..0000000000 --- a/community_images/airflow/airflow/ironbank/selenium_tests/test_enablealldags.py +++ /dev/null @@ -1,108 +0,0 @@ -# Generated by Selenium IDE -# pylint: skip-file - -import pytest -import time -import json -from selenium import webdriver -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.common.by import By -from selenium.webdriver.common.action_chains import ActionChains -from selenium.webdriver.support import expected_conditions -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities - - -class TestEnablealldags(): - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_enablealldags(self, params): - self.driver.get( - "http://{}:{}/".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - self.driver.set_window_size(1440, 790) - self.driver.find_element(By.ID, "username").send_keys("rf-test") - self.driver.find_element( - By.ID, "password").send_keys("rf_password123!") - self.driver.find_element(By.CSS_SELECTOR, ".btn-primary").click() - element = self.driver.find_element( - By.CSS_SELECTOR, ".active:nth-child(2) .material-icons") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - element = self.driver.find_element(By.CSS_SELECTOR, "body") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(1) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(2) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(3) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(4) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(5) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(6) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(7) > td:nth-child(1)").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(7) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(8) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(9) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(10) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(11) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(12) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(13) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(14) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(15) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(16) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(17) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(18) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(19) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(20) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(21) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(22) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(23) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(24) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(25) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(26) .switch").click() - self.driver.find_element( - By.CSS_SELECTOR, "tr:nth-child(27) .switch").click() - self.driver.close() diff --git a/community_images/airflow/airflow/ironbank/selenium_tests/test_testadmin.py b/community_images/airflow/airflow/ironbank/selenium_tests/test_testadmin.py deleted file mode 100644 index 92866b96a1..0000000000 --- a/community_images/airflow/airflow/ironbank/selenium_tests/test_testadmin.py +++ /dev/null @@ -1,73 +0,0 @@ -# Generated by Selenium IDE -# pylint: skip-file - -import pytest -import time -import json -from selenium import webdriver -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.common.by import By -from selenium.webdriver.common.action_chains import ActionChains -from selenium.webdriver.support import expected_conditions -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities - - -class TestTestadmin(): - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_testadmin(self, params): - self.driver.get( - "http://{}:{}/".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - self.driver.set_window_size(1200, 1286) - self.driver.find_element(By.ID, "username").send_keys("rf-test") - self.driver.find_element( - By.ID, "password").send_keys("rf_password123!") - self.driver.find_element(By.CSS_SELECTOR, ".btn-primary").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Variables").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Configurations").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Connections").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Plugins").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Providers").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Pools").click() - element = self.driver.find_element(By.LINK_TEXT, "Admin") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "XComs").click() - self.driver.close() diff --git a/community_images/airflow/airflow/ironbank/selenium_tests/test_viewbrowse.py b/community_images/airflow/airflow/ironbank/selenium_tests/test_viewbrowse.py deleted file mode 100644 index 0e77de1ddb..0000000000 --- a/community_images/airflow/airflow/ironbank/selenium_tests/test_viewbrowse.py +++ /dev/null @@ -1,78 +0,0 @@ -# Generated by Selenium IDE -# pylint: skip-file - -import pytest -import time -import json -from selenium import webdriver -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.common.by import By -from selenium.webdriver.common.action_chains import ActionChains -from selenium.webdriver.support import expected_conditions -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities - - -class TestViewbrowse(): - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_viewbrowse(self, params): - self.driver.get( - "http://{}:{}/".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - self.driver.set_window_size(1200, 1286) - self.driver.find_element(By.ID, "username").send_keys("rf-test") - self.driver.find_element( - By.ID, "password").send_keys("rf_password123!") - self.driver.find_element(By.CSS_SELECTOR, ".btn-primary").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "DAG Runs").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Jobs").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Audit Logs").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Task Instances").click() - self.driver.find_element(By.LINK_TEXT, "example_branch_labels").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Task Reschedules").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Triggers").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "SLA Misses").click() - element = self.driver.find_element(By.LINK_TEXT, "Browse") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "DAG Dependencies").click() - self.driver.close() diff --git a/community_images/airflow/airflow/ironbank/selenium_tests/test_viewsecurity.py b/community_images/airflow/airflow/ironbank/selenium_tests/test_viewsecurity.py deleted file mode 100644 index 7e21c869f5..0000000000 --- a/community_images/airflow/airflow/ironbank/selenium_tests/test_viewsecurity.py +++ /dev/null @@ -1,69 +0,0 @@ -# Generated by Selenium IDE -# pylint: skip-file - -import pytest -import time -import json -from selenium import webdriver -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.common.by import By -from selenium.webdriver.common.action_chains import ActionChains -from selenium.webdriver.support import expected_conditions -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities - - -class TestViewsecurity(): - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_viewsecurity(self, params): - self.driver.get( - "http://{}:{}/".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - self.driver.set_window_size(1200, 1286) - self.driver.find_element(By.ID, "username").send_keys("rf-test") - self.driver.find_element( - By.ID, "password").send_keys("rf_password123!") - self.driver.find_element(By.CSS_SELECTOR, ".btn-primary").click() - element = self.driver.find_element(By.LINK_TEXT, "Security") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "List Users").click() - element = self.driver.find_element(By.LINK_TEXT, "Security") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "List Roles").click() - element = self.driver.find_element(By.LINK_TEXT, "Security") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "User\'s Statistics").click() - element = self.driver.find_element(By.LINK_TEXT, "Security") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Actions").click() - element = self.driver.find_element(By.LINK_TEXT, "Security") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Resources").click() - element = self.driver.find_element(By.LINK_TEXT, "Security") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Permissions").click() - self.driver.close() diff --git a/community_images/apache/bitnami/.rfignore b/community_images/apache/bitnami/.rfignore deleted file mode 100644 index aeb23a6e50..0000000000 --- a/community_images/apache/bitnami/.rfignore +++ /dev/null @@ -1,6 +0,0 @@ -opt/bitnami/apache/include -opt/bitnami/licenses -opt/bitnami/apache/licenses -usr/share/common-licenses -opt/bitnami/apache2/licenses -lib/init diff --git a/community_images/apache/bitnami/README.md b/community_images/apache/bitnami/README.md deleted file mode 100644 index 4d69806d4a..0000000000 --- a/community_images/apache/bitnami/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Apache - -RapidFort’s container optimization process hardened this Apache container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Apache][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Apache? - -> The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows. httpd is the Apache HyperText Transfer Protocol (HTTP) server program. It is designed to be run as a standalone daemon process. When used like this it will create a pool of child processes or threads to handle requests. - - -[Overview of Apache](https://httpd.apache.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Apache image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/apache - -# install apache, just replace repository with RapidFort registry -$ helm install my-apache bitnami/apache --set image.repository=rapidfort/apache - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Apache][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Apache][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/apache][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`2.4`, `2.4-debian-11`, `2.4.58`, `2.4.58-debian-11-r` (2.4/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/apache/2.4/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=apache&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fapache?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fapache?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fapache?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fapache?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fapache?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/apache?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/apache?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/apache/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/apache/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/apache -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/apache diff --git a/community_images/apache/bitnami/assets/cve_reduction.webp b/community_images/apache/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 4e405201108faa651f26b570739c0d2de0186a40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1832 zcmb`FeKga17{I@lUGkDp5y`w;S1E5-rEO=J$fc_=6xY_!HQU-06?dDKGV9I}@-iVe zQ|eAm-kLU2Q6W*ZBvGj-k;zMG_qW^W=#TEX|J>($p6C1dKHuj#&+~l=@W$Z~Y5)X# zVz&ovcg1S}01%Ltr~oto-tO+(4Pnp{zzmgEbv*!alz4i87Z!mJ2}LMrpnc`< z%qjqU=mC%gpnL6i_W#SZcn^s|go4H)ji*D!0Z`ck@v`VIoTy~N7v?FMzB9lbiYbQJ zHu@VTe8UOxw0J0{RT)pD(UtrdVz)T*eq}ACC_C07Q37{BGak}afB^!47r;XNzskaW zQqKV3It9R@j0GPd4}jXE02n@6@L3iEpu+*6<}NLg9{Eo*s*r_6MFH?$2!M770Q#K( zXoP)jbRl=)E&k=K2qc}()k>XrJY8i^oJj-df_~6@>()7Ic#K1R-{dN)eRd?-$Kwg!8aHRjFfQ?<&TYl4&ggtmv5qYxzJ>yEpu{EakLuw2!p?RGNivB*g1cb=! zh88P5hKOFO0oM&qm^`_*>jD3|mjj%7iLh6T%-&x#$833q%K)>Z7jGgFOizNMwS5a*{fUB0MpJ2~W+E%q8C89TF=}{cs?_0Zk8I z(qvO_u|_r+=AD(*!^@Cndv7`!pb{=r%3V*Os{~q`_Kv)) zkEm`MzOC7{q_U#v2_>f_PgLgcq2Rs$g@fIOar_MzZnTXe3twY>?S0Z>)2$47yHK~q zQVW~P$gTDVH+|mJz2>8<Xq>3Rg}VmX^0B|D?ey2gYZ@_ouf7UvaJyY#DvBqsbs6tb zum8=l+)}$tp_!$bAC-GQ?5Mt85DZq?UA;Ohqvc{U$Wr52wq)&pSa8CVn_W+xFqs;= z6j7Tgm0TV_zM2v2RL8A9oVeR=Fz}*Zjk+(~p6%E-Pr0&$uHIc7#C^3-VYrCYYmkDa z;28qqYFOeS>#~!YdezNz)z%MFa?H-+o%YYfDJX&7<{x;?2J`vSuv#CksNpdpFE_mu z)y~chJsf&ULK%dYpD$JM7EkA9Lcg6>v^;lwVNE7Ks3jzZ=*K}rb zaO_@L&+CpG&1T67)_l9f5i&ZKSf^{#oQD%XW{Mwvp7Miv;q-e&I9*nuz++!sdSOXO txOt{jp4VH^f9y=dS#h&zB0v9H=zYQG-9WZ`k*OQC=*phPK1UV+e*+3Jwj2Ne diff --git a/community_images/apache/bitnami/assets/metrics.webp b/community_images/apache/bitnami/assets/metrics.webp deleted file mode 100644 index 34988c24ef9b0f98d5c3f9dd294782d6f4c100ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27092 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 Viwp>`z>5qBu){-Y4YB=T005kMBKZIS diff --git a/community_images/apache/bitnami/coverage_script.sh b/community_images/apache/bitnami/coverage_script.sh deleted file mode 100755 index 7354905c6f..0000000000 --- a/community_images/apache/bitnami/coverage_script.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -set -x -set -e -ls /opt/bitnami/apache2/modules/ -httpd -M -sed -i '/LoadModule /d' /opt/bitnami/apache2/conf/httpd.conf -cat /opt/bitnami/scripts/modules_list >> /opt/bitnami/apache2/conf/httpd.conf -#cat /opt/bitnami/apache2/conf/httpd.conf -/opt/bitnami/scripts/apache/reload.sh -/opt/bitnami/scripts/apache/status.sh - -httpd -M -#Modules excluded: ["unixd_module" "pagespeed_module" "pagespeed_ap24_module" "mpm_worker_module" "mpm_event_module"] diff --git a/community_images/apache/bitnami/dc_coverage.sh b/community_images/apache/bitnami/dc_coverage.sh deleted file mode 100755 index ef57905147..0000000000 --- a/community_images/apache/bitnami/dc_coverage.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -CONTAINER_NAME="${PROJECT_NAME}"-apache-1 - -# exec into container and run coverage script -docker exec -i "${CONTAINER_NAME}" bash -c /opt/bitnami/scripts/coverage_script.sh - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8443/tcp\"[0].HostPort" -NON_TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort") -TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8443/tcp\"[0].HostPort") - -# run curl in loop for different endpoints -for i in {1..20}; -do - echo "Attempt $i" - curl http://localhost:"${NON_TLS_PORT}" - with_backoff curl https://localhost:"${TLS_PORT}" -k -v -done - diff --git a/community_images/apache/bitnami/docker-compose.yml b/community_images/apache/bitnami/docker-compose.yml deleted file mode 100644 index cb7a8aff53..0000000000 --- a/community_images/apache/bitnami/docker-compose.yml +++ /dev/null @@ -1,14 +0,0 @@ -version: '2' - -services: - apache: - image: ${APACHE_IMAGE_REPOSITORY}:${APACHE_IMAGE_TAG} - user: root - volumes: - - ./modules_list:/opt/bitnami/scripts/modules_list:ro - - ./coverage_script.sh:/opt/bitnami/scripts/coverage_script.sh - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::8080' - - '0.0.0.0::8443' diff --git a/community_images/apache/bitnami/docker_coverage.sh b/community_images/apache/bitnami/docker_coverage.sh deleted file mode 100755 index b720d0f871..0000000000 --- a/community_images/apache/bitnami/docker_coverage.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -APACHE_HOST=$(jq -r '.container_details.apache.ip_address' < "$JSON_PARAMS") - -# Install Apache benchmark testing tool -sudo apt-get install apache2-utils -y -sudo apt-get install apache2 -y - -# testing using apache benchmark tool -ab -t 100 -n 10000 -c 10 http://"${APACHE_HOST}":8080/ diff --git a/community_images/apache/bitnami/image.yml b/community_images/apache/bitnami/image.yml deleted file mode 100644 index c187b9da2e..0000000000 --- a/community_images/apache/bitnami/image.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: apache -official_name: Apache -official_website: https://httpd.apache.org/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/apache -source_image_repo_link: https://hub.docker.com/r/bitnami/apache -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/apache/README.md -rf_docker_link: rapidfort/apache -image_workflow_name: apache_bitnami -github_location: apache/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fapache -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/apache - - # install apache, just replace repository with RapidFort registry - $ helm install my-apache bitnami/apache --set image.repository=rapidfort/apache -what_is_text: | - The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows. httpd is the Apache HyperText Transfer Protocol (HTTP) server program. It is designed to be run as a standalone daemon process. When used like this it will create a pool of child processes or threads to handle requests. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - apache: - input_base_tag: "2.7.1-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: apache - tls_certs: - generate: true - secret_name: localhost-server-tls - common_name: localhost - image_keys: - apache: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - apache: - repository: "APACHE_IMAGE_REPOSITORY" - tag: "APACHE_IMAGE_TAG" - - type: docker - script: docker_coverage.sh - tls_certs: - generate: true - out_dir: certs - diff --git a/community_images/apache/bitnami/k8s_coverage.sh b/community_images/apache/bitnami/k8s_coverage.sh deleted file mode 100755 index 72ca4770eb..0000000000 --- a/community_images/apache/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# fetch service url and store the urls in URLS file -rm -f URLS -minikube service "${RELEASE_NAME}" -n "${NAMESPACE}" --url | tee -a URLS - -# Changing "http" to "https" in the urls file -sed -i '2,2s/http/https/' URLS -cat URLS - -# curl to urls -while read -r p; -do - curl -k "${p}" -done -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Apache IronBank - -RapidFort’s container optimization process hardened this Apache IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Apache IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Apache IronBank? - -> The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows. httpd is the Apache HyperText Transfer Protocol (HTTP) server program. It is designed to be run as a standalone daemon process. When used like this it will create a pool of child processes or threads to handle requests. - - -[Overview of Apache IronBank](https://httpd.apache.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Apache IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Using docker run: -$ docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/var/www/html/ rapidfort/apache2-ib -# PWD can be replaced with the directory containing all your HTML. - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Apache IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One Apache IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/apache2-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=apache-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fapache2?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fapache2?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fapache2?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fapache2?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fapache2?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/apache2-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/apache2-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/apache/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/apache/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fapache%2Fapache2 -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/apache2-ib diff --git a/community_images/apache/ironbank/assets/cve_reduction.webp b/community_images/apache/ironbank/assets/cve_reduction.webp deleted file mode 100644 index 985d06ac02ddf5de90a5f65e5cc23e580c2bcbfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1526 zcmWIYbaQ*h%D@or>J$(bU=hK^z`&pY#0wc2>=_t5ot*VV2 z7YKk{%#)fI8VsZ(fLMm1m?4P4oxusnrYb;$XZ|7v28*u@49pV{Vo5U@7`C@EFi6}& zh^Z`KVBl|IVAyuPAh9SB>=+gx$&{AH!0>4~0|Rd)1B37d1_rKZm_reI5pjXTuL?jt zGC+Uk17SKt4nrz~0)r<*9z!yN9*||kV8CF=U{I@f-oX}Qxw?({YxuSF3v8dozNk6RpRBe$x-EnK z#eLVti1mUin?$N!Uf30WyZ^@Fv&<9NU6QtI$!586DeNzFUptqLVc#+KC))5CS7Y~Q*xKHoPt^xo@= zAH0+P?f&}y>D+%`;}7kByX(+F)y3wW%a}#hwmEqgxU0q)tYMOSyU+Y@_Dj?Mo6k-N z6JRTFeArp{{cY)ytop!GV7mMF^GE%$2jU5_p9DFxve(q-{%CmG$?U!AP0-U@Y1wNe zvkQ0SYMVU$(s?7baK&3@wa>M?-`>x2VJLd?@UqT5Q;F(}DpOw7HkUEqn}4@P@WT&Z zQNHY-cWQR)Cui9%mUjpUE;?osm{ww;Bv%-Bq}=ZGg>Uof%hxLUCtc;ZogsF^_{hNz zyB0Jk6o1OjIVTlUJAu*PV}ilfsSBHh=WY?Vda|B9es}X7*7*6wN3G(k*E?$5-0!9K zTYH|ESlm+?ttF?ou1-q{a``7P*I?qVgD3OX_vq~lK4y4LcfsUXBa_Cf4|9BdRxR4{ z*ZGaZ)(dB62~{8d-yD~EXZ_yqcljP!r=Gr;TUnVL`adj^MmFs{8y;<(6`0pfYIsy6U{e?Rvjr>x$Bg`V*b<8 z0{f1dU+p(it?cPA+r6Y%Mz51=bKqy$J8rUf_}6~izlZU4rtl&Tk83SWsuTAI8Tc%g zSlSa>WHL!dnt|27n(yJ9%a!*ZCa`{8xiVrwEVJERn_L;Gh1~o9pP1QuSv}+D)BU?H z9-m{c^qa?`YkSx-w$rbg&wWf_)M&h}yHxbsvxgu26rL?PqqqOQ%PFG=TPEN8=JzA% zbM6| zPwkJJ75eJwIUFj!?Xq?Zy64$`DKKGSVNbH>GmS+|U?(ffgU)}#n$v!!B{m;iU78>3<^zCD1 xn@MT#1DiuPM3lb&s{GbatmCt+p!d~-<$7!6pE#a+q~0(u!+FO3)EZ#M1^_^{B830| diff --git a/community_images/apache/ironbank/assets/metrics.webp b/community_images/apache/ironbank/assets/metrics.webp deleted file mode 100644 index eca94a944c4be1628a3613320a5ad4104b316ca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25174 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 - - - RapidFort - - -

Apache Server Test Page

- - diff --git a/community_images/apache/ironbank/configs/server-configs/httpd.conf b/community_images/apache/ironbank/configs/server-configs/httpd.conf deleted file mode 100644 index d4b31abd15..0000000000 --- a/community_images/apache/ironbank/configs/server-configs/httpd.conf +++ /dev/null @@ -1,345 +0,0 @@ -# -# This is the main Apache HTTP server configuration file. It contains the -# configuration directives that give the server its instructions. -# See for detailed information. -# In particular, see -# -# for a discussion of each configuration directive. -# -# See the httpd.conf(5) man page for more information on this configuration, -# and httpd.service(8) on using and configuring the httpd service. -# -# Do NOT simply read the instructions in here without understanding -# what they do. They're here only as hints or reminders. If you are unsure -# consult the online docs. You have been warned. -# -# Configuration and logfile names: If the filenames you specify for many -# of the server's control files begin with "/" (or "drive:/" for Win32), the -# server will use that explicit path. If the filenames do *not* begin -# with "/", the value of ServerRoot is prepended -- so 'log/access_log' -# with ServerRoot set to '/www' will be interpreted by the -# server as '/www/log/access_log', where as '/log/access_log' will be -# interpreted as '/log/access_log'. - -# -# ServerRoot: The top of the directory tree under which the server's -# configuration, error, and log files are kept. -# -# Do not add a slash at the end of the directory path. If you point -# ServerRoot at a non-local disk, be sure to specify a local disk on the -# Mutex directive, if file-based mutexes are used. If you wish to share the -# same ServerRoot for multiple httpd daemons, you will need to change at -# least PidFile. -# -ServerRoot "/etc/httpd" - -# -# Listen: Allows you to bind Apache to specific IP addresses and/or -# ports, instead of the default. See also the -# directive. -# -# Change this to Listen on specific IP addresses as shown below to -# prevent Apache from glomming onto all bound IP addresses. -# -#Listen 12.34.56.78:80 -#Listen 80 -# -# Dynamic Shared Object (DSO) Support -# -# To be able to use the functionality of a module which was built as a DSO you -# have to place corresponding `LoadModule' lines at this location so the -# directives contained in it are actually available _before_ they are used. -# Statically compiled modules (those listed by `httpd -l') do not need -# to be loaded here. -# -# Example: -# LoadModule foo_module modules/mod_foo.so -# - - -# -# If you wish httpd to run as a different user or group, you must run -# httpd as root initially and it will switch. -# -# User/Group: The name (or #number) of the user/group to run httpd as. -# It is usually good practice to create a dedicated user and group for -# running httpd, as with most system services. -# -User apache -Group apache - -# 'Main' server configuration -# -# The directives in this section set up the values used by the 'main' -# server, which responds to any requests that aren't handled by a -# definition. These values also provide defaults for -# any containers you may define later in the file. -# -# All of these directives may appear inside containers, -# in which case these default settings will be overridden for the -# virtual host being defined. -# - -# -# ServerAdmin: Your address, where problems with the server should be -# e-mailed. This address appears on some server-generated pages, such -# as error documents. e.g. admin@your-domain.com -# -ServerAdmin root@localhost - -# -# Deny access to the entirety of your server's filesystem. You must -# explicitly permit access to web content directories in other -# blocks below. -# - - AllowOverride none - Require all denied - - -# -# Note that from this point forward you must specifically allow -# particular features to be enabled - so if something's not working as -# you might expect, make sure that you have specifically enabled it -# below. -# - -# -# DocumentRoot: The directory out of which you will serve your -# documents. By default, all requests are taken from this directory, but -# symbolic links and aliases may be used to point to other locations. -# -DocumentRoot "/var/www/html" - -# -# Relax access to content within /var/www. -# - - AllowOverride None - # Allow open access: - Require all granted - - -# Further relax access to the default document root: - - # - # Possible values for the Options directive are "None", "All", - # or any combination of: - # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews - # - # Note that "MultiViews" must be named *explicitly* --- "Options All" - # doesn't give it to you. - # - # The Options directive is both complicated and important. Please see - # http://httpd.apache.org/docs/2.4/mod/core.html#options - # for more information. - # - Options Indexes FollowSymLinks - - # - # AllowOverride controls what directives may be placed in .htaccess files. - # It can be "All", "None", or any combination of the keywords: - # Options FileInfo AuthConfig Limit - # - AllowOverride None - - # - # Controls who can get stuff from this server. - # - Require all granted - - -# -# DirectoryIndex: sets the file that Apache will serve if a directory -# is requested. -# - - DirectoryIndex index.html - - -# -# The following lines prevent .htaccess and .htpasswd files from being -# viewed by Web clients. -# - - Require all denied - - -# -# ErrorLog: The location of the error log file. -# If you do not specify an ErrorLog directive within a -# container, error messages relating to that virtual host will be -# logged here. If you *do* define an error logfile for a -# container, that host's errors will be logged there and not here. -# -ErrorLog /proc/self/fd/2 - -# -# LogLevel: Control the number of messages logged to the error_log. -# Possible values include: debug, info, notice, warn, error, crit, -# alert, emerg. -# -LogLevel warn - - - # - # The following directives define some format nicknames for use with - # a CustomLog directive (see below). - # - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - LogFormat "%h %l %u %t \"%r\" %>s %b" common - - - # You need to enable mod_logio.c to use %I and %O - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio - - - # - # The location and format of the access logfile (Common Logfile Format). - # If you do not define any access logfiles within a - # container, they will be logged here. Contrariwise, if you *do* - # define per- access logfiles, transactions will be - # logged therein and *not* in this file. - # - #CustomLog "logs/access_log" common - - # - # If you prefer a logfile with access, agent, and referer information - # (Combined Logfile Format) you can use the following directive. - # - CustomLog /proc/self/fd/1 combined - - - - # - # Redirect: Allows you to tell clients about documents that used to - # exist in your server's namespace, but do not anymore. The client - # will make a new request for the document at its new location. - # Example: - # Redirect permanent /foo http://www.example.com/bar - - # - # Alias: Maps web paths into filesystem paths and is used to - # access content that does not live under the DocumentRoot. - # Example: - # Alias /webpath /full/filesystem/path - # - # If you include a trailing / on /webpath then the server will - # require it to be present in the URL. You will also likely - # need to provide a section to allow access to - # the filesystem path. - - # - # ScriptAlias: This controls which directories contain server scripts. - # ScriptAliases are essentially the same as Aliases, except that - # documents in the target directory are treated as applications and - # run by the server when requested rather than as documents sent to the - # client. The same rules about trailing "/" apply to ScriptAlias - # directives as to Alias. - # - ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" - - - -# -# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased -# CGI directory exists, if you have that configured. -# - - AllowOverride None - Options None - Require all granted - - - - # - # TypesConfig points to the file containing the list of mappings from - # filename extension to MIME-type. - # - TypesConfig /etc/mime.types - - # - # AddType allows you to add to or override the MIME configuration - # file specified in TypesConfig for specific file types. - # - #AddType application/x-gzip .tgz - # - # AddEncoding allows you to have certain browsers uncompress - # information on the fly. Note: Not all browsers support this. - # - #AddEncoding x-compress .Z - #AddEncoding x-gzip .gz .tgz - # - # If the AddEncoding directives above are commented-out, then you - # ssbably should define those extensions to indicate media types: - # - AddType application/x-compress .Z - AddType application/x-gzip .gz .tgz - # - # AddHandler allows you to map certain file extensions to "handlers": - # actions unrelated to filetype. These can be either built into the server - # or added with the Action directive (see below) - # - # To use CGI scripts outside of ScriptAliased directories: - # (You will also need to add "ExecCGI" to the "Options" directive.) - # - #AddHandler cgi-script .cgi - - # For type maps (negotiated resources): - #AddHandler type-map var - - # - # Filters allow you to process content before it is sent to the client. - # - # To parse .shtml files for server-side includes (SSI): - # (You will also need to add "Includes" to the "Options" directive.) - # - AddType text/html .shtml - AddOutputFilter INCLUDES .shtml - - -# -# Specify a default charset for all content served; this enables -# interpretation of all content as UTF-8 by default. To use the -# default browser choice (ISO-8859-1), or to allow the META tags -# in HTML content to override this choice, comment out this -# directive: -# -AddDefaultCharset UTF-8 - - - # - # The mod_mime_magic module allows the server to use various hints from the - # contents of the file itself to determine its type. The MIMEMagicFile - # directive tells the module where the hint definitions are located. - # - MIMEMagicFile conf/magic - - -# -# Customizable error responses come in three flavors: -# 1) plain text 2) local redirects 3) external redirects -# -# Some examples: -#ErrorDocument 500 "The server made a boo boo." -#ErrorDocument 404 /missing.html -#ErrorDocument 404 "/cgi-bin/missing_handler.pl" -#ErrorDocument 402 http://www.example.com/subscription_info.html -# - -# -# EnableMMAP and EnableSendfile: On systems that support it, -# memory-mapping or the sendfile syscall may be used to deliver -# files. This usually improves server performance, but must -# be turned off when serving from networked-mounted -# filesystems or if support for these functions is otherwise -# broken on your system. -# Defaults if commented: EnableMMAP On, EnableSendfile Off -# -#EnableMMAP off -EnableSendfile on - -# Supplemental configuration -# -# Load config files in the "/etc/httpd/conf.d" directory, if any. -IncludeOptional conf.d/*.conf \ No newline at end of file diff --git a/community_images/apache/ironbank/configs/server-configs/httpd1.conf b/community_images/apache/ironbank/configs/server-configs/httpd1.conf deleted file mode 100755 index 9dc416b0f0..0000000000 --- a/community_images/apache/ironbank/configs/server-configs/httpd1.conf +++ /dev/null @@ -1,217 +0,0 @@ -ServerRoot "/etc/httpd" -Listen 80 -# Modules -LoadModule access_compat_module modules/mod_access_compat.so -LoadModule actions_module modules/mod_actions.so -LoadModule alias_module modules/mod_alias.so -LoadModule allowmethods_module modules/mod_allowmethods.so -LoadModule asis_module modules/mod_asis.so -LoadModule auth_basic_module modules/mod_auth_basic.so -LoadModule auth_digest_module modules/mod_auth_digest.so -LoadModule auth_form_module modules/mod_auth_form.so -LoadModule authn_anon_module modules/mod_authn_anon.so -LoadModule authn_core_module modules/mod_authn_core.so -LoadModule authn_dbd_module modules/mod_authn_dbd.so -LoadModule authn_dbm_module modules/mod_authn_dbm.so -LoadModule authn_file_module modules/mod_authn_file.so -LoadModule authn_socache_module modules/mod_authn_socache.so -LoadModule authz_core_module modules/mod_authz_core.so -LoadModule authz_dbd_module modules/mod_authz_dbd.so -LoadModule authz_dbm_module modules/mod_authz_dbm.so -LoadModule authz_groupfile_module modules/mod_authz_groupfile.so -LoadModule authz_host_module modules/mod_authz_host.so -LoadModule authz_owner_module modules/mod_authz_owner.so -LoadModule authz_user_module modules/mod_authz_user.so -LoadModule autoindex_module modules/mod_autoindex.so -LoadModule brotli_module modules/mod_brotli.so -LoadModule buffer_module modules/mod_buffer.so -LoadModule cache_module modules/mod_cache.so -LoadModule cache_disk_module modules/mod_cache_disk.so -LoadModule cache_socache_module modules/mod_cache_socache.so -LoadModule cgi_module modules/mod_cgi.so -LoadModule cgid_module modules/mod_cgid.so -LoadModule charset_lite_module modules/mod_charset_lite.so -LoadModule data_module modules/mod_data.so -LoadModule dav_module modules/mod_dav.so -LoadModule dav_fs_module modules/mod_dav_fs.so -LoadModule dav_lock_module modules/mod_dav_lock.so -LoadModule dbd_module modules/mod_dbd.so -LoadModule deflate_module modules/mod_deflate.so -LoadModule dialup_module modules/mod_dialup.so -LoadModule dir_module modules/mod_dir.so -LoadModule dumpio_module modules/mod_dumpio.so -LoadModule echo_module modules/mod_echo.so -LoadModule env_module modules/mod_env.so -LoadModule expires_module modules/mod_expires.so -LoadModule ext_filter_module modules/mod_ext_filter.so -LoadModule filter_module modules/mod_filter.so -LoadModule headers_module modules/mod_headers.so -LoadModule status_module modules/mod_status.so -LoadModule watchdog_module modules/mod_watchdog.so -LoadModule heartbeat_module modules/mod_heartbeat.so -LoadModule heartmonitor_module modules/mod_heartmonitor.so -LoadModule http2_module modules/mod_http2.so -LoadModule include_module modules/mod_include.so -LoadModule info_module modules/mod_info.so -LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so -LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so -LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so -LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so -LoadModule log_config_module modules/mod_log_config.so -LoadModule log_debug_module modules/mod_log_debug.so -LoadModule log_forensic_module modules/mod_log_forensic.so -LoadModule logio_module modules/mod_logio.so -LoadModule lua_module modules/mod_lua.so -LoadModule macro_module modules/mod_macro.so -LoadModule mime_module modules/mod_mime.so -LoadModule mime_magic_module modules/mod_mime_magic.so -LoadModule mpm_event_module modules/mod_mpm_event.so -#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so -#LoadModule mpm_worker_module modules/mod_mpm_worker.so -LoadModule negotiation_module modules/mod_negotiation.so -LoadModule unixd_module modules/mod_unixd.so -LoadModule proxy_module modules/mod_proxy.so -LoadModule proxy_ajp_module modules/mod_proxy_ajp.so -LoadModule proxy_balancer_module modules/mod_proxy_balancer.so -LoadModule proxy_connect_module modules/mod_proxy_connect.so -LoadModule proxy_express_module modules/mod_proxy_express.so -LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so -LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so -LoadModule proxy_ftp_module modules/mod_proxy_ftp.so -LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so -LoadModule proxy_http_module modules/mod_proxy_http.so -LoadModule proxy_http2_module modules/mod_proxy_http2.so -LoadModule proxy_scgi_module modules/mod_proxy_scgi.so -LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so -LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so -LoadModule ratelimit_module modules/mod_ratelimit.so -LoadModule reflector_module modules/mod_reflector.so -LoadModule remoteip_module modules/mod_remoteip.so -LoadModule reqtimeout_module modules/mod_reqtimeout.so -LoadModule request_module modules/mod_request.so -LoadModule rewrite_module modules/mod_rewrite.so -LoadModule sed_module modules/mod_sed.so -LoadModule session_module modules/mod_session.so -LoadModule session_cookie_module modules/mod_session_cookie.so -LoadModule session_crypto_module modules/mod_session_crypto.so -LoadModule session_dbd_module modules/mod_session_dbd.so -LoadModule setenvif_module modules/mod_setenvif.so -LoadModule slotmem_plain_module modules/mod_slotmem_plain.so -LoadModule slotmem_shm_module modules/mod_slotmem_shm.so -LoadModule socache_dbm_module modules/mod_socache_dbm.so -LoadModule socache_memcache_module modules/mod_socache_memcache.so -LoadModule socache_shmcb_module modules/mod_socache_shmcb.so -LoadModule speling_module modules/mod_speling.so -LoadModule ssl_module modules/mod_ssl.so -LoadModule substitute_module modules/mod_substitute.so -LoadModule suexec_module modules/mod_suexec.so -LoadModule unique_id_module modules/mod_unique_id.so -LoadModule userdir_module modules/mod_userdir.so -LoadModule usertrack_module modules/mod_usertrack.so -LoadModule version_module modules/mod_version.so -LoadModule vhost_alias_module modules/mod_vhost_alias.so - - -User apache -Group apache - -Include conf.modules.d/*.conf - -ServerAdmin you@example.com -ServerName Rapid - - - AllowOverride none - Require all denied - - -DocumentRoot "/var/www/html" - - Options Indexes FollowSymLinks - AllowOverride None - Require all granted - - - AllowOverride None - # Allow open access: - Require all granted - - - - DirectoryIndex index.html - - - - Require all denied - - -ErrorLog /proc/self/fd/2 - -LogLevel warn - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - LogFormat "%h %l %u %t \"%r\" %>s %b" common - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio - - CustomLog /proc/self/fd/1 common - - - - ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" - - - - # - # ScriptSock: On threaded servers, designate the path to the UNIX - # socket used to communicate with the CGI daemon of mod_cgid. - # - #Scriptsock cgisock - - - - AllowOverride None - Options None - Require all granted - - - - RequestHeader unset Proxy early - - - - TypesConfig /etc/mime.types - AddType application/x-compress .Z - AddType application/x-gzip .gz .tgz - AddType text/html .shtml - AddOutputFilter INCLUDES .shtml - -AddDefaultCharset UTF-8 -# SSL -Listen 8443 https -SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES -SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES -SSLHonorCipherOrder on -SSLProtocol all -SSLv3 -SSLProxyProtocol all -SSLv3 -SSLPassPhraseDialog builtin -SSLSessionCache "shmcb:/run/httpd/sslcache(512000)" -SSLSessionCacheTimeout 300 - -# General setup for the virtual host -DocumentRoot "/var/www/html" -ErrorLog /proc/self/fd/2 -TransferLog /proc/self/fd/1 -SSLEngine on -SSLCertificateFile "/etc/pki/tls/certs/localhost.crt" -SSLCertificateKeyFile "/etc/pki/tls/private/localhost.key" -BrowserMatch "MSIE [2-5]" \ - nokeepalive ssl-unclean-shutdown \ - downgrade-1.0 force-response-1.0 - -CustomLog /proc/self/fd/1 \ - "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" - - \ No newline at end of file diff --git a/community_images/apache/ironbank/configs/server-configs/httpd2.conf b/community_images/apache/ironbank/configs/server-configs/httpd2.conf deleted file mode 100755 index 3e81edc942..0000000000 --- a/community_images/apache/ironbank/configs/server-configs/httpd2.conf +++ /dev/null @@ -1,190 +0,0 @@ -ServerRoot "/etc/httpd" -Listen 80 - -# Modules -LoadModule access_compat_module modules/mod_access_compat.so -LoadModule actions_module modules/mod_actions.so -LoadModule alias_module modules/mod_alias.so -LoadModule allowmethods_module modules/mod_allowmethods.so -LoadModule asis_module modules/mod_asis.so -LoadModule auth_basic_module modules/mod_auth_basic.so -LoadModule auth_digest_module modules/mod_auth_digest.so -LoadModule auth_form_module modules/mod_auth_form.so -LoadModule authn_anon_module modules/mod_authn_anon.so -LoadModule authn_core_module modules/mod_authn_core.so -LoadModule authn_dbd_module modules/mod_authn_dbd.so -LoadModule authn_dbm_module modules/mod_authn_dbm.so -LoadModule authn_file_module modules/mod_authn_file.so -LoadModule authn_socache_module modules/mod_authn_socache.so -LoadModule authz_core_module modules/mod_authz_core.so -LoadModule authz_dbd_module modules/mod_authz_dbd.so -LoadModule authz_dbm_module modules/mod_authz_dbm.so -LoadModule authz_groupfile_module modules/mod_authz_groupfile.so -LoadModule authz_host_module modules/mod_authz_host.so -LoadModule authz_owner_module modules/mod_authz_owner.so -LoadModule authz_user_module modules/mod_authz_user.so -LoadModule autoindex_module modules/mod_autoindex.so -LoadModule brotli_module modules/mod_brotli.so -LoadModule buffer_module modules/mod_buffer.so -LoadModule cache_module modules/mod_cache.so -LoadModule cache_disk_module modules/mod_cache_disk.so -LoadModule cache_socache_module modules/mod_cache_socache.so -LoadModule cgi_module modules/mod_cgi.so -LoadModule cgid_module modules/mod_cgid.so -LoadModule charset_lite_module modules/mod_charset_lite.so -LoadModule data_module modules/mod_data.so -LoadModule dav_module modules/mod_dav.so -LoadModule dav_fs_module modules/mod_dav_fs.so -LoadModule dav_lock_module modules/mod_dav_lock.so -LoadModule dbd_module modules/mod_dbd.so -LoadModule deflate_module modules/mod_deflate.so -LoadModule dialup_module modules/mod_dialup.so -LoadModule dir_module modules/mod_dir.so -LoadModule dumpio_module modules/mod_dumpio.so -LoadModule echo_module modules/mod_echo.so -LoadModule env_module modules/mod_env.so -LoadModule expires_module modules/mod_expires.so -LoadModule ext_filter_module modules/mod_ext_filter.so -LoadModule filter_module modules/mod_filter.so -LoadModule headers_module modules/mod_headers.so -LoadModule status_module modules/mod_status.so -LoadModule watchdog_module modules/mod_watchdog.so -LoadModule heartbeat_module modules/mod_heartbeat.so -LoadModule heartmonitor_module modules/mod_heartmonitor.so -LoadModule http2_module modules/mod_http2.so -LoadModule include_module modules/mod_include.so -LoadModule info_module modules/mod_info.so -LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so -LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so -LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so -LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so -LoadModule log_config_module modules/mod_log_config.so -LoadModule log_debug_module modules/mod_log_debug.so -LoadModule log_forensic_module modules/mod_log_forensic.so -LoadModule logio_module modules/mod_logio.so -LoadModule lua_module modules/mod_lua.so -LoadModule macro_module modules/mod_macro.so -LoadModule mime_module modules/mod_mime.so -LoadModule mime_magic_module modules/mod_mime_magic.so -# LoadModule mpm_event_module modules/mod_mpm_event.so -LoadModule mpm_prefork_module modules/mod_mpm_prefork.so -#LoadModule mpm_worker_module modules/mod_mpm_worker.so -LoadModule negotiation_module modules/mod_negotiation.so -LoadModule unixd_module modules/mod_unixd.so -LoadModule proxy_module modules/mod_proxy.so -LoadModule proxy_ajp_module modules/mod_proxy_ajp.so -LoadModule proxy_balancer_module modules/mod_proxy_balancer.so -LoadModule proxy_connect_module modules/mod_proxy_connect.so -LoadModule proxy_express_module modules/mod_proxy_express.so -LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so -LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so -LoadModule proxy_ftp_module modules/mod_proxy_ftp.so -LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so -LoadModule proxy_http_module modules/mod_proxy_http.so -LoadModule proxy_http2_module modules/mod_proxy_http2.so -LoadModule proxy_scgi_module modules/mod_proxy_scgi.so -LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so -LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so -LoadModule ratelimit_module modules/mod_ratelimit.so -LoadModule reflector_module modules/mod_reflector.so -LoadModule remoteip_module modules/mod_remoteip.so -LoadModule reqtimeout_module modules/mod_reqtimeout.so -LoadModule request_module modules/mod_request.so -LoadModule rewrite_module modules/mod_rewrite.so -LoadModule sed_module modules/mod_sed.so -LoadModule session_module modules/mod_session.so -LoadModule session_cookie_module modules/mod_session_cookie.so -LoadModule session_crypto_module modules/mod_session_crypto.so -LoadModule session_dbd_module modules/mod_session_dbd.so -LoadModule setenvif_module modules/mod_setenvif.so -LoadModule slotmem_plain_module modules/mod_slotmem_plain.so -LoadModule slotmem_shm_module modules/mod_slotmem_shm.so -LoadModule socache_dbm_module modules/mod_socache_dbm.so -LoadModule socache_memcache_module modules/mod_socache_memcache.so -LoadModule socache_shmcb_module modules/mod_socache_shmcb.so -LoadModule speling_module modules/mod_speling.so -LoadModule ssl_module modules/mod_ssl.so -LoadModule substitute_module modules/mod_substitute.so -LoadModule suexec_module modules/mod_suexec.so -LoadModule unique_id_module modules/mod_unique_id.so -LoadModule userdir_module modules/mod_userdir.so -LoadModule usertrack_module modules/mod_usertrack.so -LoadModule version_module modules/mod_version.so -LoadModule vhost_alias_module modules/mod_vhost_alias.so - - -User apache -Group apache - - -ServerAdmin you@example.com - - - AllowOverride none - Require all denied - - -DocumentRoot "/var/www/html" - - Options Indexes FollowSymLinks - AllowOverride None - Require all granted - - - AllowOverride None - # Allow open access: - Require all granted - - - - DirectoryIndex index.html - - - - Require all denied - - -ErrorLog /proc/self/fd/2 - -LogLevel warn - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - LogFormat "%h %l %u %t \"%r\" %>s %b" common - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio - - CustomLog /proc/self/fd/1 common - - - - ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" - - - - # - # ScriptSock: On threaded servers, designate the path to the UNIX - # socket used to communicate with the CGI daemon of mod_cgid. - # - #Scriptsock cgisock - - - - AllowOverride None - Options None - Require all granted - - - - RequestHeader unset Proxy early - - - - TypesConfig /etc/mime.types - AddType application/x-compress .Z - AddType application/x-gzip .gz .tgz - AddType text/html .shtml - AddOutputFilter INCLUDES .shtml - -AddDefaultCharset UTF-8 \ No newline at end of file diff --git a/community_images/apache/ironbank/configs/server-configs/httpd3.conf b/community_images/apache/ironbank/configs/server-configs/httpd3.conf deleted file mode 100755 index 3b1bd4d09a..0000000000 --- a/community_images/apache/ironbank/configs/server-configs/httpd3.conf +++ /dev/null @@ -1,190 +0,0 @@ -ServerRoot "/etc/httpd" -Listen 80 - -# Modules -LoadModule access_compat_module modules/mod_access_compat.so -LoadModule actions_module modules/mod_actions.so -LoadModule alias_module modules/mod_alias.so -LoadModule allowmethods_module modules/mod_allowmethods.so -LoadModule asis_module modules/mod_asis.so -LoadModule auth_basic_module modules/mod_auth_basic.so -LoadModule auth_digest_module modules/mod_auth_digest.so -LoadModule auth_form_module modules/mod_auth_form.so -LoadModule authn_anon_module modules/mod_authn_anon.so -LoadModule authn_core_module modules/mod_authn_core.so -LoadModule authn_dbd_module modules/mod_authn_dbd.so -LoadModule authn_dbm_module modules/mod_authn_dbm.so -LoadModule authn_file_module modules/mod_authn_file.so -LoadModule authn_socache_module modules/mod_authn_socache.so -LoadModule authz_core_module modules/mod_authz_core.so -LoadModule authz_dbd_module modules/mod_authz_dbd.so -LoadModule authz_dbm_module modules/mod_authz_dbm.so -LoadModule authz_groupfile_module modules/mod_authz_groupfile.so -LoadModule authz_host_module modules/mod_authz_host.so -LoadModule authz_owner_module modules/mod_authz_owner.so -LoadModule authz_user_module modules/mod_authz_user.so -LoadModule autoindex_module modules/mod_autoindex.so -LoadModule brotli_module modules/mod_brotli.so -LoadModule buffer_module modules/mod_buffer.so -LoadModule cache_module modules/mod_cache.so -LoadModule cache_disk_module modules/mod_cache_disk.so -LoadModule cache_socache_module modules/mod_cache_socache.so -LoadModule cgi_module modules/mod_cgi.so -LoadModule cgid_module modules/mod_cgid.so -LoadModule charset_lite_module modules/mod_charset_lite.so -LoadModule data_module modules/mod_data.so -LoadModule dav_module modules/mod_dav.so -LoadModule dav_fs_module modules/mod_dav_fs.so -LoadModule dav_lock_module modules/mod_dav_lock.so -LoadModule dbd_module modules/mod_dbd.so -LoadModule deflate_module modules/mod_deflate.so -LoadModule dialup_module modules/mod_dialup.so -LoadModule dir_module modules/mod_dir.so -LoadModule dumpio_module modules/mod_dumpio.so -LoadModule echo_module modules/mod_echo.so -LoadModule env_module modules/mod_env.so -LoadModule expires_module modules/mod_expires.so -LoadModule ext_filter_module modules/mod_ext_filter.so -LoadModule filter_module modules/mod_filter.so -LoadModule headers_module modules/mod_headers.so -LoadModule status_module modules/mod_status.so -LoadModule watchdog_module modules/mod_watchdog.so -LoadModule heartbeat_module modules/mod_heartbeat.so -LoadModule heartmonitor_module modules/mod_heartmonitor.so -LoadModule http2_module modules/mod_http2.so -LoadModule include_module modules/mod_include.so -LoadModule info_module modules/mod_info.so -LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so -LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so -LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so -LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so -LoadModule log_config_module modules/mod_log_config.so -LoadModule log_debug_module modules/mod_log_debug.so -LoadModule log_forensic_module modules/mod_log_forensic.so -LoadModule logio_module modules/mod_logio.so -LoadModule lua_module modules/mod_lua.so -LoadModule macro_module modules/mod_macro.so -LoadModule mime_module modules/mod_mime.so -LoadModule mime_magic_module modules/mod_mime_magic.so -# LoadModule mpm_event_module modules/mod_mpm_event.so -#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so -LoadModule mpm_worker_module modules/mod_mpm_worker.so -LoadModule negotiation_module modules/mod_negotiation.so -LoadModule unixd_module modules/mod_unixd.so -LoadModule proxy_module modules/mod_proxy.so -LoadModule proxy_ajp_module modules/mod_proxy_ajp.so -LoadModule proxy_balancer_module modules/mod_proxy_balancer.so -LoadModule proxy_connect_module modules/mod_proxy_connect.so -LoadModule proxy_express_module modules/mod_proxy_express.so -LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so -LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so -LoadModule proxy_ftp_module modules/mod_proxy_ftp.so -LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so -LoadModule proxy_http_module modules/mod_proxy_http.so -LoadModule proxy_http2_module modules/mod_proxy_http2.so -LoadModule proxy_scgi_module modules/mod_proxy_scgi.so -LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so -LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so -LoadModule ratelimit_module modules/mod_ratelimit.so -LoadModule reflector_module modules/mod_reflector.so -LoadModule remoteip_module modules/mod_remoteip.so -LoadModule reqtimeout_module modules/mod_reqtimeout.so -LoadModule request_module modules/mod_request.so -LoadModule rewrite_module modules/mod_rewrite.so -LoadModule sed_module modules/mod_sed.so -LoadModule session_module modules/mod_session.so -LoadModule session_cookie_module modules/mod_session_cookie.so -LoadModule session_crypto_module modules/mod_session_crypto.so -LoadModule session_dbd_module modules/mod_session_dbd.so -LoadModule setenvif_module modules/mod_setenvif.so -LoadModule slotmem_plain_module modules/mod_slotmem_plain.so -LoadModule slotmem_shm_module modules/mod_slotmem_shm.so -LoadModule socache_dbm_module modules/mod_socache_dbm.so -LoadModule socache_memcache_module modules/mod_socache_memcache.so -LoadModule socache_shmcb_module modules/mod_socache_shmcb.so -LoadModule speling_module modules/mod_speling.so -LoadModule ssl_module modules/mod_ssl.so -LoadModule substitute_module modules/mod_substitute.so -LoadModule suexec_module modules/mod_suexec.so -LoadModule unique_id_module modules/mod_unique_id.so -LoadModule userdir_module modules/mod_userdir.so -LoadModule usertrack_module modules/mod_usertrack.so -LoadModule version_module modules/mod_version.so -LoadModule vhost_alias_module modules/mod_vhost_alias.so - - -User apache -Group apache - - -ServerAdmin you@example.com - - - AllowOverride none - Require all denied - - -DocumentRoot "/var/www/html" - - Options Indexes FollowSymLinks - AllowOverride None - Require all granted - - - AllowOverride None - # Allow open access: - Require all granted - - - - DirectoryIndex index.html - - - - Require all denied - - -ErrorLog /proc/self/fd/2 - -LogLevel warn - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - LogFormat "%h %l %u %t \"%r\" %>s %b" common - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio - - CustomLog /proc/self/fd/1 common - - - - ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" - - - - # - # ScriptSock: On threaded servers, designate the path to the UNIX - # socket used to communicate with the CGI daemon of mod_cgid. - # - #Scriptsock cgisock - - - - AllowOverride None - Options None - Require all granted - - - - RequestHeader unset Proxy early - - - - TypesConfig /etc/mime.types - AddType application/x-compress .Z - AddType application/x-gzip .gz .tgz - AddType text/html .shtml - AddOutputFilter INCLUDES .shtml - -AddDefaultCharset UTF-8 \ No newline at end of file diff --git a/community_images/apache/ironbank/dc_coverage.sh b/community_images/apache/ironbank/dc_coverage.sh deleted file mode 100755 index 835423f4e7..0000000000 --- a/community_images/apache/ironbank/dc_coverage.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -CONTAINER_NAME="${PROJECT_NAME}"-apache-1 - -# checking all modules and config test -docker exec -i "${CONTAINER_NAME}" httpd -M -docker exec -i "${CONTAINER_NAME}" apachectl configtest - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8443/tcp\"[0].HostPort" -NON_TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8443/tcp\"[0].HostPort") - -# run curl in loop for different endpoints -# Apache Server 1 (MPM Event module enabled, ssl enabled) -for i in {1..5}; -do - echo "Attempt on Apache-server-1 $i" - curl http://localhost:"${NON_TLS_PORT}" - with_backoff curl https://localhost:"${TLS_PORT}" -k -v -done -# Apache Server 2 (MPM Prefork module enabled) -NON_TLS_PORT=$(docker inspect "${PROJECT_NAME}"-apache-prefork-mpm-1 | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -for i in {1..5}; -do - echo "Attempt on Apache-server-2 $i" - curl http://localhost:"${NON_TLS_PORT}" -done -# Apache Server 3 (MPM Worker module enable) -NON_TLS_PORT=$(docker inspect "${PROJECT_NAME}"-apache-worker-mpm-1 | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -for i in {1..5}; -do - echo "Attempt on Apache-server-3 $i" - curl http://localhost:"${NON_TLS_PORT}" -done - -# Install Apache benchmark testing tool -sudo apt-get install apache2-utils -y -sudo apt-get install apache2 -y - -APACHE_HOST=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Networks.\"${PROJECT_NAME}_default\".IPAddress") -# testing using apache benchmark tool -ab -t 100 -n 10000 -c 10 http://"${APACHE_HOST}":80/ \ No newline at end of file diff --git a/community_images/apache/ironbank/docker-compose.yml b/community_images/apache/ironbank/docker-compose.yml deleted file mode 100755 index 5149a2ab51..0000000000 --- a/community_images/apache/ironbank/docker-compose.yml +++ /dev/null @@ -1,51 +0,0 @@ -version: '2' - -services: - apache: - image: ${APACHE_IMAGE_REPOSITORY}:${APACHE_IMAGE_TAG} - user: root - volumes: - - ./configs/index.html:/var/www/html/index.html - - ./configs/server-configs/httpd1.conf:/etc/httpd/conf/httpd.conf - - ./certs/server.crt:/etc/pki/tls/certs/localhost.crt - - ./certs/server.key:/etc/pki/tls/private/localhost.key - cap_add: - - SYS_PTRACE - ports: - - "0.0.0.0::80" - - "0.0.0.0::8443" - apache-prefork-mpm: - image: ${APACHE_IMAGE_REPOSITORY}:${APACHE_IMAGE_TAG} - user: root - volumes: - - ./configs/index.html:/var/www/html/index.html - - ./configs/server-configs/httpd2.conf:/etc/httpd/conf/httpd.conf - - ./certs/server.crt:/etc/pki/tls/certs/localhost.crt - - ./certs/server.key:/etc/pki/tls/private/localhost.key - cap_add: - - SYS_PTRACE - ports: - - "0.0.0.0::80" - command: - - /bin/bash - - -c - - | - ./configure --enable-mpms-shared='prefork' - - apache-worker-mpm: - image: ${APACHE_IMAGE_REPOSITORY}:${APACHE_IMAGE_TAG} - user: root - volumes: - - ./configs/index.html:/var/www/html/index.html - - ./configs/server-configs/httpd3.conf:/etc/httpd/conf/httpd.conf - - ./certs/server.crt:/etc/pki/tls/certs/localhost.crt - - ./certs/server.key:/etc/pki/tls/private/localhost.key - cap_add: - - SYS_PTRACE - ports: - - "0.0.0.0::80" - command: - - /bin/bash - - -c - - | - ./configure --enable-mpms-shared='worker' diff --git a/community_images/apache/ironbank/image.yml b/community_images/apache/ironbank/image.yml deleted file mode 100755 index 3cb1820676..0000000000 --- a/community_images/apache/ironbank/image.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: apache-ib -official_name: Apache IronBank -official_website: https://httpd.apache.org/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/apache/apache2 -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fapache%2Fapache2 -source_image_readme: https://repo1.dso.mil/dsop/opensource/apache/apache2/-/blob/development/README.md -rf_docker_link: rapidfort/apache2-ib -image_workflow_name: apache_ironbank -github_location: apache/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fapache2 -usage_instructions: | - # Using docker run: - $ docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/var/www/html/ rapidfort/apache2-ib - # PWD can be replaced with the directory containing all your HTML. -what_is_text: | - The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows. httpd is the Apache HyperText Transfer Protocol (HTTP) server program. It is designed to be run as a standalone daemon process. When used like this it will create a pool of child processes or threads to handle requests. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/apache/apache2: - input_base_tag: "2.4." - output_repo: apache2-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - apache2-ib: - repository: "APACHE_IMAGE_REPOSITORY" - tag: "APACHE_IMAGE_TAG" diff --git a/community_images/apache/official/.rfignore b/community_images/apache/official/.rfignore deleted file mode 100644 index c0e20dc2c1..0000000000 --- a/community_images/apache/official/.rfignore +++ /dev/null @@ -1,2 +0,0 @@ -usr/share/common-licenses -/usr/local/apache2/include diff --git a/community_images/apache/official/README.md b/community_images/apache/official/README.md deleted file mode 100755 index 62e4cd5998..0000000000 --- a/community_images/apache/official/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Apache Official - -RapidFort’s container optimization process hardened this Apache Official container. This container is free to use and has no license limitations. - -It is the same as the [The Docker Community Apache Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Apache Official? - -> The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows. httpd is the Apache HyperText Transfer Protocol (HTTP) server program. It is designed to be run as a standalone daemon process. When used like this it will create a pool of child processes or threads to handle requests. - - -[Overview of Apache Official](https://httpd.apache.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Apache Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Using docker run: -$ docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ rapidfort/apache-official -# PWD can be replaced with the directory containing all your HTML. - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [The Docker Community Apache Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [The Docker Community Apache Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/apache-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`2.4.54`, `2.4`, `2`, `latest`, `2.4.54-bullseye`, `2.4-bullseye`, `2-bullseye`, `bullseye`](https://github.com/docker-library/httpd/blob/f3b7fd9c8ef59d1ad46c8b2a27df3e02d822834f/2.4/Dockerfile) -* [`2.4.54-alpine`, `2.4-alpine`, `2-alpine`, `alpine`, `2.4.54-alpine3.16`, `2.4-alpine3.16`, `2-alpine3.16`, `alpine3.16`](https://github.com/docker-library/httpd/blob/f3b7fd9c8ef59d1ad46c8b2a27df3e02d822834f/2.4/alpine/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=apache-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fhttpd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fhttpd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fhttpd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fhttpd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fhttpd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=apache-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/apache-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/apache-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/apache/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/apache/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/httpd -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/apache-official diff --git a/community_images/apache/official/assets/cve_reduction.webp b/community_images/apache/official/assets/cve_reduction.webp deleted file mode 100644 index ae88fbf5b5da90e8a7deb455128c3e541fb1912b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1348 zcmWIYbaS&|Wnc(*bqWXzu!!JdU|>)H;)RS1_6!W3&dvc6Oh7IJlLUxlF<@ZG%_}Ji za(7aQh>TJIiNQc(a&ZBSjfG}pVEA^80Z1}1T-L=RPe_O}CAByisOSR_mlOdlXJBAV z0kTEXA?ykeI|;(>0kMlhf}DYB7692A=}7D(BzAd8K?zXJ36T2af+7(64v=k=n^Ow1 z3j{ze=1I*94F=K?KrF*h%n-!j&fo-OQxzb>Gk*~SgT+?{2IdI}v80&{4BJ~77$j~X z#8ehAFz~l9Fl;+tkXV!mb_@%UWJ*h8VEDA0fq^%YfkF5J0|Qqy%%KRqh`7MvR|TLR z8K6J&fiRsRhar_gfx(j@k0F^s56CiNFkmobFaxF-g@3^GaY2G%E~C~WMh6DFT(jvO zD#}WVs@rEeH1Kw&=G~3wF^~7X!TfH1Z^_E6WOLElmduBLl1-y-?{?I8s#1ABbpoFh z*P4|{>~33bh+Qq2^O=+F&$Cl?b0c;JIA#WapYJWaR7a6H3;qUsO3hMQC{SwmGlc-?rw`rX=BOu8l1$ zPd7=c9E_59+5XT&lOsI+sNthSg#qbN>nHv#d9*<-J2&K8{8Fo>tM^K$O>|)R_s2`( zi%;`8Rnt9Qp1iKJH}Rc2u{2zC#qU!;h^gy1&zZ7n z*NL>0m6ba;ew=Gr|8(PyeFAiuNDw{SRI|-1sG; zXOq1A$)nrf-C{mq^y8yrT&RTJc9%`Jk1g3|!Kh-LA;fIhU4Cwvwfj`br!~7yyQS98 zls$B7S7xz1N4K}aPyU%5%731w^-KGmaH-Xw>)|9H{YCKhEqQCnb9VE0ALii5+v==t z7w}ABaXDj?`}T?(8tYkn?<_QFvwu1N;J;%cn=UH7US{{d?z>IMefg>_RR$l{H(d@> zR#PtDyXLf@Z~D2WgZJ7THTFsiY&>T0E@;u0e@}U1>koWv=w7B%9{6EG?3N$r__`CD zmNER=#U=9o|AYT><~NSTT1bd$ew7Tqb>HY`|9OR_4vUiNZ1Rpyx^H-4okGV}^BY?& R%V(Xmythp==>RaB0015=$-n>r diff --git a/community_images/apache/official/assets/metrics.webp b/community_images/apache/official/assets/metrics.webp deleted file mode 100644 index 9bb35cbc5bbf1f9aa8a2b20ee0e182a9d168ebe7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25350 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 diff --git a/community_images/apache/official/configs/index.html b/community_images/apache/official/configs/index.html deleted file mode 100644 index 97ba60829a..0000000000 --- a/community_images/apache/official/configs/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - RapidFort - - -

Apache Server Test Page

- - diff --git a/community_images/apache/official/configs/server-configs/httpd1.conf b/community_images/apache/official/configs/server-configs/httpd1.conf deleted file mode 100644 index c52f510317..0000000000 --- a/community_images/apache/official/configs/server-configs/httpd1.conf +++ /dev/null @@ -1,209 +0,0 @@ -ServerRoot "/usr/local/apache2" -Listen 80 -# Modules -LoadModule access_compat_module modules/mod_access_compat.so -LoadModule actions_module modules/mod_actions.so -LoadModule alias_module modules/mod_alias.so -LoadModule allowmethods_module modules/mod_allowmethods.so -LoadModule asis_module modules/mod_asis.so -LoadModule auth_basic_module modules/mod_auth_basic.so -LoadModule auth_digest_module modules/mod_auth_digest.so -LoadModule auth_form_module modules/mod_auth_form.so -LoadModule authn_anon_module modules/mod_authn_anon.so -LoadModule authn_core_module modules/mod_authn_core.so -LoadModule authn_dbd_module modules/mod_authn_dbd.so -LoadModule authn_dbm_module modules/mod_authn_dbm.so -LoadModule authn_file_module modules/mod_authn_file.so -LoadModule authn_socache_module modules/mod_authn_socache.so -LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so -LoadModule authnz_ldap_module modules/mod_authnz_ldap.so -LoadModule authz_core_module modules/mod_authz_core.so -LoadModule authz_dbd_module modules/mod_authz_dbd.so -LoadModule authz_dbm_module modules/mod_authz_dbm.so -LoadModule authz_groupfile_module modules/mod_authz_groupfile.so -LoadModule authz_host_module modules/mod_authz_host.so -LoadModule authz_owner_module modules/mod_authz_owner.so -LoadModule authz_user_module modules/mod_authz_user.so -LoadModule autoindex_module modules/mod_autoindex.so -LoadModule brotli_module modules/mod_brotli.so -LoadModule bucketeer_module modules/mod_bucketeer.so -LoadModule buffer_module modules/mod_buffer.so -LoadModule cache_module modules/mod_cache.so -LoadModule cache_disk_module modules/mod_cache_disk.so -LoadModule cache_socache_module modules/mod_cache_socache.so -LoadModule case_filter_module modules/mod_case_filter.so -LoadModule case_filter_in_module modules/mod_case_filter_in.so -LoadModule cern_meta_module modules/mod_cern_meta.so -LoadModule cgi_module modules/mod_cgi.so -LoadModule cgid_module modules/mod_cgid.so -LoadModule charset_lite_module modules/mod_charset_lite.so -LoadModule data_module modules/mod_data.so -LoadModule dav_module modules/mod_dav.so -LoadModule dav_fs_module modules/mod_dav_fs.so -LoadModule dav_lock_module modules/mod_dav_lock.so -LoadModule dbd_module modules/mod_dbd.so -LoadModule deflate_module modules/mod_deflate.so -LoadModule dialup_module modules/mod_dialup.so -LoadModule dir_module modules/mod_dir.so -LoadModule dumpio_module modules/mod_dumpio.so -LoadModule echo_module modules/mod_echo.so -LoadModule env_module modules/mod_env.so -LoadModule example_hooks_module modules/mod_example_hooks.so -LoadModule example_ipc_module modules/mod_example_ipc.so -LoadModule expires_module modules/mod_expires.so -LoadModule ext_filter_module modules/mod_ext_filter.so -LoadModule file_cache_module modules/mod_file_cache.so -LoadModule filter_module modules/mod_filter.so -LoadModule headers_module modules/mod_headers.so -LoadModule status_module modules/mod_status.so -LoadModule watchdog_module modules/mod_watchdog.so -LoadModule heartbeat_module modules/mod_heartbeat.so -LoadModule heartmonitor_module modules/mod_heartmonitor.so -LoadModule http2_module modules/mod_http2.so -LoadModule ident_module modules/mod_ident.so -LoadModule imagemap_module modules/mod_imagemap.so -LoadModule include_module modules/mod_include.so -LoadModule info_module modules/mod_info.so -LoadModule isapi_module modules/mod_isapi.so -LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so -LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so -LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so -LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so -LoadModule ldap_module modules/mod_ldap.so -LoadModule log_config_module modules/mod_log_config.so -LoadModule log_debug_module modules/mod_log_debug.so -LoadModule log_forensic_module modules/mod_log_forensic.so -LoadModule logio_module modules/mod_logio.so -LoadModule lua_module modules/mod_lua.so -LoadModule macro_module modules/mod_macro.so -LoadModule md_module modules/mod_md.so -LoadModule mime_module modules/mod_mime.so -LoadModule mime_magic_module modules/mod_mime_magic.so -LoadModule mpm_event_module modules/mod_mpm_event.so -#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so -#LoadModule mpm_worker_module modules/mod_mpm_worker.so -LoadModule negotiation_module modules/mod_negotiation.so -LoadModule unixd_module modules/mod_unixd.so -LoadModule optional_fn_export_module modules/mod_optional_fn_export.so -LoadModule optional_fn_import_module modules/mod_optional_fn_import.so -LoadModule optional_hook_export_module modules/mod_optional_hook_export.so -LoadModule optional_hook_import_module modules/mod_optional_hook_import.so -LoadModule proxy_module modules/mod_proxy.so -LoadModule proxy_ajp_module modules/mod_proxy_ajp.so -LoadModule proxy_balancer_module modules/mod_proxy_balancer.so -LoadModule proxy_connect_module modules/mod_proxy_connect.so -LoadModule proxy_express_module modules/mod_proxy_express.so -LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so -LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so -LoadModule proxy_ftp_module modules/mod_proxy_ftp.so -LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so -LoadModule proxy_http_module modules/mod_proxy_http.so -LoadModule proxy_http2_module modules/mod_proxy_http2.so -LoadModule proxy_scgi_module modules/mod_proxy_scgi.so -LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so -LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so -LoadModule ratelimit_module modules/mod_ratelimit.so -LoadModule reflector_module modules/mod_reflector.so -LoadModule remoteip_module modules/mod_remoteip.so -LoadModule reqtimeout_module modules/mod_reqtimeout.so -LoadModule request_module modules/mod_request.so -LoadModule rewrite_module modules/mod_rewrite.so -LoadModule sed_module modules/mod_sed.so -LoadModule session_module modules/mod_session.so -LoadModule session_cookie_module modules/mod_session_cookie.so -LoadModule session_crypto_module modules/mod_session_crypto.so -LoadModule session_dbd_module modules/mod_session_dbd.so -LoadModule setenvif_module modules/mod_setenvif.so -LoadModule slotmem_plain_module modules/mod_slotmem_plain.so -LoadModule slotmem_shm_module modules/mod_slotmem_shm.so -LoadModule socache_dbm_module modules/mod_socache_dbm.so -LoadModule socache_memcache_module modules/mod_socache_memcache.so -LoadModule socache_redis_module modules/mod_socache_redis.so -LoadModule socache_shmcb_module modules/mod_socache_shmcb.so -LoadModule speling_module modules/mod_speling.so -LoadModule ssl_module modules/mod_ssl.so -LoadModule substitute_module modules/mod_substitute.so -LoadModule suexec_module modules/mod_suexec.so -LoadModule unique_id_module modules/mod_unique_id.so -LoadModule userdir_module modules/mod_userdir.so -LoadModule usertrack_module modules/mod_usertrack.so -LoadModule version_module modules/mod_version.so -LoadModule vhost_alias_module modules/mod_vhost_alias.so -LoadModule xml2enc_module modules/mod_xml2enc.so -Include conf/extra/httpd-ssl.conf - -User www-data -Group www-data - - -ServerAdmin you@example.com - - - AllowOverride none - Require all denied - - -DocumentRoot "/usr/local/apache2/htdocs" - - Options Indexes FollowSymLinks - AllowOverride None - Require all granted - - - - DirectoryIndex index.html - - - - Require all denied - - -ErrorLog /proc/self/fd/2 - -LogLevel warn - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - LogFormat "%h %l %u %t \"%r\" %>s %b" common - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio - - CustomLog /proc/self/fd/1 common - - - - ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" - - - - # - # ScriptSock: On threaded servers, designate the path to the UNIX - # socket used to communicate with the CGI daemon of mod_cgid. - # - #Scriptsock cgisock - - - - AllowOverride None - Options None - Require all granted - - - - RequestHeader unset Proxy early - - - - TypesConfig conf/mime.types - AddType application/x-compress .Z - AddType application/x-gzip .gz .tgz - - - -Include conf/extra/proxy-html.conf - - -SSLRandomSeed startup builtin -SSLRandomSeed connect builtin - \ No newline at end of file diff --git a/community_images/apache/official/configs/server-configs/httpd2.conf b/community_images/apache/official/configs/server-configs/httpd2.conf deleted file mode 100644 index 3895dc6759..0000000000 --- a/community_images/apache/official/configs/server-configs/httpd2.conf +++ /dev/null @@ -1,210 +0,0 @@ -ServerRoot "/usr/local/apache2" -Listen 80 - -# Modules -LoadModule access_compat_module modules/mod_access_compat.so -LoadModule actions_module modules/mod_actions.so -LoadModule alias_module modules/mod_alias.so -LoadModule allowmethods_module modules/mod_allowmethods.so -LoadModule asis_module modules/mod_asis.so -LoadModule auth_basic_module modules/mod_auth_basic.so -LoadModule auth_digest_module modules/mod_auth_digest.so -LoadModule auth_form_module modules/mod_auth_form.so -LoadModule authn_anon_module modules/mod_authn_anon.so -LoadModule authn_core_module modules/mod_authn_core.so -LoadModule authn_dbd_module modules/mod_authn_dbd.so -LoadModule authn_dbm_module modules/mod_authn_dbm.so -LoadModule authn_file_module modules/mod_authn_file.so -LoadModule authn_socache_module modules/mod_authn_socache.so -LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so -LoadModule authnz_ldap_module modules/mod_authnz_ldap.so -LoadModule authz_core_module modules/mod_authz_core.so -LoadModule authz_dbd_module modules/mod_authz_dbd.so -LoadModule authz_dbm_module modules/mod_authz_dbm.so -LoadModule authz_groupfile_module modules/mod_authz_groupfile.so -LoadModule authz_host_module modules/mod_authz_host.so -LoadModule authz_owner_module modules/mod_authz_owner.so -LoadModule authz_user_module modules/mod_authz_user.so -LoadModule autoindex_module modules/mod_autoindex.so -LoadModule brotli_module modules/mod_brotli.so -LoadModule bucketeer_module modules/mod_bucketeer.so -LoadModule buffer_module modules/mod_buffer.so -LoadModule cache_module modules/mod_cache.so -LoadModule cache_disk_module modules/mod_cache_disk.so -LoadModule cache_socache_module modules/mod_cache_socache.so -LoadModule case_filter_module modules/mod_case_filter.so -LoadModule case_filter_in_module modules/mod_case_filter_in.so -LoadModule cern_meta_module modules/mod_cern_meta.so -LoadModule cgi_module modules/mod_cgi.so -LoadModule cgid_module modules/mod_cgid.so -LoadModule charset_lite_module modules/mod_charset_lite.so -LoadModule data_module modules/mod_data.so -LoadModule dav_module modules/mod_dav.so -LoadModule dav_fs_module modules/mod_dav_fs.so -LoadModule dav_lock_module modules/mod_dav_lock.so -LoadModule dbd_module modules/mod_dbd.so -LoadModule deflate_module modules/mod_deflate.so -LoadModule dialup_module modules/mod_dialup.so -LoadModule dir_module modules/mod_dir.so -LoadModule dumpio_module modules/mod_dumpio.so -LoadModule echo_module modules/mod_echo.so -LoadModule env_module modules/mod_env.so -LoadModule example_hooks_module modules/mod_example_hooks.so -LoadModule example_ipc_module modules/mod_example_ipc.so -LoadModule expires_module modules/mod_expires.so -LoadModule ext_filter_module modules/mod_ext_filter.so -LoadModule file_cache_module modules/mod_file_cache.so -LoadModule filter_module modules/mod_filter.so -LoadModule headers_module modules/mod_headers.so -LoadModule status_module modules/mod_status.so -LoadModule watchdog_module modules/mod_watchdog.so -LoadModule heartbeat_module modules/mod_heartbeat.so -LoadModule heartmonitor_module modules/mod_heartmonitor.so -LoadModule http2_module modules/mod_http2.so -LoadModule ident_module modules/mod_ident.so -LoadModule imagemap_module modules/mod_imagemap.so -LoadModule include_module modules/mod_include.so -LoadModule info_module modules/mod_info.so -LoadModule isapi_module modules/mod_isapi.so -LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so -LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so -LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so -LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so -LoadModule ldap_module modules/mod_ldap.so -LoadModule log_config_module modules/mod_log_config.so -LoadModule log_debug_module modules/mod_log_debug.so -LoadModule log_forensic_module modules/mod_log_forensic.so -LoadModule logio_module modules/mod_logio.so -LoadModule lua_module modules/mod_lua.so -LoadModule macro_module modules/mod_macro.so -LoadModule md_module modules/mod_md.so -LoadModule mime_module modules/mod_mime.so -LoadModule mime_magic_module modules/mod_mime_magic.so -# LoadModule mpm_event_module modules/mod_mpm_event.so -LoadModule mpm_prefork_module modules/mod_mpm_prefork.so -#LoadModule mpm_worker_module modules/mod_mpm_worker.so -LoadModule negotiation_module modules/mod_negotiation.so -LoadModule unixd_module modules/mod_unixd.so -LoadModule optional_fn_export_module modules/mod_optional_fn_export.so -LoadModule optional_fn_import_module modules/mod_optional_fn_import.so -LoadModule optional_hook_export_module modules/mod_optional_hook_export.so -LoadModule optional_hook_import_module modules/mod_optional_hook_import.so -LoadModule proxy_module modules/mod_proxy.so -LoadModule proxy_ajp_module modules/mod_proxy_ajp.so -LoadModule proxy_balancer_module modules/mod_proxy_balancer.so -LoadModule proxy_connect_module modules/mod_proxy_connect.so -LoadModule proxy_express_module modules/mod_proxy_express.so -LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so -LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so -LoadModule proxy_ftp_module modules/mod_proxy_ftp.so -LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so -LoadModule proxy_http_module modules/mod_proxy_http.so -LoadModule proxy_http2_module modules/mod_proxy_http2.so -LoadModule proxy_scgi_module modules/mod_proxy_scgi.so -LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so -LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so -LoadModule ratelimit_module modules/mod_ratelimit.so -LoadModule reflector_module modules/mod_reflector.so -LoadModule remoteip_module modules/mod_remoteip.so -LoadModule reqtimeout_module modules/mod_reqtimeout.so -LoadModule request_module modules/mod_request.so -LoadModule rewrite_module modules/mod_rewrite.so -LoadModule sed_module modules/mod_sed.so -LoadModule session_module modules/mod_session.so -LoadModule session_cookie_module modules/mod_session_cookie.so -LoadModule session_crypto_module modules/mod_session_crypto.so -LoadModule session_dbd_module modules/mod_session_dbd.so -LoadModule setenvif_module modules/mod_setenvif.so -LoadModule slotmem_plain_module modules/mod_slotmem_plain.so -LoadModule slotmem_shm_module modules/mod_slotmem_shm.so -LoadModule socache_dbm_module modules/mod_socache_dbm.so -LoadModule socache_memcache_module modules/mod_socache_memcache.so -LoadModule socache_redis_module modules/mod_socache_redis.so -LoadModule socache_shmcb_module modules/mod_socache_shmcb.so -LoadModule speling_module modules/mod_speling.so -LoadModule ssl_module modules/mod_ssl.so -LoadModule substitute_module modules/mod_substitute.so -LoadModule suexec_module modules/mod_suexec.so -LoadModule unique_id_module modules/mod_unique_id.so -LoadModule userdir_module modules/mod_userdir.so -LoadModule usertrack_module modules/mod_usertrack.so -LoadModule version_module modules/mod_version.so -LoadModule vhost_alias_module modules/mod_vhost_alias.so -LoadModule xml2enc_module modules/mod_xml2enc.so - - -User www-data -Group www-data - - -ServerAdmin you@example.com - - - AllowOverride none - Require all denied - - -DocumentRoot "/usr/local/apache2/htdocs" - - Options Indexes FollowSymLinks - AllowOverride None - Require all granted - - - - DirectoryIndex index.html - - - - Require all denied - - -ErrorLog /proc/self/fd/2 - -LogLevel warn - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - LogFormat "%h %l %u %t \"%r\" %>s %b" common - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio - - CustomLog /proc/self/fd/1 common - - - - ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" - - - - # - # ScriptSock: On threaded servers, designate the path to the UNIX - # socket used to communicate with the CGI daemon of mod_cgid. - # - #Scriptsock cgisock - - - - AllowOverride None - Options None - Require all granted - - - - RequestHeader unset Proxy early - - - - TypesConfig conf/mime.types - AddType application/x-compress .Z - AddType application/x-gzip .gz .tgz - - - -Include conf/extra/proxy-html.conf - - -SSLRandomSeed startup builtin -SSLRandomSeed connect builtin - \ No newline at end of file diff --git a/community_images/apache/official/configs/server-configs/httpd3.conf b/community_images/apache/official/configs/server-configs/httpd3.conf deleted file mode 100644 index 4cb0af5e39..0000000000 --- a/community_images/apache/official/configs/server-configs/httpd3.conf +++ /dev/null @@ -1,210 +0,0 @@ -ServerRoot "/usr/local/apache2" -Listen 80 - -# Modules -LoadModule access_compat_module modules/mod_access_compat.so -LoadModule actions_module modules/mod_actions.so -LoadModule alias_module modules/mod_alias.so -LoadModule allowmethods_module modules/mod_allowmethods.so -LoadModule asis_module modules/mod_asis.so -LoadModule auth_basic_module modules/mod_auth_basic.so -LoadModule auth_digest_module modules/mod_auth_digest.so -LoadModule auth_form_module modules/mod_auth_form.so -LoadModule authn_anon_module modules/mod_authn_anon.so -LoadModule authn_core_module modules/mod_authn_core.so -LoadModule authn_dbd_module modules/mod_authn_dbd.so -LoadModule authn_dbm_module modules/mod_authn_dbm.so -LoadModule authn_file_module modules/mod_authn_file.so -LoadModule authn_socache_module modules/mod_authn_socache.so -LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so -LoadModule authnz_ldap_module modules/mod_authnz_ldap.so -LoadModule authz_core_module modules/mod_authz_core.so -LoadModule authz_dbd_module modules/mod_authz_dbd.so -LoadModule authz_dbm_module modules/mod_authz_dbm.so -LoadModule authz_groupfile_module modules/mod_authz_groupfile.so -LoadModule authz_host_module modules/mod_authz_host.so -LoadModule authz_owner_module modules/mod_authz_owner.so -LoadModule authz_user_module modules/mod_authz_user.so -LoadModule autoindex_module modules/mod_autoindex.so -LoadModule brotli_module modules/mod_brotli.so -LoadModule bucketeer_module modules/mod_bucketeer.so -LoadModule buffer_module modules/mod_buffer.so -LoadModule cache_module modules/mod_cache.so -LoadModule cache_disk_module modules/mod_cache_disk.so -LoadModule cache_socache_module modules/mod_cache_socache.so -LoadModule case_filter_module modules/mod_case_filter.so -LoadModule case_filter_in_module modules/mod_case_filter_in.so -LoadModule cern_meta_module modules/mod_cern_meta.so -LoadModule cgi_module modules/mod_cgi.so -LoadModule cgid_module modules/mod_cgid.so -LoadModule charset_lite_module modules/mod_charset_lite.so -LoadModule data_module modules/mod_data.so -LoadModule dav_module modules/mod_dav.so -LoadModule dav_fs_module modules/mod_dav_fs.so -LoadModule dav_lock_module modules/mod_dav_lock.so -LoadModule dbd_module modules/mod_dbd.so -LoadModule deflate_module modules/mod_deflate.so -LoadModule dialup_module modules/mod_dialup.so -LoadModule dir_module modules/mod_dir.so -LoadModule dumpio_module modules/mod_dumpio.so -LoadModule echo_module modules/mod_echo.so -LoadModule env_module modules/mod_env.so -LoadModule example_hooks_module modules/mod_example_hooks.so -LoadModule example_ipc_module modules/mod_example_ipc.so -LoadModule expires_module modules/mod_expires.so -LoadModule ext_filter_module modules/mod_ext_filter.so -LoadModule file_cache_module modules/mod_file_cache.so -LoadModule filter_module modules/mod_filter.so -LoadModule headers_module modules/mod_headers.so -LoadModule status_module modules/mod_status.so -LoadModule watchdog_module modules/mod_watchdog.so -LoadModule heartbeat_module modules/mod_heartbeat.so -LoadModule heartmonitor_module modules/mod_heartmonitor.so -LoadModule http2_module modules/mod_http2.so -LoadModule ident_module modules/mod_ident.so -LoadModule imagemap_module modules/mod_imagemap.so -LoadModule include_module modules/mod_include.so -LoadModule info_module modules/mod_info.so -LoadModule isapi_module modules/mod_isapi.so -LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so -LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so -LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so -LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so -LoadModule ldap_module modules/mod_ldap.so -LoadModule log_config_module modules/mod_log_config.so -LoadModule log_debug_module modules/mod_log_debug.so -LoadModule log_forensic_module modules/mod_log_forensic.so -LoadModule logio_module modules/mod_logio.so -LoadModule lua_module modules/mod_lua.so -LoadModule macro_module modules/mod_macro.so -LoadModule md_module modules/mod_md.so -LoadModule mime_module modules/mod_mime.so -LoadModule mime_magic_module modules/mod_mime_magic.so -# LoadModule mpm_event_module modules/mod_mpm_event.so -#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so -LoadModule mpm_worker_module modules/mod_mpm_worker.so -LoadModule negotiation_module modules/mod_negotiation.so -LoadModule unixd_module modules/mod_unixd.so -LoadModule optional_fn_export_module modules/mod_optional_fn_export.so -LoadModule optional_fn_import_module modules/mod_optional_fn_import.so -LoadModule optional_hook_export_module modules/mod_optional_hook_export.so -LoadModule optional_hook_import_module modules/mod_optional_hook_import.so -LoadModule proxy_module modules/mod_proxy.so -LoadModule proxy_ajp_module modules/mod_proxy_ajp.so -LoadModule proxy_balancer_module modules/mod_proxy_balancer.so -LoadModule proxy_connect_module modules/mod_proxy_connect.so -LoadModule proxy_express_module modules/mod_proxy_express.so -LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so -LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so -LoadModule proxy_ftp_module modules/mod_proxy_ftp.so -LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so -LoadModule proxy_http_module modules/mod_proxy_http.so -LoadModule proxy_http2_module modules/mod_proxy_http2.so -LoadModule proxy_scgi_module modules/mod_proxy_scgi.so -LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so -LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so -LoadModule ratelimit_module modules/mod_ratelimit.so -LoadModule reflector_module modules/mod_reflector.so -LoadModule remoteip_module modules/mod_remoteip.so -LoadModule reqtimeout_module modules/mod_reqtimeout.so -LoadModule request_module modules/mod_request.so -LoadModule rewrite_module modules/mod_rewrite.so -LoadModule sed_module modules/mod_sed.so -LoadModule session_module modules/mod_session.so -LoadModule session_cookie_module modules/mod_session_cookie.so -LoadModule session_crypto_module modules/mod_session_crypto.so -LoadModule session_dbd_module modules/mod_session_dbd.so -LoadModule setenvif_module modules/mod_setenvif.so -LoadModule slotmem_plain_module modules/mod_slotmem_plain.so -LoadModule slotmem_shm_module modules/mod_slotmem_shm.so -LoadModule socache_dbm_module modules/mod_socache_dbm.so -LoadModule socache_memcache_module modules/mod_socache_memcache.so -LoadModule socache_redis_module modules/mod_socache_redis.so -LoadModule socache_shmcb_module modules/mod_socache_shmcb.so -LoadModule speling_module modules/mod_speling.so -LoadModule ssl_module modules/mod_ssl.so -LoadModule substitute_module modules/mod_substitute.so -LoadModule suexec_module modules/mod_suexec.so -LoadModule unique_id_module modules/mod_unique_id.so -LoadModule userdir_module modules/mod_userdir.so -LoadModule usertrack_module modules/mod_usertrack.so -LoadModule version_module modules/mod_version.so -LoadModule vhost_alias_module modules/mod_vhost_alias.so -LoadModule xml2enc_module modules/mod_xml2enc.so - - -User www-data -Group www-data - - -ServerAdmin you@example.com - - - AllowOverride none - Require all denied - - -DocumentRoot "/usr/local/apache2/htdocs" - - Options Indexes FollowSymLinks - AllowOverride None - Require all granted - - - - DirectoryIndex index.html - - - - Require all denied - - -ErrorLog /proc/self/fd/2 - -LogLevel warn - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - LogFormat "%h %l %u %t \"%r\" %>s %b" common - - - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio - - CustomLog /proc/self/fd/1 common - - - - ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" - - - - # - # ScriptSock: On threaded servers, designate the path to the UNIX - # socket used to communicate with the CGI daemon of mod_cgid. - # - #Scriptsock cgisock - - - - AllowOverride None - Options None - Require all granted - - - - RequestHeader unset Proxy early - - - - TypesConfig conf/mime.types - AddType application/x-compress .Z - AddType application/x-gzip .gz .tgz - - - -Include conf/extra/proxy-html.conf - - -SSLRandomSeed startup builtin -SSLRandomSeed connect builtin - \ No newline at end of file diff --git a/community_images/apache/official/dc_coverage.sh b/community_images/apache/official/dc_coverage.sh deleted file mode 100755 index 17438d0a22..0000000000 --- a/community_images/apache/official/dc_coverage.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -CONTAINER_NAME="${PROJECT_NAME}"-apache-1 - -# checking all modules and config test -docker exec -i "${CONTAINER_NAME}" ls -docker exec -i "${CONTAINER_NAME}" httpd -M -docker exec -i "${CONTAINER_NAME}" apachectl configtest - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"443/tcp\"[0].HostPort" -NON_TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"443/tcp\"[0].HostPort") - -# run curl in loop for different endpoints -# Apache Server 1 (MPM Event module enabled, ssl enabled) -for i in {1..5}; -do - echo "Attempt on Apache-server-1 $i" - curl http://localhost:"${NON_TLS_PORT}" - with_backoff curl https://localhost:"${TLS_PORT}" -k -v -done -# Apache Server 2 (MPM Prefork module enabled) -NON_TLS_PORT=$(docker inspect "${PROJECT_NAME}"-apache-prefork-mpm-1 | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -for i in {1..5}; -do - echo "Attempt on Apache-server-2 $i" - curl http://localhost:"${NON_TLS_PORT}" -done -# Apache Server 3 (MPM Worker module enable) -NON_TLS_PORT=$(docker inspect "${PROJECT_NAME}"-apache-worker-mpm-1 | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -for i in {1..5}; -do - echo "Attempt on Apache-server-3 $i" - curl http://localhost:"${NON_TLS_PORT}" -done diff --git a/community_images/apache/official/docker-compose.yml b/community_images/apache/official/docker-compose.yml deleted file mode 100755 index 0b3bd990b7..0000000000 --- a/community_images/apache/official/docker-compose.yml +++ /dev/null @@ -1,38 +0,0 @@ -version: '2' - -services: - apache: - image: ${APACHE_OFFICIAL_IMAGE_REPOSITORY}:${APACHE_OFFICIAL_IMAGE_TAG} - user: root - volumes: - - ./configs/index.html:/usr/local/apache2/htdocs/index.html - - ./configs/server-configs/httpd1.conf:/usr/local/apache2/conf/httpd.conf - - ./certs/server.crt:/usr/local/apache2/conf/server.crt - - ./certs/server.key:/usr/local/apache2/conf/server.key - cap_add: - - SYS_PTRACE - ports: - - "0.0.0.0::80" - - "0.0.0.0::443" - apache-prefork-mpm: - image: ${APACHE_OFFICIAL_IMAGE_REPOSITORY}:${APACHE_OFFICIAL_IMAGE_TAG} - user: root - volumes: - - ./configs/index.html:/usr/local/apache2/htdocs/index.html - - ./configs/server-configs/httpd2.conf:/usr/local/apache2/conf/httpd.conf - cap_add: - - SYS_PTRACE - ports: - - "0.0.0.0::80" - - "0.0.0.0::443" - apache-worker-mpm: - image: ${APACHE_OFFICIAL_IMAGE_REPOSITORY}:${APACHE_OFFICIAL_IMAGE_TAG} - user: root - volumes: - - ./configs/index.html:/usr/local/apache2/htdocs/index.html - - ./configs/server-configs/httpd3.conf:/usr/local/apache2/conf/httpd.conf - cap_add: - - SYS_PTRACE - ports: - - "0.0.0.0::80" - - "0.0.0.0::443" diff --git a/community_images/apache/official/docker_coverage.sh b/community_images/apache/official/docker_coverage.sh deleted file mode 100755 index b8a3e0a460..0000000000 --- a/community_images/apache/official/docker_coverage.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -APACHE_HOST=$(jq -r '.container_details."apache-official".ip_address' < "$JSON_PARAMS") - -# Install Apache benchmark testing tool -sudo apt-get install apache2-utils -y -sudo apt-get install apache2 -y - -# testing using apache benchmark tool -ab -t 100 -n 10000 -c 10 http://"${APACHE_HOST}":80/ diff --git a/community_images/apache/official/image.yml b/community_images/apache/official/image.yml deleted file mode 100755 index 954e717897..0000000000 --- a/community_images/apache/official/image.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: apache-official -official_name: Apache Official -official_website: https://httpd.apache.org/ -source_image_provider: The Docker Community -source_image_repo: docker.io/library/httpd -source_image_repo_link: https://hub.docker.com/_/httpd -source_image_readme: https://github.com/docker-library/docs/blob/master/httpd/README.md -rf_docker_link: rapidfort/apache-official -image_workflow_name: apache_official -github_location: apache/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fhttpd -usage_instructions: | - # Using docker run: - $ docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ rapidfort/apache-official - # PWD can be replaced with the directory containing all your HTML. -what_is_text: | - The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows. httpd is the Apache HyperText Transfer Protocol (HTTP) server program. It is designed to be run as a standalone daemon process. When used like this it will create a pool of child processes or threads to handle requests. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`2.4.54`, `2.4`, `2`, `latest`, `2.4.54-bullseye`, `2.4-bullseye`, `2-bullseye`, `bullseye`](https://github.com/docker-library/httpd/blob/f3b7fd9c8ef59d1ad46c8b2a27df3e02d822834f/2.4/Dockerfile)" - - "[`2.4.54-alpine`, `2.4-alpine`, `2-alpine`, `alpine`, `2.4.54-alpine3.16`, `2.4-alpine3.16`, `2-alpine3.16`, `alpine3.16`](https://github.com/docker-library/httpd/blob/f3b7fd9c8ef59d1ad46c8b2a27df3e02d822834f/2.4/alpine/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - httpd: - input_base_tag: "2.4.*-bullseye" - output_repo: apache-official - - httpd: - input_base_tag: "2.4.*-alpine" - output_repo: apache-official -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - apache-official: - repository: "APACHE_OFFICIAL_IMAGE_REPOSITORY" - tag: "APACHE_OFFICIAL_IMAGE_TAG" - - type: docker - script: docker_coverage.sh - tls_certs: - generate: true - out_dir: certs diff --git a/community_images/apache/official/overrides.yml b/community_images/apache/official/overrides.yml deleted file mode 100755 index f201e68505..0000000000 --- a/community_images/apache/official/overrides.yml +++ /dev/null @@ -1,18 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/cassandra/official/README.md b/community_images/cassandra/official/README.md deleted file mode 100644 index 6a12bf854a..0000000000 --- a/community_images/cassandra/official/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Cassandra Official - -RapidFort’s container optimization process hardened this Cassandra Official container. This container is free to use and has no license limitations. - -It is the same as the [Apache Cassandra Cassandra Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Cassandra Official? - -> Apache Cassandra is an open source distributed database management system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. Cassandra offers robust support for clusters spanning multiple datacenters, with asynchronous masterless replication allowing low latency operations for all clients. - - -[Overview of Cassandra Official](https://cassandra.apache.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Cassandra Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Using docker run: -$ docker run --name some-cassandra -d cassandra:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Apache Cassandra Cassandra Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Apache Cassandra Cassandra Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/cassandra-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`4.0.7`, `4.0`, `4`, `latest`](https://github.com/docker-library/cassandra/blob/08fa5553ad2dde684ca5337c7fedd173cbc41f39/4.0/Dockerfile) -* [`3.11.14`, `3.11`, `3`](https://github.com/docker-library/cassandra/blob/13e3d6ca1ff1b6c9d780e5f018887c1d28318d50/3.11/Dockerfile) -* [`3.0.28`, `3.0`](https://github.com/docker-library/cassandra/blob/e92196fdba778656678a9bc9bcb724b8a3584149/3.0/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=cassandra-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fcassandra?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=cassandra-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fcassandra?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=cassandra-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fcassandra?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=cassandra-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fcassandra?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=cassandra-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fcassandra?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=cassandra-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/cassandra-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/cassandra-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/cassandra/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/cassandra/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/cassandra -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/cassandra-official diff --git a/community_images/cassandra/official/assets/cve_reduction.webp b/community_images/cassandra/official/assets/cve_reduction.webp deleted file mode 100644 index 9dca80e60b6c591309c5b565c4be1708c2f039aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1742 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 diff --git a/community_images/cassandra/official/dc_coverage.sh b/community_images/cassandra/official/dc_coverage.sh deleted file mode 100755 index f1ac20c2fa..0000000000 --- a/community_images/cassandra/official/dc_coverage.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -# Sleep -sleep 60 - -# Fetching container Name -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -CONTAINER_NAME="${PROJECT_NAME}"-cassandra-1 - -# executing tests in the container -docker exec -i "${CONTAINER_NAME}" bash -c 'cqlsh -u cassandra -p cassandra < /opt/test.cql' - -sleep 10 \ No newline at end of file diff --git a/community_images/cassandra/official/docker-compose.yml b/community_images/cassandra/official/docker-compose.yml deleted file mode 100644 index ab7b5a67cc..0000000000 --- a/community_images/cassandra/official/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -version: '2' -services: - cassandra: - image: ${CASSANDRA_OFFICIAL_IMAGE_REPOSITORY}:${CASSANDRA_OFFICIAL_IMAGE_TAG} - ports: - - '0.0.0.0::7000' - - '0.0.0.0::9042' - volumes: - - './tests/test.cql:/opt/test.cql' - environment: - - CASSANDRA_SEEDS=cassandra - - CASSANDRA_CLUSTER_NAME=cassandra-cluster - - CASSANDRA_PASSWORD_SEEDER=yes - - CASSANDRA_PASSWORD=cassandra - # By default, Cassandra autodetects the available host memory and takes as much as it can. - # Therefore, memory options are mandatory if multiple Cassandras are launched in the same node. - - MAX_HEAP_SIZE=256M - - HEAP_NEWSIZE=200M - cap_add: - - SYS_PTRACE diff --git a/community_images/cassandra/official/docker_coverage.sh b/community_images/cassandra/official/docker_coverage.sh deleted file mode 100755 index 9f6ab067ac..0000000000 --- a/community_images/cassandra/official/docker_coverage.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -RAPIDFORT_ACCOUNT="${RAPIDFORT_ACCOUNT:-rapidfort}" -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") - -# get docker host ip -#CASSANDRA_HOST=$(jq -r '.container_details."cassandra-official".ip_address' < "$JSON_PARAMS") -REPO_PATH=$(jq -r '.image_tag_details."cassandra-official".repo_path' < "$JSON_PARAMS") -TAG=$(jq -r '.image_tag_details."cassandra-official".tag' < "$JSON_PARAMS") - -# run docker -docker run --rm -i --cap-add=SYS_PTRACE --name="${NAMESPACE}"-"$(date +%s)" -d "${REPO_PATH}:${TAG}" diff --git a/community_images/cassandra/official/image.yml b/community_images/cassandra/official/image.yml deleted file mode 100644 index 67b39e7b8a..0000000000 --- a/community_images/cassandra/official/image.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: cassandra-official -official_name: Cassandra Official -official_website: https://cassandra.apache.org/ -source_image_provider: Apache Cassandra -source_image_repo: docker.io/library/cassandra -source_image_repo_link: https://hub.docker.com/_/cassandra -source_image_readme: https://github.com/docker-library/cassandra/blob/master/README.md -rf_docker_link: rapidfort/cassandra-official -image_workflow_name: cassandra_official -github_location: cassandra/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fcassandra -usage_instructions: | - # Using docker run: - $ docker run --name some-cassandra -d cassandra:latest -what_is_text: | - Apache Cassandra is an open source distributed database management system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. Cassandra offers robust support for clusters spanning multiple datacenters, with asynchronous masterless replication allowing low latency operations for all clients. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`4.0.7`, `4.0`, `4`, `latest`](https://github.com/docker-library/cassandra/blob/08fa5553ad2dde684ca5337c7fedd173cbc41f39/4.0/Dockerfile)" - - "[`3.11.14`, `3.11`, `3`](https://github.com/docker-library/cassandra/blob/13e3d6ca1ff1b6c9d780e5f018887c1d28318d50/3.11/Dockerfile)" - - "[`3.0.28`, `3.0`](https://github.com/docker-library/cassandra/blob/e92196fdba778656678a9bc9bcb724b8a3584149/3.0/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - cassandra: - input_base_tag: "4.0.*" - output_repo: cassandra-official - - cassandra: - input_base_tag: "3.11.*" - output_repo: cassandra-official - - cassandra: - input_base_tag: "3.0.*" - output_repo: cassandra-official -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - wait_time_sec: 60 - image_keys: - cassandra-official: - repository: "CASSANDRA_OFFICIAL_IMAGE_REPOSITORY" - tag: "CASSANDRA_OFFICIAL_IMAGE_TAG" - - type: docker - script: docker_coverage.sh - cassandra-official: {} diff --git a/community_images/cassandra/official/tests/test.cql b/community_images/cassandra/official/tests/test.cql deleted file mode 100644 index 9f3caf916c..0000000000 --- a/community_images/cassandra/official/tests/test.cql +++ /dev/null @@ -1,64 +0,0 @@ - -CREATE KEYSPACE schema1 WITH replication = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 }; - -USE schema1; - -CREATE TABLE users ( - user_id varchar PRIMARY KEY, - first varchar, - last varchar, - age int - ); - -INSERT INTO users (user_id, first, last, age) - VALUES ('jsmith', 'John', 'Smith', 42); - -SELECT * FROM users; - - -CREATE TABLE schema1.cyclist_points ( - id UUID, - firstname text, - lastname text, - race_title text, - race_points int, - PRIMARY KEY (id, race_points )); - - -CREATE TABLE parts (part_type text,part_name text,part_num int,part_year text,serial_num text,PRIMARY KEY ((part_type, part_name), part_num, part_year)); - - -SELECT sum(race_points) FROM schema1.cyclist_points WHERE id=e3b19ec4-774a-4d1c-9e5a-decec1e30aac AND race_points > 7; - - -CREATE TABLE ruling_stewards ( - steward_name text, - king text, - reign_start int, - event text, - PRIMARY KEY (steward_name, king, reign_start) -); - -SELECT * FROM ruling_stewards -WHERE king = 'Brego' - AND reign_start >= 2450 - AND reign_start < 2500 -ALLOW FILTERING; - - -Select * -FROM ruling_stewards -WHERE king = 'none' - AND reign_start >= 1500 - AND reign_start < 3000 -LIMIT 10 -ALLOW FILTERING; - - - -exit - - - - - diff --git a/community_images/consul/bitnami/.rfignore b/community_images/consul/bitnami/.rfignore deleted file mode 100644 index df9296ac6d..0000000000 --- a/community_images/consul/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/consul/licenses -opt/bitnami/licenses -usr/share/common-licenses diff --git a/community_images/consul/bitnami/README.md b/community_images/consul/bitnami/README.md deleted file mode 100644 index 1809a9d9d2..0000000000 --- a/community_images/consul/bitnami/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Consul - -RapidFort’s container optimization process hardened this Consul container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Consul][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Consul? - -> Consul is a service networking solution to automate network configurations, discover services, and enable secure connectivity across any cloud or runtime. - - -[Overview of Consul](https://www.consul.io/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Consul image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/consul - -# install consul, just replace repository with RapidFort registry -$ helm install my-consul bitnami/consul --set image.repository=rapidfort/consul - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Consul][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Consul][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/consul][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`1`, `1-debian-11`, `1.17.0`, `1.17.0-debian-11-r` (1/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/consul/1/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=consul&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/consul?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/consul?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/consul/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/consul/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/consul -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/consul diff --git a/community_images/consul/bitnami/assets/cve_reduction.webp b/community_images/consul/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 1de5cbabb3b9d6da019b2f89bcdbc9befc709322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1602 zcmb`Hc|6o<7{H%l(mKXCN@~e8L#rH{%9%yTI8qwNI?A}ltX$K~NNZWSD(A9AIYWf4 zP!UnCuEA#dIA;rkR6@CxF=c12p56@FXZ}i$ z0$A(?!~%3_d}aQ>T%tY{hBp#4jVP0jEDnJ3L3kbY6Q2;U*C$RAFx`P2umthmG`fKM5jG4A2obC$5JANflpsfYq<2PC0T@66BA6olzsl-)1{VV8 zEdU6ouKK((0czp^iN&G*7zcKgFOCE9C17Fk1qEaRHEh0wCu0xzN?z z)w}qYz2cA@1!SMWNTWgkPyh#35Cq|uD9W~7&<4=U7SvTv`v_$*rrrEfSG=^_GmqpqlApo9w>JK0k9;?U*- zv2tU^xhuJ6E#zX`3?zFxgd!yiLaFNFWzU9$M`lZ2sLT`v2r%j48UeeKE+U9M91It})M4TTyL0oL41;A|^m z)I`K6dn6VQ@0bqjbb1<^S!rIV*kyNeve0mVWYKLrA+g!|aCVOIXn?I&eaF>bBZ=I` zS+@Ad;qaD&zI3YMO9PB}cgd*_2^q~c$>*3ooy&#)lklS3ti= z%&^@0DE#rycNppOIYo7{o055bF&4EeGlY`PyqrDG$8S`t%J53lGi7rd(p*=F<3Sl% zg{rs4KeS#pu1@ZavRux7!<#F=a-gZse<~?Mvi@$*@;vjB+i$g*W0T(y{B!j3iXDdA z9udWfxmyRA%^vdlO5XW?99G04?>gpvPp(&>$j+JM@iy&;VuxRMLU-9{(vr^D6h2yJ zM8P&J67PO-VT?ZTlco{}tF$p?ZJ7BxG(P4*uB)(cYiLNyqX!nfqp=lD6|FWF=pV!-mvt|`zt>->aTz@}G{L&SZLGnv2<@ZoCG%*k zDgo@nyYCZkNVnI;&ZWmw{5YYa(kTZoIRz5GEvIcFo$W2`Q%mY$77oKcdaR!Wm`kIgs#KLaTN<_022C_&Ym_-3@U5yz)g9z>n=PD6m!l`DjKlWt WmzQ>B-!5bJHN`}^+>jJ}oPPtE3{1EH diff --git a/community_images/consul/bitnami/assets/metrics.webp b/community_images/consul/bitnami/assets/metrics.webp deleted file mode 100644 index 8b5fbded74f461d493bc19acd363fd85d9ba9fce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22332 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 MtiZx@U=Yjz0NjDn0RR91 diff --git a/community_images/consul/bitnami/configs/acls/consul-anonymous-token-policy.hcl b/community_images/consul/bitnami/configs/acls/consul-anonymous-token-policy.hcl deleted file mode 100644 index 440255a572..0000000000 --- a/community_images/consul/bitnami/configs/acls/consul-anonymous-token-policy.hcl +++ /dev/null @@ -1,6 +0,0 @@ -node_prefix "" { - policy = "write" -} -service_prefix "" { - policy = "read" -} \ No newline at end of file diff --git a/community_images/consul/bitnami/configs/sample_service.json b/community_images/consul/bitnami/configs/sample_service.json deleted file mode 100644 index d83aabaa04..0000000000 --- a/community_images/consul/bitnami/configs/sample_service.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "service": { - "name": "web", - "tags": [ - "rails" - ], - "port": 80 - } - } \ No newline at end of file diff --git a/community_images/consul/bitnami/configs/server.json b/community_images/consul/bitnami/configs/server.json deleted file mode 100644 index 22830d3117..0000000000 --- a/community_images/consul/bitnami/configs/server.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "datacenter":"dc1", - "domain":"consul", - "data_dir":"/opt/bitnami/consul/data", - "server":true, - "ui":true, - "bootstrap_expect":1, - "addresses": { - "http":"0.0.0.0" - }, - "ports": { - "http":8500, - "dns":8600, - "serf_lan":8301, - "server":8300 - }, - "acl": { - "enabled":true, - "default_policy":"allow", - "enable_token_persistence":true - }, - "node_name": "consul-server1" -} \ No newline at end of file diff --git a/community_images/consul/bitnami/dc_acl_coverage.sh b/community_images/consul/bitnami/dc_acl_coverage.sh deleted file mode 100755 index ae38a2cb50..0000000000 --- a/community_images/consul/bitnami/dc_acl_coverage.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -# Consul ACLs -docker exec -i consul-server1 consul acl bootstrap \ No newline at end of file diff --git a/community_images/consul/bitnami/dc_coverage.sh b/community_images/consul/bitnami/dc_coverage.sh deleted file mode 100755 index 32ad476178..0000000000 --- a/community_images/consul/bitnami/dc_coverage.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -# Container name for consul-node1 -CONTAINER_NAME="${PROJECT_NAME}"-consul-node1-1 - -# Wait for all the member nodes to get in sync -sleep 20 - -# Exec into consul server(node1) and run coverage scrip(Additional: This script also has instructions to register a sample service) -docker exec -i "${CONTAINER_NAME}" bash -c /opt/bitnami/scripts/coverage_script.sh - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8300/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8301/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8301/udp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8500/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8600/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8600/udp\"[0].HostPort" - -# Checking Consul members list in all server and client nodes -docker exec -i "${PROJECT_NAME}"-consul-node2-1 consul members -docker exec -i "${PROJECT_NAME}"-consul-node3-1 consul members -docker exec -i "${PROJECT_NAME}"-consul-node4-1 consul members - -# Reloading consul config on all containers -docker exec -i "${PROJECT_NAME}"-consul-node2-1 consul reload -docker exec -i "${PROJECT_NAME}"-consul-node3-1 consul reload -docker exec -i "${PROJECT_NAME}"-consul-node4-1 consul reload - -# Wait for all the member nodes to get in sync -sleep 30 - -# exec into consul client(node4) and run coverage script -docker exec -i "${PROJECT_NAME}"-consul-node4-1 bash -c /opt/bitnami/scripts/coverage_script.sh - -# Query our service using DNS API and HTTP API on consul-node1 via consul-node3 -docker exec -i "${PROJECT_NAME}"-consul-node3-1 bash -c /opt/bitnami/scripts/coverage_script.sh - -# Deregistering/removing sample service in consul-node1 -docker exec -i "${CONTAINER_NAME}" consul services deregister /consul.d/sample_service.json - -# Shutting down consul -docker exec -i "${PROJECT_NAME}"-consul-node2-1 consul leave \ No newline at end of file diff --git a/community_images/consul/bitnami/docker-compose-acl.yml b/community_images/consul/bitnami/docker-compose-acl.yml deleted file mode 100755 index dbcf0e50e8..0000000000 --- a/community_images/consul/bitnami/docker-compose-acl.yml +++ /dev/null @@ -1,30 +0,0 @@ -version: '2' - -services: - - consul-server1: - image: ${CONSUL_IMAGE_REPOSITORY}:${CONSUL_IMAGE_TAG} - user: root - container_name: consul-server1 - restart: always - environment: - - CONSUL_RETRY_JOIN_ADDRESS=consul-server1 - volumes: - - ./configs/server.json:/server.json - - ./configs/acls/:/opt/bitnami/consul/conf/acls/ - networks: - - consul - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::8300' - - '0.0.0.0::8301' - - '0.0.0.0::8301/udp' - - '0.0.0.0::8500' - - '0.0.0.0::8600' - - '0.0.0.0::8600/udp' - command: "consul agent -server -bootstrap-expect=1 -retry-join=consul-server1 -config-file=server.json" - -networks: - consul: - driver: bridge \ No newline at end of file diff --git a/community_images/consul/bitnami/docker-compose.yml b/community_images/consul/bitnami/docker-compose.yml deleted file mode 100755 index c6ff80b57a..0000000000 --- a/community_images/consul/bitnami/docker-compose.yml +++ /dev/null @@ -1,96 +0,0 @@ -version: '2' - -services: - consul-node1: - image: ${CONSUL_IMAGE_REPOSITORY}:${CONSUL_IMAGE_TAG} - user: root - restart: always - environment: - - CONSUL_BOOTSTRAP_EXPECT=3 - - CONSUL_CLIENT_LAN_ADDRESS=0.0.0.0 - - CONSUL_DISABLE_KEYRING_FILE=true - - CONSUL_RETRY_JOIN_ADDRESS=consul-node1 - networks: - - consul - ports: - - '0.0.0.0::8300' - - '0.0.0.0::8301' - - '0.0.0.0::8301/udp' - - '0.0.0.0::8500' - - '0.0.0.0::8600' - - '0.0.0.0::8600/udp' - cap_add: - - SYS_PTRACE - volumes: - - 'consul-node1_data:/bitnami' - - ./scripts/server_coverage_script.sh:/opt/bitnami/scripts/coverage_script.sh - - ./configs/sample_service.json:/consul.d/sample_service.json - - consul-node2: - image: ${CONSUL_IMAGE_REPOSITORY}:${CONSUL_IMAGE_TAG} - user: root - restart: always - environment: - - CONSUL_BOOTSTRAP_EXPECT=3 - - CONSUL_CLIENT_LAN_ADDRESS=0.0.0.0 - - CONSUL_DISABLE_KEYRING_FILE=true - - CONSUL_RETRY_JOIN_ADDRESS=consul-node1 - - CONSUL_ENABLE_UI=true - networks: - - consul - cap_add: - - SYS_PTRACE - depends_on: - - consul-node1 - volumes: - - 'consul-node2_data:/bitnami' - - consul-node3: - image: bitnami/consul - user: root - restart: always - environment: - - CONSUL_BOOTSTRAP_EXPECT=3 - - CONSUL_CLIENT_LAN_ADDRESS=0.0.0.0 - - CONSUL_DISABLE_KEYRING_FILE=true - - CONSUL_RETRY_JOIN_ADDRESS=consul-node1 - - CONSUL_ENABLE_UI=false - networks: - - consul - cap_add: - - SYS_PTRACE - depends_on: - - consul-node1 - volumes: - - 'consul-node3_data:/bitnami' - - ./scripts/client_container_test.sh:/opt/bitnami/scripts/coverage_script.sh - - consul-node4: - image: ${CONSUL_IMAGE_REPOSITORY}:${CONSUL_IMAGE_TAG} - user: root - restart: always - networks: - - consul - cap_add: - - SYS_PTRACE - volumes: - - 'consul-node4_data:/bitnami' - - ./scripts/client_coverage_script.sh:/opt/bitnami/scripts/coverage_script.sh - depends_on: - - consul-node1 - - consul-node2 - - consul-node3 - command: "consul agent -data-dir=/opt/bitnami/consul -join=consul-node1" - -networks: - consul: - driver: bridge -volumes: - consul-node1_data: - driver: local - consul-node2_data: - driver: local - consul-node3_data: - driver: local - consul-node4_data: - driver: local diff --git a/community_images/consul/bitnami/image.yml b/community_images/consul/bitnami/image.yml deleted file mode 100644 index a2bd88ae12..0000000000 --- a/community_images/consul/bitnami/image.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: consul -official_name: Consul -official_website: https://www.consul.io/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/consul -source_image_repo_link: https://hub.docker.com/r/bitnami/consul -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/consul/README.md -rf_docker_link: rapidfort/consul -image_workflow_name: consul_bitnami -github_location: consul/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fconsul -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/consul - - # install consul, just replace repository with RapidFort registry - $ helm install my-consul bitnami/consul --set image.repository=rapidfort/consul -what_is_text: | - Consul is a service networking solution to automate network configurations, discover services, and enable secure connectivity across any cloud or runtime. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - consul: - input_base_tag: "1.16.2-debian-11-r" -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - consul: - repository: "CONSUL_IMAGE_REPOSITORY" - tag: "CONSUL_IMAGE_TAG" - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: consul - tls_certs: - generate: true - secret_name: localhost-server-tls - common_name: localhost - image_keys: - apache: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - script: dc_acl_coverage.sh - compose_file: docker-compose-acl.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - consul: - repository: "CONSUL_IMAGE_REPOSITORY" - tag: "CONSUL_IMAGE_TAG" diff --git a/community_images/consul/bitnami/k8s_coverage.sh b/community_images/consul/bitnami/k8s_coverage.sh deleted file mode 100755 index a5c227ecdd..0000000000 --- a/community_images/consul/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for k8s coverage = $JSON" \ No newline at end of file diff --git a/community_images/consul/bitnami/overrides.yml b/community_images/consul/bitnami/overrides.yml deleted file mode 100644 index c27764377f..0000000000 --- a/community_images/consul/bitnami/overrides.yml +++ /dev/null @@ -1,33 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -master: - containerSecurityContext: - enabled: true - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -replica: - containerSecurityContext: - enabled: true - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 \ No newline at end of file diff --git a/community_images/consul/bitnami/scripts/client_container_test.sh b/community_images/consul/bitnami/scripts/client_container_test.sh deleted file mode 100755 index 0c512bb2d8..0000000000 --- a/community_images/consul/bitnami/scripts/client_container_test.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# The purpose of this script is to Query our service using DNS API through a client container(This doesn't run on the stubbed image) - -# Available Scripts -ls /opt/bitnami/scripts - -# Installing dnsutils -apt-get update -apt-get install dnsutils -y - -# Installing curl -apt-get install curl -y - -# Query our service using HTTP Api -curl http://localhost:8500/v1/catalog/service/web - -# Checking for the healthy instances -curl 'http://localhost:8500/v1/health/service/web?passing' - -# Query our service using DNS API on consul-node-1 -dig consul-node1/8600 rails.web.service.consul SRV \ No newline at end of file diff --git a/community_images/consul/bitnami/scripts/client_coverage_script.sh b/community_images/consul/bitnami/scripts/client_coverage_script.sh deleted file mode 100755 index 79d8445397..0000000000 --- a/community_images/consul/bitnami/scripts/client_coverage_script.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# Available Scripts -ls /opt/bitnami/scripts - -# Checking version -consul version -format=json - -# Create client certs -consul tls ca create -consul tls cert create -client - -# Using consul debug -consul debug -interval=15s -duration=1m \ No newline at end of file diff --git a/community_images/consul/bitnami/scripts/server_coverage_script.sh b/community_images/consul/bitnami/scripts/server_coverage_script.sh deleted file mode 100755 index 16dfb1a088..0000000000 --- a/community_images/consul/bitnami/scripts/server_coverage_script.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# Available Scripts -ls /opt/bitnami/scripts - -# General commands -consul members | tee -a members -SERVERS=$(grep -w "server" -c members) -CLIENTS=$(grep -w "client" -c members) -# Checking the members in the cluster -echo "Number of Servers Active = $SERVERS" -echo "Number of Clients Active = $CLIENTS" -rm members -consul info - -# Consul snapshot -consul snapshot save backup.snap -consul snapshot inspect backup.snap - -# Registering a test service(This will be deregistered in the main dc_coverage itselfS) -consul services register /consul.d/sample_service.json -consul reload -sleep 10 - -# Consul kv -consul kv put redis/config/connections 5 -consul kv get -detailed redis/config/connections | tee -a file -# To check the number of connections (Should be 5) -CONNECTIONS=$(grep "Value" file) -rm file -echo "$CONNECTIONS" -consul kv delete redis/config/connections - -# Consul Operator Raft -consul operator raft list-peers - -# Consul keygen -consul keygen - -# Consul Maint -consul maint - -# Consul Catalg -# List all datacenters: -consul catalog datacenters -# List all nodes and services -consul catalog nodes -consul catalog services \ No newline at end of file diff --git a/community_images/consul/bitnami/tls_certs.yml b/community_images/consul/bitnami/tls_certs.yml deleted file mode 100644 index 3c07fca644..0000000000 --- a/community_images/consul/bitnami/tls_certs.yml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: localhost-cert -spec: - commonName: localhost - duration: 2160h - isCA: false - issuerRef: - group: cert-manager.io - kind: Issuer - name: ci-ca-issuer - privateKey: - algorithm: RSA - encoding: PKCS1 - size: 2048 - renewBefore: 360h - secretName: localhost-server-tls - subject: - organizations: - - rapidfort - usages: - - server auth - - client auth diff --git a/community_images/consul/ironbank/README.md b/community_images/consul/ironbank/README.md deleted file mode 100755 index a6ae381303..0000000000 --- a/community_images/consul/ironbank/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Consul IronBank - -RapidFort’s container optimization process hardened this Consul IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Consul IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Consul IronBank? - -> Consul is a service networking solution to automate network configurations, discover services, and enable secure connectivity across any cloud or runtime. - - -[Overview of Consul IronBank](https://www.consul.io/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Consul IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Running Consul in Server Mode -$ docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' rapidfort/consul-ib agent -server -bind= -retry-join= -bootstrap-expect= - -# Running Consul in Client Mode -$ docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' rapidfort/consul-ib agent agent -bind= -retry-join= - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Consul IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One Consul IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/consul-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=consul-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fhashicorp%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fhashicorp%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fhashicorp%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fhashicorp%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fhashicorp%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/consul-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/consul-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/consul/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/consul/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/hashicorp%2Fconsul -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/consul-ib diff --git a/community_images/consul/ironbank/assets/cve_reduction.webp b/community_images/consul/ironbank/assets/cve_reduction.webp deleted file mode 100644 index 4325cbca13b14c719fb6b72a45d8f7363d0ec8cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1446 zcmWIYbaR`>%D@or>J$(bU=hK^z`&pY#0wc2>=_t5ot*VV2 z7YKk{%#)fI8VsZ(fLMm1m?4P4oxusnrYb;$XZ|7v28*u@49pV{Vo5U@7`C@EFi6}& zh^Z`KVBl|IVAyuPAh9SB>=+gx$&{AH!0>4~0|Rd)1B37d1_rKZm_reI5pjXTuL?jt zGC+Uk17SKt4nrz~0)r<*9z!yN9*||kV8CF=UfN@+^54OHr@mcX*`8`%yt;LG0C{_W%JyL{^XwQGNif9$M&f2`bat?`70kb+muC#U^7VeXt_fBnxN z&)JbPHYvu;IT^O~bi$!SYC5d%_83oI@3K+N^^;8}1->&!*rX_9S^qhz+-&06(iLAd11Q>Wf9cju~n zGyBc6Nmb5LZL@4QJJiN5P%jT-*%>JLAbHvT7L~q-daPV*#&goUZasUu!ZLe)_Y7-` zmyVB$)RHIO=-qD1_i??=+tQVL@}CKB3ratFW8VJoy8_cPHZk2vI?$gGzqmM~Rr~3; zIkFu>;Sbr5Gs#Z=_AQAe#{6i>$sHH%$~pIb+0ezIVroE_1~BOW0N-Bh-v9sr diff --git a/community_images/consul/ironbank/assets/metrics.webp b/community_images/consul/ironbank/assets/metrics.webp deleted file mode 100644 index b26b958341a41bb969dda2446e658dc5fcaabbf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22392 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

=|g<5`sZH8==ImCjfvHEr%gADI4_1CJN(Wt!VbP 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/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -# Consul ACLs -docker exec -i consul-server1 consul acl bootstrap \ No newline at end of file diff --git a/community_images/consul/ironbank/dc_coverage.sh b/community_images/consul/ironbank/dc_coverage.sh deleted file mode 100755 index 34eaafd53f..0000000000 --- a/community_images/consul/ironbank/dc_coverage.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -# Container name for consul-node1 -CONTAINER_NAME="${PROJECT_NAME}"-consul1-1 - -# Reloading consul config on all containers -docker exec -i "${PROJECT_NAME}"-consul1-1 consul reload -sleep 2 -docker exec -i "${PROJECT_NAME}"-consul2-1 consul reload -docker exec -i "${PROJECT_NAME}"-consul3-1 consul reload - -# Wait for all the member nodes to get in sync -sleep 30 - -# Exec into consul server(node1) and run coverage scrip(Additional: This script also has instructions to register a sample service) -docker exec -i "${CONTAINER_NAME}" sh /opt/scripts/coverage_script.sh - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8300/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8301/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8301/udp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8500/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8600/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8600/udp\"[0].HostPort" - -# Checking Consul members list in all server and client nodes -docker exec -i "${PROJECT_NAME}"-consul2-1 consul members -docker exec -i "${PROJECT_NAME}"-consul3-1 consul members - -# Reloading consul config on all containers -docker exec -i "${PROJECT_NAME}"-consul2-1 consul reload -docker exec -i "${PROJECT_NAME}"-consul3-1 consul reload - -# Wait for all the member nodes to get in sync -sleep 30 - -# exec into consul client(node3) and run coverage script -docker exec -i "${PROJECT_NAME}"-consul2-1 sh /opt/scripts/coverage_script.sh - -# Query our service using HTTP API on consul-node1 via consul-node2 -docker exec -i "${PROJECT_NAME}"-consul2-1 sh /opt/scripts/coverage_script.sh - -# Deregistering/removing sample service in consul-node1 -docker exec -i "${CONTAINER_NAME}" consul services deregister /consul.d/sample_service.json - -# Shutting down consul -docker exec -i "${PROJECT_NAME}"-consul2-1 consul leave diff --git a/community_images/consul/ironbank/docker-compose-acl.yml b/community_images/consul/ironbank/docker-compose-acl.yml deleted file mode 100755 index 78fe0993fb..0000000000 --- a/community_images/consul/ironbank/docker-compose-acl.yml +++ /dev/null @@ -1,30 +0,0 @@ -version: '2' - -services: - - consul-server1: - image: ${CONSUL_OFFICIAL_IMAGE_REPOSITORY}:${CONSUL_OFFICIAL_IMAGE_TAG} - user: root - container_name: consul-server1 - restart: always - environment: - - CONSUL_RETRY_JOIN_ADDRESS=consul-server1 - volumes: - - ./configs/server.json:/server.json - - ./configs/acls/:/consul/dataconf/acls/ - networks: - - consul - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::8300' - - '0.0.0.0::8301' - - '0.0.0.0::8301/udp' - - '0.0.0.0::8500' - - '0.0.0.0::8600' - - '0.0.0.0::8600/udp' - command: "consul agent -server -bootstrap-expect=1 -retry-join=consul-server1 -config-file=server.json" - -networks: - consul: - driver: bridge \ No newline at end of file diff --git a/community_images/consul/ironbank/docker-compose.yml b/community_images/consul/ironbank/docker-compose.yml deleted file mode 100755 index 24d103b17c..0000000000 --- a/community_images/consul/ironbank/docker-compose.yml +++ /dev/null @@ -1,57 +0,0 @@ -version: '2.0' - -services: - - consul1: - image: ${CONSUL_OFFICIAL_IMAGE_REPOSITORY}:${CONSUL_OFFICIAL_IMAGE_TAG} - hostname: "consul1" - user: root - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::8300' - - '0.0.0.0::8301' - - '0.0.0.0::8301/udp' - - '0.0.0.0::8500' - - '0.0.0.0::8600' - - '0.0.0.0::8600/udp' - volumes: - - 'consul-node1_data:/consul/data' - - ./scripts/server_coverage_script.sh:/opt/scripts/coverage_script.sh - - ./configs/sample_service.json:/consul.d/sample_service.json - command: "agent -server -bootstrap-expect 2 -ui -client 0.0.0.0" - - consul2: - image: ${CONSUL_OFFICIAL_IMAGE_REPOSITORY}:${CONSUL_OFFICIAL_IMAGE_TAG} - hostname: "consul2" - user: root - cap_add: - - SYS_PTRACE - volumes: - - 'consul-node2_data:/consul/data' - - ./scripts/server2_coverage_script.sh:/opt/scripts/coverage_script.sh - command: "agent -server -join consul1" - depends_on: - - consul1 - - consul3: - image: ${CONSUL_OFFICIAL_IMAGE_REPOSITORY}:${CONSUL_OFFICIAL_IMAGE_TAG} - hostname: "consul3" - user: root - cap_add: - - SYS_PTRACE - volumes: - - 'consul-node3_data:/consul/data' - - ./scripts/client_coverage_script.sh:/opt/scripts/coverage_script.sh - command: "agent -join consul1" - depends_on: - - consul1 - - consul2 - -volumes: - consul-node1_data: - driver: local - consul-node2_data: - driver: local - consul-node3_data: - driver: local diff --git a/community_images/consul/ironbank/image.yml b/community_images/consul/ironbank/image.yml deleted file mode 100755 index 4a3e98cbb2..0000000000 --- a/community_images/consul/ironbank/image.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: consul-ib -official_name: Consul IronBank -official_website: https://www.consul.io/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/hashicorp/consul -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/hashicorp%2Fconsul -source_image_readme: https://repo1.dso.mil/dsop/hashicorp/consul/1.14/-/blob/development/README.md -rf_docker_link: rapidfort/consul-ib -image_workflow_name: consul_ironbank -github_location: consul/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fhashicorp%2Fconsul -usage_instructions: | - # Running Consul in Server Mode - $ docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' rapidfort/consul-ib agent -server -bind= -retry-join= -bootstrap-expect= - - # Running Consul in Client Mode - $ docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' rapidfort/consul-ib agent agent -bind= -retry-join= -what_is_text: | - Consul is a service networking solution to automate network configurations, discover services, and enable secure connectivity across any cloud or runtime. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - hashicorp/consul: - input_base_tag: "1.14." - output_repo: consul-ib - - hashicorp/consul: - input_base_tag: "1.13." - output_repo: consul-ib - - hashicorp/consul: - input_base_tag: "1.12." - output_repo: consul-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - wait_time_sec: 100 - tls_certs: - generate: true - out_dir: certs - image_keys: - consul-ib: - repository: "CONSUL_OFFICIAL_IMAGE_REPOSITORY" - tag: "CONSUL_OFFICIAL_IMAGE_TAG" - - type: docker_compose - script: dc_acl_coverage.sh - compose_file: docker-compose-acl.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - consul-ib: - repository: "CONSUL_OFFICIAL_IMAGE_REPOSITORY" - tag: "CONSUL_OFFICIAL_IMAGE_TAG" diff --git a/community_images/consul/ironbank/scripts/client_coverage_script.sh b/community_images/consul/ironbank/scripts/client_coverage_script.sh deleted file mode 100755 index 40aa91f00f..0000000000 --- a/community_images/consul/ironbank/scripts/client_coverage_script.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# Available Scripts -ls /opt/scripts - -# Checking version -consul version -format=json - -# Create client certs -consul tls ca create -consul tls cert create -client - -# Using consul debug -consul debug -interval=15s -duration=1m \ No newline at end of file diff --git a/community_images/consul/ironbank/scripts/server2_coverage_script.sh b/community_images/consul/ironbank/scripts/server2_coverage_script.sh deleted file mode 100644 index ca82fa7b82..0000000000 --- a/community_images/consul/ironbank/scripts/server2_coverage_script.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# The purpose of this script is to Query our service using DNS API through a client container(This doesn't run on the stubbed image) - -# Available Scripts -ls /opt/scripts - -# Query our service using HTTP Api -curl http://localhost:8500/v1/catalog/service/web - -# Checking for the healthy instances -curl 'http://localhost:8500/v1/health/service/web?passing' \ No newline at end of file diff --git a/community_images/consul/ironbank/scripts/server_coverage_script.sh b/community_images/consul/ironbank/scripts/server_coverage_script.sh deleted file mode 100755 index adc622b688..0000000000 --- a/community_images/consul/ironbank/scripts/server_coverage_script.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# Available Scripts -ls /opt/scripts - -# General commands -consul members | tee -a members -SERVERS=$(grep -w "server" -c members) -CLIENTS=$(grep -w "client" -c members) -# Checking the members in the cluster -echo "Number of Servers Active = $SERVERS" -echo "Number of Clients Active = $CLIENTS" -rm members -consul info - -# Consul snapshot -consul snapshot save backup.snap -consul snapshot inspect backup.snap - -# Registering a test service(This will be deregistered in the main dc_coverage itselfS) -consul services register /consul.d/sample_service.json -consul reload -sleep 10 - -# Consul kv -consul kv put redis/config/connections 5 -consul kv get -detailed redis/config/connections | tee -a file -# To check the number of connections (Should be 5) -CONNECTIONS=$(grep "Value" file) -rm file -echo "$CONNECTIONS" -consul kv delete redis/config/connections - -# Consul Operator Raft -consul operator raft list-peers - -# Consul keygen -consul keygen - -# Consul Maint -consul maint - -# Consul Catalg -# List all datacenters: -consul catalog datacenters -# List all nodes and services -consul catalog nodes -consul catalog services \ No newline at end of file diff --git a/community_images/consul/official/.rfignore b/community_images/consul/official/.rfignore deleted file mode 100644 index 1c799e0088..0000000000 --- a/community_images/consul/official/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/common-licenses \ No newline at end of file diff --git a/community_images/consul/official/README.md b/community_images/consul/official/README.md deleted file mode 100755 index 4fd51fbaed..0000000000 --- a/community_images/consul/official/README.md +++ /dev/null @@ -1,146 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Consul Official - -RapidFort’s container optimization process hardened this Consul Official container. This container is free to use and has no license limitations. - -It is the same as the [HashiCorp Consul Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Consul Official? - -> Consul is a service networking solution to automate network configurations, discover services, and enable secure connectivity across any cloud or runtime. - - -[Overview of Consul Official](https://www.consul.io/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Consul Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Running Consul in Server Mode -$ docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' rapidfort/consul-official agent -server -bind= -retry-join= -bootstrap-expect= - -# Running Consul in Client Mode -$ docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' rapidfort/consul-official agent -bind= -retry-join= - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [HashiCorp Consul Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [HashiCorp Consul Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/consul-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`1.15.4`, `1.15`, `latest`](https://github.com/hashicorp/docker-consul/blob/master/0.X/Dockerfile) -* [`1.14.0`, `1.14`](https://github.com/hashicorp/docker-consul/blob/da19183e0617a285e3dbc42ad5ebfdb4e61caa31/0.X/Dockerfile) -* [`1.13.3`, `1.13`](https://github.com/hashicorp/docker-consul/blob/f4f43d2534abcfc12f8aebf3c20e5339fdec384f/0.X/Dockerfile) -* [`1.12.6`, `1.12`](https://github.com/hashicorp/docker-consul/blob/dfb2da6631adfc68ce9a930bfd90b543c7ef69c9/0.X/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=consul-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fhashicorp%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fhashicorp%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fhashicorp%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fhashicorp%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fhashicorp%2Fconsul?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=consul-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/consul-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/consul-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/consul/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/consul/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/hashicorp/consul -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/consul-official diff --git a/community_images/consul/official/assets/cve_reduction.webp b/community_images/consul/official/assets/cve_reduction.webp deleted file mode 100644 index dd80039210faecda43a688416264f9d7dcc1dfd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1264 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 diff --git a/community_images/consul/official/configs/acls/consul-anonymous-token-policy.hcl b/community_images/consul/official/configs/acls/consul-anonymous-token-policy.hcl deleted file mode 100644 index 440255a572..0000000000 --- a/community_images/consul/official/configs/acls/consul-anonymous-token-policy.hcl +++ /dev/null @@ -1,6 +0,0 @@ -node_prefix "" { - policy = "write" -} -service_prefix "" { - policy = "read" -} \ No newline at end of file diff --git a/community_images/consul/official/configs/sample_service.json b/community_images/consul/official/configs/sample_service.json deleted file mode 100644 index d83aabaa04..0000000000 --- a/community_images/consul/official/configs/sample_service.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "service": { - "name": "web", - "tags": [ - "rails" - ], - "port": 80 - } - } \ No newline at end of file diff --git a/community_images/consul/official/configs/server.json b/community_images/consul/official/configs/server.json deleted file mode 100644 index a5e4f4c342..0000000000 --- a/community_images/consul/official/configs/server.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "datacenter":"dc1", - "domain":"consul", - "data_dir":"/consul/data", - "server":true, - "ui":true, - "bootstrap_expect":1, - "addresses": { - "http":"0.0.0.0" - }, - "ports": { - "http":8500, - "dns":8600, - "serf_lan":8301, - "server":8300 - }, - "acl": { - "enabled":true, - "default_policy":"allow", - "enable_token_persistence":true - }, - "node_name": "consul-server1" -} \ No newline at end of file diff --git a/community_images/consul/official/dc_acl_coverage.sh b/community_images/consul/official/dc_acl_coverage.sh deleted file mode 100755 index ae38a2cb50..0000000000 --- a/community_images/consul/official/dc_acl_coverage.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -# Consul ACLs -docker exec -i consul-server1 consul acl bootstrap \ No newline at end of file diff --git a/community_images/consul/official/dc_coverage.sh b/community_images/consul/official/dc_coverage.sh deleted file mode 100755 index 6ca6f11409..0000000000 --- a/community_images/consul/official/dc_coverage.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -# Container name for consul-node1 -CONTAINER_NAME="${PROJECT_NAME}"-consul1-1 - -# Reloading consul config on all containers -docker exec -i "${PROJECT_NAME}"-consul1-1 consul reload -sleep 2 -docker exec -i "${PROJECT_NAME}"-consul2-1 consul reload -docker exec -i "${PROJECT_NAME}"-consul3-1 consul reload -docker exec -i "${PROJECT_NAME}"-consul4-1 consul reload - -# Wait for all the member nodes to get in sync -sleep 30 - -# Exec into consul server(node1) and run coverage scrip(Additional: This script also has instructions to register a sample service) -docker exec -i "${CONTAINER_NAME}" sh /opt/scripts/coverage_script.sh - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8300/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8301/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8301/udp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8500/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8600/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8600/udp\"[0].HostPort" - -# Checking Consul members list in all server and client nodes -docker exec -i "${PROJECT_NAME}"-consul2-1 consul members -docker exec -i "${PROJECT_NAME}"-consul3-1 consul members -docker exec -i "${PROJECT_NAME}"-consul4-1 consul members - -# Reloading consul config on all containers -docker exec -i "${PROJECT_NAME}"-consul2-1 consul reload -docker exec -i "${PROJECT_NAME}"-consul3-1 consul reload -docker exec -i "${PROJECT_NAME}"-consul4-1 consul reload - -# Wait for all the member nodes to get in sync -sleep 30 - -# exec into consul client(node4) and run coverage script -docker exec -i "${PROJECT_NAME}"-consul4-1 sh /opt/scripts/coverage_script.sh - -# Query our service using DNS API and HTTP API on consul-node1 via consul-node3 -docker exec -i "${PROJECT_NAME}"-consul3-1 sh /opt/scripts/coverage_script.sh - -# Deregistering/removing sample service in consul-node1 -docker exec -i "${CONTAINER_NAME}" consul services deregister /consul.d/sample_service.json - -# Shutting down consul -docker exec -i "${PROJECT_NAME}"-consul2-1 consul leave diff --git a/community_images/consul/official/docker-compose-acl.yml b/community_images/consul/official/docker-compose-acl.yml deleted file mode 100755 index 78fe0993fb..0000000000 --- a/community_images/consul/official/docker-compose-acl.yml +++ /dev/null @@ -1,30 +0,0 @@ -version: '2' - -services: - - consul-server1: - image: ${CONSUL_OFFICIAL_IMAGE_REPOSITORY}:${CONSUL_OFFICIAL_IMAGE_TAG} - user: root - container_name: consul-server1 - restart: always - environment: - - CONSUL_RETRY_JOIN_ADDRESS=consul-server1 - volumes: - - ./configs/server.json:/server.json - - ./configs/acls/:/consul/dataconf/acls/ - networks: - - consul - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::8300' - - '0.0.0.0::8301' - - '0.0.0.0::8301/udp' - - '0.0.0.0::8500' - - '0.0.0.0::8600' - - '0.0.0.0::8600/udp' - command: "consul agent -server -bootstrap-expect=1 -retry-join=consul-server1 -config-file=server.json" - -networks: - consul: - driver: bridge \ No newline at end of file diff --git a/community_images/consul/official/docker-compose.yml b/community_images/consul/official/docker-compose.yml deleted file mode 100755 index a1bf13f2a3..0000000000 --- a/community_images/consul/official/docker-compose.yml +++ /dev/null @@ -1,72 +0,0 @@ -version: '2.0' - -services: - - consul1: - image: ${CONSUL_OFFICIAL_IMAGE_REPOSITORY}:${CONSUL_OFFICIAL_IMAGE_TAG} - hostname: "consul1" - user: root - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::8300' - - '0.0.0.0::8301' - - '0.0.0.0::8301/udp' - - '0.0.0.0::8500' - - '0.0.0.0::8600' - - '0.0.0.0::8600/udp' - volumes: - - 'consul-node1_data:/consul/data' - - ./scripts/server_coverage_script.sh:/opt/scripts/coverage_script.sh - - ./configs/sample_service.json:/consul.d/sample_service.json - command: "agent -server -bootstrap-expect 3 -ui -client 0.0.0.0" - - consul2: - image: ${CONSUL_OFFICIAL_IMAGE_REPOSITORY}:${CONSUL_OFFICIAL_IMAGE_TAG} - hostname: "consul2" - user: root - cap_add: - - SYS_PTRACE - volumes: - - 'consul-node2_data:/consul/data' - command: "agent -server -join consul1" - depends_on: - - consul1 - - consul3: - image: hashicorp/consul - hostname: "consul3" - user: root - cap_add: - - SYS_PTRACE - volumes: - - 'consul-node3_data:/consul/data' - - ./scripts/client_container_test.sh:/opt/scripts/coverage_script.sh - command: "agent -server -join consul1" - depends_on: - - consul1 - - consul4: - image: ${CONSUL_OFFICIAL_IMAGE_REPOSITORY}:${CONSUL_OFFICIAL_IMAGE_TAG} - hostname: "consul4" - user: root - cap_add: - - SYS_PTRACE - volumes: - - 'consul-node4_data:/consul/data' - - ./scripts/client_coverage_script.sh:/opt/scripts/coverage_script.sh - command: "agent -join consul1" - depends_on: - - consul1 - - consul2 - - consul3 - -volumes: - consul-node1_data: - driver: local - consul-node2_data: - driver: local - consul-node3_data: - driver: local - consul-node4_data: - driver: local diff --git a/community_images/consul/official/image.yml b/community_images/consul/official/image.yml deleted file mode 100755 index fccb0fdbbb..0000000000 --- a/community_images/consul/official/image.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: consul-official -official_name: Consul Official -official_website: https://www.consul.io/ -source_image_provider: HashiCorp -source_image_repo: docker.io/hashicorp/consul -source_image_repo_link: https://hub.docker.com/r/hashicorp/consul -source_image_readme: https://github.com/hashicorp/docker-base/blob/master/README.md -rf_docker_link: rapidfort/consul-official -image_workflow_name: consul_official -github_location: consul/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fhashicorp%2Fconsul -usage_instructions: | - # Running Consul in Server Mode - $ docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' rapidfort/consul-official agent -server -bind= -retry-join= -bootstrap-expect= - - # Running Consul in Client Mode - $ docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' rapidfort/consul-official agent -bind= -retry-join= -what_is_text: | - Consul is a service networking solution to automate network configurations, discover services, and enable secure connectivity across any cloud or runtime. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`1.15.4`, `1.15`, `latest`](https://github.com/hashicorp/docker-consul/blob/master/0.X/Dockerfile)" - - "[`1.14.0`, `1.14`](https://github.com/hashicorp/docker-consul/blob/da19183e0617a285e3dbc42ad5ebfdb4e61caa31/0.X/Dockerfile)" - - "[`1.13.3`, `1.13`](https://github.com/hashicorp/docker-consul/blob/f4f43d2534abcfc12f8aebf3c20e5339fdec384f/0.X/Dockerfile)" - - "[`1.12.6`, `1.12`](https://github.com/hashicorp/docker-consul/blob/dfb2da6631adfc68ce9a930bfd90b543c7ef69c9/0.X/Dockerfile)" -input_registry: - registry: docker.io - account: hashicorp -repo_sets: - - consul: - input_base_tag: "1.16.*" - output_repo: consul-official - - consul: - input_base_tag: "1.15.*" - output_repo: consul-official - - consul: - input_base_tag: "1.14.*" - output_repo: consul-official - - consul: - input_base_tag: "1.13.*" - output_repo: consul-official -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - consul-official: - repository: "CONSUL_OFFICIAL_IMAGE_REPOSITORY" - tag: "CONSUL_OFFICIAL_IMAGE_TAG" - - type: docker_compose - script: dc_acl_coverage.sh - compose_file: docker-compose-acl.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - consul-official: - repository: "CONSUL_OFFICIAL_IMAGE_REPOSITORY" - tag: "CONSUL_OFFICIAL_IMAGE_TAG" diff --git a/community_images/consul/official/scripts/client_container_test.sh b/community_images/consul/official/scripts/client_container_test.sh deleted file mode 100755 index 8b6db56981..0000000000 --- a/community_images/consul/official/scripts/client_container_test.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# The purpose of this script is to Query our service using DNS API through a client container(This doesn't run on the stubbed image) - -# Available Scripts -ls /opt/scripts - -# Installing dnsutils -apk add --update bind-tools - -# Query our service using HTTP Api -curl http://localhost:8500/v1/catalog/service/web - -# Checking for the healthy instances -curl 'http://localhost:8500/v1/health/service/web?passing' - -# Query our service using DNS API on consul-node-1 -dig consul-node1/8600 rails.web.service.consul SRV \ No newline at end of file diff --git a/community_images/consul/official/scripts/client_coverage_script.sh b/community_images/consul/official/scripts/client_coverage_script.sh deleted file mode 100755 index 40aa91f00f..0000000000 --- a/community_images/consul/official/scripts/client_coverage_script.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# Available Scripts -ls /opt/scripts - -# Checking version -consul version -format=json - -# Create client certs -consul tls ca create -consul tls cert create -client - -# Using consul debug -consul debug -interval=15s -duration=1m \ No newline at end of file diff --git a/community_images/consul/official/scripts/server_coverage_script.sh b/community_images/consul/official/scripts/server_coverage_script.sh deleted file mode 100755 index adc622b688..0000000000 --- a/community_images/consul/official/scripts/server_coverage_script.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# Available Scripts -ls /opt/scripts - -# General commands -consul members | tee -a members -SERVERS=$(grep -w "server" -c members) -CLIENTS=$(grep -w "client" -c members) -# Checking the members in the cluster -echo "Number of Servers Active = $SERVERS" -echo "Number of Clients Active = $CLIENTS" -rm members -consul info - -# Consul snapshot -consul snapshot save backup.snap -consul snapshot inspect backup.snap - -# Registering a test service(This will be deregistered in the main dc_coverage itselfS) -consul services register /consul.d/sample_service.json -consul reload -sleep 10 - -# Consul kv -consul kv put redis/config/connections 5 -consul kv get -detailed redis/config/connections | tee -a file -# To check the number of connections (Should be 5) -CONNECTIONS=$(grep "Value" file) -rm file -echo "$CONNECTIONS" -consul kv delete redis/config/connections - -# Consul Operator Raft -consul operator raft list-peers - -# Consul keygen -consul keygen - -# Consul Maint -consul maint - -# Consul Catalg -# List all datacenters: -consul catalog datacenters -# List all nodes and services -consul catalog nodes -consul catalog services \ No newline at end of file diff --git a/community_images/couchdb/bitnami/.rfignore b/community_images/couchdb/bitnami/.rfignore deleted file mode 100644 index 56f26b95a7..0000000000 --- a/community_images/couchdb/bitnami/.rfignore +++ /dev/null @@ -1,5 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/couchdb/licenses -opt/bitnami/licenses -usr/share/common-licenses -opt/bitnami/scripts \ No newline at end of file diff --git a/community_images/couchdb/bitnami/README.md b/community_images/couchdb/bitnami/README.md deleted file mode 100644 index c9eb0f80a8..0000000000 --- a/community_images/couchdb/bitnami/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Couchdb Database Server - -RapidFort’s container optimization process hardened this Couchdb Database Server container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Couchdb Database Server][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Couchdb Database Server? - -> Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang. CouchDB uses multiple formats and protocols to store, transfer, and process its data. It uses JSON to store data, JavaScript as its query language using MapReduce, and HTTP for an API. - - -[Overview of Couchdb Database Server](https://couchdb.apache.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Couchdb Database Server image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install couchdb, just replace repository with RapidFort registry -$ helm install my-couchdb bitnami/couchdb --set image.repository=rapidfort/couchdb - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Couchdb Database Server][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Couchdb Database Server][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/couchdb][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`3`, `3-debian-11`, `3.3.3`, `3.3.3-debian-11-r` (3/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/couchdb/3/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=couchdb&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fcouchdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fcouchdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fcouchdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fcouchdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fcouchdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/couchdb?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/couchdb?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/couchdb/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/couchdb/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/couchdb -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/couchdb diff --git a/community_images/couchdb/bitnami/assets/cve_reduction.webp b/community_images/couchdb/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 9c7ed98a1093682c92294d15e56bad50bbe5f599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1884 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Ω+_|da6Tix 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/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -function test_couchdb () { - CONTAINER_NAME=$1 - docker exec -i "${CONTAINER_NAME}" bash -c /opt/bitnami/scripts/host_coverage_script.sh - - # verify that CouchDB is available and installed correctly - echo "verify that CouchDB is available and installed correctly" - curl -X GET http://127.0.0.1:5984/ --user admin:couchdb --fail 2>&1 || echo "CouchDB didn't start properly" - - # list all the CouchDB databases - echo "list all the CouchDB databases" - curl -X GET http://127.0.0.1:5984/_all_dbs --user admin:couchdb --fail 2>&1 || echo "CouchDB didn't start properly" - - # create a CouchDB database - echo "create a CouchDB database" - curl -X PUT http://127.0.0.1:5984/reviews --user admin:couchdb --fail 2>&1 || echo "Failed to create CouchDB database" - - # try inserting into the CouchDB database - echo "try inserting into the CouchDB database" - out=$(curl -s -X PUT http://127.0.0.1:5984/reviews/01 -d '{"reviewer_name":"Ben", "stars":"4", "details":"Love the calzone!"}' --user admin:couchdb --fail 2>&1) || echo "Failed to insert data in CouchDB database" - rev=$(echo "${out}" | jq -r '.rev') - - # fetch record - echo "fetch a sample record from database" - curl -X GET http://127.0.0.1:5984/reviews/01 --user admin:couchdb --fail 2>&1 || echo "Failed to get CouchDB database record" - - # update the record - echo "update a sample record in database" - out=$(curl -s -X PUT http://127.0.0.1:5984/reviews/01 -d '{"_id":"01", "stars":"5", "_rev":"'"$rev"'"}' --user admin:couchdb --fail 2>&1) || echo "Failed to update the record" - rev=$(echo "${out}" | jq -r '.rev') - - # delete the db record - echo "delete a sample record from database" - curl -X DELETE http://127.0.0.1:5984/reviews/01?rev="${rev}" --user admin:couchdb --fail 2>&1 || echo "Failed to delete the record" - - # read the record again, it should be deleted - echo "read the record again, it should throw error" - curl -X GET http://127.0.0.1:5984/reviews/01 --user admin:couchdb --fail 2>&1 || echo "record got deleted" -} diff --git a/community_images/couchdb/bitnami/dc_coverage.sh b/community_images/couchdb/bitnami/dc_coverage.sh deleted file mode 100755 index c1ff1e27b5..0000000000 --- a/community_images/couchdb/bitnami/dc_coverage.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -# Container name for consul-node1 -CONTAINER_NAME="${PROJECT_NAME}"-couchdb-1 - -test_couchdb "${CONTAINER_NAME}" \ No newline at end of file diff --git a/community_images/couchdb/bitnami/docker-compose.yml b/community_images/couchdb/bitnami/docker-compose.yml deleted file mode 100644 index ffb350267b..0000000000 --- a/community_images/couchdb/bitnami/docker-compose.yml +++ /dev/null @@ -1,21 +0,0 @@ -version: '2' - -services: - couchdb: - image: ${COUCHDB_IMAGE_REPOSITORY}:${COUCHDB_IMAGE_TAG} - user: root - cap_add: - - SYS_PTRACE - environment: - - COUCHDB_USER=admin - - COUCHDB_PASSWORD=couchdb - ports: - - '5984:5984' - - '4369:4369' - - '9100:9100' - volumes: - - couchdb_data:/bitnami/couchdb - - ./host_coverage.sh:/opt/bitnami/scripts/host_coverage_script.sh -volumes: - couchdb_data: - driver: local diff --git a/community_images/couchdb/bitnami/host_coverage.sh b/community_images/couchdb/bitnami/host_coverage.sh deleted file mode 100755 index d4c542aeb9..0000000000 --- a/community_images/couchdb/bitnami/host_coverage.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -set -e -set -x - -couchjs -V || echo "couchjs didn't run properly" - -remsh -h || echo "couldn't run remsh" - -couchdb --version || echo "couldn't get couchdb version" - diff --git a/community_images/couchdb/bitnami/image.yml b/community_images/couchdb/bitnami/image.yml deleted file mode 100644 index d59a955d34..0000000000 --- a/community_images/couchdb/bitnami/image.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: couchdb -official_name: Couchdb Database Server -official_website: https://couchdb.apache.org/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/couchdb -source_image_repo_link: https://hub.docker.com/r/bitnami/couchdb -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/couchdb/README.md -rf_docker_link: rapidfort/couchdb -image_workflow_name: couchdb_bitnami -github_location: couchdb/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fcouchdb -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install couchdb, just replace repository with RapidFort registry - $ helm install my-couchdb bitnami/couchdb --set image.repository=rapidfort/couchdb -what_is_text: | - Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang. CouchDB uses multiple formats and protocols to store, transfer, and process its data. It uses JSON to store data, JavaScript as its query language using MapReduce, and HTTP for an API. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - couchdb: - input_base_tag: "3.3.2-debian-11-r" -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - couchdb: - repository: "COUCHDB_IMAGE_REPOSITORY" - tag: "COUCHDB_IMAGE_TAG" diff --git a/community_images/couchdb/ironbank/README.md b/community_images/couchdb/ironbank/README.md deleted file mode 100755 index 6224df2f11..0000000000 --- a/community_images/couchdb/ironbank/README.md +++ /dev/null @@ -1,138 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Couchdb Database Server IronBank - -RapidFort’s container optimization process hardened this Couchdb Database Server IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Couchdb Database Server IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Couchdb Database Server IronBank? - -> CouchDB is a database that uses JSON for documents, an HTTP API, & JavaScript/declarative indexing. - - -[Overview of Couchdb Database Server IronBank](https://couchdb.apache.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Couchdb Database Server IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run -d --name my-couchdb rapidfort/couchdb_3-ib:tag - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Couchdb Database Server IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One Couchdb Database Server IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/couchdb_3-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=couchdb-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fcouchdb_3?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fcouchdb_3?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fcouchdb_3?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fcouchdb_3?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fcouchdb_3?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/couchdb_3-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/couchdb_3-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/couchdb/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/couchdb/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fapache%2Fcouchdb_3 -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/couchdb_3-ib diff --git a/community_images/couchdb/ironbank/assets/cve_reduction.webp b/community_images/couchdb/ironbank/assets/cve_reduction.webp deleted file mode 100644 index fee62791daa002e0629ad60cab39ce694cbe5261..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1790 zcmb`Hdop%54S6fIjbXONNPe@w*-l4)v}ga>?>*n|{oL>U-t+z5$GM))j*enQ z0FFA?VZ1RY9~A(AKCHzEfCj+X-X5bV2M>Xqrp&I`2>_84L-BO7)A#Z9)0g=^OK@m( z)Mx%mj{rd24`2(xQ?swk|CdWS3>O^=2hGA7LxGb6fCz(G1OJJsG7kB~KgyWmp+~EIu@fBI6;Lt%-zKSuUB#Dqe*n9l^rA53EQK4LpGpu!H%3 zmF4p!vjIT82S7e+*%!hBpgt7<&4Fd#mLdSu7y#7uLj+y-vC{(2d%yIc$%5C=C#Ii;h6}d}$ePDn3wm}(;)ig=w%8v^Z zcQq)i@#ijc1p3L*VZD%Z#v->mmDULaO_cTBLYUk@$q2gRF}r#v)FOXxFq)E)@ZhpS zeqYMkG4~BE4vF{E_M6_rdiF#?v6BXkO!a={j8kJBLk(tC!dc07-~8?psz>DYBF-LC zf2mU$RgstTntuqlP%U4m924X+FW3zU-t5b1V5g$65fLFTHXG0UI_JlNSna%2Z7Xrj ztgFyuBpWjVBr(m%bwmjO(C^w!*5Mqx(m#E0RIPfnv`Y_*UBP(ejc$7!Z_{(%s50qh z;RsnmK3~T%?#_8IQOwfFinqEpT|JxBdtgIk{4YywZrj2G;|yuKI;cgLD{(1W%G3U( zdAH7tKl`Y5cKaH#wbo{oqRb>XNjdHc2&IIaiqP@+2Wu8{snCwEYYt-?Rdh)HHj^*5zcIJ0xwr8(w^Ss<95Q(WiH&?F6uB+bra; z^H_sC?>>%OWzDFYPT&(7HK}w}M4vT-d#;=O7&}4DNk{&FNUS69O^j+ii6{qn9LuT^*Pj@M7awboayJAE++hd;DbytC~HxET#8 zqj957`-14#YTco2jEWK zNqeb<8fheUMPt*3J89&B9X1CCk1HA%dpD5^b@oyMnvK)1zZOj6CkEvl-R1C;3utdW zKDD|mQet-{z@)I~`W^qV%53wQQHQR8`85@N3X@9Uz&dF~a-p3_Sbz*#TQYCqs;Zdc z15G(_@^Mz?;uC+IWuK{;@{kR BxeovU diff --git a/community_images/couchdb/ironbank/assets/metrics.webp b/community_images/couchdb/ironbank/assets/metrics.webp deleted file mode 100644 index 2b2a01d0219a7cee37a1b3c5cfd9912dd000515b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25958 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 WO6X%MO6X%MO6c|27@0h9Bme;FqH{+8 diff --git a/community_images/couchdb/ironbank/coverage.sh b/community_images/couchdb/ironbank/coverage.sh deleted file mode 100755 index d9bdca4502..0000000000 --- a/community_images/couchdb/ironbank/coverage.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -set -e -set -x - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -function test_couchdb () { - CONTAINER_NAME=$1 - docker exec -i "${CONTAINER_NAME}" bash -c /opt/bitnami/scripts/host_coverage_script.sh - - # verify that CouchDB is available and installed correctly - echo "verify that CouchDB is available and installed correctly" - curl -X GET http://127.0.0.1:5984/ --user admin:couchdb --fail 2>&1 || echo "CouchDB didn't start properly" - - # list all the CouchDB databases - echo "list all the CouchDB databases" - curl -X GET http://127.0.0.1:5984/_all_dbs --user admin:couchdb --fail 2>&1 || echo "CouchDB didn't start properly" - - # create a CouchDB database - echo "create a CouchDB database" - curl -X PUT http://127.0.0.1:5984/reviews --user admin:couchdb --fail 2>&1 || echo "Failed to create CouchDB database" - - # try inserting into the CouchDB database - echo "try inserting into the CouchDB database" - out=$(curl -s -X PUT http://127.0.0.1:5984/reviews/01 -d '{"reviewer_name":"Ben", "stars":"4", "details":"Love the calzone!"}' --user admin:couchdb --fail 2>&1) || echo "Failed to insert data in CouchDB database" - rev=$(echo "${out}" | jq -r '.rev') - - # fetch record - echo "fetch a sample record from database" - curl -X GET http://127.0.0.1:5984/reviews/01 --user admin:couchdb --fail 2>&1 || echo "Failed to get CouchDB database record" - - # update the record - echo "update a sample record in database" - out=$(curl -s -X PUT http://127.0.0.1:5984/reviews/01 -d '{"_id":"01", "stars":"5", "_rev":"'"$rev"'"}' --user admin:couchdb --fail 2>&1) || echo "Failed to update the record" - rev=$(echo "${out}" | jq -r '.rev') - - # delete the db record - echo "delete a sample record from database" - curl -X DELETE http://127.0.0.1:5984/reviews/01?rev="${rev}" --user admin:couchdb --fail 2>&1 || echo "Failed to delete the record" - - # read the record again, it should be deleted - echo "read the record again, it should throw error" - curl -X GET http://127.0.0.1:5984/reviews/01 --user admin:couchdb --fail 2>&1 || echo "record got deleted" -} diff --git a/community_images/couchdb/ironbank/dc_coverage.sh b/community_images/couchdb/ironbank/dc_coverage.sh deleted file mode 100755 index c1ff1e27b5..0000000000 --- a/community_images/couchdb/ironbank/dc_coverage.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -# Container name for consul-node1 -CONTAINER_NAME="${PROJECT_NAME}"-couchdb-1 - -test_couchdb "${CONTAINER_NAME}" \ No newline at end of file diff --git a/community_images/couchdb/ironbank/docker-compose.yml b/community_images/couchdb/ironbank/docker-compose.yml deleted file mode 100755 index 61e729cc94..0000000000 --- a/community_images/couchdb/ironbank/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -version: '2' - -services: - couchdb: - image: ${COUCHDB_IMAGE_REPOSITORY}:${COUCHDB_IMAGE_TAG} - cap_add: - - SYS_PTRACE - environment: - - COUCHDB_USER=admin - - COUCHDB_PASSWORD=couchdb - ports: - - '5984:5984' - - '4369:4369' - - '9100:9100' - volumes: - - couchdb_data:/opt/couchdb/data - - ./host_coverage.sh:/opt/bitnami/scripts/host_coverage_script.sh -volumes: - couchdb_data: - driver: local diff --git a/community_images/couchdb/ironbank/host_coverage.sh b/community_images/couchdb/ironbank/host_coverage.sh deleted file mode 100755 index 978cde805e..0000000000 --- a/community_images/couchdb/ironbank/host_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -e -set -x - -/opt/couchdb/bin/couchjs -V || echo "couchjs didn't run properly" - -/opt/couchdb/bin/remsh -h || echo "couldn't run remsh" - -/opt/couchdb/bin/couchdb --version || echo "couldn't get couchdb version" diff --git a/community_images/couchdb/ironbank/image.yml b/community_images/couchdb/ironbank/image.yml deleted file mode 100755 index b1083bd4ad..0000000000 --- a/community_images/couchdb/ironbank/image.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: couchdb-ib -official_name: Couchdb Database Server IronBank -official_website: https://couchdb.apache.org/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/apache/couchdb_3 -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fapache%2Fcouchdb_3 -source_image_readme: https://repo1.dso.mil/dsop/opensource/apache/couchdb_3/-/blob/development/README.md -rf_docker_link: rapidfort/couchdb_3-ib -image_workflow_name: couchdb_ironbank -github_location: couchdb/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fcouchdb_3 -usage_instructions: | - $ docker run -d --name my-couchdb rapidfort/couchdb_3-ib:tag -what_is_text: | - CouchDB is a database that uses JSON for documents, an HTTP API, & JavaScript/declarative indexing. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/apache/couchdb_3: - input_base_tag: "3." - output_repo: couchdb_3-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - couchdb_3-ib: - repository: "COUCHDB_IMAGE_REPOSITORY" - tag: "COUCHDB_IMAGE_TAG" diff --git a/community_images/couchdb/official/.rfignore b/community_images/couchdb/official/.rfignore deleted file mode 100644 index 1c799e0088..0000000000 --- a/community_images/couchdb/official/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/common-licenses \ No newline at end of file diff --git a/community_images/couchdb/official/README.md b/community_images/couchdb/official/README.md deleted file mode 100644 index 7305a61e40..0000000000 --- a/community_images/couchdb/official/README.md +++ /dev/null @@ -1,138 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Couchdb Database Server Official - -RapidFort’s container optimization process hardened this Couchdb Database Server Official container. This container is free to use and has no license limitations. - -It is the same as the [The Docker Community Couchdb Database Server Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Couchdb Database Server Official? - -> CouchDB is a database that uses JSON for documents, an HTTP API, & JavaScript/declarative indexing. - - -[Overview of Couchdb Database Server Official](https://couchdb.apache.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Couchdb Database Server Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run -d --name my-couchdb rapidfort/couchdb-official:tag - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [The Docker Community Couchdb Database Server Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [The Docker Community Couchdb Database Server Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/couchdb-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=couchdb-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fcouchdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fcouchdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fcouchdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fcouchdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fcouchdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=couchdb-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/couchdb-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/couchdb-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/couchdb/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/couchdb/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/couchdb -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/couchdb-official diff --git a/community_images/couchdb/official/assets/cve_reduction.webp b/community_images/couchdb/official/assets/cve_reduction.webp deleted file mode 100644 index 3bba9edb2f6e7d88a156ad0a54aea166c60a0c1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1826 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

fD)w_Gt%=*;L1wD!TCwT}#D4jHS# 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 Xp~vXSzqXZy;teN8JBsdrPyhe`6SAnd diff --git a/community_images/couchdb/official/coverage.sh b/community_images/couchdb/official/coverage.sh deleted file mode 100755 index d9bdca4502..0000000000 --- a/community_images/couchdb/official/coverage.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -set -e -set -x - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -function test_couchdb () { - CONTAINER_NAME=$1 - docker exec -i "${CONTAINER_NAME}" bash -c /opt/bitnami/scripts/host_coverage_script.sh - - # verify that CouchDB is available and installed correctly - echo "verify that CouchDB is available and installed correctly" - curl -X GET http://127.0.0.1:5984/ --user admin:couchdb --fail 2>&1 || echo "CouchDB didn't start properly" - - # list all the CouchDB databases - echo "list all the CouchDB databases" - curl -X GET http://127.0.0.1:5984/_all_dbs --user admin:couchdb --fail 2>&1 || echo "CouchDB didn't start properly" - - # create a CouchDB database - echo "create a CouchDB database" - curl -X PUT http://127.0.0.1:5984/reviews --user admin:couchdb --fail 2>&1 || echo "Failed to create CouchDB database" - - # try inserting into the CouchDB database - echo "try inserting into the CouchDB database" - out=$(curl -s -X PUT http://127.0.0.1:5984/reviews/01 -d '{"reviewer_name":"Ben", "stars":"4", "details":"Love the calzone!"}' --user admin:couchdb --fail 2>&1) || echo "Failed to insert data in CouchDB database" - rev=$(echo "${out}" | jq -r '.rev') - - # fetch record - echo "fetch a sample record from database" - curl -X GET http://127.0.0.1:5984/reviews/01 --user admin:couchdb --fail 2>&1 || echo "Failed to get CouchDB database record" - - # update the record - echo "update a sample record in database" - out=$(curl -s -X PUT http://127.0.0.1:5984/reviews/01 -d '{"_id":"01", "stars":"5", "_rev":"'"$rev"'"}' --user admin:couchdb --fail 2>&1) || echo "Failed to update the record" - rev=$(echo "${out}" | jq -r '.rev') - - # delete the db record - echo "delete a sample record from database" - curl -X DELETE http://127.0.0.1:5984/reviews/01?rev="${rev}" --user admin:couchdb --fail 2>&1 || echo "Failed to delete the record" - - # read the record again, it should be deleted - echo "read the record again, it should throw error" - curl -X GET http://127.0.0.1:5984/reviews/01 --user admin:couchdb --fail 2>&1 || echo "record got deleted" -} diff --git a/community_images/couchdb/official/dc_coverage.sh b/community_images/couchdb/official/dc_coverage.sh deleted file mode 100755 index c1ff1e27b5..0000000000 --- a/community_images/couchdb/official/dc_coverage.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -# Container name for consul-node1 -CONTAINER_NAME="${PROJECT_NAME}"-couchdb-1 - -test_couchdb "${CONTAINER_NAME}" \ No newline at end of file diff --git a/community_images/couchdb/official/docker-compose.yml b/community_images/couchdb/official/docker-compose.yml deleted file mode 100644 index 6feb210881..0000000000 --- a/community_images/couchdb/official/docker-compose.yml +++ /dev/null @@ -1,21 +0,0 @@ -version: '2' - -services: - couchdb: - image: ${COUCHDB_IMAGE_REPOSITORY}:${COUCHDB_IMAGE_TAG} - user: root - cap_add: - - SYS_PTRACE - environment: - - COUCHDB_USER=admin - - COUCHDB_PASSWORD=couchdb - ports: - - '5984:5984' - - '4369:4369' - - '9100:9100' - volumes: - - couchdb_data:/opt/couchdb/data - - ./host_coverage.sh:/opt/bitnami/scripts/host_coverage_script.sh -volumes: - couchdb_data: - driver: local diff --git a/community_images/couchdb/official/host_coverage.sh b/community_images/couchdb/official/host_coverage.sh deleted file mode 100755 index 978cde805e..0000000000 --- a/community_images/couchdb/official/host_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -e -set -x - -/opt/couchdb/bin/couchjs -V || echo "couchjs didn't run properly" - -/opt/couchdb/bin/remsh -h || echo "couldn't run remsh" - -/opt/couchdb/bin/couchdb --version || echo "couldn't get couchdb version" diff --git a/community_images/couchdb/official/image.yml b/community_images/couchdb/official/image.yml deleted file mode 100644 index 9d7f584e26..0000000000 --- a/community_images/couchdb/official/image.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: couchdb-official -official_name: Couchdb Database Server Official -official_website: https://couchdb.apache.org/ -source_image_provider: The Docker Community -source_image_repo: docker.io/library/couchdb -source_image_repo_link: https://hub.docker.com/_/couchdb -source_image_readme: https://github.com/apache/couchdb-docker/blob/main/README.md -rf_docker_link: rapidfort/couchdb-official -image_workflow_name: couchdb_official -github_location: couchdb/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fcouchdb -usage_instructions: | - $ docker run -d --name my-couchdb rapidfort/couchdb-official:tag -what_is_text: | - CouchDB is a database that uses JSON for documents, an HTTP API, & JavaScript/declarative indexing. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: library -repo_sets: - - couchdb: - input_base_tag: "3.2." - output_repo: couchdb-official - - couchdb: - input_base_tag: "3.1." - output_repo: couchdb-official - - couchdb: - input_base_tag: "2.3." - output_repo: couchdb-official -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - couchdb-official: - repository: "COUCHDB_IMAGE_REPOSITORY" - tag: "COUCHDB_IMAGE_TAG" diff --git a/community_images/curl/curlimages/README.md b/community_images/curl/curlimages/README.md deleted file mode 100644 index f82d5759e6..0000000000 --- a/community_images/curl/curlimages/README.md +++ /dev/null @@ -1,153 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Curl - -RapidFort’s container optimization process hardened this Curl container. This container is free to use and has no license limitations. - -It is the same as the [curlimages Curl][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Curl? - -> curl is a command line tool and library for transferring data with URLs. - -curl is used in command lines or scripts to transfer data. It is also used in cars, television sets, routers, printers, audio equipment, mobile phones, tablets, settop boxes, media players and is the internet transfer backbone for thousands of software applications affecting billions of humans daily. -Supports the following protocols (so far!):. -DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, HTTP/2, cookies, user+password authentication (Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos), file transfer resume, proxy tunnelling and more. - - -[Overview of Curl](https://github.com/curl/curl-docker) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Curl image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Check everything works properly by running: - -$ docker run --rm rapidfort/curl:latest --version - -# Here is a more specific example of running curl docker container: - -$ docker run --rm rapidfort/curl:latest -L -v https://curl.haxx.se - -# To work with files it is best to mount directory: - -$ docker run --rm -it -v "$PWD:/work" rapidfort/curl -d@/work/test.txt https://httpbin.org/post - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [curlimages Curl][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [curlimages Curl][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/curl][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`7.xx.x`, `latest` (latest/Dockerfile)](https://github.com/curl/curl-docker/blob/master/alpine/latest/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=curl&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fcurlimages%2Fcurl?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=curl&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fcurlimages%2Fcurl?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=curl&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fcurlimages%2Fcurl?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=curl&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fcurlimages%2Fcurl?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=curl&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fcurlimages%2Fcurl?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=curl&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/curl?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/curl?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/curl/curlimages/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/curl/curlimages/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/curlimages/curl -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/curl diff --git a/community_images/curl/curlimages/assets/cve_reduction.webp b/community_images/curl/curlimages/assets/cve_reduction.webp deleted file mode 100644 index 369cbb0b8be24422b04f0f8e9306cafae029fa4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 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

}K)zGk$fdk+iwGoi3i|1)9d?iHgk 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 -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for ElasticSearch - -RapidFort’s container optimization process hardened this ElasticSearch container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami ElasticSearch][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is ElasticSearch? - -> Elasticsearch is a distributed search and analytics engine. It is used for web search, log monitoring, and real-time analytics. Ideal for Big Data applications. - - -[Overview of ElasticSearch](https://www.elastic.co/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened ElasticSearch image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install elasticsearch, just replace repository with RapidFort registry -$ helm install my-elasticsearch bitnami/elasticsearch --set image.repository=rapidfort/elasticsearch - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami ElasticSearch][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami ElasticSearch][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/elasticsearch][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`8`, `8-debian-11`, `8.11.2`, `8.11.2-debian-11-r` (8/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/elasticsearch/8/debian-11/Dockerfile) -* [`7`, `7-debian-11`, `7.17.15`, `7.17.15-debian-11-r` (7/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/elasticsearch/7/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=elasticsearch&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Felasticsearch?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=elasticsearch&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Felasticsearch?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=elasticsearch&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Felasticsearch?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=elasticsearch&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Felasticsearch?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=elasticsearch&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Felasticsearch?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=elasticsearch&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/elasticsearch?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/elasticsearch?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/elasticsearch/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/elasticsearch/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/elasticsearch -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/elasticsearch diff --git a/community_images/elasticsearch/bitnami/assets/cve_reduction.webp b/community_images/elasticsearch/bitnami/assets/cve_reduction.webp deleted file mode 100644 index c94a7fe6fec89ae47b57dc613ebd6e51b17d5dd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1652 zcmb`HXHe5g6u_5yfFNivpdgnMj95S^MhH!a(jvteAV~2jfn$IqCgBK0f;2^>s7F-< zkr7Zt0THPxo`|4^J4&$7jzB^YjxG?w{iEaH2XF4ny`A^=w{PFhds}94HkOt_k^s0I zwQzKHG$6)N~c1}0TA(pSkeCrGlcB@g)a)3ipOD~n0$ye z{l8)FZ#a}rp+hk(!gwDFRmdM8HVzI75#|z#uwq#v$>{{t6ChOuG=KwEzyjj`Ro2gw zTmXQpt&n0IK5wP=2@W)5r%vJ`R9~EQ%M^>vJ*UkQMdw17M~I06A9xVC?|N zxP2{jeeL>P{L5Yu&>B@}pJb@{gCIZz2w($9zz1kUqzeuJ9e{#f3_=^qd4D^|71>iD zau}EfqcW^D)OY-}E3`N*S}u`D>h)wF@HN@4rX>;3hz zXa;Kz#o~6TJDd%&K_&&~WUk+s4t;9`Z)&x4EsBX7QpIqo+Rd!zMw$jPY^ey2fZ8S1F zyjFvhIl7y>qd~A1J8)J-IXtxGt|6|Qt(VIjxl@drMGZElcH!fKTXn6OJWc3P{&*n^ zrjz8pA`91f;n9L@ULBY$F-a-vFkOw`oo=Jp62}l&Tm;Shxnw2u$Wo4%_+fH@BoUch4Uy|U3>YO-~l+jsT{yIbJ&^Az_juKjhYsBj$Zq_*FsMI-5E zwqH7uzskpzj1q9pidONJ$>ja6;|Z?wM6t4u zgcaXIL>|d9XY%-Uj2^0Q(We8(mhzG^4ii_!uw*8=L$wJ z4S_#ZvUzM|f;nzuGMs_x3L$k)Wz+9IQhBlAY}Z!(v8H(@KjBbV_@3ORN?(USu4pRd zw}nX2w7I@8p8MFc^)pnL)A^GU=USUFprGw^b)sDb-bkO_8^}R(1PQ&v>OEL1L9HI6 zE@n1g^2v}xa3y>RZ}P`4w0zUFP%L$z%S~(d^5EN%G)cdZ>0nZdYU<9>&QkvzaS>Ak zdV<;LqpTUm4fLImNxdUk&skYCU zEZ4a*jZfz!$X{l&rxFdXXz8iQNg>{7)bOvdX<`eb@aH**6)e(vx-&yIfG7QHlMWRY WSf1ZjDsHG0jm#=Lnu~_Mm45)K-Dz6@ diff --git a/community_images/elasticsearch/bitnami/assets/metrics.webp b/community_images/elasticsearch/bitnami/assets/metrics.webp deleted file mode 100644 index c3092c854e7fb68a5a875ed200f8053f69093f42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22538 zcmb@sW0WRAw=VdWZFZSm>ay)F+qP}nMwe}?%eHOXw)IYbbMCoke%x8}XChZbJh^i# zA~W~S$V^3v-@ifC0RS~oA$e7K4s}=n06_Gwsz3qy0RRbMVR>xOf4cxs?Ekdj3;=+Q zt+S(|m=KY=h9=Q}X#ZUdjGXNM8~-1A5CGtL8St+K02XNf56Az%NHE4GPDcNjZvRzh z$A88F01)GU7~Sl@u={_o;eX-i|6oUDMd5!udH*n_+5ZC@{y(srv%T{_p3(pC8`(Sl z2XFqvJT}%Y|FQL-@*j`kO>9+^{`LRn34jN10w@B+07C!p|F7kL=F_eK0N{860Knq^ zhh~@#0JMYv0NCsQLnF%r0FZ(KfaV!{14o1Z+ZphGEvTs}0B~Ol03c`p0BExS0Ib%3 zJNiGe|8p+>U&c!GPX_PbIPLyzW&mq|34jP70k8!a0qFiACIAC~5y1BEiXj?Q0RZd` zL9#)pRiOp|d^Rj85@aL=B&3XIW&Q{eX103{=oy;T&M!OXz_y)5F1(kIbHY-;S|2js zsM+qq``tU>9RDdW{Ilil3xP z`mMBBdyuQo_w=>!T>E}o!W<6IByj&^&IY!aE5;oXbWTqj(oA_?p*Pw>uvG_KU?1UU+kU;clb^J*?Io< z_rw2=`?mYoxq*7~0|Gz0-+(ILNDnh}FSk2q{6@Y2zdt}-V8l1+r`}c1{K=i)v){O1 z##hR7_1nv<-22Y4-^%y8Pp}{3cQFv{vPxe}32+eTjd(C||cxQ^5foodg@}o zj@yAuu^y5@`nze}-*D9~d<8J=6=;h@yBJH3=V2p9Jw^wvLN8X?#q8>i1qc6`KjvU-D#@ z3rX|ajV=RC!FvSDY}n+CahH0d&rlqusDM}8GdKEVCV!~5O1|N@$R4_}6lCXUy!l@g zPV_`KSuaFLp>DLR3-SpqqjiEAXOT0goUVxM69!jwi+2;QC^oJ^zSQr5XmZ?45H^#i zqTR`(4eEORukb!tk|`ISL%ItA+ll$RYAPvELCFxLbkq7>m2aC5Yrrw_(5ps)_n1GYaww@OkxCvitO# zJcwIVGg?UFsYY=keR6#swb40!;p2rwpf2oRkS9vYKY5wDdRnl)(F8>-0)y);=#EYO zwr$|kMMjpgnAoLPv^^K2arX)fEnDDEUxV~nUk7zW8r+El7e%3cL2A%u(72X@$Z~yP z8(r{}7BV){F)WtB*7*~9-9pfq0vWmb^!mJYK%n8uVF+*GUbR~o?Ew)IOg+d*q0 zM;&kf7Syq))f9DwdPLF7&-LFRYfoo!1W{K>WhRq$1sCr0?o2~iR+V6FsEIl&pELcV*qH~HM%Q?W_PJb5ba@q;TpkZcjsgf zh~jN0q3!7~tro3XEV|LXM-_T)+|)qyZzzE|{l^OX(np3D-A_h`Jo?}jnN+M&RSw)t zXEY=|weaT&qMf`P*co=|l=vmcD3G6{vvXr_!|Wv`5F9X?j#CM1g-REj2HKZ>!g8n> z*rm?#W-I5SQS4tH3NFp0+7u8S;n2j8jku9LYn!o>W)*g}ATPBepJ|s~>GowCR`MHV zsKw@6)?~-Uqk518+g^V(eA2}4$TB&i@Us?=Hj+EbxpA#oEv9X4BJ4|}MF-SP8yuLE zN%$Zt%KXJ%V@-b6!9n}!AO)0r6);#Eb_P`pm!57>vg6VD;Ef()w+@_DznGrYPDp`n z!rZ%z^(;xJw==26zH{PUI^_s6Xv8cvo#wz5DaN!;+R1_ZbtBvW-uR zWmyh!2&Zv)9+Y`=hXS@zO6*l`Uq+&sLLOzo$iWsWx~Qpze?NWDh5A`Qn_zwhn>37b z#S8z3)R)c@by5F8{%98_m@?gTL>u`a(bz=2hLr~i#oMkdTg+Wxoe$=h&H#E1mDKY& zGAdAi`M|wwZQ~EaVE&&z8K_O~z>fQC)5cMcNFtkM9nUV3gRmd#wU~~}M6k(nS#e2o zsjHs&-(LFuuo!UO%mcXU?cB!tj&h^AHvHi+$_5F|u}l>eS5(wPxkYegZRLE*P2ifi zUT!`*@faOO+WUpF*-tlsW#Dv_=7=Djc z^-@9A_P*gD%O3$2J%S1aT2m&Fn8zH1iE}K2uN7+T#--0d}?GrC0&h+ zA;hRcNlr}j)D6Rn)%(*Kp2ch|6aBplYNqyL0*{s}1Ha`eZc$L?Lv4WTV;b5B7d{t* zn(*ctUT{9W059-0V8u0ZMUib`xPd+@E6kzY~$!pv8OGQklGsfHY2Os1Yh`G_g(cs zG7hqUh_s6e1!E6U>EFic?ELu4aAQZbiO;r}M;+=PpBX<_1%HVfXEtPGC>bcgLl3wr zGd_)UzFNx2E4cFfKx_U4fflx1G*E9-D-@#g_Y?BPJ0ta={v{eX*SZLlU!lpl%w(#rRAKYK)H~sxw(GD`ef*1yQN_Y^M*k98+9TbRa~FN@ca<=0MzvbN zA6SG7+d&i&&77CHPD&42h&;Axj%Hd{?^8>TkE?+Ht?2l9jcE;p=>u_WeJ~ zl^I+z;3uK1VD9bl3+R*?|1+ll&=nC6A}mC^LYXS@l2$D5);k?_zbZ#8@5W?YYd%xc z@x0sesC>-xKGwcG{d99zN}taD3nb};;F%t!k8hY{`Rx$CjC|bzz5g3P^n>#1f<7*q ziH03CxnJpWtHmz;H<%Ljx>5xIzUSRp5I`#(IL1^mXU(~ph0cFdq_qkBuV-?UU9N(H zcq>7dQd7Spj@Z2FLBXRUY;_>YRh8L|3!Gm0EqHE`1dbqT=h3ie)WrKC007;9{}ooI|6}D z&i*$O3N#NO_@e?pMopkZvr+zf!|eQPFaBGuv9oM7Q4INf=nE)~GT7`*D!TJUS~esf zLyT9Aou4#M}?FJ%F|Knrwu4$f}|LPQJ#zPo+F+D~ixy(zFVv*>Hhj$Vv4 zz0a}8^WgY%t%|sD{wK>0>k&A*18vQ%(4-s_Vte0eic12|F^||fG6>t~nQo7``r;Qk zGimCb%lD!MAYyWX+JKh8K%hA;ael9kBQ3Ao%06IJZlisd@75P<0~{>PZd^iel#pc` z%?YU?)wc?>?c1ghr~J|JPRE&=mr3Gsp9!*1hMJJh)q;qZwC@KC#bkG5!Cjn7hqf`T z^x>-=x}E;d^3*@v_G8F&-=^H9NHK?r@}YYDP*OI&Lm*f#sFJE+HlPEo=Q?>%n(kLe zn70{^_jN@#@d?TO?gwa`sSB-cMkVBY`_SyQbjuu61PKEzxE|me$>ugl1i$Wt0}IBv zezRvAObGTl_w*YX>fNSf>l4*H7ZgUk&(O(nCYGel$!^D5ZYU5jersNapfVJvm%tFz z-8uUGEaJBqKziWt@A8W6k4L^dR$eZ9UI<_&lch8}J0T?fJyNI2Lk4FFZrv12lk^gN z0`<1PnGW?nzr=)?m`ICa_LJ63@$H(F4w-P)gbEf)qSt@GR<^_yh33#cmyX%EbO!sZ{_95 zOh_Fu;c-?{!ju?R{Cg?dLYfq;@7#aMQM;i$7;I2O^gX7ZBN&cz%r+;8h^KW7m2%Dq ztj`&>Kb5pXE;b(F9GfYBvpk9O*??1OHyN!(`(*O^^E?HjW@?AINZx#NjT7$X>a1+? z+&Mp6rdsE&@7D{q%v`M@=&3d%llg$2NnC|r4FOKCVb6?$b=WZIwaoLjVTyVFgYO8m zQi#Ru0B>h@d*qy=s`{H&-ndnw6Q4^I{!qbs@DtD;j_GQB?pYh zb>{VFvqD+ad%Agi$y`Ek+vEFm)t3p|a+ERNb-g8$6z_P)PQmN)8AMXjo4}fZ@kF3| zOjLzIp+^jcP_n1EYQQ5tw-~;s_+y)7$e}K@kcAtWzib7=E62k`U+sd-hf!~sw4DJd zIr#O2|F}mBXVK5AMaLu6%S3Ub&$}RM^qZg5Ed+(jpAUdNS7O_mNu_aHIcZRY8n-@C zhk)PjQy&S;f^ird70U)3RCh!@3ylsdMR8I|WxArf!9PC$gd~G;!r9mTeWCwNRwDmRFX3XTpzRwL-Wv zf`9wZjSfFZ;8lNU=CC2HNIGhhUD5K794xROOGUi49|DKgP4|UoDKx5nF@Ny{xjYU< zAI|x@nU6R0MA908QJnr07;=5ZJPD=ur99-sP9WhL$S6jpBIR>x#raaSS3LEwH<(_` zOa!{$&UlNT42e5uwDW;K`iI3t?id*C88l67cm~!e`f%(u6c(UQ+l>m6*)tKgQ^^?3 z^dNDao!IcjESgH;gSu69d!Mp1%A4&T!nxyPPLf9-)VX1`%Jq}uzV=8JF&`5618*(W zHc6{A2OgH?zBlvPoYmjEzebNyvB&Z7p(s>Y5%nOMI;LGpCW#mUaTv@+#V!+%F1Y>k z;JzYVmkU)L-kmriEobP7kuZo(KPnABF95SXtU-l~=aDK@c3Z=Lj9dy?j~X7-4Nw!!&U46$e`-En%8u^ll|*~35LhTI+jGnF+# z(wqOg_1ZL|Qtg~3!JQbUcr(F>)~m7#+328rig?=_Q6cWxfb!3%1-#&&nvM*#>!=QM zn$yv2e7&!-Rw?-ph0@dIRxMASC|`ABIcPXe45C5w_AZrkun(SEKTedcr+#|L5eS(J zGVwyuXe3aA@CJD1tys>L$=&02lex}-{J$jIcXzv$ot_aLx^0lj!fu4x^^r6!ia4MA zO4v1|BbcX6;M5dV32rQYG^Rh*KZ+Cg|5w(-qz8*^%MBNi$*eMeihdmuG|R=yDKAdo ziVumhjl0*Z$MCXTwfYK`ipjidqvNqyLhEYJX*)W`j03lV`s*w+JgMjKhc(aTdZgYz z`-OLe8$lc028x@|B0Z1FKn1%0If(oeT_aWZYg4_f966;fbZS4YErS?|R5n5>e+L2U z0ryT@`%?PTGzf#K14Wa_V^G*r4>iHE=@O?@__EE*y9KXA}xj1W1_X5Qd<+4%jUXE8;Ue^I*SHnmW4zv zwsE9COGqd-Bqk&ZkFky%aQq3Fbf_JQSLa9Ah6`aYQFCI!_-kahea5OhFX-BYNh?up zQ_l8`K)m5@tGm-!a6hc?f>pZo9)S2)Y1FkyDIMH1b=17W#m|cCK(wWAP>sxv3{?>JbCT~SPFwI!wtrlnbI2-(sNt0R6_{(xP@@)ubq)?(@# z-TueTs)gwJ+@;wBL^G+9s{B%5w4kz}7z0o-AecG*AU=D~c46WbPHAL91q=Qq&tUW- zMr%c-C^lV|PF=hB(b8^c&eH|EBbla9IgAK~g=fZ57VBq0-t<0CkD%@+M%UE5IhHaD zLg$8wYsj2(FF)z*YzG4fKnoFOph;bmB4$liK(Z_4m@K;PSMDyA!&X~>GF?O9E?x#6 zZ%>5cb``JTajZaCoz1EWE2;jMUN!vpZf{;nMVGM^VJoIG$5@)hufLBp+(^CRmTY!- zTcdz&?+vc0rLD8%1~aFETI^HOa4Mfg{o!B|zvraysep-Fp_3|vMI8Z4#T_*&m%HEl zC1*in#%l2)Y)Ark1y}AolYbVcMrCkl!6KW`o~24&M9(EXU=AbIu78k2D|^R#MV8>o z_Sf3sT?+c|hmHGi`VjHoZ`&cnKC@;t*!>|wXh?OgGk2y_?S{Y1%Tf0z_8Ahj(h=-y z3E)a+yZ}GUwyM;o)%X8<2xxtIuTj(AtY>{TV}*>xO5S(k9ly;h)xxYPZ}YlTp*7N$ z7KRZlU@1A!qidP1tF=sVmP8`tGA-7R@2l+1zRl^mBjjrMCAk=&4M%HEcPV8%Ml`q9 zk_Qgb>twyzFEA#t{R5ob)njXh$oBG$m;nEU2>kAjYfMO#Y8aXn^5<6n!khOtmaW3` zd|kxRidB}a!;uTiHQZJ+LgW`)hZ^&bTFw%7M8^_0!C2Ohu1P`gPEx1?UjO|yLN7tM z(ibsv+cpQsttRAHXgJg>r>oF8y^XhihYKU#t!E+eO%f4KR}iTE^}i|xG(~28QZIZ_ zfg_yqfd=c&8^0CNCO;@FsQokD&J3K9mP9A@eCSG=7Xwh+-D} zsub`mj3qeLGog{;P@C8Lm&uN>G^uRP>bIp=D3l&k5-WN&%(_$_0CnN(R{OY^(K66h zrA8}2b-)W{oox6q676I!rdCFDc8#l_xD^Ho6Gz({dR*xR2By6g$jW_fA4xrOqybtF zXAjr|8Tph@d>m|b(*{HNOv*3(`uusO4>P|-K_0I2O6uYJ`x?7C8Ya|1`&UXNg2jev zQcAVUr^8?JY;>Q8-MKc&1MiSi*#nRSXh)SJJsJ#uHMqrXiqS}p+@Bhsnh+zKRu%Hz zktNc$G!A)Vs;8?*kNV2XXP412EFqhcdTBpOWW^tX7`7;jqgjx)S~v=Q>7r%I3dX8z zFN8OvqTb93c-wl#o#xj~H@bJrQmTH``Qh<9m=Rlj|1ix{VjYU7GRD7>cc3?7n%BTK zomz8ow1#Hib0+C{sk{l&5M+SaS^0ShmP6KEMZ0E44!)^f{F{V@x-vJjR`xkEZ%5;g zojp3&4|!z5D;r!Rm>#1Tupwt=^lg*^)E3|qM|}5+tLy{dQ_-r7@DXQgff4m&C@v-! zzeHRccUrU9H+M{pIcU-ZHZU2;tM4sGveLweqaH^#@6?Ib(e?moH>xD(CfEGa+VkME zVMLcO9%8yg`P^Ha{x*>%WU2s92>$ep0q1iG1yZA{KAM+=_#1Tb?*1~237&#xJY=&l zY~dlfbb^OzlX-;bWKe{D!ioBPVc zQ%~(G_?-i_2RmvY>crOrk&+HU>6}hg?Fl>3sN&?NO`PohUYif_b-`{!<3D86na6`3 z${&iXh=BE={KS`ioe|u6ll{R3{1*vn=zcqj#j~F#XH*R3V)Ipw%*rygMGTD1z+Inu zBl+ZKX4Ue3u_h@CdD3t{iANoUFsVRsZUfS<@*|GJ;<~s`5+Y1sn@i=x|E}oe785;4 z8X5+?fKZOFm{q@7k#H+7t%3LpMw(yl0NG`b1AI+x=6y`T?%Tw~ns14q(`(3v{y6;r z&kE(Ho{Db9FvTL`Cy)K~=Kg+IxR?;$%{;YP+Y|N>G~NhkT<*og+u%WV^z^E~=CYK_ zbhguV&}VT9cmxA0`2)cz+~%*G%mf=$;6oTxn&Nv-z169YmP@_i6#S<^8f}xtP5(e$ z%$em$U_`n>@)=$jlSB(%6-H&ZlI2Mb4W@ozy7F2e>JNs2OdKo@D6%)11>tHaF-pyk zvNTGkh*bg+;HHC`?UU8NwZ0lHIj2kd(eELU04i|JTS){GgOk+^&>XWSJVM)FysMA} zsMPj6{0Mxi&`=@ab!H^>g%RlcUuk}Va(=pEtoY6f1LKDkN3}nYQEa0FDGyefd-EI3 zOQBc7{>mEo+@cDEBCbycH3rB+1gPt(MNGa>-@c0Cdv6>&I-5&5OisrNuw3(Hv@1Hr zl}q`M|J^7%p)|XfP)J#P4j%(m=jq%(u79d-8*LMiTv*_Wwk%|zP?P_Z__i48;NH=E zb=KUHOh_6cmM5Vxxlp^S=xp!`Pu-!@%rjpxo33zCn5Qp)4`;}T+!Y|bAs@Q8P8_2n z?Nrc79S=v<=o@c5bC(;88%ck^okO+%K|$j46Rk&vEYcX?bEmfp`-x7HB+SmA$D$(l9zb7M_lJ~$tl$ze4D zR*Ew%%3N3_YyXEt+t8ogvnX{i-@Yx425A4tO#J&%=~0$L4>VD-#dpb2F&qS(ds=Rj z1Tx3rV!fHnbNu)FhW`O8xHGS zuI=v*9%$<0crl|Xf%A!bR{rcH&#Vk=k_S7Suv9ZE78Qh_mU9O!{v=rJbs~nVY~jxV ziI<98#C%85!iq0E4cB}R~RjluK1L*!+j2jtCfl~S`ZkG>nNYpbf zcP2vnuf!x(kypbabds18oKl3?j$hFzsX@ownicX0sw6-~TOgeP4`kpRr#H_aepTL} z`+l9@1m4e_U*dgkM#8Nr^Cd7-x^zE_>zIop*X_Wxba^!2`ZD<>97OchG7buWt}TI6 zGYri*f{o6|^Bh%(Vm+Vs+kE>rgl74$9Ra#!#QFPj2?Og?2m1zYeubzbO(+#xn*~0I zC#<$1^y;0P3NX4WV=9T|C%qtqLhfE1QNE%&QZ*sl?;Yolf8lGip+u6jk10r=p?s!C znc{3P3WB1#wCUKCN_ zk=K!{^X1^yoYgh;$e~`TsUerf2Kj2$i+?oBQcZh?m7fID*Dfky$EI?9R~MoW$|+YH z5>WuVZbC|MriymmVz6O3j_L~)1lUk)lKli25|MXII#L{f()Fm}cd$pY87xD< zWe_jq(}R1A?M_~jUFMj$`W$Fl4_RPMGY0Zsvf6rrwS{Q0O z?_oRDVksw+{x~4~X}P)9iSk9&gU}jlofVTwaAd_$sY4X7bkvJBd^qRp9v*@MGRcZe z3;+q{GB9gQlC@_{N-EW6{H!-9Ca@i8`cTv)TP65>X5Wxb9-^BA@h_0l=w zU<`AKBYva%8H}4^ojqVi2%S}J;ptROM+OoCVxT$oQbLPndgD)Z390^0^UJ~^G5eOR zS>Vy0G^%qR`3L9{fWqEOA6K=d*re4=BWo7a2udFWdoz2KalXT?nElf;h7YWQl{T28 z5**H7G3<|aMl{1Keo!r!A!qX){1+AO<|DE*%_LgB7af(jUo%P`9sRpHS_czs*Yb~h z1}qs4?JKOx>%isGJ(!4~@`#_fyQyIngS8Uo5G!RgD;{St^3X3$6AS_! z_OGg#y-0z`Pp1f7zt^_T0z|gt&D$B;oj|P9KhU_Con%c8kWbtl(kCvWq_ON~ ztLEUE?qI0v&@U;XmU-A?#=qm{bW z_RN-hR%AODRKk%JkamhOp1ivL?)@FWcE#oap*e;Hay^r`O*o+}sOyCL?(t?ptL9vk zU=x*;tfTng&MjBJ_wzDOHgX`A6@+|JHCVnBy6V zB#IMEcC3ZK^TZ&aK3@gZJ|> zO?Ya9i=f=0H5MPrrlqoM+>P`-X@j-&(NH%y*)k4A2-P(Br%r`1vtX>3YJUq_1E!oH zv60mH+9sfSdF!^$vLc)9Zle&XP>dHmN}k~m=P;d9+J|!TCE<r4!Fi@EE6zK2YD(ZRBFv#PIU1IWU!_d4d)%RvXj+g;u-? zU>rdqm_GpTWn#{T?O}|QD)dof2U|<}0oyp)IFCz#OT#SE^K~afg1mpU!90 zd8_I%i{#xuP98%1#EW$SpZr8XVu1#KvdKNow7f}Mz7$#U%$5it;QZD-JY9Q%OH#XW z+~`Uv5@As7Wq_JPW^l5zRS^&F%D9cagsCR&xtDt!WRr&m@B;u#IvN6WVHu3Y_xhqr zStZse4#vr~fJ?pi-{#b%yB@oYM0HX{Xj{gYP6ThjFi%Bq2Q;AZa zCdfuZfXM%_7rqHX)GA5Yr3cCt0z~X`Lk*>%;10Ks!sif|^|_D^oIlq(5qlaF(q7or zGoDL>;FjBVz+Tol=3*noxqthCx4Jtkvug*~xOm$vAj6Jiy0JL;n+3tNN1Z7ONc-$# z=|cWMs-zjgBU#oD9Ur^cpu$urQ0&<)b0z-vd&2o;rm6>fnhpiaO^}IYIA)Un7#$7@ z%zeW^X&kFWa4I~0bDVY<2XtZDyH#6#ewHHE)vapx8jCBPA}?-q#}m5{ay*kT;)T1b zmqo$Xg63eWV^w!*cUR zh>g*~&Lu#^)pbCZQ`gcByOeS`J~5j}m;~W<)=^Xwi1cd>$t{J!71g*m%#AVu3yQFj;z=@ad$!36TdZF zI9MPxqNvcRWVBL{c6+%2{O#b3gEl&8{oC!BxC>XBpR14HunvOG_%$M&4MLCw@LxMe zgsn-xT>pS-<1^UBi%0-M*WMtw9nJmAxAJ=JYe^1f`=ZssbZ(*D<$XnSgrVIrhT7w` z`7K>#*U(o14p_rJxecN zsPPDv9wHy=q%Eh}XF^m!a`Wd$c-Qv)j z0YDzUYg9)!%MM+B1Rgnkt|ntX{rUF|@l{&2CY=)hhicw@gd#Ekt7s>9jTJT{Zf{zy ztMSW0MQmA68sGlVa7iv=NRgMP1^E})M1Q~19W!$vD|P*AA-jug7IYdPxJb>U&E})x zSxW;P-q71E!B7(3P{?eNT@Rz;V<6L3dZ#RFFx})d@n;~O~g>X-2iAn6Sv+6GT5#e_!aHe=26?^7mD_9KjFkNqjz) zr-Dy;uW=b=1Yd_VeayonW|>c9yvi^3^)uNq4FANocN}y~P+mM3TVV zsQ*Zn<;Yx=Y-q&?weaZD*{mbYl_7_Ipdp-jqJMcm#6Y(flcZ~CQj_+H&c3=|l&4ne zTNO16`0kwcs=>)78>%fDeKzE(TyQ>jfz}ae>J|)uwDRo154Qj2$#3EQ-jsDt{Pxws*U~4Z`SH|R0&r;nuFf^q3O7!Yt2CkzFN21y-pL4{Kpn$N&g39&m+b-;FE*-%`? zKV{GQ`)ItJ*~P&_0DF?~QRR|QYxV3XaB$so(jpyO&LQEt1gZ1YZ!|--4o$@F4(SHB zz|~2`fqB(n&s+=Cn})&Wm2S!H7oamTkC&qs9-KScYwmGYxUqjHUxs*O9mb*RL#6b< zff2gDn8wO%r#N=2qm&qTy40cZBY7 zzl3+$k_xmq`Ij3@tu=6GO~l~zI-oxP0^<*SYm@hkwvMP0{|o0$xoKqGPaTI$zn^o; zK{tYj0wb~cnHTmEXm}ll2@WBF^BNi*>3&?vn=v{-fw*N5PJ@H_CMFt@ActO%;?S~jzcB1 zoL-5(yfr7dYGIWVZg_3ZVzSgeFpjAmJ9j(I-}hRQHxTOs_ZFfuQgEqs&dbI-+sRop zwJXGQDfou-HK;?2+Tg}d`Da9*bm3hUqSVx=cRgjGmaT5hY09}jS80$J`bG4(I7@N= zJc(_k#gHHtv*BCuiC03Jcj{XCM%2vXn6JDh>Hr#(vhWfoCuL26o`^EiSigGyIKORHSpDLSl0E z+0H%Wr^S=*9229Vo^qgHJFtni2TAh!iXrkGS=Z3Y_0-O1PC`Pfo-syKi6=9F@UrNk zBUu1V!}EO8?dfj(nzj2UV-qG?j=e@~MKAYXRh)>zY~+UwQ!cXh^LwTd^wa%>7>SDU zPs>nMz7|`hjkf9vxQ~rok_SwcEZN& zlqMc!%m_$*K8}-2c=NMv%8_sD?1XboK~dwLs(8*8I-UbxDO!+{le!BV96CCOYzhs5 zjuyKE*%G#{$x~?ZEfz)-$qA=5x859L2EXtSV@=5K<8M!vMJ|BWNyIy>X0qB%QDA-G zMp?V?VlP?tib)#|dy$06|fyW&AfQP)8-DZR0TOo;|Q3 z={vMES!QqTf_@0nI#*5)m=NMH#rAArsflDOKBH!w6yMCa0r@nv5t3G3FW--wziEhV z=VDpQ+y=?Oif}&_Ja&b1F0%^H{rL}l(0y0b?o+Id&c{_$T^Fox1Y1bpp`qLsP3j7x z+#Xyv0J!xna-I2pprmJ>KhJXYmX-7{;%@Nt941W31z!PJF9oa`US(1X^@y*JOiC>4 zJ}O?kabZRrE6mzIOJ7{~7RGycG|LsWJD)<+j=1pgK87P>6RBjz@d1Q)o4hh&!-rzvLT5m`E;-!8msuuk)hrY z2t`Nxxz_|vNc`yY=bE@vp11WPU`j0&KU&u&(1<^lK|w|3esd>i{hGyNYM?@8*PeZT z+{$&b6#;iKWy`n!i%PswXcba7IgC78Vlvi@f``J@w?S*8REPd?P49NkHQnhczyZZ; za|kiCP=p{U_SX_*H+6KCw=fAhd9H-W_hyvg$$KfgjY9b)|8>t5WtGRn&GJ+^_DP@u zuBY<{X-qOLV%B?S=8L32v?#1M!JG2O)ATv%M!p+Nxu2|Xd1{0W9sl<$Kv<&T<+Z^G z+_42kLsKi+zzdEuWKu{9v{W*>?)$gIPBQBW@ zq_?{9ENfcHEBY7+eze#`&Bn!*FdYc{o&)D*9DQBIHJ9A^olGbE_PloJU;;Rp@ygie zB>A<%O=;CVX6*Byd9|VNE6;@2Ysq!8dbH?ZaT$EoPA)T(BC!I}PrppJdwD)=-VBIL z+f0@rs{32QT*g5RkoT_V-QnRc*nYaYUf)xCb6oCP*ggO*1ajEHqll0+z zx-S~fPe!1>)HwK3F0e9reJ+JOqzyv$B7ZsLD%3(T2Zy*teCn5RNeJeZpn@VBi!IfM z{z`hpu7g$@p3uwgaYaG9{bPLr-E>T$?`zaRMTgkSpkk5$K9p6Xy{~@UjDWPNGu%4U zVOJ2!GD#i0TeD5RB?>r)w)N^WB)D0Hz7yC^ITN**a&^{#jKae3(tv*~zJh-V< ziT5cYGa5Hl%=wTM{=E(@-B7SpaBA+afv01Jqe(GAT!5#bPN!S8*=2U}xmpdlCRZRNJ))CX0CAuj}_>b6-}M2uizFp>z{8eOLA#$O)PmH=ai$5H5W9hIxZ@ zL75deG-5vjT$Q0{MUi+ICM@4*9r=fFVOAoo0m)&P7&3E8gJFY34C^?{DW1o<(0gT_ zkTZ}6tK6*n6);cc24||M4~NFa?UjAidZCN30m6kpT&5DBxz0}s`oRBEdN|(i(b)k~nd!Q;ep9yP%i1^X;f_|zlTjA9~47ZE+rM!d|H+{U_D7bdk zXO63z*K7eT*BZFdDjs32?NG%u;hzlV?W4Q=(JC&x-wC>c#CkUf7XK+84HwmnMZD$e zbH6spPwtvJj#fo0*R@*rW>FL_rKz`VkeUmrKz)=Lim(j>jZ5uEW@E!YDDO-Ht_`Cpp*A3N~9*lZGvbr{B-_urI=ewNR~84Wsg*oS4$aTSo(PUG!-+A>+Q{J(!$^m71@UN*Cr{ z?=PF(yGFhkn@er`3y{GfBJ>8aSh@U(dxd{3U0R51g!B++3}cJ;j$@t&(G)Bdm9`=o zrT7dlrXJZFinQ_(3U0;=wj#dRqqN8Ug!vg|&;dc$wRf>&o0WzrmV9SdL+S7gAM$u~cC=v&vpxY&xV7TlRC%mCl1ZZ?!=D zh|`ev$NTPM(l@J>34hiHiH`(AHnS7Q*p@l<}e%I2Xc+|Noh&jZpHla(qvH3&H*!z_s9Ho z34&huTiauZ5Txu5)X3-VSogRyOdNH|%sO7h2Z~p!-7lZu#;^7lm`b`4jZV@Z-5l5_+nM(?G zLv%K_O=LWy@R`|e!?xP2cDA`Kl&5$nae4h>GD$%{+Px z%`wRGjY=?CW$B9bAd27n?+2e}vubQ_6?El}>kON-K2u+WBv}{T%`?^p!&oIb$!tST zQ~XZoZZ;zea%{4X9@3}oTKU1GsLs))zUN8u?7wpj;s1(OU6vcRNjKqL@4hFcs2)Gs z{H?8<)!0FkXH1|UDkEV!IN6-{#8j@KAvWL4z@C>BYA`CM^_t2vPPw|Q3gvPN6ARd# z(NMcgIL09lbD^IfNaV(YMf|?I`t_tyvXklOGu|a!GbL_vbEQ-wxLq5`z zMuV9bUB%R#z@o(d0C~#_kJS*u%;p_W_M85^hq$0)X<(9f!@lAx4B+VrV(=faITHW7 zP<}TdN$N^Rbt*yj&A`!;IX|6lF>YQ`M$mh$Vvy60Qr?^oh^4$_bs!;plVP*l&P0Fr z3T6EE%m5Y~wFJa4a~`sJ`z8{1G{?@+^8xfL_ARTwgrslBJd(<^RhUX%Z^M`1*3H>JaHX-YYZz>_104 z`os?L3~xD1N0dSHt>vWJ98Uu-HqqxGeQ*l1=#N_O9mhysc#`L^0LW9ULF9k~(z8HuLY~yx zr+GDzE#)&5_q%lo$;`f5*4dIIL-5@l!uj+KDZ=!z2OaeDe^1qmc2|?Ej>_6Wo+!DH z;0a77gTeq7mWjtMen+Y;StDM}OcHL(=3`8l+efa?OfUCe<(Y4~emu6q!{2wPO7FDU z?s_(PX>He}spvw<$Yb@=uJ2R_?loz}Z|G`uzSYAFKdGQ#oc?BfGSsCp8cbgg1yMs> z2P`ax)J~pZ1ZfJw!Lv~mY3r|j;J$I9R%_<`|57gN=$r2{2Z$Gb7hhA>{wa_ulcmYk zHeWk5A+#A)^BZMe+%8kJ-Fq>xN5n^O# zO?G(g?6CShrJxYqe|ZV%ftkokp}<$4mS$Y|G6E~Vx2FQufvgL@&Yo}u{s@eMdHMy$ zIQlQotWJ$X&jq`lD=&^mmQrtgfsMv3$13=*$Q)3n`DDobuo&R+CC^|1kf%SA{V1`x z^5!wn+KsEM#mg)g8r~O`YoFBRgW^z zA6P5w^%O08Y6Eh&P#ZyF(~}Qy$jsps51jN4y7fdgI@mK$e(tX6JMI*y1rN|~e@Rirqr^;Ljt7R#0{ zu(VoWsb-9zi+B{tjbq90?x|?+T|-T`VCqRRIGR9dJT(=iNnYnpGZe3FTOazvyV_Vb zDG$*c{z4_LFO^qEOhP`&GV7VV175(U3D8>#v=kr<(RkTVx&_^kj5)MpoAH*Ubt&Kv zVmlbJ!@$y=pOlX?MhH4?J>zy|;`l_cD58R08ak8D^FA!)mh-KT9@!~PwbKBp`V97+ zODSL??8hl6_?1bO`3b^$+sI2jNyfy&H=htG!bpZFVytBZy>fE(Byo#*`Eb<;HKk&$ zg@5}qT1D}y^;ec(`WaS#mlOc5^n{L2(CmxrbxrX*2{AN_>iwQbEBlP~qa^qrWz#~W z!>7)TYNi2kT|ev7P00003zVriF4Ez_3CmZ?G4zlvayaq?XJiH5@&sysH z=#XRc1-do&(ICg>5y3}AGjU_HRB^CzW1=;qP~Nl&g0&mKFmJ)w^pd(R_3WIxBkTzde6rn8GM!ti#$T*R;`pir+P zyY^~V_vvwV#UWMfI*Z5Llx)^YM8*AoAt+ns2H9Qe2Zn|zt;i1=rVe2|^`GWkXIq3P({KB>*1wcfKu6_SI_?p$5Cz%}!%j&A$ z4rv873>L$XLsnUr`WIF#^oWVGlnupujjq0cza4;{p?(c5_jZ4I$7>a6K<) zCZL3St26K-dDwMN#9ul-H@o5XFXrcV`=vZ^D7d0zC9%WPYc-CN&YT+*kqh*xk*ogD z(`cM?DJex!l&VS8Of%*VeX<)0 zsukUw#nB|h1y{@x_dc5<`l})c7FEeQmiOM4krsdC09MqZCNAZ-3-Tvt5-ESfFFa2M zCt4T7(>wkf)?OQl9WP>2PEqEU4_{rW%LQ+nqmJAJ$W`)PX=|1|H8H^e1nyMbM`Fb) za&iThd$?m4ws=M(4vupPy75e;qTI`piY#GC(_I3-&K~$#==|U(KOa(&@-w`wEj-tw z4Ks;AOjC}V6n9qJ!4{J=M_2Jj-yXK=lsAUgFfy6es-KtQr`{^Q$V@!3LyE$9lD+9L4Q7rqHAv z9cq{9AQh?MCHvE_ptrtzP>73|=J)bw;+n)WQo*xNl6H=Nxhd%1Spp3=BVN&q9p*2& zjoc$6mb(F!n)c$?v0`5Bfbq|74`c6?v?@c;>bBIL6CVNS`la}AD#v2Irt5u%-(MEf zNzKlB@3)VXP4gs=hlR~dL=W%A$--%mhb(XY&|e0+Csyz$Pgr%Em{4N)`E3OR+j?nr z?tDTClpG%P`e))2<7?u<*wue_Zp1UMI$-N#EN0Q?FviL>$`8#P_6I6oufZc?ckur~ zO$f?2_3d6V;vuE=lJ4)RJj~dX2xqs*&tM#! z)bl;tw_kNPL(7ZkfvudP-rID4B5*Tu87cQEKR?mWTyGPxG|4Fth>e+~3MQmFz!dFO zL#Uxw7I9c7L)wZOihD~S{+dI|rE|+|sz<`|fXp0H7Q^v9&qMc0LHvv+?e)*Dz$EM> zOD+)*x5{Ole;zbj0PYgeuw?xp5X3T4Ye2leG$NE(4ht{h{cUaUNu_`{O#UE{V5ybf zg(y+FZ+?(|GS?Ecv?jeyBzD#{d6KA*FD$L%Y6EW7`)s5B*uKw!0Gnz-`$FfuhY~T~ ziagdc9(S24wk@opB84=J2&_!kvL9Cxjs<9c=ePEa&GawT1CfN z0aw2Dq!Ez@wnz496l$w2X7b6qL3+*$9NnOyOPew<;r54JctA4#-7%?4G7AcvuT|FqPN!4%2T3JZvg9)i0e|>n+#*6a@Y4;q5)7rm@Yl_EfP`;spA($Z%<56YNo&ep5+lU5^ z8B^UhrU*XWo7lHgo@fzFw|G|?4Li4*XQp3#pP`!z+;3ZvAj)R37mVVml6b|2u`+OCJ9LRREPJ!5h z#Z~zc-LtHpSmfG~E1+Iv*wlfceI>lBwB=Q>9blFv5`FcQA7>uO_N&y()3`7Me8$*e z_;U7|#lQRg1K4>2KxO*Ize8M&c>Z~bBRbbN+clu?I4$FUNYR<L<60J~xn<#TTtu!a|0`0g8ckVBiRcu-i2xiu9ydyuFY! z>B;pO0d&F5`uwLV{&Q9Qy@y3Bf(KBAS=dm~_2C5+3{1eSe_{(n6{F;0A2kZ%H8sTb z=$K}@Y!Q&=1v_oVvleV3OTcVJRX71lwAZ-e_`HY?E);9~B3KUxI>xWym;D8{I?YI0 z#yt|GO<+Gr;HyzN4B^2DB)#oRCyC&rgPozjJaKCHR-^7Y)X4Cg@>efx^AX2$Z z5<{#yqsd}F(Q)ze=7rdh2QCrbSSV*yx6EWXONR%-ev3rZ2nQ&|#zJ;$a&V>9D5GLp zKi&E}M?8QoCWL6L_4*Z7bqxmHpi>?768;=API{DQl;1r7-i*Q=KL*^by!%jv<~YMZ zZ072vyMiTM%4dGSlSIgFs;9i(sF$ko;sn+O*{fVC4#Lj!SIrzp4zX#b{%4vn>btnD zv!l8U9~FOfJs1mE8>+KQO> zbZ^rPZ?SfKX7bGCYW3R`6!Y_Xeg8SsmXJo=W0B|Csiz4Aw6A<6u4qEI+A!9 zf9Ne1Yjxf*rTbUOrQcvn86a&pJKRXYw|r*zChZDE?#+CExB$MQ4iv@ zb?Fj`!g;S`_YQDb4a*Qu>q>iKX3j_Vz2nJOv)1Msog~BP)GNouDc<-0Vo>YCm$;?s zO_16cY5v&|3mB9}9~@77MJoT?q6oNMWnf}HLV(v7drawllVH8FCUYhM?8XvO@7|M~ z=nmjU`22IVP^o7{3qjupmowteb?*Rzz+;`7^`<{eIyHWsY}5N!qP4x+EiHl1l{Md)*iz> z5r1h%M2gGbLW8AB!A&TB5p$c38kA=Heqz8$uFQUuj)^;7b0-_CNe3n;;R#c0zGhqn z=AnohL6K8XVMd?Do$AZk!&N6T29_vIqI)FdCJ1dvkz^(x|n{ zER(KS4w+-W0_aa#1w{Ccj8d4EUIqNTicD$fdSF{zcnHAu06f@9&VxT*Uyj3_G8eM( z(YTje_5v(2BLiYnSz9FMuM#f_XVbj`P4DmLrH>KjoA_!azCBPs0=8m+000k;XiyS> z01$7qfB-!Xtzz0Mp@lF2000ByXoWHL00m+sVj$@VT{E1t!~ace*EcfJ@4foKQBuu# zP+RHl_1}3#;_w8#0TE!=mH;Y}2nPsDps+};tMEyG{Dm<4{qM)du(Zb?Hr;l-2X^gDc7^boSROQO!EH%=fSlHTQ80LkHqsPk@4^8$Pe`o)FId z*ow;4VbYlhJ$$6MO_NukQhkX#`j6YjBeIga`~Uy|ZU_JX000036H@h5T6gf?m?!SK zK>D**l&5_dCw zeEUy#Apk*$TAXz#s@PeuE}L>>K}?*&@<(}+in}SEbvhpfz3UFr$s%2r$s%2r$s%2 zr$s%4X8%#@SWWkLtANy9GM/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -function test_elasticsearch_using_kubectl() { - local NAMESPACE=$1 - local ES_SERVER=$2 - - ESCLIENT_POD_NAME="elasticsearch-client" - kubectl run "${ESCLIENT_POD_NAME}" --restart='Never' --image bitnami/python --namespace "${NAMESPACE}" --command -- sleep infinity - # wait for publisher pod to come up - kubectl wait pods "${ESCLIENT_POD_NAME}" -n "${NAMESPACE}" --for=condition=ready --timeout=10m - echo "#!/bin/bash - python -m pip install elasticsearch - python3 /tmp/es_test.py --es-server=$ES_SERVER" > "$SCRIPTPATH"/es_commands.sh - - kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/es_test.py "${ESCLIENT_POD_NAME}":/tmp/es_test.py - chmod +x "$SCRIPTPATH"/es_commands.sh - kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/es_commands.sh "${ESCLIENT_POD_NAME}":/tmp/es_commands.sh - - kubectl -n "${NAMESPACE}" exec -i "${ESCLIENT_POD_NAME}" -- bash -c "/tmp/es_commands.sh" - - # delete the client containers - kubectl -n "${NAMESPACE}" delete pod "${ESCLIENT_POD_NAME}" - - # delete the generated command files - rm "$SCRIPTPATH"/es_commands.sh -} - -function test_elasticsearch() { - local ES_SERVER=$1 - local ES_NETWORK=$2 - - ESCLIENT_POD_NAME="elasticsearch-client" - docker run --rm --net "$ES_NETWORK" --name "${ESCLIENT_POD_NAME}" -d bitnami/python bash -c 'sleep infinity' - # wait for publisher pod to come up - # shellcheck disable=SC1083 - until [ "$(docker inspect -f {{.State.Running}} elasticsearch-client)" == "true" ]; do sleep 1; done - echo "#!/bin/bash - python -m pip install elasticsearch - python3 /tmp/es_test.py --es-server=$ES_SERVER" > "$SCRIPTPATH"/es_commands.sh - - docker cp "${SCRIPTPATH}"/es_test.py "${ESCLIENT_POD_NAME}":/tmp/es_test.py - chmod +x "$SCRIPTPATH"/es_commands.sh - docker cp "${SCRIPTPATH}"/es_commands.sh "${ESCLIENT_POD_NAME}":/tmp/es_commands.sh - - with_backoff docker exec -t "${ESCLIENT_POD_NAME}" bash /tmp/es_commands.sh - - # delete the client containers - docker rm -f "${ESCLIENT_POD_NAME}" || echo "couldn't delete the client container ${ESCLIENT_POD_NAME}" - - # delete the generated command files - rm "$SCRIPTPATH"/es_commands.sh -} diff --git a/community_images/elasticsearch/bitnami/dc_coverage.sh b/community_images/elasticsearch/bitnami/dc_coverage.sh deleted file mode 100755 index aaf5bd50f9..0000000000 --- a/community_images/elasticsearch/bitnami/dc_coverage.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( - cd -- "$(dirname "$0")" >/dev/null 2>&1 - pwd -P -)" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -ES_SERVER="127.0.0.1" -NAMESPACE_NET=$(jq -r '.namespace_name' < "$JSON_PARAMS") -NAMESPACE_NET="${NAMESPACE_NET}_es-bnet" -# run coverage script -test_elasticsearch "${ES_SERVER}" "${NAMESPACE_NET}" \ No newline at end of file diff --git a/community_images/elasticsearch/bitnami/docker-compose.yml b/community_images/elasticsearch/bitnami/docker-compose.yml deleted file mode 100644 index e107afab64..0000000000 --- a/community_images/elasticsearch/bitnami/docker-compose.yml +++ /dev/null @@ -1,27 +0,0 @@ -version: '2' - -services: - elasticsearch: - image: ${ELASTICSEARCH_IMAGE_REPOSITORY}:${ELASTICSEARCH_IMAGE_TAG} - container_name: es-bcontainer - cap_add: - - SYS_PTRACE - ports: - - '9200:9200' - - '9300:9300' - environment: - - xpack.ml.enabled=false - - xpack.security.enabled=false - - "discovery.type=single-node" - networks: - - es-bnet - volumes: - - 'elasticsearch_data:/bitnami/elasticsearch/data' - -networks: - es-bnet: - driver: bridge - -volumes: - elasticsearch_data: - driver: local diff --git a/community_images/elasticsearch/bitnami/es_test.py b/community_images/elasticsearch/bitnami/es_test.py deleted file mode 100755 index 06ccfd4a14..0000000000 --- a/community_images/elasticsearch/bitnami/es_test.py +++ /dev/null @@ -1,53 +0,0 @@ -"""The test for elasticsearch.""" -#!/usr/bin/env python3 -import getopt -import sys - -from datetime import datetime -from elasticsearch import Elasticsearch # pylint: disable=import-error - -# pylint: disable=invalid-name -try: - opts, args = getopt.getopt(sys.argv[1:], "s:", ["es-server="]) -except getopt.GetoptError: - print('python3 publish.py --es-server ') - sys.exit(2) -for opt, arg in opts: - if opt in ("--es-server", "--s"): - server = arg - -es = Elasticsearch('http://es-bcontainer:9200') - -doc = { - 'author': 'test_author', - 'text': 'Interensting content...', - 'timestamp': datetime.now(), -} -resp = es.index(index="test-index", id=1, document=doc) -print(resp['result']) - -# get the document -resp = es.get(index="test-index", id=1) -print(resp['_source']) - -# refresh the indices -es.indices.refresh(index="test-index") - -# search within the doc -resp = es.search(index="test-index", query={"match_all": {}}) -print(f"Got {resp['hits']['total']['value']} Hits:") -for hit in resp['hits']['hits']: - print(f"{hit['_source']['timestamp']} {hit['_source']['author']}: {hit['_source']['text']}") - - -# updating the document -doc = { - 'author': 'test_author', - 'text': 'Interensting modified content...', - 'timestamp': datetime.now(), -} -resp = es.update(index="test-index", id=1, doc=doc) -print(resp['result']) - -# delete the document -es.delete(index="test-index", id=1) diff --git a/community_images/elasticsearch/bitnami/image.yml b/community_images/elasticsearch/bitnami/image.yml deleted file mode 100644 index e3b43decf7..0000000000 --- a/community_images/elasticsearch/bitnami/image.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: elasticsearch -official_name: ElasticSearch -official_website: https://www.elastic.co/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/elasticsearch -source_image_repo_link: https://hub.docker.com/r/bitnami/elasticsearch -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/elasticsearch/README.md -rf_docker_link: rapidfort/elasticsearch -image_workflow_name: elasticsearch_bitnami -github_location: elasticsearch/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Felasticsearch -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install elasticsearch, just replace repository with RapidFort registry - $ helm install my-elasticsearch bitnami/elasticsearch --set image.repository=rapidfort/elasticsearch -what_is_text: | - Elasticsearch is a distributed search and analytics engine. It is used for web search, log monitoring, and real-time analytics. Ideal for Big Data applications. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - elasticsearch: - input_base_tag: "8.10.3-debian-11-r" - - elasticsearch: - input_base_tag: "7.17.14-debian-11-r" -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - wait_time_sec: 120 - image_keys: - elasticsearch: - repository: "ELASTICSEARCH_IMAGE_REPOSITORY" - tag: "ELASTICSEARCH_IMAGE_TAG" diff --git a/community_images/elasticsearch/bitnami/overrides.yml b/community_images/elasticsearch/bitnami/overrides.yml deleted file mode 100644 index f201e68505..0000000000 --- a/community_images/elasticsearch/bitnami/overrides.yml +++ /dev/null @@ -1,18 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/elasticsearch/official/.rfignore b/community_images/elasticsearch/official/.rfignore deleted file mode 100755 index 1c799e0088..0000000000 --- a/community_images/elasticsearch/official/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/common-licenses \ No newline at end of file diff --git a/community_images/elasticsearch/official/README.md b/community_images/elasticsearch/official/README.md deleted file mode 100755 index 18e4220f59..0000000000 --- a/community_images/elasticsearch/official/README.md +++ /dev/null @@ -1,141 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for ElasticSearch Official - -RapidFort’s container optimization process hardened this ElasticSearch Official container. This container is free to use and has no license limitations. - -It is the same as the [The Elastic Team ElasticSearch Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is ElasticSearch Official? - -> Elasticsearch is a distributed search and analytics engine. It is used for web search, log monitoring, and real-time analytics. Ideal for Big Data applications. - - -[Overview of ElasticSearch Official](https://www.elastic.co/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened ElasticSearch Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Using docker run: -$ docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" rapidfort/elasticsearch-official - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [The Elastic Team ElasticSearch Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [The Elastic Team ElasticSearch Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/elasticsearch-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`8.6.2`](https://github.com/docker-library/elasticsearch/blob/90e34ca306d9800d3c0ab1c59387b93e89c69796/8/Dockerfile) -* [`7.17.9`](https://github.com/docker-library/elasticsearch/blob/584687331345cc631249925517b78b2f1058914c/7/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=elasticsearch-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Felasticsearch?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=elasticsearch-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Felasticsearch?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=elasticsearch-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Felasticsearch?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=elasticsearch-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Felasticsearch?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=elasticsearch-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Felasticsearch?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=elasticsearch-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/elasticsearch-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/elasticsearch-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/elasticsearch/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/elasticsearch/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/elasticsearch -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/elasticsearch-official diff --git a/community_images/elasticsearch/official/assets/cve_reduction.webp b/community_images/elasticsearch/official/assets/cve_reduction.webp deleted file mode 100644 index a9448fde7f1c9c8122f993295909313ca2218cb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1758 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 pkT6M+Mj+lE!OT>=ZZ/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -function test_elasticsearch_using_kubectl() { - local NAMESPACE=$1 - local ES_SERVER=$2 - - ESCLIENT_POD_NAME="elasticsearch-client" - kubectl run "${ESCLIENT_POD_NAME}" --restart='Never' --image bitnami/python --namespace "${NAMESPACE}" --command -- sleep infinity - # wait for publisher pod to come up - kubectl wait pods "${ESCLIENT_POD_NAME}" -n "${NAMESPACE}" --for=condition=ready --timeout=10m - echo "#!/bin/bash - python -m pip install elasticsearch - python3 /tmp/es_test.py --es-server=$ES_SERVER" > "$SCRIPTPATH"/es_commands.sh - - kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/es_test.py "${ESCLIENT_POD_NAME}":/tmp/es_test.py - chmod +x "$SCRIPTPATH"/es_commands.sh - kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/es_commands.sh "${ESCLIENT_POD_NAME}":/tmp/es_commands.sh - - kubectl -n "${NAMESPACE}" exec -i "${ESCLIENT_POD_NAME}" -- bash -c "/tmp/es_commands.sh" - - # delete the client containers - kubectl -n "${NAMESPACE}" delete pod "${ESCLIENT_POD_NAME}" - - # delete the generated command files - rm "$SCRIPTPATH"/es_commands.sh -} - -function test_elasticsearch() { - local ES_SERVER=$1 - local ES_NETWORK=$2 - - ESCLIENT_POD_NAME="elasticsearch-client" - docker run --rm --net "$ES_NETWORK" --name "${ESCLIENT_POD_NAME}" -d bitnami/python bash -c 'sleep infinity' - # wait for publisher pod to come up - - # shellcheck disable=SC1083 - until [ "$(docker inspect -f {{.State.Running}} elasticsearch-client)" == "true" ]; do sleep 1; done - echo "#!/bin/bash - python -m pip install elasticsearch - python3 /tmp/es_test.py --es-server=$ES_SERVER" > "$SCRIPTPATH"/es_commands.sh - - docker cp "${SCRIPTPATH}"/es_test.py "${ESCLIENT_POD_NAME}":/tmp/es_test.py - chmod +x "$SCRIPTPATH"/es_commands.sh - docker cp "${SCRIPTPATH}"/es_commands.sh "${ESCLIENT_POD_NAME}":/tmp/es_commands.sh - with_backoff docker exec -t "${ESCLIENT_POD_NAME}" bash /tmp/es_commands.sh - - # delete the client containers - docker rm -f "${ESCLIENT_POD_NAME}" || echo "couldn't delete the client container ${ESCLIENT_POD_NAME}" - - # delete the generated command files - rm "$SCRIPTPATH"/es_commands.sh -} diff --git a/community_images/elasticsearch/official/dc_coverage.sh b/community_images/elasticsearch/official/dc_coverage.sh deleted file mode 100755 index 2f143b9dcf..0000000000 --- a/community_images/elasticsearch/official/dc_coverage.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( - cd -- "$(dirname "$0")" >/dev/null 2>&1 - pwd -P -)" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -ES_SERVER="127.0.0.1" -NAMESPACE_NET=$(jq -r '.namespace_name' < "$JSON_PARAMS") -NAMESPACE_NET="${NAMESPACE_NET}_es-net" - -# run coverage script -test_elasticsearch "${ES_SERVER}" "${NAMESPACE_NET}" diff --git a/community_images/elasticsearch/official/docker-compose.yml b/community_images/elasticsearch/official/docker-compose.yml deleted file mode 100755 index 37784fa47c..0000000000 --- a/community_images/elasticsearch/official/docker-compose.yml +++ /dev/null @@ -1,28 +0,0 @@ -version: '2' - -services: - elasticsearch: - image: ${ELASTICSEARCH_IMAGE_REPOSITORY}:${ELASTICSEARCH_IMAGE_TAG} - container_name: es-container - user: elasticsearch - cap_add: - - SYS_PTRACE - ports: - - '9200:9200' - - '9300:9300' - environment: - - xpack.ml.enabled=false - - xpack.security.enabled=false - - "discovery.type=single-node" - networks: - - es-net - volumes: - - 'elasticsearch_data:/var/lib/elasticsearch/data' - -networks: - es-net: - driver: bridge - -volumes: - elasticsearch_data: - driver: local diff --git a/community_images/elasticsearch/official/es_test.py b/community_images/elasticsearch/official/es_test.py deleted file mode 100755 index 363582521a..0000000000 --- a/community_images/elasticsearch/official/es_test.py +++ /dev/null @@ -1,53 +0,0 @@ -"""The test for elasticsearch.""" -#!/usr/bin/env python3 -import getopt -import sys - -from datetime import datetime -from elasticsearch import Elasticsearch # pylint: disable=import-error - -# server = 'localhost' # pylint: disable=invalid-name -try: - opts, args = getopt.getopt(sys.argv[1:], "s:", ["es-server="]) -except getopt.GetoptError: - print('python3 publish.py --es-server ') - sys.exit(2) -for opt, arg in opts: - if opt in ("--es-server", "--s"): - server = arg - -es = Elasticsearch('http://es-container:9200') - -doc = { - 'author': 'test_author', - 'text': 'Interensting content...', - 'timestamp': datetime.now(), -} -resp = es.index(index="test-index", id=1, document=doc) -print(resp['result']) - -# get the document -resp = es.get(index="test-index", id=1) -print(resp['_source']) - -# refresh the indices -es.indices.refresh(index="test-index") - -# search within the doc -resp = es.search(index="test-index", query={"match_all": {}}) -print(f"Got {resp['hits']['total']['value']} Hits:") -for hit in resp['hits']['hits']: - print(f"{hit['_source']['timestamp']} {hit['_source']['author']}: {hit['_source']['text']}") - - -# updating the document -doc = { - 'author': 'test_author', - 'text': 'Interensting modified content...', - 'timestamp': datetime.now(), -} -resp = es.update(index="test-index", id=1, doc=doc) -print(resp['result']) - -# delete the document -es.delete(index="test-index", id=1) diff --git a/community_images/elasticsearch/official/image.yml b/community_images/elasticsearch/official/image.yml deleted file mode 100755 index 1fce69fde8..0000000000 --- a/community_images/elasticsearch/official/image.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: elasticsearch-official -official_name: ElasticSearch Official -official_website: https://www.elastic.co/ -source_image_provider: The Elastic Team -source_image_repo: docker.io/library/elasticsearch -source_image_repo_link: https://hub.docker.com/_/elasticsearch -source_image_readme: https://github.com/docker-library/docs/blob/master/elasticsearch/README.md -rf_docker_link: rapidfort/elasticsearch-official -image_workflow_name: elasticsearch_official -github_location: elasticsearch/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Felasticsearch -usage_instructions: | - # Using docker run: - $ docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" rapidfort/elasticsearch-official -what_is_text: | - Elasticsearch is a distributed search and analytics engine. It is used for web search, log monitoring, and real-time analytics. Ideal for Big Data applications. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`8.6.2`](https://github.com/docker-library/elasticsearch/blob/90e34ca306d9800d3c0ab1c59387b93e89c69796/8/Dockerfile)" - - "[`7.17.9`](https://github.com/docker-library/elasticsearch/blob/584687331345cc631249925517b78b2f1058914c/7/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - elasticsearch: - input_base_tag: "8.6.*" - output_repo: elasticsearch-official - - elasticsearch: - input_base_tag: "7.17.*" - output_repo: elasticsearch-official -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - wait_time_sec: 120 - image_keys: - elasticsearch-official: - repository: "ELASTICSEARCH_IMAGE_REPOSITORY" - tag: "ELASTICSEARCH_IMAGE_TAG" diff --git a/community_images/elasticsearch/official/overrides.yml b/community_images/elasticsearch/official/overrides.yml deleted file mode 100644 index f201e68505..0000000000 --- a/community_images/elasticsearch/official/overrides.yml +++ /dev/null @@ -1,18 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/envoy/bitnami/.rfignore b/community_images/envoy/bitnami/.rfignore deleted file mode 100644 index 222cc900af..0000000000 --- a/community_images/envoy/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/licenses -opt/bitnami/envoy/licenses -usr/share/common-licenses diff --git a/community_images/envoy/bitnami/README.md b/community_images/envoy/bitnami/README.md deleted file mode 100644 index cbc0cb6ec2..0000000000 --- a/community_images/envoy/bitnami/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Envoy - -RapidFort’s container optimization process hardened this Envoy container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Envoy][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Envoy? - -> Envoy is a distributed, high-performance proxy for cloud-native applications. It features a small memory footprint, universal application language compatibility, and supports http/2 and gRPC. - - -[Overview of Envoy](https://www.envoyproxy.io/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Envoy image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run --name envoy rapidfort/envoy:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Envoy][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Envoy][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/envoy][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`1.28`, `1.28-debian-11`, `1.28.0`, `1.28.0-debian-11-r` (1.28/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/envoy/1.28/debian-11/Dockerfile) -* [`1.27`, `1.27-debian-11`, `1.27.2`, `1.27.2-debian-11-r` (1.27/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/envoy/1.27/debian-11/Dockerfile) -* [`1.26`, `1.26-debian-11`, `1.26.6`, `1.26.6-debian-11-r` (1.26/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/envoy/1.26/debian-11/Dockerfile) -* [`1.25`, `1.25-debian-11`, `1.25.11`, `1.25.11-debian-11-r` (1.25/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/envoy/1.25/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=envoy&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fenvoy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=envoy&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fenvoy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=envoy&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fenvoy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=envoy&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fenvoy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=envoy&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fenvoy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=envoy&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/envoy?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/envoy?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/envoy/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/envoy/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/envoy -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/envoy diff --git a/community_images/envoy/bitnami/assets/cve_reduction.webp b/community_images/envoy/bitnami/assets/cve_reduction.webp deleted file mode 100644 index af858d4d53a0ad99702db64b249a81b0918ba239..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1690 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 X#&FD>84nr5GH_%)fZ~40{ty5FNgpWA diff --git a/community_images/envoy/bitnami/configs/dynamic/bootstrap.yaml b/community_images/envoy/bitnami/configs/dynamic/bootstrap.yaml deleted file mode 100644 index 5e889f4b66..0000000000 --- a/community_images/envoy/bitnami/configs/dynamic/bootstrap.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# bootstrap.yaml -node: - cluster: test-cluster - id: test-id - -# receive a request of readiness probe via the listener -admin: - address: - socket_address: - address: 127.0.0.1 - port_value: 9901 - access_log: - - name: envoy.access_loggers.stdout - typed_config: - "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog - -dynamic_resources: - cds_config: - resource_api_version: V3 - path_config_source: - path: /etc/envoy/cds.yaml - # only if using a ConfigMap - # https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/config_source.proto#envoy-v3-api-msg-config-core-v3-pathconfigsource - watched_directory: - path: /etc/envoy - lds_config: - resource_api_version: V3 - path_config_source: - path: /etc/envoy/lds.yaml - # only if using a ConfigMap - # https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/config_source.proto#envoy-v3-api-msg-config-core-v3-pathconfigsource - watched_directory: - path: /etc/envoy \ No newline at end of file diff --git a/community_images/envoy/bitnami/configs/dynamic/cds.yaml b/community_images/envoy/bitnami/configs/dynamic/cds.yaml deleted file mode 100644 index af458c6ee0..0000000000 --- a/community_images/envoy/bitnami/configs/dynamic/cds.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# /etc/envoy/cds.yaml -resources: - - "@type": type.googleapis.com/envoy.config.cluster.v3.Cluster - name: cluster_0 - connect_timeout: 30s - type: LOGICAL_DNS - dns_lookup_family: V4_ONLY - load_assignment: - cluster_name: cluster_0 - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: httpbin.org - port_value: 80 - - # expose the admin endpoint for readiness probe - - "@type": type.googleapis.com/envoy.config.cluster.v3.Cluster - name: admin_cluster - connect_timeout: 30s - type: LOGICAL_DNS - dns_lookup_family: V4_ONLY - load_assignment: - cluster_name: admin_cluster - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: 127.0.0.1 - port_value: 9901 \ No newline at end of file diff --git a/community_images/envoy/bitnami/configs/dynamic/lds.yaml b/community_images/envoy/bitnami/configs/dynamic/lds.yaml deleted file mode 100644 index 8ead51d4d8..0000000000 --- a/community_images/envoy/bitnami/configs/dynamic/lds.yaml +++ /dev/null @@ -1,47 +0,0 @@ -# /etc/envoy/lds.yaml -resources: - - "@type": type.googleapis.com/envoy.config.listener.v3.Listener - name: listener_0 - address: - socket_address: - address: 0.0.0.0 - port_value: 8081 - filter_chains: - - filters: - - name: envoy.filters.network.tcp_proxy - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy - stat_prefix: destination - cluster: cluster_0 - access_log: - - name: envoy.access_loggers.stdout - typed_config: - "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog - - # expose the admin endpoint for readiness probe - - "@type": type.googleapis.com/envoy.config.listener.v3.Listener - name: ready_listener - address: - socket_address: - address: 0.0.0.0 - port_value: 9001 - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - stat_prefix: ready_listener - http_filters: - - name: envoy.filters.http.router - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: ["*"] - routes: - - match: - path: "/ready" - route: - cluster: admin_cluster \ No newline at end of file diff --git a/community_images/envoy/bitnami/configs/envoy.yaml b/community_images/envoy/bitnami/configs/envoy.yaml deleted file mode 100644 index 8eee68f9e9..0000000000 --- a/community_images/envoy/bitnami/configs/envoy.yaml +++ /dev/null @@ -1,105 +0,0 @@ -admin: - access_log_path: /tmp/admin_access.log - address: - socket_address: { address: 127.0.0.1, port_value: 8081 } - -static_resources: - listeners: - - name: listener_0 - address: - socket_address: { address: 0.0.0.0, port_value: 8080 } - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - stat_prefix: ingress_http - codec_type: AUTO - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: ["*"] - routes: - - match: { prefix: "/a" } - route: { cluster: servicea, prefix_rewrite: "/" } - - match: { prefix: "/b" } - route: { cluster: serviceb, prefix_rewrite: "/" } - http_filters: - - name: envoy.filters.http.router - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router - - name: listener_1 - address: - socket_address: { address: 0.0.0.0, port_value: 8443 } - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - stat_prefix: ingress_http - codec_type: AUTO - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: ["*"] - routes: - - match: { prefix: "/a" } - route: { cluster: servicea, prefix_rewrite: "/" } - - match: { prefix: "/b" } - route: { cluster: serviceb, prefix_rewrite: "/" } - http_filters: - - name: envoy.filters.http.router - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router - transport_socket: - name: envoy.transport_sockets.tls - typed_config: - "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext - common_tls_context: - tls_params: - tls_minimum_protocol_version: TLSv1_3 - tls_certificates: - - certificate_chain: {filename: "/certs/server.crt"} - private_key: {filename: "/certs/server.key"} - validation_context: - trusted_ca: - filename: /etc/ssl/certs/ca-certificates.crt - clusters: - - name: servicea - connect_timeout: 0.25s - type: STRICT_DNS - lb_policy: ROUND_ROBIN - load_assignment: - cluster_name: servicea_cluster - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: backend1a - port_value: 80 - - endpoint: - address: - socket_address: - address: backend2a - port_value: 80 - - name: serviceb - connect_timeout: 0.25s - type: STRICT_DNS - lb_policy: ROUND_ROBIN - load_assignment: - cluster_name: serviceb_cluster - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: backend1b - port_value: 80 - - endpoint: - address: - socket_address: - address: backend2b - port_value: 80 \ No newline at end of file diff --git a/community_images/envoy/bitnami/configs/envoy_non_tls.yaml b/community_images/envoy/bitnami/configs/envoy_non_tls.yaml deleted file mode 100644 index d302ea83a7..0000000000 --- a/community_images/envoy/bitnami/configs/envoy_non_tls.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# https://www.envoyproxy.io/docs/envoy/latest/start/quick-start/configuration-static -static_resources: - listeners: - - name: listener_0 - address: - socket_address: - address: 0.0.0.0 - port_value: 8080 - filter_chains: - - filters: - - name: envoy.filters.network.tcp_proxy - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy - stat_prefix: destination - cluster: cluster_0 - access_log: - - name: envoy.access_loggers.stdout - typed_config: - "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog - - clusters: - - name: cluster_0 - connect_timeout: 30s - type: LOGICAL_DNS - dns_lookup_family: V4_ONLY - load_assignment: - cluster_name: cluster_0 - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: httpbin.org - port_value: 80 \ No newline at end of file diff --git a/community_images/envoy/bitnami/coverage_script.sh b/community_images/envoy/bitnami/coverage_script.sh deleted file mode 100755 index e9930cb73b..0000000000 --- a/community_images/envoy/bitnami/coverage_script.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -set -x -set -e - -echo "Running coverage script" \ No newline at end of file diff --git a/community_images/envoy/bitnami/dc_coverage.sh b/community_images/envoy/bitnami/dc_coverage.sh deleted file mode 100755 index 20ee7f5de0..0000000000 --- a/community_images/envoy/bitnami/dc_coverage.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -CONTAINER_NAME="${PROJECT_NAME}"-envoy-1 - -# exec into container and run coverage script -docker exec -i "${CONTAINER_NAME}" bash -c /opt/bitnami/scripts/coverage_script.sh - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -NON_TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort") -TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8443/tcp\"[0].HostPort") - -# run curl in loop for different endpoints -for i in {1..20}; -do - echo "$i" - curl http://localhost:"${NON_TLS_PORT}"/a - curl http://localhost:"${NON_TLS_PORT}"/b - with_backoff curl https://localhost:"${TLS_PORT}"/a -k -v - with_backoff curl https://localhost:"${TLS_PORT}"/b -k -v -done - diff --git a/community_images/envoy/bitnami/docker-compose.yml b/community_images/envoy/bitnami/docker-compose.yml deleted file mode 100644 index 8ae3e125fb..0000000000 --- a/community_images/envoy/bitnami/docker-compose.yml +++ /dev/null @@ -1,31 +0,0 @@ -version: '2' - -services: - envoy: - image: ${ENVOY_IMAGE_REPOSITORY}:${ENVOY_IMAGE_TAG} - user: root - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::8080' - - '0.0.0.0::8443' - volumes: - - ./certs:/certs - - ./configs/envoy.yaml:/opt/bitnami/envoy/conf/envoy.yaml:ro - - ./coverage_script.sh:/opt/bitnami/scripts/coverage_script.sh:ro - backend1a: - image: nginxdemos/hello:plain-text - ports: - - '80' - backend1b: - image: nginxdemos/hello:plain-text - ports: - - '80' - backend2a: - image: nginxdemos/hello:plain-text - ports: - - '80' - backend2b: - image: nginxdemos/hello:plain-text - ports: - - '80' diff --git a/community_images/envoy/bitnami/docker_coverage.sh b/community_images/envoy/bitnami/docker_coverage.sh deleted file mode 100755 index 0c1cafc91e..0000000000 --- a/community_images/envoy/bitnami/docker_coverage.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -NETWORK_NAME=$(jq -r '.network_name' < "$JSON_PARAMS") -ENVOY_HOST=$(jq -r '.container_details.envoy.ip_address' < "$JSON_PARAMS") - -# run test on docker container -docker run --rm --network="${NETWORK_NAME}" \ - -i alpine \ - apk add curl;curl http://"${ENVOY_HOST}":8081/ip;curl http://"${ENVOY_HOST}":9001/ready diff --git a/community_images/envoy/bitnami/image.yml b/community_images/envoy/bitnami/image.yml deleted file mode 100644 index 8baa2a73b1..0000000000 --- a/community_images/envoy/bitnami/image.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: envoy -official_name: Envoy -official_website: https://www.envoyproxy.io/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/envoy -source_image_repo_link: https://hub.docker.com/r/bitnami/envoy -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/envoy/README.md -rf_docker_link: rapidfort/envoy -image_workflow_name: envoy_bitnami -github_location: envoy/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fenvoy -usage_instructions: | - $ docker run --name envoy rapidfort/envoy:latest -what_is_text: | - Envoy is a distributed, high-performance proxy for cloud-native applications. It features a small memory footprint, universal application language compatibility, and supports http/2 and gRPC. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -bitnami_excluded_branches: - - "1.21" - - "1.20" -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - envoy: - input_base_tag: "1.27.1-debian-11-r" - - envoy: - input_base_tag: "1.26.5-debian-11-r" - - envoy: - input_base_tag: "1.25.10-debian-11-r" - - envoy: - input_base_tag: "1.24.11-debian-11-r" -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - envoy: - repository: "ENVOY_IMAGE_REPOSITORY" - tag: "ENVOY_IMAGE_TAG" - - type: docker - script: docker_coverage.sh - envoy: - volumes: - configs/dynamic/bootstrap.yaml: /opt/bitnami/envoy/conf/envoy.yaml - configs/dynamic: /etc/envoy diff --git a/community_images/envoy/official/README.md b/community_images/envoy/official/README.md deleted file mode 100644 index 95bd69eaf0..0000000000 --- a/community_images/envoy/official/README.md +++ /dev/null @@ -1,138 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Envoy Official - -RapidFort’s container optimization process hardened this Envoy Official container. This container is free to use and has no license limitations. - -It is the same as the [The Docker Community Envoy Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Envoy Official? - -> Envoy is a distributed, high-performance proxy for cloud-native applications. It features a small memory footprint, universal application language compatibility, and supports http/2 and gRPC. - - -[Overview of Envoy Official](https://www.envoyproxy.io/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Envoy Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run --name envoy rapidfort/envoy-official:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [The Docker Community Envoy Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [The Docker Community Envoy Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/envoy-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=envoy-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fenvoyproxy%2Fenvoy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=envoy-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fenvoyproxy%2Fenvoy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=envoy-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fenvoyproxy%2Fenvoy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=envoy-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fenvoyproxy%2Fenvoy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=envoy-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fenvoyproxy%2Fenvoy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=envoy-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/envoy-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/envoy-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/envoy/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/envoy/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/envoyproxy/envoy -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/envoy-official diff --git a/community_images/envoy/official/assets/cve_reduction.webp b/community_images/envoy/official/assets/cve_reduction.webp deleted file mode 100644 index 22c3a9f0b371fb37efc9fcbc418ccdf3b5aa0ec7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1512 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 Ds~H$V diff --git a/community_images/envoy/official/configs/dynamic/bootstrap.yaml b/community_images/envoy/official/configs/dynamic/bootstrap.yaml deleted file mode 100644 index 5e889f4b66..0000000000 --- a/community_images/envoy/official/configs/dynamic/bootstrap.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# bootstrap.yaml -node: - cluster: test-cluster - id: test-id - -# receive a request of readiness probe via the listener -admin: - address: - socket_address: - address: 127.0.0.1 - port_value: 9901 - access_log: - - name: envoy.access_loggers.stdout - typed_config: - "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog - -dynamic_resources: - cds_config: - resource_api_version: V3 - path_config_source: - path: /etc/envoy/cds.yaml - # only if using a ConfigMap - # https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/config_source.proto#envoy-v3-api-msg-config-core-v3-pathconfigsource - watched_directory: - path: /etc/envoy - lds_config: - resource_api_version: V3 - path_config_source: - path: /etc/envoy/lds.yaml - # only if using a ConfigMap - # https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/config_source.proto#envoy-v3-api-msg-config-core-v3-pathconfigsource - watched_directory: - path: /etc/envoy \ No newline at end of file diff --git a/community_images/envoy/official/configs/dynamic/cds.yaml b/community_images/envoy/official/configs/dynamic/cds.yaml deleted file mode 100644 index af458c6ee0..0000000000 --- a/community_images/envoy/official/configs/dynamic/cds.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# /etc/envoy/cds.yaml -resources: - - "@type": type.googleapis.com/envoy.config.cluster.v3.Cluster - name: cluster_0 - connect_timeout: 30s - type: LOGICAL_DNS - dns_lookup_family: V4_ONLY - load_assignment: - cluster_name: cluster_0 - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: httpbin.org - port_value: 80 - - # expose the admin endpoint for readiness probe - - "@type": type.googleapis.com/envoy.config.cluster.v3.Cluster - name: admin_cluster - connect_timeout: 30s - type: LOGICAL_DNS - dns_lookup_family: V4_ONLY - load_assignment: - cluster_name: admin_cluster - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: 127.0.0.1 - port_value: 9901 \ No newline at end of file diff --git a/community_images/envoy/official/configs/dynamic/lds.yaml b/community_images/envoy/official/configs/dynamic/lds.yaml deleted file mode 100644 index 8ead51d4d8..0000000000 --- a/community_images/envoy/official/configs/dynamic/lds.yaml +++ /dev/null @@ -1,47 +0,0 @@ -# /etc/envoy/lds.yaml -resources: - - "@type": type.googleapis.com/envoy.config.listener.v3.Listener - name: listener_0 - address: - socket_address: - address: 0.0.0.0 - port_value: 8081 - filter_chains: - - filters: - - name: envoy.filters.network.tcp_proxy - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy - stat_prefix: destination - cluster: cluster_0 - access_log: - - name: envoy.access_loggers.stdout - typed_config: - "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog - - # expose the admin endpoint for readiness probe - - "@type": type.googleapis.com/envoy.config.listener.v3.Listener - name: ready_listener - address: - socket_address: - address: 0.0.0.0 - port_value: 9001 - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - stat_prefix: ready_listener - http_filters: - - name: envoy.filters.http.router - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: ["*"] - routes: - - match: - path: "/ready" - route: - cluster: admin_cluster \ No newline at end of file diff --git a/community_images/envoy/official/configs/envoy.yaml b/community_images/envoy/official/configs/envoy.yaml deleted file mode 100644 index 584dcc1c47..0000000000 --- a/community_images/envoy/official/configs/envoy.yaml +++ /dev/null @@ -1,105 +0,0 @@ -admin: - access_log_path: /tmp/admin_access.log - address: - socket_address: { address: 127.0.0.1, port_value: 8081 } - -static_resources: - listeners: - - name: listener_0 - address: - socket_address: { address: 0.0.0.0, port_value: 8080 } - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - stat_prefix: ingress_http - codec_type: AUTO - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: ["*"] - routes: - - match: { prefix: "/a" } - route: { cluster: servicea, prefix_rewrite: "/" } - - match: { prefix: "/b" } - route: { cluster: serviceb, prefix_rewrite: "/" } - http_filters: - - name: envoy.filters.http.router - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router - - name: listener_1 - address: - socket_address: { address: 0.0.0.0, port_value: 8443 } - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager - stat_prefix: ingress_http - codec_type: AUTO - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: ["*"] - routes: - - match: { prefix: "/a" } - route: { cluster: servicea, prefix_rewrite: "/" } - - match: { prefix: "/b" } - route: { cluster: serviceb, prefix_rewrite: "/" } - http_filters: - - name: envoy.filters.http.router - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router - transport_socket: - name: envoy.transport_sockets.tls - typed_config: - "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext - common_tls_context: - tls_params: - tls_minimum_protocol_version: TLSv1_3 - tls_certificates: - - certificate_chain: {filename: "/etc/envoy/server.crt"} - private_key: {filename: "/etc/envoy/server.key"} - validation_context: - trusted_ca: - filename: /etc/ssl/certs/ca-certificates.crt - clusters: - - name: servicea - connect_timeout: 0.25s - type: STRICT_DNS - lb_policy: ROUND_ROBIN - load_assignment: - cluster_name: servicea_cluster - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: backend1a - port_value: 80 - - endpoint: - address: - socket_address: - address: backend2a - port_value: 80 - - name: serviceb - connect_timeout: 0.25s - type: STRICT_DNS - lb_policy: ROUND_ROBIN - load_assignment: - cluster_name: serviceb_cluster - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: backend1b - port_value: 80 - - endpoint: - address: - socket_address: - address: backend2b - port_value: 80 \ No newline at end of file diff --git a/community_images/envoy/official/configs/envoy_non_tls.yaml b/community_images/envoy/official/configs/envoy_non_tls.yaml deleted file mode 100644 index d302ea83a7..0000000000 --- a/community_images/envoy/official/configs/envoy_non_tls.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# https://www.envoyproxy.io/docs/envoy/latest/start/quick-start/configuration-static -static_resources: - listeners: - - name: listener_0 - address: - socket_address: - address: 0.0.0.0 - port_value: 8080 - filter_chains: - - filters: - - name: envoy.filters.network.tcp_proxy - typed_config: - "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy - stat_prefix: destination - cluster: cluster_0 - access_log: - - name: envoy.access_loggers.stdout - typed_config: - "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog - - clusters: - - name: cluster_0 - connect_timeout: 30s - type: LOGICAL_DNS - dns_lookup_family: V4_ONLY - load_assignment: - cluster_name: cluster_0 - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: httpbin.org - port_value: 80 \ No newline at end of file diff --git a/community_images/envoy/official/coverage_script.sh b/community_images/envoy/official/coverage_script.sh deleted file mode 100755 index e9930cb73b..0000000000 --- a/community_images/envoy/official/coverage_script.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -set -x -set -e - -echo "Running coverage script" \ No newline at end of file diff --git a/community_images/envoy/official/dc_coverage.sh b/community_images/envoy/official/dc_coverage.sh deleted file mode 100755 index 745a9a8f7a..0000000000 --- a/community_images/envoy/official/dc_coverage.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -CONTAINER_NAME="${PROJECT_NAME}"-envoy-1 - -# exec into container and run coverage script -docker exec -i "${CONTAINER_NAME}" bash -c /tmp/coverage_script.sh - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -NON_TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort") -TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8443/tcp\"[0].HostPort") - -# run curl in loop for different endpoints -for i in {1..20}; -do - echo "$i" - curl http://localhost:"${NON_TLS_PORT}"/a - curl http://localhost:"${NON_TLS_PORT}"/b - with_backoff curl https://localhost:"${TLS_PORT}"/a -k -v - with_backoff curl https://localhost:"${TLS_PORT}"/b -k -v -done - diff --git a/community_images/envoy/official/docker-compose.yml b/community_images/envoy/official/docker-compose.yml deleted file mode 100644 index abc02db54e..0000000000 --- a/community_images/envoy/official/docker-compose.yml +++ /dev/null @@ -1,32 +0,0 @@ -version: '2' - -services: - envoy: - image: ${ENVOY_IMAGE_REPOSITORY}:${ENVOY_IMAGE_TAG} - user: root - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::8080' - - '0.0.0.0::8443' - volumes: - - ./certs/server.crt:/etc/envoy/server.crt - - ./certs/server.key:/etc/envoy/server.key - - ./configs/envoy.yaml:/etc/envoy/envoy.yaml:ro - - ./coverage_script.sh:/tmp/coverage_script.sh:ro - backend1a: - image: nginxdemos/hello:plain-text - ports: - - '80' - backend1b: - image: nginxdemos/hello:plain-text - ports: - - '80' - backend2a: - image: nginxdemos/hello:plain-text - ports: - - '80' - backend2b: - image: nginxdemos/hello:plain-text - ports: - - '80' diff --git a/community_images/envoy/official/docker_coverage.sh b/community_images/envoy/official/docker_coverage.sh deleted file mode 100755 index 1fbafa6222..0000000000 --- a/community_images/envoy/official/docker_coverage.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -NETWORK_NAME=$(jq -r '.network_name' < "$JSON_PARAMS") -ENVOY_HOST=$(jq -r '.container_details."envoy-official".ip_address' < "$JSON_PARAMS") - -# run test on docker container -docker run --rm --network="${NETWORK_NAME}" \ - -i alpine \ - apk add curl;curl http://"${ENVOY_HOST}":9901/ready diff --git a/community_images/envoy/official/image.yml b/community_images/envoy/official/image.yml deleted file mode 100644 index d57c14b79e..0000000000 --- a/community_images/envoy/official/image.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: envoy-official -official_name: Envoy Official -official_website: https://www.envoyproxy.io/ -source_image_provider: The Docker Community -source_image_repo: docker.io/envoyproxy/envoy -source_image_repo_link: https://hub.docker.com/r/envoyproxy/envoy -source_image_readme: https://github.com/envoyproxy/envoy/blob/main/ci/README.md -rf_docker_link: rapidfort/envoy-official -image_workflow_name: envoy_official -github_location: envoy/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fenvoyproxy%2Fenvoy -usage_instructions: | - $ docker run --name envoy rapidfort/envoy-official:latest -what_is_text: | - Envoy is a distributed, high-performance proxy for cloud-native applications. It features a small memory footprint, universal application language compatibility, and supports http/2 and gRPC. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: envoyproxy -repo_sets: - - envoy: - input_base_tag: "v1.26*" - output_repo: envoy-official -runtimes: - - type: docker - script: docker_coverage.sh - envoy: - ports: ["9901:9901"] - volumes: - configs/dynamic/bootstrap.yaml: /etc/envoy/envoy.yaml - configs/dynamic: /etc/envoy diff --git a/community_images/etcd/bitnami/.rfignore b/community_images/etcd/bitnami/.rfignore deleted file mode 100644 index 5bbc0c7f7c..0000000000 --- a/community_images/etcd/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/etcd/licenses -opt/bitnami/licenses -usr/share/common-licenses diff --git a/community_images/etcd/bitnami/README.md b/community_images/etcd/bitnami/README.md deleted file mode 100644 index 51b1c29c84..0000000000 --- a/community_images/etcd/bitnami/README.md +++ /dev/null @@ -1,143 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Etcd - -RapidFort’s container optimization process hardened this Etcd container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Etcd][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Etcd? - -> etcd is a distributed key-value store designed to securely store data across a cluster. etcd is widely used in production on account of its reliability, fault-tolerance and ease of use. - - -[Overview of Etcd](https://etcd.io/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Etcd image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install etcd, just replace repository with RapidFort registry -$ helm install my-etcd bitnami/etcd --set image.repository=rapidfort/etcd - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Etcd][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Etcd][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/etcd][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`3.5`, `3.5-debian-11`, `3.5.11`, `3.5.11-debian-11-r` (3.5/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/etcd/3.5/debian-11/Dockerfile) -* [`3.4`, `3.4-debian-11`, `3.4.28`, `3.4.28-debian-11-r` (3.4/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/etcd/3.4/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=etcd&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fetcd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=etcd&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fetcd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=etcd&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fetcd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=etcd&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fetcd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=etcd&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fetcd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=etcd&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/etcd?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/etcd?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/etcd/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/etcd/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/etcd -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/etcd diff --git a/community_images/etcd/bitnami/assets/cve_reduction.webp b/community_images/etcd/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 784810b75b5744d626284d99e47d920a99fe89e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1900 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 diff --git a/community_images/etcd/bitnami/dc_coverage.sh b/community_images/etcd/bitnami/dc_coverage.sh deleted file mode 100755 index f1e9de1475..0000000000 --- a/community_images/etcd/bitnami/dc_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" diff --git a/community_images/etcd/bitnami/docker-compose.yml b/community_images/etcd/bitnami/docker-compose.yml deleted file mode 100644 index 3ee916bfb0..0000000000 --- a/community_images/etcd/bitnami/docker-compose.yml +++ /dev/null @@ -1,45 +0,0 @@ -version: '2' - -services: - etcd1: - image: ${ETCD_IMAGE_REPOSITORY}:${ETCD_IMAGE_TAG} - cap_add: - - SYS_PTRACE - environment: - - ALLOW_NONE_AUTHENTICATION=yes - - ETCD_NAME=etcd1 - - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd1:2380 - - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 - - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 - - ETCD_ADVERTISE_CLIENT_URLS=http://etcd1:2379 - - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster - - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 - - ETCD_INITIAL_CLUSTER_STATE=new - etcd2: - image: ${ETCD_IMAGE_REPOSITORY}:${ETCD_IMAGE_TAG} - cap_add: - - SYS_PTRACE - environment: - - ALLOW_NONE_AUTHENTICATION=yes - - ETCD_NAME=etcd2 - - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd2:2380 - - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 - - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 - - ETCD_ADVERTISE_CLIENT_URLS=http://etcd2:2379 - - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster - - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 - - ETCD_INITIAL_CLUSTER_STATE=new - etcd3: - image: ${ETCD_IMAGE_REPOSITORY}:${ETCD_IMAGE_TAG} - cap_add: - - SYS_PTRACE - environment: - - ALLOW_NONE_AUTHENTICATION=yes - - ETCD_NAME=etcd3 - - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd3:2380 - - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 - - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 - - ETCD_ADVERTISE_CLIENT_URLS=http://etcd3:2379 - - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster - - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 - - ETCD_INITIAL_CLUSTER_STATE=new \ No newline at end of file diff --git a/community_images/etcd/bitnami/docker_coverage.sh b/community_images/etcd/bitnami/docker_coverage.sh deleted file mode 100755 index f1e9de1475..0000000000 --- a/community_images/etcd/bitnami/docker_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" diff --git a/community_images/etcd/bitnami/etcd_test.sh b/community_images/etcd/bitnami/etcd_test.sh deleted file mode 100755 index 91030e2646..0000000000 --- a/community_images/etcd/bitnami/etcd_test.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -set -x -set -e - -if [[ $# -ne 1 ]]; then - echo "Usage:$0 " - exit 1 -fi - -ROOT_PASSWORD="$1" - -function etcd_cmd() -{ - etcdctl --user root:"$ROOT_PASSWORD" "$@" -} - -etcd_cmd version - -etcd_cmd put foo bar - -etcd_cmd lease grant 10 - -etcd_cmd get foo - -etcd_cmd get foo --hex - -etcd_cmd get foo --print-value-only - -etcd_cmd get --prefix foo - -etcd_cmd del foo - -etcd_cmd watch foo & - -etcd_cmd alarm list - -etcd_cmd check perf - -etcd_cmd check datascale - -etcd_cmd endpoint health - -etcd_cmd endpoint status - -etcd_cmd member list diff --git a/community_images/etcd/bitnami/image.yml b/community_images/etcd/bitnami/image.yml deleted file mode 100644 index 853cdaafde..0000000000 --- a/community_images/etcd/bitnami/image.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: etcd -official_name: Etcd -official_website: https://etcd.io/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/etcd -source_image_repo_link: https://hub.docker.com/r/bitnami/etcd -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/etcd/README.md -rf_docker_link: rapidfort/etcd -image_workflow_name: etcd_bitnami -github_location: etcd/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fetcd -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install etcd, just replace repository with RapidFort registry - $ helm install my-etcd bitnami/etcd --set image.repository=rapidfort/etcd -what_is_text: | - etcd is a distributed key-value store designed to securely store data across a cluster. etcd is widely used in production on account of its reliability, fault-tolerance and ease of use. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -bitnami_excluded_branches: - - "3.3" -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - etcd: - input_base_tag: "3.5.9-debian-11-r" - - etcd: - input_base_tag: "3.4.27-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: etcd - image_keys: - etcd: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - etcd: - repository: "ETCD_IMAGE_REPOSITORY" - tag: "ETCD_IMAGE_TAG" - - type: docker - script: docker_coverage.sh - etcd: - environment: - ALLOW_NONE_AUTHENTICATION: yes diff --git a/community_images/etcd/bitnami/k8s_coverage.sh b/community_images/etcd/bitnami/k8s_coverage.sh deleted file mode 100755 index 761d2da82d..0000000000 --- a/community_images/etcd/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# get pod name -POD_NAME="${RELEASE_NAME}"-0 - -# etcd password -ROOT_PASSWORD=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath="{.data.etcd-root-password}" | base64 -d) - -# copy etcd_test.sh into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/etcd_test.sh "${POD_NAME}":/tmp/etcd_test.sh - -# run etcd_test on cluster -kubectl -n "${NAMESPACE}" exec -i "${POD_NAME}" -- /bin/bash -c "/tmp/etcd_test.sh $ROOT_PASSWORD" diff --git a/community_images/etcd/bitnami/overrides.yml b/community_images/etcd/bitnami/overrides.yml deleted file mode 100644 index f201e68505..0000000000 --- a/community_images/etcd/bitnami/overrides.yml +++ /dev/null @@ -1,18 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/etcd/ironbank/.rfignore b/community_images/etcd/ironbank/.rfignore deleted file mode 100644 index bd036ec246..0000000000 --- a/community_images/etcd/ironbank/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/licenses diff --git a/community_images/etcd/ironbank/README.md b/community_images/etcd/ironbank/README.md deleted file mode 100644 index 9ad293b04f..0000000000 --- a/community_images/etcd/ironbank/README.md +++ /dev/null @@ -1,139 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Etcd Ironbank - -RapidFort’s container optimization process hardened this Etcd Ironbank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Etcd Ironbank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Etcd Ironbank? - -> etcd is a distributed key-value store designed to securely store data across a cluster. etcd is widely used in production on account of its reliability, fault-tolerance and ease of use. - - -[Overview of Etcd Ironbank](https://etcd.io/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Etcd Ironbank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# install etcd, using docker run -$ docker run -it --name Etcd rapidfort/etcd-ib - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Etcd Ironbank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One Etcd Ironbank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/etcd-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=etcd-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fetcd%2Fetcd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=etcd-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fetcd%2Fetcd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=etcd-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fetcd%2Fetcd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=etcd-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fetcd%2Fetcd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=etcd-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fetcd%2Fetcd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=etcd-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/etcd-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/etcd-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/etcd/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/etcd/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fetcd%2Fetcd -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/etcd-ib diff --git a/community_images/etcd/ironbank/assets/cve_reduction.webp b/community_images/etcd/ironbank/assets/cve_reduction.webp deleted file mode 100644 index dfb37175106ca8d59eebfda39f954e19b927b508..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1578 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 diff --git a/community_images/etcd/ironbank/dc_coverage.sh b/community_images/etcd/ironbank/dc_coverage.sh deleted file mode 100755 index 518d8169c8..0000000000 --- a/community_images/etcd/ironbank/dc_coverage.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -CONTAINER_NAME="${PROJECT_NAME}"-etcd1-1 - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# copy etcd_test.sh into container -docker cp "${SCRIPTPATH}"/etcd_test.sh "${CONTAINER_NAME}":/tmp/etcd_test.sh - -# run etcd_test on cluster -docker exec "${CONTAINER_NAME}" /bin/bash -c "/tmp/etcd_test.sh etcdrootpwd" diff --git a/community_images/etcd/ironbank/docker-compose.yml b/community_images/etcd/ironbank/docker-compose.yml deleted file mode 100644 index 7894329cc8..0000000000 --- a/community_images/etcd/ironbank/docker-compose.yml +++ /dev/null @@ -1,62 +0,0 @@ -version: '2' - -services: - etcd1: - image: ${ETCD_IMAGE_REPOSITORY}:${ETCD_IMAGE_TAG} - user: root - cap_add: - - SYS_PTRACE - environment: - - ALLOW_NONE_AUTHENTICATION=yes - - ETCD_NAME=etcd1 - - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd1:2380 - - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 - - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 - - ETCD_ADVERTISE_CLIENT_URLS=http://etcd1:2379 - - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster - - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 - - ETCD_INITIAL_CLUSTER_STATE=new - - ETCD_ROOT_PASSWORD=etcdrootpwd - - ETCD_ELECTION_TIMEOUT=1250 - ports: - - 2379 - - etcd2: - image: ${ETCD_IMAGE_REPOSITORY}:${ETCD_IMAGE_TAG} - user: root - cap_add: - - SYS_PTRACE - environment: - - ALLOW_NONE_AUTHENTICATION=yes - - ETCD_NAME=etcd2 - - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd2:2380 - - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 - - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 - - ETCD_ADVERTISE_CLIENT_URLS=http://etcd2:2379 - - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster - - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 - - ETCD_INITIAL_CLUSTER_STATE=new - - ETCD_ROOT_PASSWORD=etcdrootpwd - - ETCD_ELECTION_TIMEOUT=1250 - ports: - - 2379 - - etcd3: - image: ${ETCD_IMAGE_REPOSITORY}:${ETCD_IMAGE_TAG} - user: root - cap_add: - - SYS_PTRACE - environment: - - ALLOW_NONE_AUTHENTICATION=yes - - ETCD_NAME=etcd3 - - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd3:2380 - - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 - - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 - - ETCD_ADVERTISE_CLIENT_URLS=http://etcd3:2379 - - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster - - ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 - - ETCD_INITIAL_CLUSTER_STATE=new - - ETCD_ROOT_PASSWORD=etcdrootpwd - - ETCD_ELECTION_TIMEOUT=1250 - ports: - - 2379 diff --git a/community_images/etcd/ironbank/etcd_test.sh b/community_images/etcd/ironbank/etcd_test.sh deleted file mode 100755 index 0f62e49738..0000000000 --- a/community_images/etcd/ironbank/etcd_test.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash - -set -x -set -e - -ROOT_PASSWORD=etcdrootpwd - -function etcd_cmd() -{ - etcdctl --user=root:$ROOT_PASSWORD "$@" -} - -etcd_cmd version - -etcd_cmd put foo bar - -etcd_cmd lease grant 10 - -etcd_cmd get foo - -etcd_cmd get foo --hex - -etcd_cmd get foo --print-value-only - -etcd_cmd get --prefix foo - -etcd_cmd del foo - -etcd_cmd watch foo & - -etcd_cmd alarm list - -etcd_cmd check perf - -etcd_cmd check datascale - -etcd_cmd endpoint health - -etcd_cmd endpoint status - -etcd_cmd member list diff --git a/community_images/etcd/ironbank/image.yml b/community_images/etcd/ironbank/image.yml deleted file mode 100644 index 949595ac79..0000000000 --- a/community_images/etcd/ironbank/image.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: etcd-ib -official_name: Etcd Ironbank -official_website: https://etcd.io/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/etcd/etcd -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fetcd%2Fetcd -source_image_readme: https://repo1.dso.mil/dsop/opensource/etcd/etcd/-/blob/development/README.md -rf_docker_link: rapidfort/etcd-ib -github_location: etcd/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fetcd%2Fetcd -usage_instructions: | - # install etcd, using docker run - $ docker run -it --name Etcd rapidfort/etcd-ib -what_is_text: | - etcd is a distributed key-value store designed to securely store data across a cluster. etcd is widely used in production on account of its reliability, fault-tolerance and ease of use. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/etcd/etcd: - input_base_tag: "3.5." - output_repo: etcd-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - etcd-ib: - repository: "ETCD_IMAGE_REPOSITORY" - tag: "ETCD_IMAGE_TAG" diff --git a/community_images/fluentd/bitnami/.rfignore b/community_images/fluentd/bitnami/.rfignore deleted file mode 100644 index df9296ac6d..0000000000 --- a/community_images/fluentd/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/consul/licenses -opt/bitnami/licenses -usr/share/common-licenses diff --git a/community_images/fluentd/bitnami/README.md b/community_images/fluentd/bitnami/README.md deleted file mode 100644 index a7fe3ea5a4..0000000000 --- a/community_images/fluentd/bitnami/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Fluentd - -RapidFort’s container optimization process hardened this Fluentd container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Fluentd][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Fluentd? - -> Fluentd is a streaming data collector for unified logging layer hosted by CNCF. Fluentd lets you unify the data collection and consumption for a better use and understanding of data. - - -[Overview of Fluentd](https://www.fluentd.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Fluentd image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install fluentd, just replace repository with RapidFort registry -$ helm install my-fluentd bitnami/fluentd --set image.repository=rapidfort/fluentd - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Fluentd][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Fluentd][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/fluentd][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`1`, `1-debian-11`, `1.16.3`, `1.16.3-debian-11-r` (1/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/fluentd/1/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=fluentd&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/fluentd?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/fluentd?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/fluentd/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/fluentd/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/fluentd -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/fluentd diff --git a/community_images/fluentd/bitnami/assets/cve_reduction.webp b/community_images/fluentd/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 767779bc90975f70798a21cae6ad616dcef391af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1890 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 Z7mHI)7mHI)7mHJToz`2Ncrma5003CPAOHXW diff --git a/community_images/fluentd/bitnami/dc_coverage.sh b/community_images/fluentd/bitnami/dc_coverage.sh deleted file mode 100755 index f7d879da68..0000000000 --- a/community_images/fluentd/bitnami/dc_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" \ No newline at end of file diff --git a/community_images/fluentd/bitnami/docker-compose.yml b/community_images/fluentd/bitnami/docker-compose.yml deleted file mode 100644 index 96e85dd221..0000000000 --- a/community_images/fluentd/bitnami/docker-compose.yml +++ /dev/null @@ -1,60 +0,0 @@ -version: '2' - -services: - fluentd: - image: ${FLUENTD_IMAGE_REPOSITORY}:${FLUENTD_IMAGE_TAG} - cap_add: - - SYS_PTRACE - ports: - - '24224:24224' - - '5140:5140' - volumes: - - fluentd_data:/bitnami/fluentd - - ../../common/tests/common_commands.sh:/opt/bitnami/scripts/common_commands.sh:ro - backend1a: - image: nginxdemos/hello:plain-text - ports: - - '80' - depends_on: - - fluentd - logging: - driver: "fluentd" - options: - fluentd-address: localhost:24224 - tag: backend1a - backend1b: - image: nginxdemos/hello:plain-text - ports: - - '80' - depends_on: - - fluentd - logging: - driver: "fluentd" - options: - fluentd-address: localhost:24224 - tag: backend1b - backend2a: - image: nginxdemos/hello:plain-text - ports: - - '80' - depends_on: - - fluentd - logging: - driver: "fluentd" - options: - fluentd-address: localhost:24224 - tag: backend2a - backend2b: - image: nginxdemos/hello:plain-text - ports: - - '80' - depends_on: - - fluentd - logging: - driver: "fluentd" - options: - fluentd-address: localhost:24224 - tag: backend2b -volumes: - fluentd_data: - driver: local diff --git a/community_images/fluentd/bitnami/docker_coverage.sh b/community_images/fluentd/bitnami/docker_coverage.sh deleted file mode 100755 index f6439946cd..0000000000 --- a/community_images/fluentd/bitnami/docker_coverage.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -CONTAINER_NAME=$(jq -r '.container_details.fluentd.name' < "$JSON_PARAMS") - -# try installing a plugin -docker exec \ - -i "$CONTAINER_NAME" \ - fluent-gem install fluent-plugin-grep - -# try installing a plugin using gem install -docker exec \ - -i "$CONTAINER_NAME" \ - gem install fluent-plugin-elasticsearch - -# list fluent gem list -docker exec \ - -i "$CONTAINER_NAME" \ - fluent-gem list diff --git a/community_images/fluentd/bitnami/image.yml b/community_images/fluentd/bitnami/image.yml deleted file mode 100644 index d5aa8558c3..0000000000 --- a/community_images/fluentd/bitnami/image.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: fluentd -official_name: Fluentd -official_website: https://www.fluentd.org/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/fluentd -source_image_repo_link: https://hub.docker.com/r/bitnami/fluentd -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/fluentd/README.md -rf_docker_link: rapidfort/fluentd -image_workflow_name: fluentd_bitnami -github_location: fluentd/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Ffluentd -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install fluentd, just replace repository with RapidFort registry - $ helm install my-fluentd bitnami/fluentd --set image.repository=rapidfort/fluentd -what_is_text: | - Fluentd is a streaming data collector for unified logging layer hosted by CNCF. Fluentd lets you unify the data collection and consumption for a better use and understanding of data. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - fluentd: - input_base_tag: "1.16.2-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: fluentd - wait_time_sec: 60 - image_keys: - fluentd: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - fluentd: - repository: "FLUENTD_IMAGE_REPOSITORY" - tag: "FLUENTD_IMAGE_TAG" - - type: docker - script: docker_coverage.sh diff --git a/community_images/fluentd/bitnami/k8s_coverage.sh b/community_images/fluentd/bitnami/k8s_coverage.sh deleted file mode 100755 index e6c63ece3b..0000000000 --- a/community_images/fluentd/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for k8s coverage = $JSON" diff --git a/community_images/fluentd/bitnami/overrides.yml b/community_images/fluentd/bitnami/overrides.yml deleted file mode 100644 index a4b5dac248..0000000000 --- a/community_images/fluentd/bitnami/overrides.yml +++ /dev/null @@ -1,35 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -forwarder: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -aggregator: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 \ No newline at end of file diff --git a/community_images/fluentd/ironbank/.rfignore b/community_images/fluentd/ironbank/.rfignore deleted file mode 100755 index bd036ec246..0000000000 --- a/community_images/fluentd/ironbank/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/licenses diff --git a/community_images/fluentd/ironbank/README.md b/community_images/fluentd/ironbank/README.md deleted file mode 100755 index 5754b9936f..0000000000 --- a/community_images/fluentd/ironbank/README.md +++ /dev/null @@ -1,139 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Fluentd IronBank - -RapidFort’s container optimization process hardened this Fluentd IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Fluentd IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Fluentd IronBank? - -> Fluentd is a streaming data collector for unified logging layer hosted by CNCF. Fluentd lets you unify the data collection and consumption for a better use and understanding of data. - - -[Overview of Fluentd IronBank](https://www.fluentd.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Fluentd IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Using docker run: -$ docker run -d -p 24224:24224 -p 24224:24224/udp -v /data:/fluentd/log rapidfort/fluentd-ib - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Fluentd IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One Fluentd IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/fluentd-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=fluentd-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Ffluentd%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Ffluentd%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Ffluentd%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Ffluentd%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Ffluentd%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/fluentd-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/fluentd-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/fluentd/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/fluentd/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Ffluentd%2Ffluentd -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/fluentd-ib diff --git a/community_images/fluentd/ironbank/assets/cve_reduction.webp b/community_images/fluentd/ironbank/assets/cve_reduction.webp deleted file mode 100644 index 4c05a2a8ab908828daf47904d448678ce943b79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1598 zcmb`HX;9Nw5Wts1!H6Ixkl;arnsOgfg63Afy6;za3L@HOSMgk%b z9OMXA4nYJFR0O4!LnYx9MGB4z2%|(n(tqkW_`y!Ubl>d0-`lr4Z{IPG?B?ujz7$}W zlf5U!(~^n;00N=~GC%@wb8zs)$s$9L#YwHa2>^o`!y&ua6R5s^1gY>@y#da?oc^l`_Yh?104NBdinl z6$gFA2V>YVNKBhFp3de-c>rNsMpUeHEvZN=RtjPIcp*I%(X|i_WN-m{g#TArJWm!M z!15h{T;`%LhzC%c1c2*X^li)sQ2804rh^^G3H+xRdBnfbIl9`F|;N zF?aDU{$;NOBxfzMPZrX`APPc&0B*npIv62j3MQ}#%#jyE5X%90;vrW?k1t~fTN!5O zTraKXYZ0&ZvX8Gw3DX9(Bw=7c%FQQn!xq|t91ejh6r*0(Hgh%h_Y2m@zRg>Ro{)Pk zobNCqSxdTS6&IX7(LT`vSR$3cyq>0RT?J*GN^F4pr5@#@^@wZ^MBfY^eQ?n&I3m(- zQm3CWG4WcW+;C{6u6FN@w&ZLb&B(&NZ>nqY<(p8vRpBd_wIAKa!VzFmv z{cK?sM=Nf?qcFLq+wcr|J$cT2=&5|*igb4OHiPynsR}2K!@`_bkX>(|hm}a4#!Np| zmYJfimzISWzY%AzC5`OC=WUb7cKr6^tjH6C*-fR_vqE0Vt8N^~s zUqh9Cb2}E zZau=LHQDxuql8_LE2>_^Xc?^Tu~1R1)@&+v8Ymv^GSZtbLq9FG%@f7Gqj0OZNjZ&} zzB}cY$@aVIM2=|Y-0(i1M+JKJC3B*f*J;NXhFyepth0IZxJu)2ckOh^PiuBM#EV*| zU;JUaAxE-gTydc~CxQRIW9XV(Gi%?jraQBfUNg%)4(Dv(W5#!i7AC6WPOBXo7XA>+8{W>Y_A|7b)py~|$1(Q^G)3tOu16)mV2honjeTt- zW3#Ive6wfoBUwi+T0dZtq=MI(RLE;GxZY*M`5Zh;f895LV5S11Dq;;s_-kJF3 z+onnh{>zhfC?u<@Dmu-(rZFQ+qvXg3C6Cdqqx=Mu0y$Q+hj9P)Y7(x9yW7dl^*H=LY`s_V#7(|5M0clA4r&+E>;upyq0QI1xtv#+h+Lc7>D+0|d7 zmgpoXa(TJge|xvA2tC|&otG%F8xf7X@_4cG``G)LHRaE&rg9po!g9{MRaD!gAxV7- z=hv)$4K;LlLG=cHeDluYiW*B6Nx+G{CA=OlQ$@6)8H8xz9yS-2CO(KzzzR*yS(jAk zwDW~m4iu|;rnGo{(u$zirJZ-QWTO>W<3<|68#P*Kqdp%K@17pGZ>Cs@x$-uSYo0W= S*GWTMOw34}QMW=qh`#}?ct?f+ diff --git a/community_images/fluentd/ironbank/assets/metrics.webp b/community_images/fluentd/ironbank/assets/metrics.webp deleted file mode 100644 index 601b1367fc13bce89cd96982e6739639f3d8d250..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25166 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 YHqcnMZJ@Di+d*R4|J7yoIkO}H0MhRXF#rGn diff --git a/community_images/fluentd/ironbank/dc_coverage.sh b/community_images/fluentd/ironbank/dc_coverage.sh deleted file mode 100755 index 67b840a2eb..0000000000 --- a/community_images/fluentd/ironbank/dc_coverage.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -CONTAINER_NAME="${PROJECT_NAME}"-fluentd-1 - -# try installing a plugin -docker exec -i "$CONTAINER_NAME" fluent-gem install fluent-plugin-grep - -# try installing a plugin using gem install -docker exec -i "$CONTAINER_NAME" gem install fluent-plugin-elasticsearch - -# list fluent gem list -docker exec -i "$CONTAINER_NAME" fluent-gem list diff --git a/community_images/fluentd/ironbank/docker-compose.yml b/community_images/fluentd/ironbank/docker-compose.yml deleted file mode 100755 index 5517947498..0000000000 --- a/community_images/fluentd/ironbank/docker-compose.yml +++ /dev/null @@ -1,60 +0,0 @@ -version: '2' - -services: - fluentd: - image: ${FLUENTD_IMAGE_REPOSITORY}:${FLUENTD_IMAGE_TAG} - user: root - cap_add: - - SYS_PTRACE - ports: - - '24224:24224' - - '5140:5140' - volumes: - - fluentd_data:/fluentd/log - backend1a: - image: nginxdemos/hello:plain-text - ports: - - '80' - depends_on: - - fluentd - logging: - driver: "fluentd" - options: - fluentd-address: localhost:24224 - tag: backend1a - backend1b: - image: nginxdemos/hello:plain-text - ports: - - '80' - depends_on: - - fluentd - logging: - driver: "fluentd" - options: - fluentd-address: localhost:24224 - tag: backend1b - backend2a: - image: nginxdemos/hello:plain-text - ports: - - '80' - depends_on: - - fluentd - logging: - driver: "fluentd" - options: - fluentd-address: localhost:24224 - tag: backend2a - backend2b: - image: nginxdemos/hello:plain-text - ports: - - '80' - depends_on: - - fluentd - logging: - driver: "fluentd" - options: - fluentd-address: localhost:24224 - tag: backend2b -volumes: - fluentd_data: - driver: local diff --git a/community_images/fluentd/ironbank/image.yml b/community_images/fluentd/ironbank/image.yml deleted file mode 100755 index 35dcd14028..0000000000 --- a/community_images/fluentd/ironbank/image.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: fluentd-ib -official_name: Fluentd IronBank -official_website: https://www.fluentd.org/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/fluentd/fluentd -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Ffluentd%2Ffluentd -source_image_readme: https://repo1.dso.mil/dsop/opensource/fluentd/fluentd/-/blob/development/README.md -rf_docker_link: rapidfort/fluentd-ib -image_workflow_name: fluentd_ironbank -github_location: fluentd/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Ffluentd%2Ffluentd -usage_instructions: | - # Using docker run: - $ docker run -d -p 24224:24224 -p 24224:24224/udp -v /data:/fluentd/log rapidfort/fluentd-ib -what_is_text: | - Fluentd is a streaming data collector for unified logging layer hosted by CNCF. Fluentd lets you unify the data collection and consumption for a better use and understanding of data. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/fluentd/fluentd: - input_base_tag: "1.15." - output_repo: fluentd-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - fluentd-ib: - repository: "FLUENTD_IMAGE_REPOSITORY" - tag: "FLUENTD_IMAGE_TAG" diff --git a/community_images/fluentd/official/.rfignore b/community_images/fluentd/official/.rfignore deleted file mode 100644 index 1c799e0088..0000000000 --- a/community_images/fluentd/official/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/common-licenses \ No newline at end of file diff --git a/community_images/fluentd/official/README.md b/community_images/fluentd/official/README.md deleted file mode 100755 index f11b20a029..0000000000 --- a/community_images/fluentd/official/README.md +++ /dev/null @@ -1,141 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Fluentd Official - -RapidFort’s container optimization process hardened this Fluentd Official container. This container is free to use and has no license limitations. - -It is the same as the [Fluentd Fluentd Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Fluentd Official? - -> Fluentd is a streaming data collector for unified logging layer hosted by CNCF. Fluentd lets you unify the data collection and consumption for a better use and understanding of data. - - -[Overview of Fluentd Official](https://www.fluentd.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Fluentd Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Using Docker run: -$ docker run -p 24224:24224 -p 24224:24224/udp -u fluent -v /path/to/dir:/fluentd/log rapidfort/fluentd-official - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Fluentd Fluentd Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Fluentd Fluentd Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/fluentd-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* ['v1.14.0-1.0', 'v1.14-1', 'latest'](https://github.com/fluent/fluentd-docker-image/blob/a9e4cee765c7aaf7876d6fe3282aa565dbcdc2a4/v1.14/alpine/Dockerfile) -* ['v1.14.0-debian-1.0', 'v1.14-debian-1'](https://github.com/fluent/fluentd-docker-image/blob/a9e4cee765c7aaf7876d6fe3282aa565dbcdc2a4/v1.14/debian/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=fluentd-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Ffluentd?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=fluentd-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/fluentd-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/fluentd-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/fluentd/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/fluentd/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/fluentd -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/fluentd-official diff --git a/community_images/fluentd/official/assets/cve_reduction.webp b/community_images/fluentd/official/assets/cve_reduction.webp deleted file mode 100644 index c1bfc0d70a7aa29774bd4fab0a232b45567bab75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1524 zcmWIYbaQ*d%D@or>J$(bU=hK^z`&pY#0wc2>=_t5ot*VV2 z7YKk{%#)fI8VsZ(fLMm1m?4P4oxusnrYb;$XZ|7v28*u@49pV{Vo5U@7`C@EFi6}& zh^Z`KVBl|IVAyuPAh9SB>=+gx$&{AH!0>4~0|Rd)1B37d1_rKZm_reI5pjXTuL?jt zGC+Uk17SKt4nrz~0)r<*9z!yN9*||kV8CF=U9`Q9~x9p@FwEIqz;fk3~!94<4y^g^%LprP%%)sM}q2Ds$<3&nNnoYG-5~Br|Vn zx^tf4o9Kntm*PL!2L77!i$O5sP2kKpK9}!VLUZLC*R6Z;bI;7`)OZbjCpM?rn6=C@ zx2EQCpEEN2@3MWZqvNuU)~Kd-SMx9(N&bbZc?@>*^tM$`{(fBKP@SmmFZQlh#ZBu) zE!XisWSy$lJ@w7aADLyUAz@nU>V+nF+to}Jn0V#Xvvj?`n;oNWt++jTf#!_&zpXlt zq!-*)s?T6Pd6u)FoPpurA1?`p``vrpSofcNJ9&~+*M6&Iv&+>N)mxgXn=TIEIGD2H zQ^n~{E;U05E~kIH|GwBKV*V-g;?fMCH)mF*gxTd zaNL75_y4Wt|9R`5AHBEcnCTJyOh5nL#b^9)`SdX`#LfL>bm>%*qWFXTG8^ocaygxp zHr&R*`C#$+^}!010H*ec&RGXo6(7p52#v|!$ za$)^e86VQKN^*ZM?f)b5a7n-2${t>Oj)c1D&t9qQxmhNArtZvI*5k+T-Sz1|y{Y;k zpRxC^*d6bGw(4eNp8FpgekQv$rt!Jg_BX)~r#vZJxwP=2xCF;;OO3{v2f22f(C@Om znBV1BDfjj4(_M@S?0S;V7qNdXcx5q3#yHlUQ+f9f)5gs0aq9E`EKw1-vtZs=xuyA^ z%9d=bp1t;pKwOMKVQIZWdtg{Ivt3v5{2sm~0e7t*FX4ao@JgYIMcS@DA@}kR*-V%7 z_W0ZX^zcyJ>1g}P*6aS0x1LGg&7)T+?Af94=+!?*zC~-<*lIH=EYY&ibXD^i*hBgWh-l=HiW(+uyn0u#jh$tIA9~tG&%PC~xlG?BRI0~!&(>v|U7tDcv|YUPY|SsjeX`GlQ@K5Ads2^{ zlzckJ!|UgL|K?EF3WbLcDlV2h-+1j@{@Pc21+J=o?qHn4zDMV=<+;eG`|h6Q%lWo7 qZ>nQ$^LMH42UFSkn2(2=Y>pQ*|9*Jl>1y@8bGAQlopu70s~G^k*%NR8 diff --git a/community_images/fluentd/official/assets/metrics.webp b/community_images/fluentd/official/assets/metrics.webp deleted file mode 100644 index c905550b67b67e77451b7be79e09595aaa4334ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21732 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

i znT=ky6D~E>S;;NfFpk3ix1$+qZ@>Tm9^eV703!MT011dg^ZWZED|8b&k&M9bCS?SQ z(K{yV{YKc#t7yMPy`sntmB6)GEtGMSkYN8sVX6Zc001Ufe$<$g(w7e|by~%mRk}J= zN}2<0B==n+X}kHKklPT1Fp?>aaR{t?Y5)K`Y9x{g>*#af$4)hqg_JM#Q;xu}N*_Aufga;y^y`Z#^BY-ITEnKtRgJx{ z+rv~BvMErDqf}b}78a;M(%b;pPdFFQVlG_6Bny%oPZb7o zJ$Hr#nTn+_Pa)-wcJKq?WJotK0002;nVrb%DIV6ex_q(-4tG2 zL-q%WjzrftkSOWIi@#pf4oT!5NUH<^c|i|g2*{RF80ZYIftrTFb3a$TUX^OHbqJAM zbCugoc|O?TR}z&q{{CSFqPd)l^_~L{L9(YlCnuWC{g7PBh|5$vp#T64^yS3_9AE&g zRUs|cdptENj7}FyKmY*qiR9h^_=ZbzK^x0>nLb#W00019)(+8c^l> zM|9*QqS+UOh)7IU1#G1dtz4v9P%c>c@WF~}@w$b&D>;oQT43DLwo-^zu2L;17Z6Yi z!j~26PtntIK?_FoUB`Q_>8)^Ln)_zC!E$M@?cvl194LUD$YbL*bk?{rO@VS>zSFC{ z*Ux!?{0|=jjWWiR9=IzVR+I~fC -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Ghost - -RapidFort’s container optimization process hardened this Ghost container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Ghost][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Ghost? - -> Ghost is an open source publishing platform designed to create blogs, magazines, and news sites. It includes a simple markdown editor with preview, theming, and SEO built-in to simplify editing. - - -[Overview of Ghost](https://ghost.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Ghost image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/ghost - -# install ghost, just replace repository with RapidFort registry -$ helm install my-ghost bitnami/ghost --set image.repository=rapidfort/ghost - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Ghost][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Ghost][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/ghost][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`5`, `5-debian-11`, `5.74.5`, `5.74.5-debian-11-r` (5/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/ghost/5/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=ghost&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fghost?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=ghost&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fghost?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=ghost&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fghost?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=ghost&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fghost?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=ghost&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fghost?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=ghost&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/ghost?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/ghost?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/ghost/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/ghost/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/ghost -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/ghost diff --git a/community_images/ghost/bitnami/assets/cve_reduction.webp b/community_images/ghost/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 10ed90fff3dda1bfba35137081873d917d1b8c5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1810 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/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -REPO_PATH=$(jq -r '.image_tag_details."ghost".repo_path' < "$JSON_PARAMS") -TAG=$(jq -r '.image_tag_details."ghost".tag' < "$JSON_PARAMS") - -# run docker for GHOST SMTP Mode -# create network and mysql db -docker network create ghost-network -docker run -d --name mysql-check \ - --env ALLOW_EMPTY_PASSWORD=yes \ - --env MYSQL_USER=bn_ghost \ - --env MYSQL_PASSWORD=bitnami \ - --env MYSQL_DATABASE=bitnami_ghost \ - --network ghost-network bitnami/mysql:latest -# Create ghost container -docker run --rm -i --cap-add=SYS_PTRACE --name ghost-smtp -d\ - --env GHOST_DATABASE_USER=bn_ghost \ - --env GHOST_DATABASE_NAME=bitnami_ghost \ - --env GHOST_SMTP_HOST=smtp.gmail.com \ - --env GHOST_SMTP_PORT=587 \ - --env GHOST_SMTP_USER=your_email@gmail.com \ - --env GHOST_SMTP_PASSWORD=your_password \ - --env GHOST_SMTP_FROM_ADDRESS=ghost@blog.com \ - --network ghost-network \ - "${REPO_PATH}:${TAG}" -# Waiting for container to be configured successfuly and removed. -sleep 120 -# Removing mysql container and ghost network -docker stop mysql-check -docker rm mysql-check -docker network rm ghost-network - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -PORT=8080 -CONTAINER_NAME="${PROJECT_NAME}"-ghost-1 - -# UI Test -# exec into container and check configuration -docker exec -i "${CONTAINER_NAME}" cat /opt/bitnami/ghost/config.production.json - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# Running selenium tests -"${SCRIPTPATH}"/../../common/selenium_tests/runner-dc.sh "${PROJECT_NAME}" "${PORT}" "${SCRIPTPATH}"/selenium_tests 2>&1 diff --git a/community_images/ghost/bitnami/docker-compose.yml b/community_images/ghost/bitnami/docker-compose.yml deleted file mode 100755 index b40ee9534b..0000000000 --- a/community_images/ghost/bitnami/docker-compose.yml +++ /dev/null @@ -1,33 +0,0 @@ -version: '2' -services: - mysql: - image: rapidfort/mysql:latest - volumes: - - 'mysql_data:/bitnami/mysql' - environment: - - ALLOW_EMPTY_PASSWORD=yes - - MYSQL_USER=bn_ghost - - MYSQL_DATABASE=bitnami_ghost - ghost: - image: ${GHOST_IMAGE_REPOSITORY}:${GHOST_IMAGE_TAG} - restart: always - ports: - - '8080:2368' - volumes: - - 'ghost_data:/bitnami/ghost' - cap_add: - - SYS_PTRACE - depends_on: - - mysql - environment: - - ALLOW_EMPTY_PASSWORD=yes - - GHOST_DATABASE_HOST=mysql - - url=http://localhost:8080/ - - GHOST_DATABASE_PORT_NUMBER=3306 - - GHOST_DATABASE_USER=bn_ghost - - GHOST_DATABASE_NAME=bitnami_ghost -volumes: - mysql_data: - driver: local - ghost_data: - driver: local diff --git a/community_images/ghost/bitnami/image.yml b/community_images/ghost/bitnami/image.yml deleted file mode 100755 index f697e851ac..0000000000 --- a/community_images/ghost/bitnami/image.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: ghost -official_name: Ghost -official_website: https://ghost.org/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/ghost -source_image_repo_link: https://hub.docker.com/r/bitnami/ghost -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/ghost/README.md -rf_docker_link: rapidfort/ghost -image_workflow_name: ghost_bitnami -github_location: ghost/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fghost -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/ghost - - # install ghost, just replace repository with RapidFort registry - $ helm install my-ghost bitnami/ghost --set image.repository=rapidfort/ghost -what_is_text: | - Ghost is an open source publishing platform designed to create blogs, magazines, and news sites. It includes a simple markdown editor with preview, theming, and SEO built-in to simplify editing. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - ghost: - input_base_tag: "5.69.0-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: ghost - helm_additional_params: - ghostHost: "localhost" - tls_certs: - generate: true - secret_name: localhost-server-tls - common_name: localhost - image_keys: - ghost: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - ghost: - repository: "GHOST_IMAGE_REPOSITORY" - tag: "GHOST_IMAGE_TAG" diff --git a/community_images/ghost/bitnami/k8s_coverage.sh b/community_images/ghost/bitnami/k8s_coverage.sh deleted file mode 100755 index a5c227ecdd..0000000000 --- a/community_images/ghost/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for k8s coverage = $JSON" \ No newline at end of file diff --git a/community_images/ghost/bitnami/overrides.yml b/community_images/ghost/bitnami/overrides.yml deleted file mode 100755 index f201e68505..0000000000 --- a/community_images/ghost/bitnami/overrides.yml +++ /dev/null @@ -1,18 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/ghost/bitnami/selenium_tests/conftest.py b/community_images/ghost/bitnami/selenium_tests/conftest.py deleted file mode 100755 index 1b44466c2d..0000000000 --- a/community_images/ghost/bitnami/selenium_tests/conftest.py +++ /dev/null @@ -1,23 +0,0 @@ -"""The conftest file for running selenium test.""" -# pylint: skip-file - -# conftest.py -import pytest # pylint: disable=import-error - - -def pytest_addoption(parser): - """The function to add options""" - parser.addoption("--server", action="store", help="Ghost server") - parser.addoption("--port", action="store", - help="port on host linked to Ghost container") - - -@pytest.fixture -def params(request): - """the params""" - config_params = {} - config_params['server'] = request.config.getoption('--server') - config_params['port'] = request.config.getoption('--port') - if config_params['server'] is None or config_params['port'] is None: - pytest.skip() - return config_params diff --git a/community_images/ghost/bitnami/selenium_tests/ghost.side b/community_images/ghost/bitnami/selenium_tests/ghost.side deleted file mode 100755 index a2e9a4cc92..0000000000 --- a/community_images/ghost/bitnami/selenium_tests/ghost.side +++ /dev/null @@ -1,254 +0,0 @@ -{ - "id": "fab56089-bd22-4c78-a6a0-53dc08c0f1ab", - "version": "2.0", - "name": "ghost", - "url": "http://localhost:8080", - "tests": [{ - "id": "1491eaf8-9709-46a7-b470-bc9175ad16e5", - "name": "primaryFunctions", - "commands": [{ - "id": "2f72a667-d657-494d-a33e-6993a9cd735a", - "comment": "", - "command": "open", - "target": "/", - "targets": [], - "value": "" - }, { - "id": "513e9ce1-8fcb-4a5a-b992-f9b3a5d44a23", - "comment": "", - "command": "setWindowSize", - "target": "1846x1053", - "targets": [], - "value": "" - }, { - "id": "de5a71e7-fd8b-4aa0-94f4-b9ea1d688f57", - "comment": "", - "command": "click", - "target": "linkText=About", - "targets": [ - ["linkText=About", "linkText"], - ["css=.nav-about > a", "css:finder"], - ["xpath=//a[contains(text(),'About')]", "xpath:link"], - ["xpath=//header[@id='gh-head']/div/nav/ul/li[2]/a", "xpath:idRelative"], - ["xpath=//a[@href='http://localhost:8080/about/']", "xpath:href"], - ["xpath=//li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'About')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "ee35e7c5-acda-410f-ad66-a90ccda225b5", - "comment": "", - "command": "open", - "target": "/ghost", - "targets": [], - "value": "" - }, { - "id": "05155672-3217-49dd-bd03-27a0229eea89", - "comment": "", - "command": "click", - "target": "id=identification", - "targets": [ - ["id=identification", "id"], - ["name=identification", "name"], - ["css=#identification", "css:finder"], - ["xpath=//input[@id='identification']", "xpath:attributes"], - ["xpath=//form[@id='login']/div/span/input", "xpath:idRelative"], - ["xpath=//input", "xpath:position"] - ], - "value": "" - }, { - "id": "cf9497dd-77ee-4964-b5fa-d96157689834", - "comment": "", - "command": "type", - "target": "id=identification", - "targets": [ - ["id=identification", "id"], - ["name=identification", "name"], - ["css=#identification", "css:finder"], - ["xpath=//input[@id='identification']", "xpath:attributes"], - ["xpath=//form[@id='login']/div/span/input", "xpath:idRelative"], - ["xpath=//input", "xpath:position"] - ], - "value": "user@example.com" - }, { - "id": "bb93a45c-28f6-403f-ac8e-898ccc11e108", - "comment": "", - "command": "click", - "target": "id=password", - "targets": [ - ["id=password", "id"], - ["name=password", "name"], - ["css=#password", "css:finder"], - ["xpath=//input[@id='password']", "xpath:attributes"], - ["xpath=//form[@id='login']/div[2]/span/input", "xpath:idRelative"], - ["xpath=//div[2]/span/input", "xpath:position"] - ], - "value": "" - }, { - "id": "56063c97-2c7d-4a1c-8ae2-549f34e391ad", - "comment": "", - "command": "type", - "target": "id=password", - "targets": [ - ["id=password", "id"], - ["name=password", "name"], - ["css=#password", "css:finder"], - ["xpath=//input[@id='password']", "xpath:attributes"], - ["xpath=//form[@id='login']/div[2]/span/input", "xpath:idRelative"], - ["xpath=//div[2]/span/input", "xpath:position"] - ], - "value": "bitnami123" - }, { - "id": "7de6d40d-4987-481a-85d2-c182024aea20", - "comment": "", - "command": "sendKeys", - "target": "id=password", - "targets": [ - ["id=password", "id"], - ["name=password", "name"], - ["css=#password", "css:finder"], - ["xpath=//input[@id='password']", "xpath:attributes"], - ["xpath=//form[@id='login']/div[2]/span/input", "xpath:idRelative"], - ["xpath=//div[2]/span/input", "xpath:position"] - ], - "value": "${KEY_ENTER}" - }, { - "id": "91bf7bc2-cb23-4126-8671-12fd8b7974e2", - "comment": "", - "command": "open", - "target": "ghost/#/members", - "targets": [], - "value": "" - }, { - "id": "2bc3f9c9-ce0a-4fae-81a4-3bac4281e232", - "comment": "", - "command": "click", - "target": "xpath=//span[contains(.,'Add yourself as a member to test')]", - "targets": [ - ["css=.gh-btn-green > span", "css:finder"], - ["xpath=//section/div/button/span", "xpath:position"], - ["xpath=//span[contains(.,'Add yourself as a member to test')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "4dc5d7d4-d10e-4c32-a780-f394432f41e8", - "comment": "", - "command": "open", - "target": "/ghost/#/editor/post", - "targets": [], - "value": "" - }, { - "id": "493907df-b8c3-4554-a150-9a45ff402217", - "comment": "", - "command": "type", - "target": "xpath=//textarea", - "targets": [ - ["id=ember11", "id"], - ["css=#ember11", "css:finder"], - ["xpath=//textarea[@id='ember11']", "xpath:attributes"], - ["xpath=//section[@id='ember7']/div/div/textarea", "xpath:idRelative"], - ["xpath=//textarea", "xpath:position"] - ], - "value": "Sample RF" - }, { - "id": "1aa3f994-647f-4574-a885-08b2bbc8b393", - "comment": "", - "command": "editContent", - "target": "css=.koenig-editor__editor", - "targets": [ - ["css=.koenig-editor__editor", "css:finder"], - ["xpath=//article[@id='ember78']/div/div", "xpath:idRelative"], - ["xpath=//article/div/div", "xpath:position"] - ], - "value": "

Hello


" - }, { - "id": "305f6845-4eab-4bde-a8bd-e358dd3fee57", - "comment": "", - "command": "click", - "target": "xpath=//span[contains(.,'Publish')]", - "targets": [ - ["css=.darkgrey > span", "css:finder"], - ["xpath=//section[@id='ember7']/header/section/button[2]/span", "xpath:idRelative"], - ["xpath=//button[2]/span", "xpath:position"], - ["xpath=//span[contains(.,'Publish')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "452463c0-2589-43c6-9b4a-fb7f38a9973a", - "comment": "", - "command": "click", - "target": "xpath=//span[contains(.,'Continue, final review →')]", - "targets": [ - ["css=.gh-btn-black > span", "css:finder"], - ["xpath=//div[@id='ember27']/div/div/div[3]/button/span", "xpath:idRelative"], - ["xpath=//div[4]/div/div/div/div[3]/button/span", "xpath:position"], - ["xpath=//span[contains(.,'Continue, final review →')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "05c67f81-533e-4abb-ae8f-04d919d934de", - "comment": "", - "command": "click", - "target": "xpath=//span[contains(.,'Publish post, right now')]", - "targets": [ - ["css=#ember37 > span", "css:finder"], - ["xpath=//button[@id='ember37']/span", "xpath:idRelative"], - ["xpath=//div[4]/div/div/div/div[2]/button/span", "xpath:position"], - ["xpath=//span[contains(.,'Publish post, right now')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "9845ca8f-0414-42c3-96c7-94a44d24507c", - "comment": "", - "command": "click", - "target": "css=.gh-post-bookmark-title", - "targets": [ - ["css=.gh-post-bookmark-title", "css:finder"], - ["xpath=//div[@id='ember27']/div/div/a/div/div/div[2]/div", "xpath:idRelative"], - ["xpath=//a/div/div/div[2]/div", "xpath:position"] - ], - "value": "", - "opensWindow": true, - "windowHandleName": "win3910", - "windowTimeout": 2000 - }, { - "id": "9a2f45e8-8ace-4492-a5a7-22bbadf611b3", - "comment": "", - "command": "open", - "target": "/ghost/#/settings", - "targets": [], - "value": "" - }, { - "id": "b7aaf822-4ec2-473a-8ea7-f3f4cb16d38d", - "comment": "", - "command": "open", - "target": "ghost/#/settings/design", - "targets": [], - "value": "" - }, { - "id": "84a4f23e-3ffc-4516-9a80-13720557dcf0", - "comment": "", - "command": "open", - "target": "/ghost/#/settings/analytics", - "targets": [], - "value": "" - }, { - "id": "78285fde-39c5-418b-96c5-0092c79b09de", - "comment": "", - "command": "close", - "target": "", - "targets": [], - "value": "" - }] - }], - "suites": [{ - "id": "025adc20-2dd6-477d-97f9-43efc547f88e", - "name": "Default Suite", - "persistSession": false, - "parallel": false, - "timeout": 300, - "tests": ["1491eaf8-9709-46a7-b470-bc9175ad16e5"] - }], - "urls": ["http://localhost:8080/"], - "plugins": [] -} \ No newline at end of file diff --git a/community_images/ghost/bitnami/selenium_tests/test_primaryFunctions.py b/community_images/ghost/bitnami/selenium_tests/test_primaryFunctions.py deleted file mode 100755 index d73105c222..0000000000 --- a/community_images/ghost/bitnami/selenium_tests/test_primaryFunctions.py +++ /dev/null @@ -1,55 +0,0 @@ -# Generated by Selenium IDE -# pylint: skip-file - -import pytest -import time -import json -from selenium import webdriver -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.common.by import By -from selenium.webdriver.common.action_chains import ActionChains -from selenium.webdriver.support import expected_conditions -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities - -class TestPrimaryFunctions(): - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): - """teardown method.""" - self.driver.quit() - - def test_primaryFunctions(self, params): - self.driver.get("http://localhost:{}/".format(params["port"])) - self.driver.set_window_size(1280, 1024) - self.driver.find_element(By.LINK_TEXT, "About").click() - self.driver.get("http://localhost:{}/ghost".format(params["port"])) - self.driver.find_element(By.ID, "identification").click() - self.driver.find_element(By.ID, "identification").send_keys("user@example.com") - self.driver.find_element(By.ID, "password").click() - self.driver.find_element(By.ID, "password").send_keys("bitnami123") - self.driver.find_element(By.ID, "password").send_keys(Keys.ENTER) - self.driver.get("http://localhost:{}/ghost/#/members".format(params["port"])) - self.driver.find_element(By.XPATH, "//span[contains(.,\'Add yourself as a member to test\')]").click() - self.driver.get("http://localhost:{}/ghost/#/editor/post".format(params["port"])) - self.driver.find_element(By.XPATH, "//textarea").send_keys("SampleRF") - self.driver.find_element(By.XPATH, "//article/div/div").click() - self.driver.find_element(By.XPATH, "//span[contains(.,\'Publish\')]").click() - self.driver.find_element(By.XPATH, "//span[contains(.,\'Continue, final review →\')]").click() - self.driver.find_element(By.XPATH, "//span[contains(.,\'Publish post, right now\')]").click() - self.driver.get("http://localhost:{}/ghost/#/settings".format(params["port"])) - self.driver.get("http://localhost:{}/ghost/#/settings/design".format(params["port"])) - self.driver.get("http://localhost:{}/ghost/#/settings/analytics".format(params["port"])) - self.driver.close() \ No newline at end of file diff --git a/community_images/grafana/ironbank/.rfignore b/community_images/grafana/ironbank/.rfignore deleted file mode 100644 index bd036ec246..0000000000 --- a/community_images/grafana/ironbank/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/licenses diff --git a/community_images/grafana/ironbank/README.md b/community_images/grafana/ironbank/README.md deleted file mode 100644 index 308fabb939..0000000000 --- a/community_images/grafana/ironbank/README.md +++ /dev/null @@ -1,141 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Grafana Ironbank - -RapidFort’s container optimization process hardened this Grafana Ironbank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Grafana Ironbank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Grafana Ironbank? - -> Grafana is a multi-platform open source analytics and interactive visualization web application. It provides charts, graphs, and alerts for the web when connected to supported data sources. - - -[Overview of Grafana Ironbank](https://grafana.com) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Grafana Ironbank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Using docker run -$ docker run -d --name=grafana -p 3000:3000 rapidfort/grafana-ib - -# Then, access it via http://localhost:3000/ or http://:3000/ in a browser. - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Grafana Ironbank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One Grafana Ironbank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/grafana-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=grafana-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fgrafana%2Fgrafana?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=grafana-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fgrafana%2Fgrafana?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=grafana-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fgrafana%2Fgrafana?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=grafana-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fgrafana%2Fgrafana?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=grafana-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fgrafana%2Fgrafana?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=grafana-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/grafana-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/grafana-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/grafana/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/grafana/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fgrafana%2Fgrafana -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/grafana-ib diff --git a/community_images/grafana/ironbank/dc_coverage.sh b/community_images/grafana/ironbank/dc_coverage.sh deleted file mode 100755 index d45630af4d..0000000000 --- a/community_images/grafana/ironbank/dc_coverage.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -PORT=3000 - -# Initiating Selenium tests -"${SCRIPTPATH}"/../../common/selenium_tests/runner-dc.sh "dummy_arg" "${PORT}" "${SCRIPTPATH}"/selenium_tests 2>&1 - -echo "Grafana cli coverage" -GRAFANA_CONTAINER=${PROJECT_NAME}-grafana-ib-1 -docker exec "${GRAFANA_CONTAINER}" grafana cli -h - -# Restart to setup and load plugins installed. -docker restart "${GRAFANA_CONTAINER}" -sleep 30 diff --git a/community_images/grafana/ironbank/docker-compose.yml b/community_images/grafana/ironbank/docker-compose.yml deleted file mode 100644 index 2fb4c679da..0000000000 --- a/community_images/grafana/ironbank/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -version: '2' - -services: - prometheus: - image: rapidfort/prometheus:2.44 - ports: - - '9090:9090' - - alertmanager: - image: prom/alertmanager:v0.20.0 - ports: - - '9093:9093' - - grafana-ib: - image: ${GRAFANA_IMAGE_REPOSITORY}:${GRAFANA_IMAGE_TAG} - cap_add: - - SYS_PTRACE - environment: - - GF_INSTALL_PLUGINS=grafana-clock-panel - - GF_SERVER_ROOT_URL=http://my.grafana.server/ - ports: - - '3000:3000' - diff --git a/community_images/grafana/ironbank/image.yml b/community_images/grafana/ironbank/image.yml deleted file mode 100644 index 79df384f89..0000000000 --- a/community_images/grafana/ironbank/image.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: grafana-ib -official_name: Grafana Ironbank -official_website: https://grafana.com -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/grafana/grafana -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fgrafana%2Fgrafana -source_image_readme: https://repo1.dso.mil/dsop/opensource/grafana/grafana/-/blob/development/README.md -rf_docker_link: rapidfort/grafana-ib -image_workflow_name: grafana_ironbank -github_location: grafana/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fgrafana%2Fgrafana -usage_instructions: | - # Using docker run - $ docker run -d --name=grafana -p 3000:3000 rapidfort/grafana-ib - - # Then, access it via http://localhost:3000/ or http://:3000/ in a browser. -what_is_text: | - Grafana is a multi-platform open source analytics and interactive visualization web application. It provides charts, graphs, and alerts for the web when connected to supported data sources. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/grafana/grafana: - input_base_tag: "9.5." - output_repo: grafana-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - grafana-ib: - repository: "GRAFANA_IMAGE_REPOSITORY" - tag: "GRAFANA_IMAGE_TAG" diff --git a/community_images/grafana/ironbank/selenium_tests/__init__.py b/community_images/grafana/ironbank/selenium_tests/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/community_images/grafana/ironbank/selenium_tests/conftest.py b/community_images/grafana/ironbank/selenium_tests/conftest.py deleted file mode 100644 index abb22d71e3..0000000000 --- a/community_images/grafana/ironbank/selenium_tests/conftest.py +++ /dev/null @@ -1,23 +0,0 @@ -"""The conftest file for running selenium test.""" -# pylint: skip-file - -# conftest.py -import pytest # pylint: disable=import-error - - -def pytest_addoption(parser): - """The function to add options""" - parser.addoption("--server", action="store", help="grafana server") - parser.addoption("--port", action="store", - help="port for grafana container") - - -@pytest.fixture -def params(request): - """the params""" - config_params = {} - config_params['server'] = request.config.getoption('--server') - config_params['port'] = request.config.getoption('--port') - if config_params['server'] is None or config_params['port'] is None: - pytest.skip() - return config_params diff --git a/community_images/grafana/ironbank/selenium_tests/grafana_selenium_test.py b/community_images/grafana/ironbank/selenium_tests/grafana_selenium_test.py deleted file mode 100644 index 702b7aa3c8..0000000000 --- a/community_images/grafana/ironbank/selenium_tests/grafana_selenium_test.py +++ /dev/null @@ -1,165 +0,0 @@ -"""The selenium test.""" -# pylint: skip-file - -# Generated by Selenium IDE -import json # pylint: disable=import-error disable=unused-import -import time # pylint: disable=import-error disable=unused-import -import pytest # pylint: disable=import-error disable=unused-import -from selenium import webdriver # pylint: disable=import-error -from selenium.webdriver.chrome.options import Options # pylint: disable=import-error -from selenium.webdriver.common.by import By # pylint: disable=import-error -from selenium.webdriver.common.action_chains import ActionChains # pylint: disable=import-error disable=unused-import -from selenium.webdriver.support import expected_conditions # pylint: disable=import-error disable=unused-import -from selenium.webdriver.support.wait import WebDriverWait # pylint: disable=import-error disable=unused-import -from selenium.webdriver.common.keys import Keys # pylint: disable=import-error disable=unused-import -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # pylint: disable=import-error disable=unused-import -from selenium.webdriver.support import expected_conditions as EC - - -class TestGrafanatest1(): - """The test word press class for testing grafana image.""" - - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_login(self, params): - # Test name: initialize-and-setup-prometheus - # Step # | name | target | value | - # 1 | open | /login | - self.driver.get( - "http://localhost:{}/login".format( - params["port"])) # pylint: disable=consider-using-f-string - # 2 | setWindowSize | 727x785 | | - self.driver.set_window_size(727, 785) - # 3 | type | name=user | admin | - self.driver.find_element(By.NAME, "user").send_keys("admin") - # 4 | click | id=current-password | | - self.driver.find_element(By.ID, "current-password").click() - # 5 | type | id=current-password | admin | - self.driver.find_element(By.ID, "current-password").send_keys("admin") - # 6 | click | css=.css-8csoim-button > .css-1mhnkuh | | - self.driver.find_element(By.CSS_SELECTOR, ".css-8csoim-button > .css-1mhnkuh").click() - # 7 | click | css=.css-oq8fy1-button > .css-1mhnkuh | | - self.driver.find_element(By.CSS_SELECTOR, ".css-oq8fy1-button > .css-1mhnkuh").click() - # 8 | click | css=.css-hj6vlq | | - self.driver.find_element(By.CSS_SELECTOR, ".css-hj6vlq").click() - # 9 | click | css=.css-fv3lde:nth-child(7) .css-1xnfi89 | | - self.driver.find_element(By.CSS_SELECTOR, ".css-fv3lde:nth-child(7) .css-1xnfi89").click() - # 10 | click | css=.css-1y9dsbx-button | | - self.driver.find_element(By.CSS_SELECTOR, ".css-1y9dsbx-button").click() - # 11 | click | linkText=Data sources | | - self.driver.find_element(By.LINK_TEXT, "Data sources").click() - # 12 | click | xpath=//span[contains(.,'Add data source')] | | - self.driver.find_element(By.XPATH, "//span[contains(.,\'Add data source\')]").click() - - self.driver.implicitly_wait(10) - # 17 | click | xpath=//button[contains(.,'Prometheus')] | | - self.driver.find_element(By.XPATH, "//button[contains(.,\'Prometheus\')]").click() - # 18 | click | css=.css-y1sxu8 | | - self.driver.find_element(By.CSS_SELECTOR, ".css-y1sxu8").click() - # 19 | type | css=.width-20:nth-child(1) | http://10.10.0.165:9090 | - self.driver.find_element(By.CSS_SELECTOR, ".width-20:nth-child(1)").send_keys("http://localhost:9090") - # 20 | click | css=.css-z53gi5-button > .css-1mhnkuh | | - self.driver.find_element(By.CSS_SELECTOR, ".css-z53gi5-button > .css-1mhnkuh").click() - - ### Dashboards setup - # 1 | open | /datasources/edit//dashboards | | - self.driver.get( - "http://localhost:{}/datasources/edit/{}/dashboards".format( - params['port'], - self.driver.current_url[39:])) - # 2 | setWindowSize | 727x785 | | - self.driver.set_window_size(727, 785) - # 3 | click | css=tr:nth-child(2) .css-1mhnkuh | | - self.driver.find_element(By.CSS_SELECTOR, "tr:nth-child(2) .css-1mhnkuh").click() - # 4 | click | linkText=Prometheus 2.0 Stats | | - self.driver.find_element(By.LINK_TEXT, "Prometheus 2.0 Stats").click() - self.driver.implicitly_wait(10) - # 5 | runScript | window.scrollTo(0,0) | | - self.driver.execute_script("window.scrollTo(0,0)") - - ### Alert manager - # 1 | open | /connections/your-connections/datasources/new | | - self.driver.get( - "http://localhost:{}/connections/your-connections/datasources/new".format( - params['port'])) - # 2 | setWindowSize | 727x785 | | - self.driver.set_window_size(727, 785) - # 3 | click | css=.css-1mlczho-input-input | | - self.driver.find_element(By.CSS_SELECTOR, ".css-1mlczho-input-input").click() - # 4 | type | css=.css-1mlczho-input-input | alert | - self.driver.find_element(By.CSS_SELECTOR, ".css-1mlczho-input-input").send_keys("alert") - # 5 | click | css=.css-1cqw476 | | - self.driver.find_element(By.CSS_SELECTOR, ".css-1cqw476").click() - # 6 | mouseDown | xpath=//div[@id='reactRoot']/div/main/div[2]/div[3]/div/div[2]/div/div/div/div[3]/form/div[3]/div/div/div/div/div/div/div[2] | | - element = self.driver.find_element(By.XPATH, "//div[@id=\'reactRoot\']/div/main/div[2]/div[3]/div/div[2]/div/div/div/div[3]/form/div[3]/div/div/div/div/div/div/div[2]") - actions = ActionChains(self.driver) - actions.move_to_element(element).click_and_hold().perform() - # 7 | click | css=#react-select-2-option-2 .css-1gncicp-grafana-select-option-description | | - self.driver.find_element(By.CSS_SELECTOR, "#react-select-2-option-2 .css-1gncicp-grafana-select-option-description").click() - # 8 | click | css=.css-y1sxu8 | | - self.driver.find_element(By.CSS_SELECTOR, ".css-y1sxu8").click() - # 9 | type | css=.gf-form-input:nth-child(1) | http://10.10.0.165:9093 | - self.driver.find_element(By.CSS_SELECTOR, ".gf-form-input:nth-child(1)").send_keys("http://localhost:9093") - # 10 | click | css=.css-z53gi5-button > .css-1mhnkuh | | - self.driver.find_element(By.CSS_SELECTOR, ".css-z53gi5-button > .css-1mhnkuh").click() - - ### User management - # 1 | open | /admin/users/create | | - self.driver.get( - "http://localhost:{}/admin/users/create".format( - params['port'])) - # 2 | setWindowSize | 727x785 | | - self.driver.set_window_size(727, 785) - # 3 | click | id=name-input | | - self.driver.find_element(By.ID, "name-input").click() - # 4 | type | id=name-input | new user | - self.driver.find_element(By.ID, "name-input").send_keys("new user") - # 5 | click | id=email-input | | - self.driver.find_element(By.ID, "email-input").click() - # 6 | type | id=email-input | new@user.com | - self.driver.find_element(By.ID, "email-input").send_keys("new@user.com") - # 7 | click | id=username-input | | - self.driver.find_element(By.ID, "username-input").click() - # 8 | type | id=username-input | new-user | - self.driver.find_element(By.ID, "username-input").send_keys("new-user") - # 9 | click | id=password-input | | - self.driver.find_element(By.ID, "password-input").click() - # 10 | type | id=password-input | newuser | - self.driver.find_element(By.ID, "password-input").send_keys("newuser") - # 11 | click | css=.css-1mhnkuh | | - self.driver.find_element(By.CSS_SELECTOR, ".css-1mhnkuh").click() - # 12 | click | css=.css-1fwxvu6 | | - self.driver.find_element(By.CSS_SELECTOR, ".css-1fwxvu6").click() - self.driver.implicitly_wait(5) - - ### New User login - self.driver.get( - "http://localhost:{}/logout".format( - params['port'])) - # 1 | click | name=user | | - self.driver.find_element(By.NAME, "user").click() - # 2 | type | name=user | new-user | - self.driver.find_element(By.NAME, "user").send_keys("new-user") - # 3 | click | id=current-password | | - self.driver.find_element(By.ID, "current-password").click() - # 4 | type | id=current-password | newuser | - self.driver.find_element(By.ID, "current-password").send_keys("newuser") - # 5 | click | css=.css-8csoim-button > .css-1mhnkuh | | - self.driver.find_element(By.CSS_SELECTOR, ".css-8csoim-button > .css-1mhnkuh").click() - # 6 | click | css=.css-1fwxvu6 | | - self.driver.find_element(By.CSS_SELECTOR, ".css-1fwxvu6").click() diff --git a/community_images/haproxy/bitnami/.rfignore b/community_images/haproxy/bitnami/.rfignore deleted file mode 100644 index 3c79ad56d8..0000000000 --- a/community_images/haproxy/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/licenses -opt/bitnami/haproxy/licenses -usr/share/common-licenses diff --git a/community_images/haproxy/bitnami/README.md b/community_images/haproxy/bitnami/README.md deleted file mode 100644 index 6428ad358d..0000000000 --- a/community_images/haproxy/bitnami/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for HAProxy - -RapidFort’s container optimization process hardened this HAProxy container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami HAProxy][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is HAProxy? - -> HAProxy is a TCP proxy and a HTTP reverse proxy. It supports SSL termination and offloading, TCP and HTTP normalization, traffic regulation, caching and protection against DDoS attacks. - - -[Overview of HAProxy](http://www.haproxy.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened HAProxy image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/haproxy - -# install haproxy, just replace repository with RapidFort registry -$ helm install my-haproxy bitnami/haproxy --set image.repository=rapidfort/haproxy - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami HAProxy][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami HAProxy][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/haproxy][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`2`, `2-debian-11`, `2.9.0`, `2.9.0-debian-11-r` (2/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/haproxy/2/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=haproxy&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fhaproxy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fhaproxy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fhaproxy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fhaproxy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fhaproxy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/haproxy?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/haproxy?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/haproxy/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/haproxy/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/haproxy -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/haproxy diff --git a/community_images/haproxy/bitnami/assets/cve_reduction.webp b/community_images/haproxy/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 1f509ab5bb372dd1a187a4f0662d9a0fc18a73e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1592 zcmb`Hdo!Qj~Bk?5g^ zOi~$-E$?WjRfJ8gYP8aLjf|Pu{mphd`lCJj&))C3_xt(Y@4e@HzmN0vA~-pjE&=d! zwDa8KY2~i~06K`4q5ua#u($VAMJHfLMTMTfQ^@U#?}LWI726;v>qSA&Uc`LJ?jQ{)OYE9P)+FNSWs2Wsk&^AZ!%= z4TpTgaSSR0iD{R{lc+Q)4tDgcW1b!`a zF?aDU{$;N^NR9@w&uFBDLnM$v2M9m`5*Q<74yIrRSmed%OvwOHHQ)kjV;Kq$wozMI zE|=Dq=^9YSjE*T~k}1PM535Gwh1ad$S3ebWS>lzqpWRx_R1P1{xVgc7e`A>FB3>jA zFa678$YRz{VtGK>Za1&C)Hmn&pIyf~9YU#D8znNq+j7UrZnO(-RiPLQy}D*)^LEtX ztnqGo+wtQaT1OR7igzu}v-E3~2t5Pde8LOG&h*G#zVDLoahTZkPiF4+Q8s__&`5VqfMRxan9-DFUp&5!#z345q^lD|xD^!a6n1Y<4Fg$bXLbUr(KB34i?3Jua{ zneMmKMZK9U<^<=jbxHt`h+J1QP8w!mJlsAEW!4OGiPoiRtF(x%M9$)5nrrX$ zwrDJGUH5T?t_@$0mwT~LmY2SMtx@j`F!Ilb#z1qKF1= zpDpG_X47dwzE|V8z z`9yDCogs0!p@O+oG(bsxm12l>EysLrTG3xuBh*H3IXwAx)lV8zZXx?pVzk(HkgqWxY^ZRZ6Y0+!xc&B{l|0SnMl6{d*Jfi9 z@K|)OQFz~Pj38gx;xB9q!Wl)UG-m4FGTV$jcu=i>1?uEb4OTznmD;Bwag?26eV{lU z*S`ttbeMfkp`LNGq{$^U*yGMP)1#k@>0_DtZE_J_AiarEF-}^IJ~5?P*iynV(DcJr z)iZ(&RNZ^2 L$^Yst>2LBk!fZy3 diff --git a/community_images/haproxy/bitnami/assets/metrics.webp b/community_images/haproxy/bitnami/assets/metrics.webp deleted file mode 100644 index 59f0b213f3cd6f7e23d1e376fe382f035a59a57a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21414 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 - - - - Error Occurred - - - Can not print the IP address of the container - - \ No newline at end of file diff --git a/community_images/haproxy/bitnami/configs/sample-server/app/templates/index.html b/community_images/haproxy/bitnami/configs/sample-server/app/templates/index.html deleted file mode 100644 index 83abebc03a..0000000000 --- a/community_images/haproxy/bitnami/configs/sample-server/app/templates/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - {{ message }} - - -The hostname of the container is {{ hostname }} and its IP is {{ ip }}. - - \ No newline at end of file diff --git a/community_images/haproxy/bitnami/dc_coverage.sh b/community_images/haproxy/bitnami/dc_coverage.sh deleted file mode 100755 index c81b4a4a7c..0000000000 --- a/community_images/haproxy/bitnami/dc_coverage.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -CONTAINER_NAME=haproxy - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# finding port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") - -# run curl in loop (roundrobin) -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT}" -done - -# run curl in loop for app1 route -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT}"/app1 -done - -# run curl in loop for app2 route -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT}"/app2 -done - -# Running curl for admin (disabled by acl) -curl http://localhost:"${PORT}"/admin - -# Changing load balancing mode from roundrobin to leastconn -docker exec -i "${CONTAINER_NAME}" cp /bitnami/haproxy/conf/haproxy.cfg /bitnami/haproxy/haproxy.cfg -docker exec -i "${CONTAINER_NAME}" sed -i 's/roundrobin/leastconn/g' /bitnami/haproxy/haproxy.cfg -docker exec -i "${CONTAINER_NAME}" cp /bitnami/haproxy/haproxy.cfg /bitnami/haproxy/conf/haproxy.cfg -# reloading -docker kill -s HUP haproxy -sleep 5 -# Checking leastconn -# run curl in loop -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT}" -done - -# Changing load balancing mode from leastconn to source mode -docker exec -i "${CONTAINER_NAME}" cp /bitnami/haproxy/conf/haproxy.cfg /bitnami/haproxy/haproxy.cfg -docker exec -i "${CONTAINER_NAME}" sed -i 's/leastconn/source/g' /bitnami/haproxy/haproxy.cfg -docker exec -i "${CONTAINER_NAME}" cp /bitnami/haproxy/haproxy.cfg /bitnami/haproxy/conf/haproxy.cfg -# reloading -docker kill -s HUP haproxy -sleep 5 -# Checking source mode -# run curl in loop -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT}" -done \ No newline at end of file diff --git a/community_images/haproxy/bitnami/dc_coverage_tcp.sh b/community_images/haproxy/bitnami/dc_coverage_tcp.sh deleted file mode 100755 index c0bc191b08..0000000000 --- a/community_images/haproxy/bitnami/dc_coverage_tcp.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -CONTAINER_NAME=haproxy - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# finding port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") - -# run curl in loop (roundrobin) -for i in {1..5}; -do - echo "Attempt $i" - curl http://localhost:"${PORT}" -done - -# Changing compression algo from identity to gzip -docker exec -i "${CONTAINER_NAME}" cp /bitnami/haproxy/conf/haproxy.cfg /bitnami/haproxy/haproxy.cfg -docker exec -i "${CONTAINER_NAME}" sed -i 's/identity/gzip/g' /bitnami/haproxy/haproxy.cfg -docker exec -i "${CONTAINER_NAME}" cp /bitnami/haproxy/haproxy.cfg /bitnami/haproxy/conf/haproxy.cfg -# reloading -docker kill -s HUP haproxy -sleep 5 -# Checking leastconn -# run curl in loop -for i in {1..4}; -do - echo "Attempt $i" - curl http://localhost:"${PORT}" -done - -# Changing compression algo from gzip to deflate -docker exec -i "${CONTAINER_NAME}" cp /bitnami/haproxy/conf/haproxy.cfg /bitnami/haproxy/haproxy.cfg -docker exec -i "${CONTAINER_NAME}" sed -i 's/gzip/deflate/g' /bitnami/haproxy/haproxy.cfg -docker exec -i "${CONTAINER_NAME}" cp /bitnami/haproxy/haproxy.cfg /bitnami/haproxy/conf/haproxy.cfg -# reloading -docker kill -s HUP haproxy -sleep 5 -# Checking source mode -# run curl in loop -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT}" -done \ No newline at end of file diff --git a/community_images/haproxy/bitnami/docker-compose-tcp.yml b/community_images/haproxy/bitnami/docker-compose-tcp.yml deleted file mode 100755 index d9eb1b8e04..0000000000 --- a/community_images/haproxy/bitnami/docker-compose-tcp.yml +++ /dev/null @@ -1,58 +0,0 @@ -version: '2' - -services: - python-flask-1: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-1 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - python-flask-2: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-2 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - haproxy: - image: ${HAPROXY_IMAGE_REPOSITORY}:${HAPROXY_IMAGE_TAG} - user: root - volumes: - - ./configs/haproxy-tcp.cfg:/bitnami/haproxy/conf/haproxy.cfg - container_name: haproxy - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - -networks: - haproxy: - driver: bridge diff --git a/community_images/haproxy/bitnami/docker-compose.yml b/community_images/haproxy/bitnami/docker-compose.yml deleted file mode 100755 index d4acc765cb..0000000000 --- a/community_images/haproxy/bitnami/docker-compose.yml +++ /dev/null @@ -1,96 +0,0 @@ -version: '2' - -services: - python-flask-1: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-1 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - python-flask-2: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-2 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - python-flask-3: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-3 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - python-flask-4: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-4 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - haproxy: - image: ${HAPROXY_IMAGE_REPOSITORY}:${HAPROXY_IMAGE_TAG} - user: root - volumes: - - ./configs/haproxy.cfg:/bitnami/haproxy/conf/haproxy.cfg - container_name: haproxy - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - - python-flask-3 - - python-flask-4 - -networks: - haproxy: - driver: bridge diff --git a/community_images/haproxy/bitnami/image.yml b/community_images/haproxy/bitnami/image.yml deleted file mode 100755 index ac06ae4d09..0000000000 --- a/community_images/haproxy/bitnami/image.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: haproxy -official_name: HAProxy -official_website: http://www.haproxy.org/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/haproxy -source_image_repo_link: https://hub.docker.com/r/bitnami/haproxy -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/haproxy/README.md -rf_docker_link: rapidfort/haproxy -image_workflow_name: haproxy_bitnami -github_location: haproxy/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fhaproxy -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/haproxy - - # install haproxy, just replace repository with RapidFort registry - $ helm install my-haproxy bitnami/haproxy --set image.repository=rapidfort/haproxy -what_is_text: | - HAProxy is a TCP proxy and a HTTP reverse proxy. It supports SSL termination and offloading, TCP and HTTP normalization, traffic regulation, caching and protection against DDoS attacks. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - haproxy: - input_base_tag: "2.8.3-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: haproxy - tls_certs: - generate: true - secret_name: localhost-server-tls - common_name: localhost - image_keys: - haproxy: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - haproxy: - repository: "HAPROXY_IMAGE_REPOSITORY" - tag: "HAPROXY_IMAGE_TAG" - - type: docker_compose - script: dc_coverage_tcp.sh - compose_file: docker-compose-tcp.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - haproxy: - repository: "HAPROXY_IMAGE_REPOSITORY" - tag: "HAPROXY_IMAGE_TAG" - diff --git a/community_images/haproxy/bitnami/k8s_coverage.sh b/community_images/haproxy/bitnami/k8s_coverage.sh deleted file mode 100755 index 3ab8bb7d5b..0000000000 --- a/community_images/haproxy/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# fetch service url and store the urls in URLS file -rm -f URLS -minikube service "${RELEASE_NAME}" -n "${NAMESPACE}" --url | tee -a URLS -cat URLS -rm URLS \ No newline at end of file diff --git a/community_images/haproxy/bitnami/overrides.yml b/community_images/haproxy/bitnami/overrides.yml deleted file mode 100755 index 8d5ae45bce..0000000000 --- a/community_images/haproxy/bitnami/overrides.yml +++ /dev/null @@ -1,17 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/haproxy/ironbank/README.md b/community_images/haproxy/ironbank/README.md deleted file mode 100755 index ff80cff619..0000000000 --- a/community_images/haproxy/ironbank/README.md +++ /dev/null @@ -1,139 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for HAProxy IronBank - -RapidFort’s container optimization process hardened this HAProxy IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One HAProxy IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is HAProxy IronBank? - -> HAProxy is a TCP proxy and a HTTP reverse proxy. It supports SSL termination and offloading, TCP and HTTP normalization, traffic regulation, caching and protection against DDoS attacks. - - -[Overview of HAProxy IronBank](http://www.haproxy.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened HAProxy IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Using docker run via bind mount: -$ docker run -d --name my-haproxy -v /path/to/etc/haproxy:/usr/local/etc/haproxy:ro --sysctl net.ipv4.ip_unprivileged_port_start=0 rapidfort/haproxy24-ib - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One HAProxy IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One HAProxy IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/haproxy24-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=haproxy-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fhaproxy%2Fhaproxy24?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fhaproxy%2Fhaproxy24?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fhaproxy%2Fhaproxy24?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fhaproxy%2Fhaproxy24?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fhaproxy%2Fhaproxy24?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/haproxy24-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/haproxy24-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/haproxy/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/haproxy/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fhaproxy%2Fhaproxy24 -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/haproxy24-ib diff --git a/community_images/haproxy/ironbank/assets/cve_reduction.webp b/community_images/haproxy/ironbank/assets/cve_reduction.webp deleted file mode 100644 index 331052946a391fd4285edeb636d29270beba2567..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1470 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 Tfc;RYf1-MY0U - - - - Error Occurred - - - Can not print the IP address of the container - - \ No newline at end of file diff --git a/community_images/haproxy/ironbank/configs/sample-server/app/templates/index.html b/community_images/haproxy/ironbank/configs/sample-server/app/templates/index.html deleted file mode 100644 index 83abebc03a..0000000000 --- a/community_images/haproxy/ironbank/configs/sample-server/app/templates/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - {{ message }} - - -The hostname of the container is {{ hostname }} and its IP is {{ ip }}. - - \ No newline at end of file diff --git a/community_images/haproxy/ironbank/configs/tcp-mode/haproxy-tcp1.cfg b/community_images/haproxy/ironbank/configs/tcp-mode/haproxy-tcp1.cfg deleted file mode 100755 index 1b5d62f4a2..0000000000 --- a/community_images/haproxy/ironbank/configs/tcp-mode/haproxy-tcp1.cfg +++ /dev/null @@ -1,47 +0,0 @@ -global - log 127.0.0.1 local0 - cpu-map 1-4 0-3 - mworker-max-reloads 3 - maxconn 256 - uid 99 - gid 99 - user root - hard-stop-after 100s - pidfile ./haproxy.pidfile - stats socket /tmp/haproxy - set-dumpable - server-state-file /etc/haproxy/state/current - setenv IMAGEFILEENDINGS ".gif .jpg .png" - strict-limits - no busy-polling - spread-checks 5 - max-spread-checks 15000 - maxcompcpuusage 90 - ssl-default-bind-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - ssl-default-bind-options no-sslv3 no-tls-tickets - ssl-default-server-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - ssl-default-server-options no-sslv3 no-tls-tickets - -defaults - timeout queue 100s - option checkcache - option httpchk - option tcplog - load-server-state-from-file global - compression algo identity - -frontend http-in - bind *:80 - timeout client 60s - default_backend flask - capture cookie ASPSESSION len 32 - -backend flask - timeout connect 10s - timeout server 100s - mode tcp - fullconn 10000 - balance roundrobin - server web1 python-flask-1:8080 - server web2 python-flask-2:8080 - diff --git a/community_images/haproxy/ironbank/configs/tcp-mode/haproxy-tcp2.cfg b/community_images/haproxy/ironbank/configs/tcp-mode/haproxy-tcp2.cfg deleted file mode 100755 index f0897cad62..0000000000 --- a/community_images/haproxy/ironbank/configs/tcp-mode/haproxy-tcp2.cfg +++ /dev/null @@ -1,47 +0,0 @@ -global - log 127.0.0.1 local0 - cpu-map 1-4 0-3 - mworker-max-reloads 3 - maxconn 256 - uid 99 - gid 99 - user root - hard-stop-after 100s - pidfile ./haproxy.pidfile - stats socket /tmp/haproxy - set-dumpable - server-state-file /etc/haproxy/state/current - setenv IMAGEFILEENDINGS ".gif .jpg .png" - strict-limits - no busy-polling - spread-checks 5 - max-spread-checks 15000 - maxcompcpuusage 90 - ssl-default-bind-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - ssl-default-bind-options no-sslv3 no-tls-tickets - ssl-default-server-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - ssl-default-server-options no-sslv3 no-tls-tickets - -defaults - timeout queue 100s - option checkcache - option httpchk - option tcplog - load-server-state-from-file global - compression algo gzip - -frontend http-in - bind *:80 - timeout client 60s - default_backend flask - capture cookie ASPSESSION len 32 - -backend flask - timeout connect 10s - timeout server 100s - mode tcp - fullconn 10000 - balance roundrobin - server web1 python-flask-1:8080 - server web2 python-flask-2:8080 - diff --git a/community_images/haproxy/ironbank/configs/tcp-mode/haproxy-tcp3.cfg b/community_images/haproxy/ironbank/configs/tcp-mode/haproxy-tcp3.cfg deleted file mode 100755 index 69bf48c46b..0000000000 --- a/community_images/haproxy/ironbank/configs/tcp-mode/haproxy-tcp3.cfg +++ /dev/null @@ -1,47 +0,0 @@ -global - log 127.0.0.1 local0 - cpu-map 1-4 0-3 - mworker-max-reloads 3 - maxconn 256 - uid 99 - gid 99 - user root - hard-stop-after 100s - pidfile ./haproxy.pidfile - stats socket /tmp/haproxy - set-dumpable - server-state-file /etc/haproxy/state/current - setenv IMAGEFILEENDINGS ".gif .jpg .png" - strict-limits - no busy-polling - spread-checks 5 - max-spread-checks 15000 - maxcompcpuusage 90 - ssl-default-bind-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - ssl-default-bind-options no-sslv3 no-tls-tickets - ssl-default-server-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - ssl-default-server-options no-sslv3 no-tls-tickets - -defaults - timeout queue 100s - option checkcache - option httpchk - option tcplog - load-server-state-from-file global - compression algo deflate - -frontend http-in - bind *:80 - timeout client 60s - default_backend flask - capture cookie ASPSESSION len 32 - -backend flask - timeout connect 10s - timeout server 100s - mode tcp - fullconn 10000 - balance roundrobin - server web1 python-flask-1:8080 - server web2 python-flask-2:8080 - diff --git a/community_images/haproxy/ironbank/dc_coverage.sh b/community_images/haproxy/ironbank/dc_coverage.sh deleted file mode 100755 index 4ea04d8fee..0000000000 --- a/community_images/haproxy/ironbank/dc_coverage.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -# roundrobin mode -CONTAINER1_NAME=haproxy-1 -# leastconn mode -CONTAINER2_NAME=haproxy-2 -# source mode -CONTAINER3_NAME=haproxy-3 - -# log for debugging -docker inspect "${CONTAINER1_NAME}" -docker inspect "${CONTAINER2_NAME}" -docker inspect "${CONTAINER3_NAME}" - -# finding ports -docker inspect "${CONTAINER1_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT1=$(docker inspect "${CONTAINER1_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -docker inspect "${CONTAINER2_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT2=$(docker inspect "${CONTAINER2_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -docker inspect "${CONTAINER3_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT3=$(docker inspect "${CONTAINER3_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") - -# run curl in loop (roundrobin) -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT1}" -done - -# run curl in loop for app1 route -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT1}"/app1 -done - -# run curl in loop for app2 route -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT1}"/app2 -done - -# Running curl for admin (disabled by acl) -curl http://localhost:"${PORT1}"/admin - -# run curl in loop (leastconn) -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT2}" -done - -# run curl in loop (source) -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT3}" -done \ No newline at end of file diff --git a/community_images/haproxy/ironbank/dc_coverage_tcp.sh b/community_images/haproxy/ironbank/dc_coverage_tcp.sh deleted file mode 100755 index ae247490cd..0000000000 --- a/community_images/haproxy/ironbank/dc_coverage_tcp.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -# identity mode -CONTAINER1_NAME=haproxy-1 -# gzip mode -CONTAINER2_NAME=haproxy-2 -# deflate mode -CONTAINER3_NAME=haproxy-3 - - -# log for debugging -docker inspect "${CONTAINER1_NAME}" -docker inspect "${CONTAINER2_NAME}" -docker inspect "${CONTAINER3_NAME}" - -# finding ports -docker inspect "${CONTAINER1_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT1=$(docker inspect "${CONTAINER1_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -docker inspect "${CONTAINER2_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT2=$(docker inspect "${CONTAINER2_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -docker inspect "${CONTAINER3_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT3=$(docker inspect "${CONTAINER3_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") - -# run curl in loop (identity) -for i in {1..5}; -do - echo "Attempt $i" - curl http://localhost:"${PORT1}" -done - -# run curl in loop (gzip) -for i in {1..5}; -do - echo "Attempt $i" - curl http://localhost:"${PORT2}" -done - -# run curl in loop (deflate) -for i in {1..5}; -do - echo "Attempt $i" - curl http://localhost:"${PORT3}" -done \ No newline at end of file diff --git a/community_images/haproxy/ironbank/docker-compose-tcp.yml b/community_images/haproxy/ironbank/docker-compose-tcp.yml deleted file mode 100755 index 49d03d6e0a..0000000000 --- a/community_images/haproxy/ironbank/docker-compose-tcp.yml +++ /dev/null @@ -1,90 +0,0 @@ -version: '2' - -services: - python-flask-1: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-1 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - python-flask-2: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-2 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - haproxy-1: - image: ${HAPROXY_IMAGE_REPOSITORY}:${HAPROXY_IMAGE_TAG} - user: root - volumes: - - ./configs/tcp-mode/haproxy-tcp1.cfg:/usr/local/etc/haproxy/haproxy.cfg - container_name: haproxy-1 - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - - haproxy-2: - image: ${HAPROXY_IMAGE_REPOSITORY}:${HAPROXY_IMAGE_TAG} - user: root - volumes: - - ./configs/tcp-mode/haproxy-tcp2.cfg:/usr/local/etc/haproxy/haproxy.cfg - container_name: haproxy-2 - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - - haproxy-3: - image: ${HAPROXY_IMAGE_REPOSITORY}:${HAPROXY_IMAGE_TAG} - user: root - volumes: - - ./configs/tcp-mode/haproxy-tcp3.cfg:/usr/local/etc/haproxy/haproxy.cfg - container_name: haproxy-3 - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - -networks: - haproxy: - driver: bridge diff --git a/community_images/haproxy/ironbank/docker-compose.yml b/community_images/haproxy/ironbank/docker-compose.yml deleted file mode 100755 index 4dbadc85fd..0000000000 --- a/community_images/haproxy/ironbank/docker-compose.yml +++ /dev/null @@ -1,132 +0,0 @@ -version: '2' - -services: - python-flask-1: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-1 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - python-flask-2: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-2 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - python-flask-3: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-3 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - python-flask-4: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-4 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - haproxy-1: - image: ${HAPROXY_IMAGE_REPOSITORY}:${HAPROXY_IMAGE_TAG} - user: root - volumes: - - ./configs/http-mode/haproxy1.cfg:/usr/local/etc/haproxy/haproxy.cfg - container_name: haproxy-1 - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - - python-flask-3 - - python-flask-4 - - haproxy-2: - image: ${HAPROXY_IMAGE_REPOSITORY}:${HAPROXY_IMAGE_TAG} - user: root - volumes: - - ./configs/http-mode/haproxy2.cfg:/usr/local/etc/haproxy/haproxy.cfg - container_name: haproxy-2 - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - - python-flask-3 - - python-flask-4 - - haproxy-3: - image: ${HAPROXY_IMAGE_REPOSITORY}:${HAPROXY_IMAGE_TAG} - user: root - volumes: - - ./configs/http-mode/haproxy3.cfg:/usr/local/etc/haproxy/haproxy.cfg - container_name: haproxy-3 - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - - python-flask-3 - - python-flask-4 - -networks: - haproxy: - driver: bridge diff --git a/community_images/haproxy/ironbank/image.yml b/community_images/haproxy/ironbank/image.yml deleted file mode 100755 index 0cb360ffd3..0000000000 --- a/community_images/haproxy/ironbank/image.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: haproxy-ib -official_name: HAProxy IronBank -official_website: http://www.haproxy.org/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/haproxy/haproxy24 -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fhaproxy%2Fhaproxy24 -source_image_readme: https://repo1.dso.mil/dsop/opensource/haproxy/haproxy24/-/blob/development/README.md -rf_docker_link: rapidfort/haproxy24-ib -image_workflow_name: haproxy_ironbank -github_location: haproxy/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fhaproxy%2Fhaproxy24 -usage_instructions: | - # Using docker run via bind mount: - $ docker run -d --name my-haproxy -v /path/to/etc/haproxy:/usr/local/etc/haproxy:ro --sysctl net.ipv4.ip_unprivileged_port_start=0 rapidfort/haproxy24-ib -what_is_text: | - HAProxy is a TCP proxy and a HTTP reverse proxy. It supports SSL termination and offloading, TCP and HTTP normalization, traffic regulation, caching and protection against DDoS attacks. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/haproxy/haproxy24: - input_base_tag: "2.4." - output_repo: haproxy24-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - wait_time_sec: 120 - tls_certs: - generate: true - out_dir: certs - image_keys: - haproxy24-ib: - repository: "HAPROXY_IMAGE_REPOSITORY" - tag: "HAPROXY_IMAGE_TAG" - - type: docker_compose - script: dc_coverage_tcp.sh - compose_file: docker-compose-tcp.yml - wait_time_sec: 120 - tls_certs: - generate: true - out_dir: certs - image_keys: - haproxy24-ib: - repository: "HAPROXY_IMAGE_REPOSITORY" - tag: "HAPROXY_IMAGE_TAG" - diff --git a/community_images/haproxy/official/.rfignore b/community_images/haproxy/official/.rfignore deleted file mode 100644 index 1c799e0088..0000000000 --- a/community_images/haproxy/official/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/common-licenses \ No newline at end of file diff --git a/community_images/haproxy/official/README.md b/community_images/haproxy/official/README.md deleted file mode 100644 index d66a3fe533..0000000000 --- a/community_images/haproxy/official/README.md +++ /dev/null @@ -1,144 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for HAProxy Official - -RapidFort’s container optimization process hardened this HAProxy Official container. This container is free to use and has no license limitations. - -It is the same as the [The Docker Community HAProxy Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is HAProxy Official? - -> HAProxy is a TCP proxy and a HTTP reverse proxy. It supports SSL termination and offloading, TCP and HTTP normalization, traffic regulation, caching and protection against DDoS attacks. - - -[Overview of HAProxy Official](http://www.haproxy.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened HAProxy Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Using docker run via bind mount: -$ docker run -d --name my-haproxy -v /path/to/etc/haproxy:/usr/local/etc/haproxy:ro --sysctl net.ipv4.ip_unprivileged_port_start=0 rapidfort/haproxy-official - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [The Docker Community HAProxy Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [The Docker Community HAProxy Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/haproxy-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`2.7-dev8`, `2.7-dev`, `2.7-dev8-bullseye`, `2.7-dev-bullseye`](https://github.com/docker-library/haproxy/blob/cd1c198fc46e312fccf9818c5388494eb4a70f83/2.7/Dockerfile) -* [`2.6.6`, `2.6`, `lts`, `latest`, `2.6.6-bullseye`, `2.6-bullseye`, `lts-bullseye`, `bullseye`](https://github.com/docker-library/haproxy/blob/bfdb47e3bb0de8315bf08876d7720ab3f46ccc28/2.6/Dockerfile) -* [`2.5.9`, `2.5`, `2.5.9-bullseye`, `2.5-bullseye`](https://github.com/docker-library/haproxy/blob/18c82fca3a11dc33c652328275a13155de6b054b/2.5/Dockerfile) -* [`2.4.19`, `2.4`, `2.4.19-bullseye`, `2.4-bullseye`](https://github.com/docker-library/haproxy/blob/b07fcf19b4ee54ef37ffbf7241372961ddc97b8c/2.4/Dockerfile) -* [`2.2.25`, `2.2`, `2.2.25-bullseye`, `2.2-bullseye`](https://github.com/docker-library/haproxy/blob/241d8833cfd3498f40cbd733c4fa7bc53d46f5c7/2.2/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=haproxy-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fhaproxy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fhaproxy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fhaproxy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fhaproxy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fhaproxy?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=haproxy-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/haproxy-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/haproxy-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/haproxy/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/haproxy/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/haproxy -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/haproxy-official diff --git a/community_images/haproxy/official/assets/cve_reduction.webp b/community_images/haproxy/official/assets/cve_reduction.webp deleted file mode 100644 index 5752e6af225d53f20c6b8418c025f2513bb58a3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1694 zcmb`Hdo4~hDe}x~y^>8jJ!lb& zqNI$_ZVF>;TeL_*gFI3ugJ#Hcf3uyA{%Ftsv)_BZ-}|}W`@QG;y^nJp2)4GDBmi)+ z!4i)V_qa*}0FaOtiUDf?2sj*3T^t$$adnY}nF0_(WzZe)Sfs0)J5uEPD#yv;p~{PXd6|9(tU9{GVcAkQMj$2VkZY0Js|f${hem zdweZ)ZSC4!{L5aE&>AghpERfifRlg%kbnTFfDB9^+6hd78L)(24AK?KNkoEtF~cG; z3_yoi=HiR>^>j;XgM8xQX%y-JN!GYHd9f={r-~!*_pnOmF{&}PAhtECXQFI&Y!N+z z`J5Fzz^7Cy_{&|tzL&S4`AYw@wZOYd=civ-1|zpQ$u+Yx+;YNr%*lNEa~sKUM3P2n zyB5P6-RVwb&?g>niDhqPx{&D!KV&WEbZv{- zQvayI1WOVqUc74V?>pM2JwBW#xgFcmLcNvv8yRGSB>K}Yy8txBpdn^WR@(SlinsgL&fxVs>2pbnlHa< zIrE06kWgCjR8{u;uK8Z9%Z2+HcnemaTwLpo*81w1YWPt>9&TmY69yr!Xg8bY zoUfIH*gy$6(7F^e-+RilJPTjxrL3U4BYjx6rr4$omD5xa&D}q*&e1x1yYNl5{9LHa zRC_mfy;0you3PU7<97Ry{}66&1OlG1I+8FtIUxjkj|2ctwZNhtTIZ9|cJ$%+o?)lq+`)(X!T z^_|YoD1nu-ruf_hZXo8cJ#M^zPU^kVT~b)EAGuK diff --git a/community_images/haproxy/official/assets/metrics.webp b/community_images/haproxy/official/assets/metrics.webp deleted file mode 100644 index 7624cbee7f5c4fd68d94f1a2c65329e3affea85d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25246 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 Hv!nn3lDkXY diff --git a/community_images/haproxy/official/configs/http-mode/haproxy1.cfg b/community_images/haproxy/official/configs/http-mode/haproxy1.cfg deleted file mode 100644 index d7f51b1a77..0000000000 --- a/community_images/haproxy/official/configs/http-mode/haproxy1.cfg +++ /dev/null @@ -1,45 +0,0 @@ -global - maxconn 256 - spread-checks 3 - ca-base /etc/ssl/certs - crt-base /etc/ssl/private -frontend http-in - bind *:80 - mode http - timeout client 60s - - acl app1 path_end -i /app1 - acl app2 path_end -i /app2 - http-request deny if { path -i -m beg /admin } - - use_backend app1Servers if app1 - use_backend app2Servers if app2 - - default_backend flask - -backend app1Servers - timeout connect 10s - timeout server 10s - mode http - balance roundrobin - server web1 python-flask-1:8080 - server web2 python-flask-2:8080 - -backend app2Servers - timeout connect 10s - timeout server 15s - mode http - balance roundrobin - server web3 python-flask-3:8080 - server web4 python-flask-4:8080 - -backend flask - timeout connect 10s - timeout server 100s - mode http - balance roundrobin - server web1 python-flask-1:8080 - server web2 python-flask-2:8080 - server web3 python-flask-3:8080 - server web4 python-flask-4:8080 - diff --git a/community_images/haproxy/official/configs/http-mode/haproxy2.cfg b/community_images/haproxy/official/configs/http-mode/haproxy2.cfg deleted file mode 100644 index 51231f504a..0000000000 --- a/community_images/haproxy/official/configs/http-mode/haproxy2.cfg +++ /dev/null @@ -1,45 +0,0 @@ -global - maxconn 256 - spread-checks 3 - ca-base /etc/ssl/certs - crt-base /etc/ssl/private -frontend http-in - bind *:80 - mode http - timeout client 60s - - acl app1 path_end -i /app1 - acl app2 path_end -i /app2 - http-request deny if { path -i -m beg /admin } - - use_backend app1Servers if app1 - use_backend app2Servers if app2 - - default_backend flask - -backend app1Servers - timeout connect 10s - timeout server 10s - mode http - balance leastconn - server web1 python-flask-1:8080 - server web2 python-flask-2:8080 - -backend app2Servers - timeout connect 10s - timeout server 15s - mode http - balance leastconn - server web3 python-flask-3:8080 - server web4 python-flask-4:8080 - -backend flask - timeout connect 10s - timeout server 100s - mode http - balance leastconn - server web1 python-flask-1:8080 - server web2 python-flask-2:8080 - server web3 python-flask-3:8080 - server web4 python-flask-4:8080 - diff --git a/community_images/haproxy/official/configs/http-mode/haproxy3.cfg b/community_images/haproxy/official/configs/http-mode/haproxy3.cfg deleted file mode 100644 index 6fd4b93a6d..0000000000 --- a/community_images/haproxy/official/configs/http-mode/haproxy3.cfg +++ /dev/null @@ -1,45 +0,0 @@ -global - maxconn 256 - spread-checks 3 - ca-base /etc/ssl/certs - crt-base /etc/ssl/private -frontend http-in - bind *:80 - mode http - timeout client 60s - - acl app1 path_end -i /app1 - acl app2 path_end -i /app2 - http-request deny if { path -i -m beg /admin } - - use_backend app1Servers if app1 - use_backend app2Servers if app2 - - default_backend flask - -backend app1Servers - timeout connect 10s - timeout server 10s - mode http - balance source - server web1 python-flask-1:8080 - server web2 python-flask-2:8080 - -backend app2Servers - timeout connect 10s - timeout server 15s - mode http - balance source - server web3 python-flask-3:8080 - server web4 python-flask-4:8080 - -backend flask - timeout connect 10s - timeout server 100s - mode http - balance source - server web1 python-flask-1:8080 - server web2 python-flask-2:8080 - server web3 python-flask-3:8080 - server web4 python-flask-4:8080 - diff --git a/community_images/haproxy/official/configs/sample-server/app/app.py b/community_images/haproxy/official/configs/sample-server/app/app.py deleted file mode 100644 index 80df4dc430..0000000000 --- a/community_images/haproxy/official/configs/sample-server/app/app.py +++ /dev/null @@ -1,48 +0,0 @@ -""" Sample flask app for testing """ -import socket -from flask import Flask,render_template # pylint: disable=import-error - -app = Flask(__name__) - -@app.route("/") -def index(): - """ add index route """ - try: - host_name = socket.gethostname() - host_ip = socket.gethostbyname(host_name) - return render_template('index.html', hostname=host_name, ip=host_ip, message = "Home page") - except Exception as _: # pylint: disable=broad-except - return render_template('error.html') - -@app.route("/app1") -def app1(): - """ app1 route """ - try: - host_name = socket.gethostname() - host_ip = socket.gethostbyname(host_name) - return render_template('index.html', hostname=host_name, ip=host_ip, message = "App1 page") - except Exception as _: # pylint: disable=broad-except - return render_template('error.html') - -@app.route("/app2") -def app2(): - """ app2 route """ - try: - host_name = socket.gethostname() - host_ip = socket.gethostbyname(host_name) - return render_template('index.html', hostname=host_name, ip=host_ip, message = "App2 page") - except Exception as _: # pylint: disable=broad-except - return render_template('error.html') - -@app.route("/admin") -def admin(): - """ admin route """ - try: - host_name = socket.gethostname() - host_ip = socket.gethostbyname(host_name) - return render_template('index.html', hostname=host_name, ip=host_ip, message = "Admin page (privileged)") - except Exception as _: # pylint: disable=broad-except - return render_template('error.html') - -if __name__ == "__main__": - app.run(host='0.0.0.0', port=8080) diff --git a/community_images/haproxy/official/configs/sample-server/app/templates/error.html b/community_images/haproxy/official/configs/sample-server/app/templates/error.html deleted file mode 100644 index ade0fa0e74..0000000000 --- a/community_images/haproxy/official/configs/sample-server/app/templates/error.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Error Occurred - - - Can not print the IP address of the container - - \ No newline at end of file diff --git a/community_images/haproxy/official/configs/sample-server/app/templates/index.html b/community_images/haproxy/official/configs/sample-server/app/templates/index.html deleted file mode 100644 index 83abebc03a..0000000000 --- a/community_images/haproxy/official/configs/sample-server/app/templates/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - {{ message }} - - -The hostname of the container is {{ hostname }} and its IP is {{ ip }}. - - \ No newline at end of file diff --git a/community_images/haproxy/official/configs/tcp-mode/haproxy-tcp1.cfg b/community_images/haproxy/official/configs/tcp-mode/haproxy-tcp1.cfg deleted file mode 100644 index c6f4424358..0000000000 --- a/community_images/haproxy/official/configs/tcp-mode/haproxy-tcp1.cfg +++ /dev/null @@ -1,48 +0,0 @@ -global - log 127.0.0.1 local0 - cpu-map 1-4 0-3 - chroot /var/lib/haproxy - mworker-max-reloads 3 - maxconn 256 - uid 99 - gid 99 - user root - hard-stop-after 100s - pidfile ./haproxy.pidfile - stats socket /tmp/haproxy - set-dumpable - server-state-file /etc/haproxy/state/current - setenv IMAGEFILEENDINGS ".gif .jpg .png" - strict-limits - no busy-polling - spread-checks 5 - max-spread-checks 15000 - maxcompcpuusage 90 - ssl-default-bind-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - ssl-default-bind-options no-sslv3 no-tls-tickets - ssl-default-server-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - ssl-default-server-options no-sslv3 no-tls-tickets - -defaults - timeout queue 100s - option checkcache - option httpchk - option tcplog - load-server-state-from-file global - compression algo identity - -frontend http-in - bind *:80 - timeout client 60s - default_backend flask - capture cookie ASPSESSION len 32 - -backend flask - timeout connect 10s - timeout server 100s - mode tcp - fullconn 10000 - balance roundrobin - server web1 python-flask-1:8080 - server web2 python-flask-2:8080 - diff --git a/community_images/haproxy/official/configs/tcp-mode/haproxy-tcp2.cfg b/community_images/haproxy/official/configs/tcp-mode/haproxy-tcp2.cfg deleted file mode 100644 index fe7530a0ea..0000000000 --- a/community_images/haproxy/official/configs/tcp-mode/haproxy-tcp2.cfg +++ /dev/null @@ -1,48 +0,0 @@ -global - log 127.0.0.1 local0 - cpu-map 1-4 0-3 - chroot /var/lib/haproxy - mworker-max-reloads 3 - maxconn 256 - uid 99 - gid 99 - user root - hard-stop-after 100s - pidfile ./haproxy.pidfile - stats socket /tmp/haproxy - set-dumpable - server-state-file /etc/haproxy/state/current - setenv IMAGEFILEENDINGS ".gif .jpg .png" - strict-limits - no busy-polling - spread-checks 5 - max-spread-checks 15000 - maxcompcpuusage 90 - ssl-default-bind-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - ssl-default-bind-options no-sslv3 no-tls-tickets - ssl-default-server-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - ssl-default-server-options no-sslv3 no-tls-tickets - -defaults - timeout queue 100s - option checkcache - option httpchk - option tcplog - load-server-state-from-file global - compression algo gzip - -frontend http-in - bind *:80 - timeout client 60s - default_backend flask - capture cookie ASPSESSION len 32 - -backend flask - timeout connect 10s - timeout server 100s - mode tcp - fullconn 10000 - balance roundrobin - server web1 python-flask-1:8080 - server web2 python-flask-2:8080 - diff --git a/community_images/haproxy/official/configs/tcp-mode/haproxy-tcp3.cfg b/community_images/haproxy/official/configs/tcp-mode/haproxy-tcp3.cfg deleted file mode 100644 index 6c0b86f553..0000000000 --- a/community_images/haproxy/official/configs/tcp-mode/haproxy-tcp3.cfg +++ /dev/null @@ -1,48 +0,0 @@ -global - log 127.0.0.1 local0 - cpu-map 1-4 0-3 - chroot /var/lib/haproxy - mworker-max-reloads 3 - maxconn 256 - uid 99 - gid 99 - user root - hard-stop-after 100s - pidfile ./haproxy.pidfile - stats socket /tmp/haproxy - set-dumpable - server-state-file /etc/haproxy/state/current - setenv IMAGEFILEENDINGS ".gif .jpg .png" - strict-limits - no busy-polling - spread-checks 5 - max-spread-checks 15000 - maxcompcpuusage 90 - ssl-default-bind-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - ssl-default-bind-options no-sslv3 no-tls-tickets - ssl-default-server-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - ssl-default-server-options no-sslv3 no-tls-tickets - -defaults - timeout queue 100s - option checkcache - option httpchk - option tcplog - load-server-state-from-file global - compression algo deflate - -frontend http-in - bind *:80 - timeout client 60s - default_backend flask - capture cookie ASPSESSION len 32 - -backend flask - timeout connect 10s - timeout server 100s - mode tcp - fullconn 10000 - balance roundrobin - server web1 python-flask-1:8080 - server web2 python-flask-2:8080 - diff --git a/community_images/haproxy/official/dc_coverage.sh b/community_images/haproxy/official/dc_coverage.sh deleted file mode 100755 index 4ea04d8fee..0000000000 --- a/community_images/haproxy/official/dc_coverage.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -# roundrobin mode -CONTAINER1_NAME=haproxy-1 -# leastconn mode -CONTAINER2_NAME=haproxy-2 -# source mode -CONTAINER3_NAME=haproxy-3 - -# log for debugging -docker inspect "${CONTAINER1_NAME}" -docker inspect "${CONTAINER2_NAME}" -docker inspect "${CONTAINER3_NAME}" - -# finding ports -docker inspect "${CONTAINER1_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT1=$(docker inspect "${CONTAINER1_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -docker inspect "${CONTAINER2_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT2=$(docker inspect "${CONTAINER2_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -docker inspect "${CONTAINER3_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT3=$(docker inspect "${CONTAINER3_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") - -# run curl in loop (roundrobin) -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT1}" -done - -# run curl in loop for app1 route -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT1}"/app1 -done - -# run curl in loop for app2 route -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT1}"/app2 -done - -# Running curl for admin (disabled by acl) -curl http://localhost:"${PORT1}"/admin - -# run curl in loop (leastconn) -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT2}" -done - -# run curl in loop (source) -for i in {1..10}; -do - echo "Attempt $i" - curl http://localhost:"${PORT3}" -done \ No newline at end of file diff --git a/community_images/haproxy/official/dc_coverage_tcp.sh b/community_images/haproxy/official/dc_coverage_tcp.sh deleted file mode 100755 index ae247490cd..0000000000 --- a/community_images/haproxy/official/dc_coverage_tcp.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -# identity mode -CONTAINER1_NAME=haproxy-1 -# gzip mode -CONTAINER2_NAME=haproxy-2 -# deflate mode -CONTAINER3_NAME=haproxy-3 - - -# log for debugging -docker inspect "${CONTAINER1_NAME}" -docker inspect "${CONTAINER2_NAME}" -docker inspect "${CONTAINER3_NAME}" - -# finding ports -docker inspect "${CONTAINER1_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT1=$(docker inspect "${CONTAINER1_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -docker inspect "${CONTAINER2_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT2=$(docker inspect "${CONTAINER2_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -docker inspect "${CONTAINER3_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT3=$(docker inspect "${CONTAINER3_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") - -# run curl in loop (identity) -for i in {1..5}; -do - echo "Attempt $i" - curl http://localhost:"${PORT1}" -done - -# run curl in loop (gzip) -for i in {1..5}; -do - echo "Attempt $i" - curl http://localhost:"${PORT2}" -done - -# run curl in loop (deflate) -for i in {1..5}; -do - echo "Attempt $i" - curl http://localhost:"${PORT3}" -done \ No newline at end of file diff --git a/community_images/haproxy/official/docker-compose-tcp.yml b/community_images/haproxy/official/docker-compose-tcp.yml deleted file mode 100755 index 8272ce9063..0000000000 --- a/community_images/haproxy/official/docker-compose-tcp.yml +++ /dev/null @@ -1,90 +0,0 @@ -version: '2' - -services: - python-flask-1: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-1 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - python-flask-2: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-2 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - haproxy-1: - image: ${HAPROXY_OFFICIAL_IMAGE_REPOSITORY}:${HAPROXY_OFFICIAL_IMAGE_TAG} - user: root - volumes: - - ./configs/tcp-mode/haproxy-tcp1.cfg:/usr/local/etc/haproxy/haproxy.cfg - container_name: haproxy-1 - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - - haproxy-2: - image: ${HAPROXY_OFFICIAL_IMAGE_REPOSITORY}:${HAPROXY_OFFICIAL_IMAGE_TAG} - user: root - volumes: - - ./configs/tcp-mode/haproxy-tcp2.cfg:/usr/local/etc/haproxy/haproxy.cfg - container_name: haproxy-2 - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - - haproxy-3: - image: ${HAPROXY_OFFICIAL_IMAGE_REPOSITORY}:${HAPROXY_OFFICIAL_IMAGE_TAG} - user: root - volumes: - - ./configs/tcp-mode/haproxy-tcp3.cfg:/usr/local/etc/haproxy/haproxy.cfg - container_name: haproxy-3 - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - -networks: - haproxy: - driver: bridge diff --git a/community_images/haproxy/official/docker-compose.yml b/community_images/haproxy/official/docker-compose.yml deleted file mode 100755 index 30171449c2..0000000000 --- a/community_images/haproxy/official/docker-compose.yml +++ /dev/null @@ -1,132 +0,0 @@ -version: '2' - -services: - python-flask-1: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-1 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - python-flask-2: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-2 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - python-flask-3: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-3 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - python-flask-4: - image: python:3.6 - volumes: - - ./configs/sample-server/app:/app - container_name: python-flask-4 - cap_add: - - SYS_PTRACE - networks: - - haproxy - expose: - - "8080" - command: - - /bin/bash - - -c - - | - pip install flask==1.0.2 - python3 app/app.py - - haproxy-1: - image: ${HAPROXY_OFFICIAL_IMAGE_REPOSITORY}:${HAPROXY_OFFICIAL_IMAGE_TAG} - user: root - volumes: - - ./configs/http-mode/haproxy1.cfg:/usr/local/etc/haproxy/haproxy.cfg - container_name: haproxy-1 - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - - python-flask-3 - - python-flask-4 - - haproxy-2: - image: ${HAPROXY_OFFICIAL_IMAGE_REPOSITORY}:${HAPROXY_OFFICIAL_IMAGE_TAG} - user: root - volumes: - - ./configs/http-mode/haproxy2.cfg:/usr/local/etc/haproxy/haproxy.cfg - container_name: haproxy-2 - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - - python-flask-3 - - python-flask-4 - - haproxy-3: - image: ${HAPROXY_OFFICIAL_IMAGE_REPOSITORY}:${HAPROXY_OFFICIAL_IMAGE_TAG} - user: root - volumes: - - ./configs/http-mode/haproxy3.cfg:/usr/local/etc/haproxy/haproxy.cfg - container_name: haproxy-3 - networks: - - haproxy - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::80' - depends_on: - - python-flask-1 - - python-flask-2 - - python-flask-3 - - python-flask-4 - -networks: - haproxy: - driver: bridge diff --git a/community_images/haproxy/official/image.yml b/community_images/haproxy/official/image.yml deleted file mode 100644 index d40b061eef..0000000000 --- a/community_images/haproxy/official/image.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: haproxy-official -official_name: HAProxy Official -official_website: http://www.haproxy.org/ -source_image_provider: The Docker Community -source_image_repo: docker.io/library/haproxy -source_image_repo_link: https://hub.docker.com/_/haproxy -source_image_readme: https://github.com/docker-library/docs/blob/master/haproxy/README.md -rf_docker_link: rapidfort/haproxy-official -image_workflow_name: haproxy_official -github_location: haproxy/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fhaproxy -usage_instructions: | - # Using docker run via bind mount: - $ docker run -d --name my-haproxy -v /path/to/etc/haproxy:/usr/local/etc/haproxy:ro --sysctl net.ipv4.ip_unprivileged_port_start=0 rapidfort/haproxy-official -what_is_text: | - HAProxy is a TCP proxy and a HTTP reverse proxy. It supports SSL termination and offloading, TCP and HTTP normalization, traffic regulation, caching and protection against DDoS attacks. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`2.7-dev8`, `2.7-dev`, `2.7-dev8-bullseye`, `2.7-dev-bullseye`](https://github.com/docker-library/haproxy/blob/cd1c198fc46e312fccf9818c5388494eb4a70f83/2.7/Dockerfile)" - - "[`2.6.6`, `2.6`, `lts`, `latest`, `2.6.6-bullseye`, `2.6-bullseye`, `lts-bullseye`, `bullseye`](https://github.com/docker-library/haproxy/blob/bfdb47e3bb0de8315bf08876d7720ab3f46ccc28/2.6/Dockerfile)" - - "[`2.5.9`, `2.5`, `2.5.9-bullseye`, `2.5-bullseye`](https://github.com/docker-library/haproxy/blob/18c82fca3a11dc33c652328275a13155de6b054b/2.5/Dockerfile)" - - "[`2.4.19`, `2.4`, `2.4.19-bullseye`, `2.4-bullseye`](https://github.com/docker-library/haproxy/blob/b07fcf19b4ee54ef37ffbf7241372961ddc97b8c/2.4/Dockerfile)" - - "[`2.2.25`, `2.2`, `2.2.25-bullseye`, `2.2-bullseye`](https://github.com/docker-library/haproxy/blob/241d8833cfd3498f40cbd733c4fa7bc53d46f5c7/2.2/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - haproxy: - input_base_tag: "2.*-dev8-bullseye" - output_repo: haproxy-official - - haproxy: - input_base_tag: "2.6.*-bullseye" - output_repo: haproxy-official - - haproxy: - input_base_tag: "2.5.*-bullseye" - output_repo: haproxy-official - - haproxy: - input_base_tag: "2.4.*-bullseye" - output_repo: haproxy-official - - haproxy: - input_base_tag: "2.2.*-bullseye" - output_repo: haproxy-official -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - haproxy-official: - repository: "HAPROXY_OFFICIAL_IMAGE_REPOSITORY" - tag: "HAPROXY_OFFICIAL_IMAGE_TAG" - - type: docker_compose - script: dc_coverage_tcp.sh - compose_file: docker-compose-tcp.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - haproxy-official: - repository: "HAPROXY_OFFICIAL_IMAGE_REPOSITORY" - tag: "HAPROXY_OFFICIAL_IMAGE_TAG" - diff --git a/community_images/influxdb/bitnami/.rfignore b/community_images/influxdb/bitnami/.rfignore deleted file mode 100644 index 35774bb2ea..0000000000 --- a/community_images/influxdb/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/influxdb/licenses -opt/bitnami/licenses -usr/share/common-licenses diff --git a/community_images/influxdb/bitnami/README.md b/community_images/influxdb/bitnami/README.md deleted file mode 100644 index 6ba69395d6..0000000000 --- a/community_images/influxdb/bitnami/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for InfluxDB™ - -RapidFort’s container optimization process hardened this InfluxDB™ container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami InfluxDB™][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is InfluxDB™? - -> InfluxDB is a time series database built from the ground up to handle high write and query loads. InfluxDB is meant to be used as a backing store for any use case involving large amounts of timestamped data, including DevOps monitoring, application metrics, IoT sensor data, and real-time analytics. - - -[Overview of InfluxDB™](https://www.influxdata.com/products/influxdb-overview) - -InfluxDB(TM) is a trademark owned by InfluxData, which is not affiliated with, and does not endorse, this site. - - -## How do I use this hardened InfluxDB™ image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install influxdb, just replace repository with RapidFort registry -$ helm install my-influxdb bitnami/influxdb --set image.repository=rapidfort/influxdb - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami InfluxDB™][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami InfluxDB™][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/influxdb][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`2`, `2-debian-11`, `2.7.4`, `2.7.4-debian-11-r` (2/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/influxdb/2/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=influxdb&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Finfluxdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=influxdb&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Finfluxdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=influxdb&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Finfluxdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=influxdb&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Finfluxdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=influxdb&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Finfluxdb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=influxdb&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/influxdb?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/influxdb?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/influxdb/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/influxdb/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/influxdb -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/influxdb diff --git a/community_images/influxdb/bitnami/assets/cve_reduction.webp b/community_images/influxdb/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 782bf0acda2e840c7bf1817185cc088849882555..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1510 zcmWIYbaT7M%D@or>J$(bU=hK^z`&pY#0wc2>=_t5ot*VV2 z7YKk{%#)fI8VsZ(fLMm1m?4P4oxusnrYb;$XZ|7v28*u@49pV{Vo5U@7`C@EFi6}& zh^Z`KVBl|IVAyuPAh9SB>=+gx$&{AH!0>4~0|Rd)1B37d1_rKZm_reI5pjXTuL?jt zGC+Uk17SKt4nrz~0)r<*9z!yN9*||kV8CF=U*)`@Y0G4%ipm8|4&ImJ&*`wnj%%OD$*x;$ zKI#>s+6)t)iJY@$da&$G+SDUl^F+3?9putWm=|d@_r~G=XV%fvdl#fU`d8?e$oF5D z*;ughp&$~0~I!*jX#TZ`wm zjO>){N^1n-*FBJ{dD>?3f#KgDFJVSM-_uJkZ~jq#^6lh_hpO*{EqNmTZbHhA_m)q5 zp7h%rpAxCe{U#h!_5Pv_%hXn7=GkEyYuK~q?mkg|^k@2w8eIW%zx_UEfvGJ#QS5}| zT|4g++*;4Kdl+}emg}diVUj;Qt8wx-MYje$9#^481%{;Avt-scOgqPKwrhXmpL@%! z_eEUV{dwK2`u7v&>Q-*F%F8y+*UeeP{Jh__^}gYn;P1I_{@0)Xobmtu{jQVS)76vb z97x;xwEm@*2Ity?>yLzX%zvwQy8f&C*KGTWE(2@-hj(9;>3aRR;=pX~F0``e;HM3) zsd4vr)ddx4X>tFN+U3i;(Es!QDfK5+r~gf;eq{T5?XR7|CX%7mciswae(Jm6Y~i8q z#Qu-2z2-aAm&W_NJyLR__F>@i|IJ~gyx*oS|9^Fl!7+u$YWW+2{VzRR`)}4IK0$|G z0nV9jF7o@BrO#}e==yi&(}Ob?<}JhJ0mp;ftd=G%Z|aXWzbSg>z5JB3KQ2}-eo)YuZpAWLW7{8xHwRx|`UohPlNZe+I==Vx^K1I(shL;{o&%i zrHayDSMr;gEijDH`&x3_U6H%?Ew7kk`<(XUPyejg+aXu#?3aAc;dl3=uL~^oC-8i- zUFADN!KlM!8@o%`9tN$?0fLkH4#*f9IvBpM*kPT$#bLkf)oEw0{;J?;ell^@+KN4L z(JdzX&m3AJRU^oqQKe!rZ_V1vUj+Kte%FW!`+Cj)!{B`5(D8G;vP%~9={#&Q@V5TE z^a%rpcTMZNiZfc%Wv#cKRDJjQ@ALmHHt8FC_I=~H8+zv9i&urref(^neU{o8{cZWj fy1&d{Fp{svBVfr1lZ&0+e1T6dwYLCEYz77Z4Cxbx diff --git a/community_images/influxdb/bitnami/assets/metrics.webp b/community_images/influxdb/bitnami/assets/metrics.webp deleted file mode 100644 index eb1b95aaed76ed6a93b7959c43740d16783cca22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23508 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 LOUyn)H8g+#{JS5Z diff --git a/community_images/influxdb/bitnami/dc_coverage.sh b/community_images/influxdb/bitnami/dc_coverage.sh deleted file mode 100755 index f1e9de1475..0000000000 --- a/community_images/influxdb/bitnami/dc_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" diff --git a/community_images/influxdb/bitnami/docker-compose.yml b/community_images/influxdb/bitnami/docker-compose.yml deleted file mode 100644 index 3fed4ad698..0000000000 --- a/community_images/influxdb/bitnami/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -version: '2' -services: - influxdb: - image: ${INFLUXDB_IMAGE_REPOSITORY}:${INFLUXDB_IMAGE_TAG} - cap_add: - - SYS_PTRACE - ports: - - 8086:8086 - - 8088:8088 - environment: - - INFLUXDB_ADMIN_USER_PASSWORD=bitnami123 - - INFLUXDB_ADMIN_USER_TOKEN=admintoken123 - - INFLUXDB_USER=my_user - - INFLUXDB_USER_PASSWORD=my_password - - INFLUXDB_DB=my_database - volumes: - - influxdb_data:/bitnami/influxdb -volumes: - influxdb_data: - driver: local diff --git a/community_images/influxdb/bitnami/docker.env b/community_images/influxdb/bitnami/docker.env deleted file mode 100644 index 6b520ad4b3..0000000000 --- a/community_images/influxdb/bitnami/docker.env +++ /dev/null @@ -1,5 +0,0 @@ -INFLUXDB_ADMIN_USER_PASSWORD="bitnami123" -INFLUXDB_ADMIN_USER_TOKEN="admintoken123" -INFLUXDB_USER="my_user" -INFLUXDB_USER_PASSWORD="my_password" -INFLUXDB_DB="my_database" diff --git a/community_images/influxdb/bitnami/docker_coverage.sh b/community_images/influxdb/bitnami/docker_coverage.sh deleted file mode 100755 index 109008160b..0000000000 --- a/community_images/influxdb/bitnami/docker_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" diff --git a/community_images/influxdb/bitnami/image.yml b/community_images/influxdb/bitnami/image.yml deleted file mode 100644 index 254464a9ea..0000000000 --- a/community_images/influxdb/bitnami/image.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: influxdb -official_name: InfluxDB™ -official_website: https://www.influxdata.com/products/influxdb-overview -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/influxdb -source_image_repo_link: https://hub.docker.com/r/bitnami/influxdb -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/influxdb/README.md -rf_docker_link: rapidfort/influxdb -image_workflow_name: influxdb_bitnami -github_location: influxdb/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Finfluxdb -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install influxdb, just replace repository with RapidFort registry - $ helm install my-influxdb bitnami/influxdb --set image.repository=rapidfort/influxdb -what_is_text: | - InfluxDB is a time series database built from the ground up to handle high write and query loads. InfluxDB is meant to be used as a backing store for any use case involving large amounts of timestamped data, including DevOps monitoring, application metrics, IoT sensor data, and real-time analytics. -disclaimer: | - InfluxDB(TM) is a trademark owned by InfluxData, which is not affiliated with, and does not endorse, this site. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - influxdb: - input_base_tag: "2.7.1-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: influxdb - image_keys: - influxdb: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - influxdb: - repository: "INFLUXDB_IMAGE_REPOSITORY" - tag: "INFLUXDB_IMAGE_TAG" - - type: docker - script: docker_coverage.sh - influxdb: - env_file: docker.env diff --git a/community_images/influxdb/bitnami/k8s_coverage.sh b/community_images/influxdb/bitnami/k8s_coverage.sh deleted file mode 100755 index 001d4f89ed..0000000000 --- a/community_images/influxdb/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") -REPOSITORY=influxdb - -# get pod name -POD_NAME=$(kubectl -n "${NAMESPACE}" get pods -l app.kubernetes.io/name="$REPOSITORY" -o jsonpath="{.items[0].metadata.name}") - -# get influxdb token -INFLUXDB_TOKEN=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath="{.data.admin-user-token}" | base64 --decode) - -# copy tests into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/tests/example.csv "${POD_NAME}":/tmp/example.csv -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/tests/query.flux "${POD_NAME}":/tmp/query.flux - -# write data to db -kubectl -n "${NAMESPACE}" exec -it "${POD_NAME}" -- /bin/bash -c "influx write -t $INFLUXDB_TOKEN -b primary --org-id primary -f /tmp/example.csv" - -# run query on db -kubectl -n "${NAMESPACE}" exec -i "${POD_NAME}" -- influx query -t "$INFLUXDB_TOKEN" --org primary -f /tmp/query.flux diff --git a/community_images/influxdb/bitnami/overrides.yml b/community_images/influxdb/bitnami/overrides.yml deleted file mode 100644 index 1f18399c09..0000000000 --- a/community_images/influxdb/bitnami/overrides.yml +++ /dev/null @@ -1,28 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -influxdb: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -auth: - admin: - username: admin - password: bitnami123 - token: admintoken123 -auth: - user: - username: my_user - password: my_password diff --git a/community_images/influxdb/bitnami/tests/example.csv b/community_images/influxdb/bitnami/tests/example.csv deleted file mode 100644 index 4bb88bedc9..0000000000 --- a/community_images/influxdb/bitnami/tests/example.csv +++ /dev/null @@ -1,8 +0,0 @@ -#datatype measurement,tag,double,dateTime:RFC3339 -m,host,used_percent,time -mem,host1,64.23,2020-01-01T00:00:00Z -mem,host2,72.01,2020-01-01T00:00:00Z -mem,host1,62.61,2020-01-01T00:00:10Z -mem,host2,72.98,2020-01-01T00:00:10Z -mem,host1,63.40,2020-01-01T00:00:20Z -mem,host2,73.77,2020-01-01T00:00:20Z \ No newline at end of file diff --git a/community_images/influxdb/bitnami/tests/query.flux b/community_images/influxdb/bitnami/tests/query.flux deleted file mode 100644 index d1d25ab415..0000000000 --- a/community_images/influxdb/bitnami/tests/query.flux +++ /dev/null @@ -1,2 +0,0 @@ -from(bucket: "primary") - |> range(start: -10y) diff --git a/community_images/kong/official/README.md b/community_images/kong/official/README.md deleted file mode 100644 index d155c2083f..0000000000 --- a/community_images/kong/official/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Kong - -RapidFort’s container optimization process hardened this Kong container. This container is free to use and has no license limitations. - -It is the same as the [The Kong Docker Maintainers Kong][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Kong? - -> Kong or Kong API Gateway is a cloud-native, platform-agnostic, scalable API Gateway distinguished for its high performance and extensibility via plugins. - -By providing functionality for proxying, routing, load balancing, health checking, authentication (and more), Kong serves as the central layer for orchestrating microservices or conventional API traffic with ease. - - -[Overview of Kong](https://konghq.com) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Kong image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Start the Gateway stack using -$ docker-compose up - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [The Kong Docker Maintainers Kong][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [The Kong Docker Maintainers Kong][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/kong][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`3.x.x-ubuntu`, `3.x-ubuntu`, `ubuntu`, (latest/Dockerfile)](https://github.com/Kong/docker-kong/blob/5a2610d900717a4a6c8ee98bc421d0d4599b126f/ubuntu/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=kong&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fkong?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=kong&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fkong?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=kong&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fkong?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=kong&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fkong?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=kong&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fkong?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=kong&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/kong?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/kong?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/kong/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/kong/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/kong -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/kong diff --git a/community_images/kong/official/assets/cve_reduction.webp b/community_images/kong/official/assets/cve_reduction.webp deleted file mode 100644 index e88d6df4c4d5f1957506316973de543a683d6c92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1296 zcmWIYbaUfiWnc(*bqWXzu!!JdU|>)H;)RS1_6!W3&dvc6Oh7IJlLUxlF<@ZG%_}Ji za(7aQh>TJIiNQc(a&ZBSjfG}pVEA^80Z1}1T-L=RPe_O}CAByisOSR_mlOdlXJBAV z0kTEXA?ykeI|;(>0kMlhf}DYB7692A=}7D(BzAd8K?zXJ36T2af+7(64v=k=n^Ow1 z3j{ze=1I*94F=K?KrF*h%n-!j&fo-OQxzb>Gk*~SgT+?{2IdI}v80&{4BJ~77$j~X z#8ehAFz~l9Fl;+tkXV!mb_@%UWJ*h8VEDA0fq^%YfkF5J0|Qqy%%KRqh`7MvR|TLR z8K6J&fiRsRhar_gfx(j@k0F^s56CiNFkmobFaxF-g;T)v@j;AXE~C~WMh6DFT(hYj zOO%zAR4O_?H1Kw&=iQCBSt=$sXRgVt^1pviF#Py?A^!Zl1OHdv_4&(nxJm25l&YV4 zu5ZKh>@$_ssv4aF{ofUtt(`j4{`)CO!J3<|^gk|*YMyn(vAaBAqF9MruexPYhPJ}| zR`0rUx29vS(x36Z3!3o9DXr~^()q1tg}zJ_=0BvgEM=niwEty=tz5z_rz2V&XYH}- z`1@*lot>q@3&}lecv$p9w??h#>HPh2`{Nf|KQS=;`>nVotvkAFNpQ`)o0f_zRzKKs zIx%4h!PX4=<7Y@T1PPtZFQxSZkC?OT(XW~k@Cy4M~k z@dubkxYx{XZLHxuAToQ-;cb)mey_AUp7|-i#eVKJwfKwrY4*EyzQik1TUZO*PJWizEgy6ATd#TjH_w-6 z1vX5HU8m4GWo66(7p_ZR)uMua_xw$HzJ0p0yZe(_{JA?hzJ@H4*&7w#b$CbqyTUov z-d}3o2|ZbuSr9Jv>cctSbxKh&3ftl?%vdR8zv-Uh&L7j&>u$FtK1tr%8>u|^V8gYb z)ZZE#W%te8yUYAqntbvHe&wrTPtrFB@4waf^FqVyHF?peXMCQ~xpnFL%>s^=o9p)N zY5DlBS6WT)!1R!n`cseEDoCCWUR!Lqb>bp}ojady%F*Al^_u&RPfRn<$uc@!f9@dS zzxJAi%1g;lKToOe|LK_JZ#=!^`<03NzjUXpe50Q%Jl%vr)9P)pmd4pv|2DmnJ!@Ow z+{zUu!swb4w?Oeu>%uud@AZWIE&t(M8;s5{u diff --git a/community_images/kong/official/assets/metrics.webp b/community_images/kong/official/assets/metrics.webp deleted file mode 100644 index b695d04f499f15be9bd695e5139e7eecb53bba11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20996 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 SG5{;>)M|hnsXN&kzyJWq;}Dww diff --git a/community_images/kong/official/dc_coverage.sh b/community_images/kong/official/dc_coverage.sh deleted file mode 100755 index ea5b5729dc..0000000000 --- a/community_images/kong/official/dc_coverage.sh +++ /dev/null @@ -1,182 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -# PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -####################### -## SERVICES & ROUTES ## -####################### -# Add a new service -curl -i -s -X POST http://localhost:8001/services \ - --data name=example_service \ - --data url='http://mockbin.org' -# Get services -curl -i -X GET --url http://localhost:8001/services - -# Get example_service -curl -X GET http://localhost:8001/services/example_service - -# Update a service -curl --request PATCH \ - --url localhost:8001/services/example_service \ - --data retries=6 - -# Create a route to the service -curl -i -X POST http://localhost:8001/services/example_service/routes \ - --data 'paths[]=/mock' \ - --data name=example_route -# Get the route -curl -X GET http://localhost:8001/services/example_service/routes/example_route -# Update route -curl --request PATCH \ - --url localhost:8001/services/example_service/routes/example_route \ - --data tags="tutorial" -# List routes -curl http://localhost:8001/routes - -# Access application via the Kong Route on data plane (8000) -curl -X GET http://localhost:8000/mock -# Use Mockbib echo request -curl -X GET http://localhost:8000/mock/requests - -## END SERVICES & ROUTES ## - -################### -## RATE LIMITING ## -################### -# Enable rate limiting plugin -curl -i -X POST http://localhost:8001/plugins \ - --data name=rate-limiting \ - --data config.minute=5 \ - --data config.policy=local - -# Validate rate limiting -for _ in {1..6}; do curl -i localhost:8000/mock/request; echo; sleep 1; done - -# Service level rate limiting -curl -X POST http://localhost:8001/services/example_service/plugins \ - --data "name=rate-limiting" \ - --data config.minute=4 \ - --data config.policy=local -# Route level rate limiting -curl -X POST http://localhost:8001/routes/example_route/plugins \ - --data "name=rate-limiting" \ - --data config.minute=3 \ - --data config.policy=local -# Consumer level rate limiting -curl -X POST http://localhost:8001/consumers/ \ - --data username=ddooley -curl -X POST http://localhost:8001/plugins \ - --data "name=rate-limiting" \ - --data "consumer.username=ddooley" \ - --data "config.second=2" - -for _ in {1..3}; do curl -i http://localhost:8000/mock/request --data "consumer.username=ddooley"; echo; sleep 1; done - -## END RATE LIMITING ## - - -################### -## PROXY CACHING ## -################### -# Enable proxy caching -curl -i -X POST http://localhost:8001/plugins \ - --data "name=proxy-cache" \ - --data "config.request_method=GET" \ - --data "config.response_code=200" \ - --data "config.content_type=application/json; charset=utf-8" \ - --data "config.cache_ttl=30" \ - --data "config.strategy=memory" - -# Get a cache MISS, then a HIT -curl -i -X GET http://localhost:8000/mock/requests -curl -i -X GET http://localhost:8000/mock/requests - -# Service level caching -curl -X POST http://localhost:8001/services/example_service/plugins \ - --data "name=proxy-cache" \ - --data "config.request_method=GET" \ - --data "config.response_code=200" \ - --data "config.content_type=application/json; charset=utf-8" \ - --data "config.cache_ttl=30" \ - --data "config.strategy=memory" - -# Route level caching -curl -X POST http://localhost:8001/routes/example_route/plugins \ - --data "name=proxy-cache" \ - --data "config.request_method=GET" \ - --data "config.response_code=200" \ - --data "config.content_type=application/json; charset=utf-8" \ - --data "config.cache_ttl=30" \ - --data "config.strategy=memory" - -# Consumer level caching -curl -X POST http://localhost:8001/consumers/ \ - --data username=vgupta - -curl -X POST http://localhost:8001/consumers/vgupta/plugins \ - --data "name=proxy-cache" \ - --data "config.request_method=GET" \ - --data "config.response_code=200" \ - --data "config.content_type=application/json; charset=utf-8" \ - --data "config.cache_ttl=30" \ - --data "config.strategy=memory" -curl -i -X GET http://localhost:8000/mock/requests --data "consumer.username=vgupta" -curl -i -X GET http://localhost:8000/mock/requests --data "consumer.username=vgupta" - -## END PROXY CACHING ## - -############## -## KEY AUTH ## -############## -# Key Auth via Consumer -curl -i -X POST http://localhost:8001/consumers/ \ - --data username=ashish -curl -i -X POST http://localhost:8001/consumers/ashish/key-auth \ - --data key=top-secret-key -# Enable key authentication -curl -X POST http://localhost:8001/plugins/ \ - --data "name=key-auth" \ - --data "config.key_names=apikey" -# Send an unauthenticated request -curl -i http://localhost:8000/mock/request -# Send wrong key -curl -i http://localhost:8000/mock/request \ - -H 'apikey:bad-key' -# Send valid key -curl -i http://localhost:8000/mock/request \ - -H 'apikey:top-secret-key' -# Service based key authentication -curl -X POST http://localhost:8001/services/example_service/plugins \ - --data name=key-auth -# Route based key authentication -curl -X POST http://localhost:8001/routes/example_route/plugins \ - --data name=key-auth -## END KEY AUTH ## - -#################### -## LOAD BALANCING ## -#################### -# Create an upstream and targets -curl -X POST http://localhost:8001/upstreams \ - --data name=example_upstream -curl -X POST http://localhost:8001/upstreams/example_upstream/targets \ - --data target='mockbin.org:80' -curl -X POST http://localhost:8001/upstreams/example_upstream/targets \ - --data target='httpbin.org:80' -# Update the service to point to upstream -curl -X PATCH http://localhost:8001/services/example_service \ - --data host='example_upstream' -#Validate by hitting the route -curl -i http://localhost:8000/mock/request \ - -H 'apikey:top-secret-key' -## END LOAD BALANCING ## - diff --git a/community_images/kong/official/docker-compose.yml b/community_images/kong/official/docker-compose.yml deleted file mode 100644 index ec9f58475a..0000000000 --- a/community_images/kong/official/docker-compose.yml +++ /dev/null @@ -1,98 +0,0 @@ -version: "3.7" - - -volumes: - kong_data: {} - -networks: - kong-net: - external: false - - -services: - - ####################################### - # Postgres: The database used by Kong - ####################################### - kong-database: - image: postgres:9.6 - container_name: kong-postgres - restart: on-failure - networks: - - kong-net - volumes: - - kong_data:/var/lib/postgresql/data - environment: - POSTGRES_USER: kong - POSTGRES_PASSWORD: kongpass - POSTGRES_DB: kong - ports: - - "5432:5432" - healthcheck: - test: ["CMD", "pg_isready", "-U", "kong"] - interval: 30s - timeout: 30s - retries: 3 - stdin_open: true - tty: true - - ####################################### - # Kong database migration - ####################################### - kong-migration: - image: ${KONG_IMAGE_REPOSITORY}:${KONG_IMAGE_TAG} - cap_add: - - SYS_PTRACE - - SETUID - - SETGID - command: kong migrations bootstrap - networks: - - kong-net - restart: on-failure - environment: - KONG_DATABASE: postgres - KONG_PG_HOST: kong-database - KONG_PG_DATABASE: kong - KONG_PG_USER: kong - KONG_PG_PASSWORD: kongpass - depends_on: - kong-database: - condition: service_healthy - - - ####################################### - # Kong: The API Gateway - ####################################### - kong: - image: ${KONG_IMAGE_REPOSITORY}:${KONG_IMAGE_TAG} - cap_add: - - SYS_PTRACE - - SETUID - - SETGID - restart: on-failure - networks: - - kong-net - environment: - KONG_DATABASE: postgres - KONG_PG_HOST: kong-database - KONG_PG_DATABASE: kong - KONG_PG_USER: kong - KONG_PG_PASSWORD: kongpass - KONG_PROXY_LISTEN: 0.0.0.0:8000 - KONG_PROXY_LISTEN_SSL: 0.0.0.0:9443 - KONG_ADMIN_LISTEN: 0.0.0.0:8001 - depends_on: - kong-database: - condition: service_healthy - kong-migration: - condition: service_started - healthcheck: - test: ["CMD", "kong", "health"] - interval: 10s - timeout: 10s - retries: 10 - ports: - - "8000:8000" - - "8001:8001" - - "9443:9443" - - "8444:8444" diff --git a/community_images/kong/official/docker_coverage.sh b/community_images/kong/official/docker_coverage.sh deleted file mode 100755 index 87c7ba3798..0000000000 --- a/community_images/kong/official/docker_coverage.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -# NETWORK_NAME=$(jq -r '.network_name' < "$JSON_PARAMS") -# ENVOY_HOST=$(jq -r '.container_details.envoy.ip_address' < "$JSON_PARAMS") diff --git a/community_images/kong/official/image.yml b/community_images/kong/official/image.yml deleted file mode 100644 index 9404534057..0000000000 --- a/community_images/kong/official/image.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: kong -official_name: Kong -official_website: https://konghq.com -source_image_provider: The Kong Docker Maintainers -source_image_repo: docker.io/library/kong -source_image_repo_link: https://hub.docker.com/_/kong -source_image_readme: https://github.com/kong/kong#readme -rf_docker_link: rapidfort/kong -image_workflow_name: kong_official -github_location: kong/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fkong -usage_instructions: | - # Start the Gateway stack using - $ docker-compose up - -what_is_text: | - Kong or Kong API Gateway is a cloud-native, platform-agnostic, scalable API Gateway distinguished for its high performance and extensibility via plugins. - - By providing functionality for proxying, routing, load balancing, health checking, authentication (and more), Kong serves as the central layer for orchestrating microservices or conventional API traffic with ease. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`3.x.x-ubuntu`, `3.x-ubuntu`, `ubuntu`, (latest/Dockerfile)](https://github.com/Kong/docker-kong/blob/5a2610d900717a4a6c8ee98bc421d0d4599b126f/ubuntu/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - kong: - input_base_tag: "3.0.0-ubuntu" -runtimes: - - type: docker_compose - script: dc_coverage.sh - wait_time_sec: 60 - compose_file: docker-compose.yml - image_keys: - kong: - repository: "KONG_IMAGE_REPOSITORY" - tag: "KONG_IMAGE_TAG" - - type: k8s - script: k8s_coverage.sh - helm: - repo: kong - repo_url: https://charts.konghq.com - chart: kong - readiness_check_script: kong_setup.sh - image_keys: - kong: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - diff --git a/community_images/kong/official/k8s_coverage.sh b/community_images/kong/official/k8s_coverage.sh deleted file mode 100755 index 7986538312..0000000000 --- a/community_images/kong/official/k8s_coverage.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for k8s coverage = $JSON" - diff --git a/community_images/kong/official/kong_setup.sh b/community_images/kong/official/kong_setup.sh deleted file mode 100644 index aaa5e8d623..0000000000 --- a/community_images/kong/official/kong_setup.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -set -x -set -e - -NAMESPACE=$1 -RELEASE_NAME=$2 - -kubectl wait deployment "${RELEASE_NAME}"-kong -n "${NAMESPACE}" \ - --for=condition=Available=True --timeout=20m - diff --git a/community_images/kong/official/overrides.yml b/community_images/kong/official/overrides.yml deleted file mode 100644 index 0aea0e3be1..0000000000 --- a/community_images/kong/official/overrides.yml +++ /dev/null @@ -1,17 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/mariadb/bitnami/.rfignore b/community_images/mariadb/bitnami/.rfignore deleted file mode 100644 index 2037ceac0b..0000000000 --- a/community_images/mariadb/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/licenses -opt/bitnami/mariadb/licenses -usr/share/common-licenses diff --git a/community_images/mariadb/bitnami/README.md b/community_images/mariadb/bitnami/README.md deleted file mode 100644 index eff29a4d79..0000000000 --- a/community_images/mariadb/bitnami/README.md +++ /dev/null @@ -1,148 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for MariaDB - -RapidFort’s container optimization process hardened this MariaDB container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami MariaDB][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is MariaDB? - -> MariaDB Server is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, DBS Bank, and ServiceNow. - - -[Overview of MariaDB](https://www.mariadb.com/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened MariaDB image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install mariadb, just replace repository with RapidFort registry -$ helm install my-mariadb bitnami/mariadb --set image.repository=rapidfort/mariadb - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami MariaDB][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami MariaDB][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/mariadb][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`11.1`, `11.1-debian-11`, `11.1.3`, `11.1.3-debian-11-r` (11.1/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/mariadb/11.1/debian-11/Dockerfile) -* [`11.0`, `11.0-debian-11`, `11.0.4`, `11.0.4-debian-11-r` (11.0/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/mariadb/11.0/debian-11/Dockerfile) -* [`10.11`, `10.11-debian-11`, `10.11.6`, `10.11.6-debian-11-r` (10.11/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/mariadb/10.11/debian-11/Dockerfile) -* [`10.10`, `10.10-debian-11`, `10.10.7`, `10.10.7-debian-11-r` (10.10/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/mariadb/10.10/debian-11/Dockerfile) -* [`10.6`, `10.6-debian-11`, `10.6.16`, `10.6.16-debian-11-r` (10.6/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/mariadb/10.6/debian-11/Dockerfile) -* [`10.5`, `10.5-debian-11`, `10.5.23`, `10.5.23-debian-11-r` (10.5/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/mariadb/10.5/debian-11/Dockerfile) -* [`10.4`, `10.4-debian-11`, `10.4.32`, `10.4.32-debian-11-r` (10.4/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/mariadb/10.4/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=mariadb&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/mariadb?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/mariadb?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mariadb/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mariadb/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/mariadb -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/mariadb diff --git a/community_images/mariadb/bitnami/assets/cve_reduction.webp b/community_images/mariadb/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 9b6421a847f22e3346f595a98f7078301baedbda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1766 zcmb`HXH?Ty6u@s70TCKe5X49lK_SYD6J$h&rW8>Gl%;@-AR`zPW>JDd1PzJ~GLqAU02fiK@==?? zhPEz?a!qeJ!7%&2OOo30U<1(Pw0L<{C;xb9)3oJ)d}K%t=C>UJO#I&UrkgQFe$Ir%w#XK| z^wmRF`!^Ze#D&xD5d5qOtP$JU`s^OFn93XN-&w0pTAOMf7jdVFL%f0ZB8~m8Vq;0H z6v>Ch@06ZCKUjMH#-Rw}v#C2o<2E1le2=3W!uc19f)yMJ&0ear!lIK=0xR?lpP1o7 z@sH$G~vx`#C!$s5^z&@d^c9Q z_ZVR%z^u67@$VH*>_fP1sp1{Jes{Za6Rt3&eK;GvB)t{3tTz3!3V2PQbxu$+*O)+k$2Hk zFR#TZrTbn6j#?TTZik9Jp{uh;r&}jf(0x&1xB3DwAZiJF9+|gcf^PNsD@+AVbm&ln z3TY1WNXo^Otm^>|k-yS+DDApMUs|3n->dK7u;H!FvH%Z1?)KWFCk9IFfh5HwPVi%j z7T<}os4cKBd_=1IPQk3#b()5R?rk%9?jQd&%FUqD{#vTg; z<`+$Nby*3v}U9i4*y#Mb0VO zYa=%MvdQabu{J&y>C2-NT6?LM&sX2Q8rQBhNVUxMHP9z@xi#}h<4pT{KQ8&U@Vd?U zvrBW{tYTkaJYmO$)CVuv;`_Ca)u&1OS`rgwOnK;o>HQI#!OW1=D&7jM;~ zRGmT#P)*W7C1Ld`#nP$%=b0+m0}WX7A;VKuVLk5yyq`&Hqz%L>p3Nv#g?}l30q<;K ztS`&+@|~ms(F}MY~_W#lXvd zymhJ1_KARmPV_k))^|{<4Z@W>ic3b{cD0UtfcOfHrMXgE2d|6TL=i0 z>@#m!W_DS8rq1!3OO|FScQ9u%aT_IE=2Ld1Y0c@ek*n3N7OFZEQrhDa@gF>tv87ZE z=ZCKshRqwI`72sF@T|#79>rFv=T5C-B$%jau3=TaD5sqFu8zuOO)0N5^Nn)HGAmm} zg%KV{=AnrtH96jP>Xqj?DY(g;`d>OUY)$Ng`#HqdF&zu-+(sW3G{~RiE;<}q@CoNt hTv#{ZwmuIR_MW+WdyR7&Df5b)xw%tAu0QgT{SBwAk^cYy diff --git a/community_images/mariadb/bitnami/assets/metrics.webp b/community_images/mariadb/bitnami/assets/metrics.webp deleted file mode 100644 index ac002dbb9231a8bd03894370ff97e17baa5e2597..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25744 zcmb@sW0YpG(=YmT_e|TiZF3sawr$(Sv~AlxZQHhO+qR!G|MQ-6-}B+zb-&!~mC7%b z%1R}>*3Pb^6eUDO!;Ap{H4#C1Re4TzXaE2}_%Cxn0r~*|2_YeQOwfN-04U~v=nqB! zz{b|uQBh2gP+dcl@ISo&oeYee?Eg3Zzmy;V!1FTT9|Zsw=>9M5|6eR9V-qK%e?qta zva{pA!2tk}e|iH@&Hf9!{|6iX7moT5c2rgr`X`h34^x``AK38!z;4d=&i`aa|08c? z@Ax0Q`49iHv3B{-SpP}?(HPdmRz>Mwss1nH0-OMf05O2zKm7k|`tS9$D*ymEp8x=` zxc}xErUL*i!2kf}`hW9C^8f&ZAON6w#@@iu;D0Lf;~xbzH3b0fO8@{k4FCXT765?O z`rnHFci;bh7ymDFCH&V1_uoA2{yk;@Yk&!W5Fi1t1sDP7{~=}oBY+9O{?B3vB@F?9 z+B%SI5Nb}S0RW#3Yl;LZaX~(@LfNbzT)3I-%QL2q;E{5In5h&3u@lG+u*GNH*Z!>a zpr+)z{JY|DEvH2GuxF;`&bR&B=+7ol?0xMz^|7TE<80)Tp_1aw?iT+R*x(8JZTEHY z+_8=EZB|xu?t9K}2Auo!^OXa#0Du9a;wuoy^j!l)`FMFp_};nb`8Vs2;eW(;SL|vB2z&*?>@@wW zo<*!br~k;wNxrfJwHWA_-xlnFl;RU-$dFP zb4&XqZ&qTp^rUMZ)N)@VeAzsJVI}|I3%bD}7#+MzTM_C1!~37jUutin1*QRH4e5s0 z1BDt~><|p-D2e)xcLrQ+U$aW3r{mrpc?n;K*R%geoBjdOF8KK_t*icMnd0kdK3^S$ zvxNuk5gM5(1a4;q5+3&fsLnN)-oix0Ob8=R~rvW=AK)5&r5zn}?9oKDG@76fI8wHliORlK9lk zEUu7m*%BNyn| zE;^~MN=pO$^*%fr|D$wdT`<#TfqRQ{dutg27wH6=YQo0zNLeWSpA%ruEiV(5UTvcm zRqk8zFexPt_MYL;+(eoK80LkN-^!0!Ee!JTyxYTT=fTO1uzZgWAB1@M6lREa>c2*t zC0&`raODfAw`o(_|BNtgjW-v?wPq$?C9OGoy2#KZaDPz78%Mc`#4=%TuvuvWI5sZE z<|}1?BT)z#%eY(j33&1Ni28jF%j3?Y&rh-pZ<4hWBvIi+A2)#5n3v^;MKMV}UD(r{`pW(dUUzoQ8=M7P44pG|AuKH_v=xuJNVRZGYKj z_wYv~PI4NxwsZMgjU4v{E55n2GT7|M4RNPV{k$C%6g{#``6DYx@m;VS*B>3udc)JR zFNRKU>SBEg%nQI|?MXX{DD9rOPZ#Lw)~SC~u{L+>PE_Xb9X=m1>hX6UXO=w6YJP_d z+ZhYW83~+gXo++@HM0Y|Z#^)D@!>@Eb~@Or^v)OS1MVBK4)FkfOTk5#f^TnZe%5K? zuhS2rGRO{6;eVq2{W9~oN?E3Q_1hzFgsA;BuooL?8-)*n$h&=D{u`wcEw8K)FIn8U z8_N@9s&?SX>@7gNbOIW)g&`+h0AnVZae0l>*q5B-t5*TRR&|8HcCMxykF*-$G_+-A zbccDW?1y>vh)(VF$lSl?;g9FI3hfWvxTjGhDgL<9S51A67&k@3Fi%!L#K^>Ep25TQ zy8GOB`Re=M@HXK_cLU#>7{qUDAf+Q(Y z*gQk^(GiGGokLL0KYbq3MRDTvdl0Q1Bp|96UK}V^gk<1w!>(ln41^0?Bnja#uz%Tt z4t+k_pN1%#JPJk64a(45%d!-LckuydJ7m3V+mtyZ+)uEl)PP?L1Y;{?0*5)W<1;JjhL~>M-9$vSqbOXi=;cDvYep~RY zsJ|mnO^jD_u8bzP5-hb9WSWZu#|SWq67eyrdu&)=wF(uGn8W}FrgkLiYlKzVcQvpb z%G(B9Jyob(C1dsJ`4Thb%N=({^r8+igoelSJ5U7YR@Sq3ap1g$+l7nyP5ad4%K5G* zbrrsP{vf}b^-<7*iTJz(|;AVqrpDR>a&*}z1-kvg@|XQ zD6S9vE#u6l=;ZcXlvFo}Dt-m`1c&8HXVh-x*6kRf_d6-OZY0QCeYyrkXbIkf)4`{D zb-@sw5rFI9%;~eJQ>XIQ)0Jw2{FyEo#4UVGK;lNGaWtDi;ugKe?^0pJKU`&1RCKe; z%Rt{~u5Ind-a7VK5MSsQ_>P35qAq?2wYD?(@jhPv1X(ewa{0!)YatjPq_bTK{(KTcM|&@#D~490&jRf(6nRgyy=aU|WI&x9j7 ztBThGl8@iTdtu%;9r0F(Gg^^r$X({U9tPuD<|9rpd>;FB@nUvq{=4C~yiuen-d85X zb@eFcb<21zq>+~X{&XRqr{Tz4JcDbdkF55(tzR*fV1P{tSc;543CETXoJ32b$IU5{ zRZ@;!hho5^?Bs8w?de$!ragEBe>hD6aj#jvpgI}Ax0{bS5|x;xmNgY+@IJY|&novF zA1QuYpFY}?`>8yO;2umGReL1pwO7~)uDxz2rZAORV(8+wJu14hbsGr4zRA(^C4{BX zKVqV~VFIr5lLOe6YamQUE)E%J>VR)#$uL3W`BL_c>kmNJx4_G8XSBb6hN)ob8dNqo zqcpGn*&wrXP%(V!`W;=OW;W6nA0x)v1D>6OfQM6rftvMMk9mh(hG^&EPuqO#M_95s zHR@)iZ^l*i;&(>Zth0n~0K7GVd2A-?fr+w<=9I)cW@?&R5@G>u*Z6Qv@}( z(tMGu$kAetApb}c8J+X%p0U$&FxZ?{YN@+a1js|*1oPEAPO@OaQ{%Hpk~S1!j_%3P zH+l%?`77$&HT_aj)TY+*<$&MXLbwM{(31k*dLDnp9~ZKX%ALqFQ&nv}1=+wU zSzfSKmp>b5__NUIOph@Z_xJQ&gX0frq<5Rfa)kDi3Ex`ql~-%MhZro%_Trv} zrNJLlWnXfz2)FxYC)#rt)HMBQu zR67~-Lk@hb$?VE?o?MgH8PS9+V_taksDqO?`Cg!uozW%%BGpOvQyEojm?RhBD^&Xe zfdsgO-066SB;#k23xx|p2VMLNi3D$(7S6vdjmF3u@f8y*%eSF{5A_Rp3S~Ef(ql1D6y0W=XLQkP0Xq?2DXZNpD~NlcjeFT+1| ztD+xSgK)ts_;IMF$=4kki1g?_qYLmHpAcNf>vC z_^Is1wKRo4KNes;nUN%&zUs~*Et4Nb7w=+5{3=KV}!LHtoU+3xmc-HV%l(Euc6J ze<$_{%Pkd7@IY$afr*Gn;1Tt{sVrpuT5FF=#;nq~n2e6P8P=>`bQMKf@*9~`(} z!uo_$2H^iMXAtL#u9jjbQ_AXwJ>-wis(Vr#$f0y}3@xoBRl;F>yZM?Li5f4Yfl4X{ zIXn;pP8R@xJOPcO(UFlEMHpL!a1o{d`CigAG&GBu>3HY0#1jH*oP1yBza{lv20ff*N;wtn6 zSnS$n6O>1S*^N3(UgB?7MzxeER#?>(H8CEN8rXg@Yb?RW<|SCNPKvH?(!Z#^;O&Hd zA1|`a4OF|>pWGFeXxsRJxx!xF zqSI)$OiJq<)qkf3x*w-AU5X-nei%kMEJXuR3Nc0l!XZBLz(HgnaTN=iS8JwjA#X0j z-+0s>{*KU>hl!~-LrKf3CbaeRs}1iX3tFH zOFGy2W>V^^z}ERpC|bHx@}#Y$D?cDY3eU0c;@ z4x1hUrk^EGbeFwni7JibVnH_X=7b)B=o?JiF<`3i{Qv|`YB8H{`BRX2lgXJy^gpgI9G=9#-@Qp>zHXYq~usm z(?eQ7E`jm|+R&$O(&Sy4;LP+zdZWZmL6WXjc?=3tSGI*)u%Ks<8jTuP&-rpl>SE}WG!lgW^ee+%8+c{>#o)Du>?7QwZaA@V*UG91G3B@7PQ z7%Bpg*6h|~3K5#aCf>Id;&A?$jX1c!&<#epDi({m3YL{lH@Iiec0pa}^l8+CJM{GJ zN^#AqTet-$l+o(&@;R)CBYI+P_9V)LaZvi=mn)l!YPdC)+UtXX*=gc#P89VY&7HRF z=x482M}~Ca+em+h+Bt1cBdc6b2Ba)Grlc*R*CMY16AuugB$FEgERp0EF%ru#t%x|w zBZ@?3|063$D=zX3FD!ynZi3@NW2(%AA0Zes2v(=}kfmR~AhKuolaJv>ICz>n>^{eXYm8=`+2crt^tvy^x=bI#!>j=aQ7s zhK&a&`3eafL6cjS2G$AdJ)X2xnBao!E&7?|Am$!*0h( zMwDffwdG0+F-2MZ=ujs+pvr^y!b<_>Br|}wDh|J}_&C8y|1s!>^|_?$o}I^%LDVtSnd$qsb&-9B+1A`m$a)fh2C4 zKJR=%$kqRq%tn_5TsUoNO0Taceoy|lfX85$|J`6s(^PblZ8}2tvDv>hMGlU0ZTtA_ zH+$lK|NFL?y|d5NjMsh~*}kBJ$(k)=lQ1gl=8RYkNqZUEY{Q*I*abxd^WRnJJcre_ z8*_*=&i3J|UNP(1(PiV4(B0ulYJ(s3xC>MGbje2H=jp3Ma(qmU=vpISn7txgez&|r z1!G7YmdpfKU4;$VER&xKRq2MAO32Cki%)dPnNOhwWu9c%NR}ihb*LsvQ9~Qwsfb7w1?Z_*yak8R?ypo+;*x7lGbu?9Uqvg@b1P z_u45f|K9_c54Vx|wL!DdX?LTrQi__6dH|w>yqh7-C;BVu5`IxAhpKX(lO?qrO?2nL zqYQ;D#f&!~>2-c8U}V_Yqi2xe_xkqV?MWx~EZ;P$G`Smr=L3L5M0kMmZQ9QICb)0S z@S{`1F~IwRQmSY-?2x+!@A4hYDDOS5w@(G0)2T$xFR)#Tjz+loTeqdo+Tpvn8IGlD z)95L6MJikjI@_XoofvRD+qyfq&=T?RD-aNWmg5=5EaY<2p$XgBNK3j^9o<9?wKIyA zpBA-VbeAs`FeWkI1j@kU-Fo2YO-T8rFdQtCU3eSD|wu404#)+OyInL*X;5Bz zD7teriw(@hM}VPsWmN=`_-`BIj4+>$b8)7@E3g%EwuhT$*16!w#}F-0`BA{x8)=-~ z_wslbCj2$aBSay^RVx+4MT7ycN+Ei8-^DnacjN>tj8k$|oafbSo*;wL(Z7=Mk zA$rE#gDICy?+Hzl?i|`guhTWuO%@`=49UGMIr~%PbMJL1cdHoAx8_ni_`LBjY>ZY> zV?Q|B4Hh`FJ&u_ugw{H9xewp#P<5Msryq(;e~?`As`O0;(!8G*xhIPeDNTk_-0qs$ z@&@s9>nU4P{jY;On4O8Bn^eC%ct`1j^6Y0mY7rDG^ay)dKRgmUmVRQ4;j92VoYNO7 z#kste1kuG$w}5OPoW2Ang)Ur7X<5dvc(%Va#*1%Gg0l|eKC{EKOAKsr38j@Js>dRM zFtNsFv8H;nywitKcASiv_|4n;vxO)l1&vMIQVyj|wjP-&DEzTy(K4VA7P|b~^UpI7 z&iC)J_bpV}DErN$)d@g{xaGz_i!B41Td*1q9srzCN+O$qs&76X+NvGBuXz9;3C!zA zxVL_JW9P8Q#QhGwK4~y8H1K}vn26&Tqn5&DZYe4JPfTKGPgO0cjg4eukHFr<%jbZC zj1dBKlCdE|ENxaK0c@4K_4L}*Mpq(gM|MF%=wS?EV{%B}M=BhYXSNaLbYE#iEKFgS zCF;opGy7zSDU|SiP7nzpWmO0N0;ex1dwiT8TMw?T=xX65neLqX?;$HR5q~F)=%1{) z7G7P#n4bX2`d$7WBYi@PNs+Bm6R5NIv z;o3ywj|_@m;c?t9Hg(jv>_VXq+HOemqyd?&Q*9fZjQ^tY8glI2YJ-M^g#0;LT8Omn zj@_S)8?cXWq&p`&YtE%yXER55j%?$zWReLVZ7XI<@m@zqTOcHMjSfpst!pqu!1q_G zr@4D=M3~&dC5H(iaWY^W8|x%Kk3!DR3hA(NhXA1;A;0FVAks`U#A1G0>5;&(@*{e~ zs8Tc-`V0Kej+m^xG1Hmd3C2_v+8<_Pj>kcTy*8?sf2UON*ZuK&NR_aYNHnw1OP(

fM{Ybw*tYZpGbFcE zWht5)*4@i7aiS1UwwP{+V^a$QLbwx)FB8Lq)I0?<_mx-hXJ_+IJWH-Ra;R%XE5xHb zdR_+Fy&>{?hoHCOigsT4dQv-PX*gG094|qbf~*e(FEm1*IiAHEgTPW(y@Yk{R*Jdd zV0AC0_5P0o)nDg$+wTuS5O{kZ`V?;p6Bd%~Ncaw&str+8-AOQX8|PNw%AzdJs?qL| zRq$p#SL@)e0Z?e0zIat?$!OX-i4a#JAXRkNqC;aRqcZ3eGndgqG}S3Ayn>}sVb=S5 z@pd?!dNGA`N^G&chva?VuDuYOXEm%R)Evj!AD9;2v}z2~sCmXtxEa4{Tf)_^KjFohSo)Ug+V;;|GTu|UqwcG`^OPK8 z%HR2A*9-QD-DC)MQJ|V0#J@Nt%T(?tzL9UjlK4dIi&uZJk^DoVSpG=$*!*p|ssgLs@WkbJ<%ClQ z@gf9h#fYp^P+!WkIkQo+xBHOL?%R0$ZX^GX6CB}KjrBqC2!cRy^k6550yq4>ei6<| zHc=UjB$3(+aQv1IRt|FWR=P$5$OyS~^Va70jBn0->OVv6l(dYCIFT$EA=b<=_yawC zdC?m;lk$#gI|-Y|Ucs(0 zEe_i5mh%h2FznJPzz6wD2DSM|uJ+?mQLeF>TFO|?q!a4DlDx#`{5+Xxrb^5Vd}Qb; z&E~7T-XFE;^#;Kl))gl`->_g8Z{7?d+E8)PI2 z$R^+0?o68+UfeZGTxgwgK-k60%Z_@iVuEW~J&ZqP%!Y{H_3K5&t*#v#)D0bbMd$z^ zTtSb7B^$v!g3O`hJ(>wa1*>v$c)^#gNA+CsM%Op}UFN(d9fR=R(qr7V3xA;>*WhOT z_GS*;OyM32C{iVO$I)Pp8Q?a8DRaM&qm*zY{vt&TknJ%B_G@q;k=-RI1st)+`y5Z3 zPp|3Aipd^AYL;m%z3xY0oixer0K#O|Y@SJZenUgN;5gJIXtosViBP5|RQ(W>?^U_YbOBZoNgEU{ z-Os_7KZ#hdGRvWxZ_Dn3szmlY9sCX~D0LXspA+TyF>Y8KTY8UDdP6OH0Y712`va~Y z6QKI34KP5LA?3Mc*AZj_vQKB>Hyfrlwj5NX6@&LInL~U}4|nh7kKnqTf{FWge~DA6W{2CGa51ll?5y`tAuP zjnBG64qt{4KL<|EZxIo@27YQ$+8Oa4sqs6MM^Xm3YX;bfr7$xEAYAy+aLw zz`Z<53I8qk?>^A~&ZxZmfNM3R+$@Nd)}$YO(FIg^!-3&#sp&LAuE??SI!r;rL_Uw-I+$Fc&ub;CrYtSQnQ8{Y?G6NmQ&Jt#Ji?on)|Hrv1yqMTsKD* zocj%WzhUdXb?95Tf7}r~K8UG^?kGHuH9xHe_ZfRwvZHCim(OR_;wRUGz~U8?qk>`@Fl4Tuez30DMNQBT@MbH%dp+|K>9;c~n zV{uv?7kdr5kUuwiQ3(T>7O8ENiPuw4`kAo$Rz3RPQTgYI0qLwB+3A*QZ@97-mlFz- zHT_JZm#YCWM~d}CSAn6tN->JcRsr&;d=#n{QNC2 zEooSb%287|xUe?urSY~kY+QkGa5O^JTBUlEb3JLz`|cXGu%o$9)`NQ|d#M;rw;3CQ)0ehSe8o|)#jR7uHeLDq+hq{bO*jbH~ZSh!0 z;mCkw<>&h*gQIlo>Z%=t20@t52@ZVM`7v905R>yuq!vht zsQ=a1vR}Rv3>-lnSTVtO95&j2f%uEXdF*G|Qgb2Z?5{Bv$B-zKvY)4_&z0KcUt>;n ze4uzWt4iSNV=TO2B{TcX_?t^bU#TM%miDi9s>Qg_4PdR(M^IdCn?5e+{DgXP^ zmg60Q--Sg%VHK8qKt+0mCYfPA4W6^Cbte4B+Pp5C1i%kc4pin?-jlqC9yF! zwABB!oaUfe5%8}Th0^1Fmz)g>jrvfamp%XzZC zILbVpHKwRrUuUsRiP!JUc>KME8~gnJ=JPT_Om=Z-EegebtmZSi#3JT$ozhD_8E(7n zLsDe;6t7>aH}O(FWj}#hduaIKBBNAo66bX3>{<$$sYAol`TJQ0QCvP*lzsO?H0fCR zkMl;khzU3fSdWLxUI3FI|L3!gAkiv_lQDidsx;#D_ey=1z{%u}n&xZk0dc9vvcq4d z8@AOLvJt|MjxN_*5erLoFcxpAy#iJXX6e@0C?%-m^q)E!SJ`XYT+Y?0yg_+P3ckvURwtaW4{-Y!0*+!@lp|z7o>-E)4Z!K1nkuJ+ zO_o>%UVgN83*cSN{FE4iZc?=c;4r5p!AAuVQo$Zvsx!6MR(p&)ZWB7OT?0P}$9O~7 z(g~g&2GYJ9xh=Z}3D?sV>uq zhxR>@oA$9LC=uZZ@G;)Uk4pD6i_Nj)eX{>G&r!jx_l#uNm0fT;<$Dl!JC((aRvl4% ze-co%G_E_WMGwP_7C9hrvhqx31?M^nF zFM)hCfJ=@Q5L|lVl4rXi*JNiO{jLh`FfhHQNp4v-Wor{pJyf^Bw}qO5Zz>Ig3fp5S zF7xS6%QPd5;EQ7stUyk+5<$-LJ&^e9OJdm=GR1g>2GKt*TWz^TVlIr4xKRk#;0qU@ z@xls`CHH$9k+fX9>U;99!j}J^o*?kEznV}pQ8!iYu;y9MD>JUHRA^5M)VgN%L9Rcu zvOwo<98{A;wUBVLL|+2XO`czG)1@zI2|dv!Smmmi$l^EVAL+)lwH@{$z#U=J@JpPz z)Dv3Nmg=p*8aEit1iB9=7JmJC@VKe)KaTIxn7_w8MRO&MCU_@$CwE|@;Zyk7X97=` z)XNZJo?t8JGW%qC-AAHf$Oh?`gpY==yLL^0Cs^M@G8Nc-D}Q+QHp)#DJK9Yf!aC={ zpbcu{O_=%JVpWkaCC)M`=oFeczq=WZb?XzuMM6}bAdn?qI=aMNF=3mdU8zfNBRB9w zg@wj1zZ>l=7yX8#QZ>%X`T1FlaMY|Sv#B15#gY7iD;5?LXO1{nV0(%-JZ}w6VWK|> zGXBKt)3oixEl?}#IuWjESZ=$Qwm&4%Jls{lI?py{|L2qOjx(wH_pmFd+;X$|!pa+g zx{Zi5yc8@OiYv`^#7XP3;qUR2bxal&V@V?Hx5f!A=-aK{6!jddQ10Wwe$;XHL6oht zI#~qcy}~mwd1YOqSC1DAbb@wAf4n#RZnaL0X;m4K0&^C9k9nsJ*!SkHF61>*1*X^|b=g)GYIY#Pa zyTdAgmOGnXF;?5P=wkO<8`5bUs}-l-7<^K&&fwBQ6Qo1}Zo`+y=HpzMiDn3z*&x)* zRBwYIMRAyORzZ)J%m*mu69|g%V5cG)=JCbbK(~CuR z_BHOdc-c=FWo)o<8?C@i75jL_dXw0*TRat-{60OA=`Tl`P2`c-=V!_qiue-C(i^N$ zs8$PSA?Sm!i+WLKkSh56cp5`GhwepeA;76OlQJyfOt)pI86wAy$*O)*agHa1Lg8Qa zZD!epuHNOen$$eqR)}eL5dMm*gctCy^i6{5NWHjYoqOtelIGgB@mz|V3UXsU`1J7g z*z>dkx7eJGCX(x{!#61%=lT*{T6*|7ra8mGn$ra7LlJI{hW0N1N;|pHV!eMqkmO&u z>Ruh&wToxA1wM5JGWd&R%OKb(m++l5bTUZjntFT+922`!0IJIr9=F^i+370%hb1%j-d+QDYacP!Y zn<^1doJMH1z?>9Nr!O<4koj&;?wxy8TVg=3K4*cKp|tUHAKMpX3z@@jtI^H^oO1r% zD6)OqyekY0fhNK4>a9ROwA>WM>r<5iYoo(v^@4Rx%x;yd zl~|5^IkOHWU~3+Zg>821ZYt+sKK#TF5kD(!w`sUk*m6F7%pD~KUou#^*ovJw11w{QbcLY9UUBmA>4oKlLwS9^#bZAh{ou+in3o z(ErZNf0F<a((^BY=Et@>kq4#2?%~#Cp`f6xnd-O^pB=Y5kuX#@rD(*h$XJiYd|S zh%xpBW#k!~E4y>Jjxn1M$j$6F=>8dgvUJu&z_j~5DjIXKJuFz$%6fij+youoG-Le> zQMT1SW}m{aP$I zIt>oAIQV`snm_EKLuK9@2`0e8kByb&79aAiF21ihQJzqw7vx0D=Ip_ZJ7%%7)}35# z0=$Gv3pvox7Lt9$a9ZsOYTls@tFe(HkxFRQ0g_JRj5Ctf80HMe0_yJNm5LrC!Oj-! z+xF+NNcH#j?FU7!qSE+T`l7-F!U_HgoICkF$0XFF_+FeDbBdqd&QDs@pq*niRt%Tf z!48snI`Ss8fF*0z7GDX&EoXx1ZF6v)XF!UkU@h8}=uI4=AK=f3Gwfj9HjAoJpShc- zQo0|kr$9KNj6_*dCD|EWSXAv1ga^?fc-RU$O=lC`XrWYRi%5@9K^x#x6zVYQ9`1LT zTE+D+#LQjZBw=0Z3;DmJO1C^ap$y^}x;+0A77u9+)vsI$+h6enc|vzGozkfa=UNe1 zx5Puz7eb3EZ(|>mV2!;kWB_sbL@6*yzT4&bM>2b6p`_XD|n9S`DnEbq5CG(E?BsG4gqT>JB3k}zRH6Xx)`!}H)^<-y2r{iN{2gzneRtBKP4vS*v8tpYV6A7-Pux z?+0Rl;l|_{SaR&~2YkmmD;1Fv*gVY%1js1moZAq@69rTr?>Ul8z<3VtBN=!1dGh&f z&0t;_+V=U#T^T3IG#twD`)D00*3=(EZJe%_7l?&p1@ZEmuRyhmFV|~hKzXlP5m?oKbZ2>51 z@Q(s8DbNYj9(H+9sn@WLF^VF!{cvc%rv*|ey(vN^yWa3tmytYDfBa14n5IvX^&FHxk-E5wThQE&s zkyullN`;Ew<-904QHg@U+mFlmZ7u_x>EaAtqqH`u+fO>11{#iN8nevOQMHJ+(Mb_G zd5&V5x{#QYj2+h&yKP=?F@4+RdjD+3HB>~>03}E(e~e^|Ak=ZhoDG+rR4VL$VXyCc zAqN{&|58Bmez4GM9)@VEmOX;u9!k_8@q=U}Ecak(26S5@MU*F@2*8Ff-lzsQT zyTjBh6&{y19SjOjO(V&u@)sJmEoB;mF?<$H z89736jx9E{$!`RI%2VFl*NYhrY+(8fys2Rb$CpS$=Y4X@X3O%eLre5yK?9Uv;`rIm z%Hq8C#wTQzk$%UR-)E+UgoF97%Hhi}H4WdxkLMchjz!JD-qa6p9Jbh{Jb< z-qA0Oo2ng&QEH|=ZnI2S6*|g(iS{$U2B-aw$520svMB044(5DRUHrvJlTRvc1N<_j zQ{aa|hd0Ig>d!PWWmiq!s#_`Cp4hYC&Bm9WqMeqK#bhmRRykL(nialw`V6CmGE*$0 zCZUDCPTG)OBJ7Eu^lpXrV(eU1cL;>#p1lj?*+ec@o};P=qxd|wqWnEB%ICQoJb@09 zs@C_n4xoHAt#p$q1$~1878;jK`+wFr*21&UA>YPDH9MLGqg58=TsGJBG|b;V5s|OT z-c5t5Ws+4oA;yh#Dys~uIZxFZQ!AI!xn~bgOsu_c!jV&5Nwl6`aoV90g+(vL>%Tz? z<6h`q&2TONdEb&4Tq+CM45Tn`G86udR6d_j7U@6YWz#`T?5z0(&Hi$8@MZEsS&-Y* z3&OJIJU7!c>LibXBpTv}m&k4g_nSp7|!Xj}6+ra1#{F3J-f)gI!}xS8N?%Yfj*8xZ8DnA939Bt$<;{ zhg8wdnElr8Om9^u?V0z~ENO+34K$$XdX?-~qc@+I*_REQu+naDAKv(bqJXWUx zm1HNIet9H@od$0U5`pc0VPm0|G}=MX4goLMz}gA+gg>RrH5> zZEhIrUh1*LFT}awZZj@3bNV`kF((>b>`On;^ekoK00!6>c_-sXM84E!e6$co_-S|m zyBScV7JtR&p;y{0e=`1?dx~prT^ht#2Ej1Z95aUeSd+Nj3z>ZYTd$=MUMV6rglj~T zKTMA7ZV}`T3C-PLz2woEg$K z9v)$xC^<_}7*6xxWLR=#Lo(H2PPI)nti~P*B}0U#X|sN_ABFVp)L+ApNa@@;U(GjV zl-D~tu`vC@Av3EAF{-=1(w101Q9p?+I{<{|*7=XRl5p77ceu53dzC&g!KtI zrII1=Jzpr5%?}^J$W~R)ETG^trF>b~a4{3E6+-tMa=1T-@7~o}=$~}D>}uAN!XxC) zvodN1D{+3@QBuY*G)A^5|g)36q<~pb0fn|cQjZp4*!e>S~IUad68zez;C$RwY75B zW``js!j?Q%An>@J(QV^7aVUEf375v3_u(CoZ9aO1a^=if8j0>~nA zg$yXYq0Ji^Iq5fa`~W5#Ekdo(7Ey7t&#Qd`D4<%MJ=->Vpu8YJ@n>=33q|X&hFhjv zv7PE_czvLb*CG79KW-mcJBE^GO3@Ql-)vea!l>ww3-P3V)p7>MlYU+(FX+I?3gBLZ z#kN+KWMT}5G?9sMnJnjc-Uh+RmNumEPuV~kXN}_~HAY}_gX(W~dI8LHDG&2R85WdN z>527ah}|muqBqO1+ifK44C3CK-A9SkW(Ks3zoy+9viJR2_Tnywz}}gN2}~VL2pj9; zFFR!_PfZe{5zQq&G_ZvOG;b$HnlW4)> z*vU)6dEg8Y^-ymb>^UXRu4336SmtYTYq0){X=PH^$L{<3X*oAodDa@;dGO5A5MOn~ zu(B+b;#1jXmBE`JnnGgQ7qe!v>V;rd_8?s?>~bvI@dej!NJ!(V8k!^QkbKK^#Q3 zFP}EpGN|ruBfm>-J5c|j^BmkU^iH_KM?eM&?9N^DaQN}x(Li>V!pJD7B`8PzSu0`{ zH?sCQ+>a89h%>oa4>!_AQVZ5aA2fi9y@9ZtWkNVk|Dk^bPz+{WWiW^RzQ73LUb&Vx zX~iH>=#FbbA#8T*x5Q7mX|88?>-fDt>y;!OBl zuwuE3JbHxJw$;0WTry(L7aPmYNypMjaeSm7^|>}w%c3?_&@DF55Jbp#4+27=SOIB@ zQL`_!a70)QT#MnkV}c`eDqK?oT)F=2?P%7i_}pAK;qAU6*jaMoobh;bfB2CHoYSx@ zAHeLwuach*u)U>w(j2M;Q*TLr4tHdjY%MWe*^auPsm6rv2rx?vzOEds1Vpi9?n+?B zy;KkKG_U<;fN7`_r^E7^PhfTb61ghMGz7lO5WF4{*=qj_|BnuEgHZ?#8RSrC@i}_^ zO4YpN>Ekx&7H*Cs)@Tw*y-DHTXrdO-^9_jt)Um7Kk8FZoiYhxi$>%|;W`{8>t#TWq z5=LMr5K#`s#9GXY>GAf@BPM*c>2ZoFqA~lKdY5x*|p0G$BAFXb4z9 zuZ(aYCjd*iIUQT8*!|NCj`LULDjozSUJdUIKXTp^1sJOrC_=BZRjf3$TRZ8R*E$se z33JN!g^ntcp|K6dj2~M;bE4k8^d9uD%rcCGsguvFU6~hfVxo0r_+rx=N~(5 zVo1@B`!2xB4x~`;T6Lll3bc%yr$QTgh_y5;n@dS&DFfkQgi)hw0rMp7wDB8lWaQXc zanBN`NYL`knXrvi2erCd#uhy=X}Mhz{D%$XUYA-LYGs=L@^Z=~)^M5dcu z!c}QX{_LD;>$9T(#tjsyRgK3{S9tT`0thVPoSV2NNpA^%VYSb;u5TbGK8(FVxcIIu3`*(FQ#5j zo9CYjZ|l(E@z?}whZIrlKS~VO+75K$u+OuxFpFTLQd<)uV*cQU2H{=+@ha<8j^NBT zWCc^4d@a5jR}_^*kdW^_fWW5EKmZ~~Qm9a~YV?r8jF_8%RKO-Ope>-h#M&b+NjZIR zMdZE^>euJlrb=`Y+l-m>$t?!L4Vn_%Hrg*Y%J86``3+hAeRQ31R}vrozoZ*0pQ8@> z>Q%wl^A?RB156mN-6`-S*bCi{vC0=+OQ}3wnt<{8AnnXx8nAIv1GLO^Lsb0pF9uC$m3Pgu$S7Qi06UdekrpK{ zDOgm{>d&?tN7^AC}hPWh;P4!O}s+ z2naqiuM#3G;wS4KN#)bZ(3vReG*AJ^o$r82hFk*hO3&`_z9j6whMgl=7e96D*~33c z<)foww=Oo`WNY~z-yE1`&&=BXpn$mL4H%JOPxc31O(Vm8aRXC>AB@1>FG|_@8z@ev zL^a5HwWfkHyA$ObzMEVsV}s|@cA#f-%+x_6L$lAny5`WKAsX0asg(^slphHJ3+olN z#I`aWIIkTAOlzS95DqQZ*8)%Ykg3Dq@K`^W+DF>!Ld;Z<9;PWB!+|$ai^lE%;I3JU z!l7O=D`Q8lCy@C3m)5c8dmD$H_n94*D&z|YIo9xy={-6i?eu@PTnmUNjY-RvQPz+R zLPAx9Q_U6@nQK0vd-&8ja*) zMe}KKcK*hWM5$!vxYG^cyw2qt8V==&JFg+52&IQL@q?EO(DZ_>MA(;A&x_uV?;=Ta z)K{IebpIfg=i!?aF^TAZVeVG^mjGGKxH%1aFTy1ZOaP2nrN9}lALz}zp;xZ{VNR+X zg(eOa&dFniUBZe0@OTwRtwCPDl3H@rO50K==AV|V8G%9LK2C&#@wT;wp_{qe~j1~QzGMBzihnuPJ8>J^w#WY;4G($IFS9ZGmswRMq@|+YiwaO zm{?uk$SpILM)?><8L*eNfwXP)^k1_28E-x^u8r51Pw;l47UZ|vqlZs@7}nV6q9@>- zsv?@E9}!3!0+H3c7y>qQp?wl-zb|y`qwaFoFq_17$xTtFUTZv6F0)g=IdSLjOR6WP z&^lvg(HdgtU(x1Xmfxtt=TF(}0vz!{yq}U6)X{$yw%)*azgTVm4Vo%n>vJ4H#+bP+fJ)Z#EKL_l46v7MbRCoXgIsWcjmV?zoDSR?0 zUrh|VR}g>UR&AWS=}74MKCl}y@kSiPnc>GTB;pbD@3_XGq`L~sM0U`Ss^R;O{BF8- zGCMwAI7?RyQt?#V z2@c;zUXMu)U)q}eA>Lo&2827dVx?Jt4z>U(jT&T$-P-o{Z1fvV4cLao#(~nuRlpvw zpPB1e1M;|OPzi2Ul%b2&72+BwlqV|i&#R3@I16b=x%8SAQOa|0CcuL1(PGVNyN2m^ zNH3xzN!?H~7MWE~ZD3=mHkym?wcPJRXtcI}`dursn)k#|!f}u1<9Na?@b>vCo~7#m zB6gSwVFqYamuGFWzoG-xIpRJMjg}Ls{=ABvD+CNfXA9r#^P7T;s#zi}2oOs*_dg;m zN?uZ_x9gn@p-WaituU)og8y@7gtra0i@w052jr5qycHKHvaDIiqU|)w8lCSgd;-% z3#S}UH$z|a+H^!qylw&6@aT_CPRrX2)EAE-2l(>~SRzHXKFRiSykKU2bGUgto{E?l z^gwf*?vbTRL}3}CEnJ${w1_u+g$slZ&rYnLiQU;dJBsw{2MNLxB-SFe>E8aQto=%^!^oO+5Uymr@lY)(h+H_Ir}n1{`10wOE-glti|4~yzF-^Me>hmq?*`SVRn4+g_%u&=t`du zOcanF^ODOyvn3S`#jnDo$W+`8288nbkpUE^l;%)K zN5C<%Ca8>q%RGJwegg{ME{SUWa8h=%T*Cpg*NZ(RoQPSF=r!wkC^=ZU?GM1*&j5S+ z$4`oIM?u*`M1)v`dy&|$SQTVPtL4#r1i`5rs2xmi_idajgRte-^9^GW2hpv6ab&80gt_VOX`+08rYAu4QTOt+Y;tyG4{UY92I}#)Lae~#4f&7fwOROoX0gWv^ z4HNOxXt4N3pbV?_dtvky5SCE@bZ5^5Dk~{RbK`BK=W=xqG|A1SU@eBlqI9&v@yDmY zNIQ1ExJFI`b0gWF%7=}&6Z>dXX7ULs42fKTT6HuX7&;Y*pcN@ z27&(s01wDXEFEBJ)Y7Ph7zJF-Vr$z)8Xb^oj#nF(ySfaEJf3+VVyS2y;Sh+6T1QOV zRh&=cCgCR|>#yPLQ35CvjM8*WF;Y4wUp#Bqu;$dyktjbY;FX>$0JfDKC=*(fEZ%Wy4)OayiaOv3_)PK5NiJ2=HM5D#*@Q`j@YGA7kejPVH0x^ic|uwtF! zsZf9bB;k!xEdy=FL0&*k&+?nrUk0+3c;ge%a)@kzt-}13MvECq)JdZ`X#pxM?uSEl zp_v)}9iy1TwYEwf*U7Ra2tQ%yuo|^Rzp-$xD&peV_>+^sGq!VNyw2nA{0bG^h-Z5Z zxfWV1?^Js#s%SL+vx1jB2G?3pRE@-$xO1Gv(ojjHc-b_XVu?E;?Y)G^Wn=rkyOX}b zdQQdkhW9qJ&uWd*YRy8!PSq$s2PhmI+$_Lp6pl$xe_wc+zeIr zVmkoTt`8b+2pFILq{8<*?)pA1?MLmr)hV*cN`YYcncgYAhp@i*aWq|Myn_Ml-ZxPi z@r11Nh2_OOtHbO((#F^kp_y$s1wkO2U$UY%gG3gf03K&U3V$nf`b=O{TTr=OF<=-dRh`;jy%{3)7j+ zq<%dy4d4LoWw;i?X+Dwd#Qe*Hd*7uNX?tI9^;^Jy_sxNuF`9f}*H`K9@ObGL@L4EF(GWk|oy zX!Uvc-{6xkuJFJS(?-Cz{Tl$ClHecDW_*tQ$I z_ecOKo4jA;2-SCXJM@MuLYny|;lg$z0t1#&yWqtvkGE<~p&%E(MyXZM=R$Kr8 z0009SKnR;c<4Q1AT=t+zY4m^7`3MvH>HLH5$!V=@7W_KiQU zXCS2@0xFGRDJ7Mx`>fQUJdsSmg=rN}St=yY_E2drDoZd|Ce3A&iwXoz{Ct!}{2$cX zrse_1@QZfHD?>^@$~P|alNa)tZ%J0M#~t{0AB^0>4PPh*>I&WioNuJ|%_zVMfB0kx zJ2G(R*Ep-`pVCPM4mymo4Y8PCx_e4+y~)Cp{QoFLt zgW-+|7ocGr>sOOV)%r`b*;aIGK2QQ23Np02CwFR1IOxIFBrk|5lm=aF{@rIiVgo2- zbbwSdzjuTmS3a#3P%V3xb^5`e?L=keJDBDpBdIM994Wstz&n)7ZuKGArO1n3N zZlpbG2;K16-kO-#OI$;#B2G%oVqf|-^-Of^2-fzv z%FVqq&s}9#dzOWng63cQS!%3) z+#E*OZtSz$vr*B&GaU-X2oylb+);b;?pACX^>L7|c);UnOcIdB8hqVl8${WUMrQfh zmQOv%#ul>R3Bh+t$8J_V7{Ginf z{D4v5RmGyqZ3rjAxM$L1(P3ksX1g;2CyU!swdsh>vAIS@IrF!-KE`eozd)qA27#N| zaZe!|b7t89j_lq^C5=+z!-p2%1gZffiECEOTc0{?=~Blsz&LMcUAbdewQ(Hf*Hg8%d7>$aaGLOW@uc ze4YSK?l4=~N>TTZ+x5X2)Z}%00+7+dYeMqTU*+aoY+tKNag($RJfV@9dIXt(&^v;C zvov(m2qh5M*x`X1jRyf6$|2yIWPRPJPY{1@&D2w6~cXw1A`{!0>QR9n0tEcNE zi@0B%5ADDbaF*Da^E3aESPiQ&c=$dix`*^x&q%QeG;S9%$a?%?sb5+3tlR_YiyZ!6 zA$CrE@FQhck=tRZabqev0Ua_oDR<1)Zr$RAaCj}C9+)o;j1wUnSDUbTRBe@@%-ZN zlYj&((zja!L&R=62RFEG`Cnah*|PbXlk@{1!6^NbSTyadl1{j28ZoFOzU}ua-^jDa zb&z+b)b&tcsJidhdX2MRp&K_feoq}f2P&N#w-@XuMBO2{=g2ohV?Qr&f0g9wxGc^0 zOcjAU{z0_~&17NIR+v&-7T}WJJX<%PM4Q_?&(2H~@IU2et)a28!ve&I5D>DgagD{O z9Bq|9&omBqy${kQqqj_vHCfRI3<*_8#-`M%yq*@<18v@%{VQXAzc>iODo3(Ul>mvn>4)=09bP>9xPdyXE4wwZCbu`JAoWIR>a%f6NQGkNQr9|?I!-oaI79}o$MU; zwd=UB7C!0gct$MPT;&PTQ@VC0Ho=A|Gvpm?Ne+deVg?Yx6BRA}pWY43G|cTWcL=S? z+BFOt^NP*Zd=a_x8w7#iva+S<>w>yUtR5n7aR4bm@3SU|6|!@3gV~`V z;<=egfc_)VRSt1r1&_|RH}~J7(wl3_2`w^#z&V0I7|9d`Q?_izp;QW8yLEG7{Z%YY zrYLgx?As}na4P5eon@dbtwi;;faoPoqHwblRcIdTU}ID?mOZ9tYbECR19Y1#6e5Go zQe`waZpN3<9>h^|L+#D8$a!>xc$KtdeUP;Gh95YN=5xZV&3!WD4mEF3C)r&76nFMu zM^+<9d|=t0h!rY~wqi*9zH~YT)1V;-ge@5kM2zo#o9VMD2K1cVj6DqS8F%3rNrvpM zwFBnZ9Fx_)nNJM zQ3A0>tE4(tLF2Au6dwpH(ryzF0;@7er>MBmdlCtugSjzo6S7|hAQzPKhA_i!T~z6z9h4%yUbjvlrpgtew*S$hAA@X2by6pX_%Pn1 z)p`#0hG<=y^Ar6SVv|;h3$Rn!mxZ)u>$IXO=Vp&$ZwaMgAy}@zsiQLCHkg&`3UPYkO`j;CzK=8SH$oXoveLxqT#!n0m*4=Nhi7)y z8Vda4N*0Zhf{grk+Yg2MWjIF7T*$48;tQVPWjKe(vhT<}%kk)B<*GK0@I-7qtccIX8^&}DQwoncRB>he4$=_PVh>^v%7V(amH@FNnu|wdH zOy&+&M{#;%)gg|UIZyxa?Wn=KIwD%wegR`9n4~YzZeEjSugQ@$Su~)8SCj8DR>}L2 z8B#E?qWz+;aL?)wzNuDPeULVg9S~_`LUYw+|IIfFk*?E6`$dK>mD%%n&_jLkF2ZsT zEETf-`D@_X1oqZveAJ$DbEriN*JS2p&vB)b;f*?8*N~qG*I=FWP ziv<&E?+oA&LQ`J?Vs%qog)@`E9E_kwNb=$Y=_g!KI(#|}@C4nw;zATW0@$j2ygmaf*h5t%Psd)4h*XYvsHDfZAeKcAsp%uaK`6y5km(2>_LBf+m>}0Us(G0<@&!xYjPdw zfRK5s#mp=kyegeRRRPt%iBZnF3<~oi&@znsiiJ`%9ULp;U-1c7`l8jB_u=XrUz7*s zekc?X+n319J5)W{3`)81>9O8lW(-lRz~V3)tgN0!u{ks#feNcttE5-2Q6>HurLyS! zb}T_3)yC(L4KeF9M&DBdo+Gl?@C^&X(@7|nFWOZLKOT)44nTi-h?(>J{v7**{Pjth z4GTs)_J?5k1T?5`Ck-bHb-&L4QK}+lZ9>_)S3|ZPcGV>zL>_a*u3~yh3IQ>E18mh0 z4#BAvDCY{Xlmg2O6!(E`ie#7jEbXd!4{5Yk!+uuntbJlIpFPt%(cEz{SLSQezLOgb8=pb%O8mnp$Xly8N#L{A?v5c% z6*+BX(F2-tSwdT;r2qfcbI$;I074G7V^{H@4ua|0kuEr7%svc=W+2c{krq|&w416D{D{X9aU}^U(WQTV#})tfj}+HZbV_u!T3czNW%+W>A5KG2?wdLEgze-z){q^*#>TA9 z_@b~1kT?06`Z3-Y2QF|Z6noEt7#~o9?ewthDX&FSDkMqGk}$>agMgY0IND0SP6p5b z6+VtRXVQeb>34{rm=JQ!a&xJ_vdzalhW%A;io-WSxu{f`=3w3Y7h}fpT4!%C6~zox zeLJL@-N9>v23`5#k{f`xy>DVtg-EMNbs4QyGm(E7FZeR;;K@L-?Vl%eoU|^Biy0;6 zkzienoLpE$Y5)Ti6K4rI?_~^a*15z=1Ns`}+<5 znL`h?>rT2-c@q{a97kR<;6jspLz4pv0%2El``rYj-&5Op%pQq#LM+k3@p!vQr9Jk! z?B8-s@B)M;c?;+^gCWC5KYX#Bu(rs$@0VY@kjORn2*|i z|1}VL@&p`WWFGe%zda@h&wR&iq+~1*gXn^Q)9UInXK)UjK_4>$@np%ckHp3ft1Y6b1K(W5WoNc z&C|dD00000TznH^$LoeSop6WzGu&>?Oh9;YES%AzEL|bFnXHpQBTjlD;cqv-O|;~}Ii$g5l3?;zY)0lFvcMQYr>PNC#TCbD z8^qUT_f)RzFWUerCU0PTb`>{cO1w&#WYW;oxE)2ajc?SHNA602HwR%He3N zeeGnYvrWb7IGrE>1Mm%$j%A>r1-=7n!02@O3irYQ06QbE6UUf+Q9QSe^~rkJO-W%7 z6aWAoRZZCLLZrAo11y6azE-s&d~u^n>a+uFPsRjb7>}HtZCPE>%C#k8-I}_Qoz$#{dTKLNS20QG2|a=h|8L=hXrK;KG>T0NyvPDX}$x zP;L^I@t)&)LfbJX(;%`+xQlymN!f(|mSI2Tm{0j;6aHC*|CV8V8fmL?vK&&SDIg2# tR(?8kg4WqCvifjtpEqNsS({cUbDGCYvo@?y=QWO*X*6%)fqxzW0006;Y>of` diff --git a/community_images/mariadb/bitnami/docker-compose.yml b/community_images/mariadb/bitnami/docker-compose.yml deleted file mode 100644 index b7e50b0c83..0000000000 --- a/community_images/mariadb/bitnami/docker-compose.yml +++ /dev/null @@ -1,52 +0,0 @@ -version: '2.1' - -services: - mariadb-master: - image: ${MARIADB_IMAGE_REPOSITORY}:${MARIADB_IMAGE_TAG} - ports: - - '3306' - volumes: - - 'mariadb_master_data:/bitnami/mariadb' - environment: - - MARIADB_REPLICATION_MODE=master - - MARIADB_REPLICATION_USER=repl_user - - MARIADB_USER=my_user - - MARIADB_DATABASE=my_database - # ALLOW_EMPTY_PASSWORD is recommended only for development. - - ALLOW_EMPTY_PASSWORD=yes - - MARIADB_ROOT_PASSWORD=my_root_password - cap_add: - - SYS_PTRACE - healthcheck: - test: ['CMD', '/opt/bitnami/scripts/mariadb/healthcheck.sh'] - interval: 15s - timeout: 5s - retries: 6 - - mariadb-slave: - image: ${MARIADB_IMAGE_REPOSITORY}:${MARIADB_IMAGE_TAG} - ports: - - '3306' - depends_on: - - mariadb-master - environment: - - MARIADB_REPLICATION_MODE=slave - - MARIADB_REPLICATION_USER=repl_user - - MARIADB_USER=my_user - - MARIADB_DATABASE=my_database - - MARIADB_MASTER_HOST=mariadb-master - - MARIADB_MASTER_PORT_NUMBER=3306 - - MARIADB_MASTER_ROOT_PASSWORD=my_root_password - # ALLOW_EMPTY_PASSWORD is recommended only for development. - - ALLOW_EMPTY_PASSWORD=yes - cap_add: - - SYS_PTRACE - healthcheck: - test: ['CMD', '/opt/bitnami/scripts/mariadb/healthcheck.sh'] - interval: 15s - timeout: 5s - retries: 6 - -volumes: - mariadb_master_data: - driver: local \ No newline at end of file diff --git a/community_images/mariadb/bitnami/image.yml b/community_images/mariadb/bitnami/image.yml deleted file mode 100644 index a850dd2310..0000000000 --- a/community_images/mariadb/bitnami/image.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: mariadb -official_name: MariaDB -official_website: https://www.mariadb.com/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/mariadb -source_image_repo_link: https://hub.docker.com/r/bitnami/mariadb -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/mariadb/README.md -rf_docker_link: rapidfort/mariadb -image_workflow_name: mariadb_bitnami -github_location: mariadb/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmariadb -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install mariadb, just replace repository with RapidFort registry - $ helm install my-mariadb bitnami/mariadb --set image.repository=rapidfort/mariadb -what_is_text: | - MariaDB Server is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, DBS Bank, and ServiceNow. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - mariadb: - input_base_tag: "11.1.2-debian-11-r" - - mariadb: - input_base_tag: "11.0.3-debian-11-r" - - mariadb: - input_base_tag: "10.11.5-debian-11-r" - - mariadb: - input_base_tag: "10.10.6-debian-11-r" - - mariadb: - input_base_tag: "10.6.15-debian-11-r" - - mariadb: - input_base_tag: "10.5.22-debian-11-r" - - mariadb: - input_base_tag: "10.4.31-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: mariadb - wait_time_sec: 120 - image_keys: - mariadb: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - compose_file: docker-compose.yml - image_keys: - mariadb: - repository: "MARIADB_IMAGE_REPOSITORY" - tag: "MARIADB_IMAGE_TAG" - - type: docker - mariadb: - environment: - MARIADB_ROOT_PASSWORD: my_root_password diff --git a/community_images/mariadb/bitnami/k8s_coverage.sh b/community_images/mariadb/bitnami/k8s_coverage.sh deleted file mode 100755 index 06a7b33fcf..0000000000 --- a/community_images/mariadb/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/tests/sysbench_tests.sh - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# get mariadb password -MARIADB_ROOT_PASSWORD=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath="{.data.mariadb-root-password}" | base64 --decode) - -# copy test.sql into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/../../common/tests/test.my_sql "${RELEASE_NAME}"-0:/tmp/test.my_sql - -# run script -kubectl -n "${NAMESPACE}" exec -i "${RELEASE_NAME}"-0 -- /bin/bash -c "mysql -h localhost -uroot -p\"$MARIADB_ROOT_PASSWORD\" mysql < /tmp/test.my_sql" - -# copy mysql_coverage.sh into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/../../common/tests/mysql_coverage.sh "${RELEASE_NAME}"-0:/tmp/mysql_coverage.sh - -# run mysql_coverage on cluster -kubectl -n "${NAMESPACE}" exec -i "${RELEASE_NAME}"-0 -- /bin/bash -c "/tmp/mysql_coverage.sh" - -# create sbtest schema -kubectl -n "${NAMESPACE}" exec -i "${RELEASE_NAME}"-0 \ - -- /bin/bash -c \ - "mysql -h localhost -uroot -p\"$MARIADB_ROOT_PASSWORD\" -e \"CREATE SCHEMA sbtest;\"" - -# prepare benchmark -kubectl run -n "${NAMESPACE}" sb-prepare \ - --rm -i --restart='Never' \ - --image severalnines/sysbench \ - --command -- sysbench \ - --db-driver=mysql \ - --oltp-table-size=100000 \ - --oltp-tables-count=24 \ - --threads=1 \ - --mysql-host="${RELEASE_NAME}" \ - --mysql-port=3306 \ - --mysql-user=root \ - --mysql-password="${MARIADB_ROOT_PASSWORD}" \ - --mysql-debug=on \ - /usr/share/sysbench/tests/include/oltp_legacy/parallel_prepare.lua \ - run - -# execute test -kubectl run -n "${NAMESPACE}" sb-run \ - --rm -i --restart='Never' \ - --image severalnines/sysbench \ - --command -- sysbench \ - --db-driver=mysql \ - --report-interval=2 \ - --mysql-table-engine=innodb \ - --oltp-table-size=100000 \ - --oltp-tables-count=24 \ - --threads=4 \ - --time=30 \ - --mysql-host="${RELEASE_NAME}" \ - --mysql-port=3306 \ - --mysql-user=root \ - --mysql-password="${MARIADB_ROOT_PASSWORD}" \ - /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua \ - run diff --git a/community_images/mariadb/bitnami/overrides.yml b/community_images/mariadb/bitnami/overrides.yml deleted file mode 100644 index 8b521fe90c..0000000000 --- a/community_images/mariadb/bitnami/overrides.yml +++ /dev/null @@ -1,35 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -primary: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -secondary: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 \ No newline at end of file diff --git a/community_images/mariadb/ironbank/.rfignore b/community_images/mariadb/ironbank/.rfignore deleted file mode 100644 index bd036ec246..0000000000 --- a/community_images/mariadb/ironbank/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/licenses diff --git a/community_images/mariadb/ironbank/README.md b/community_images/mariadb/ironbank/README.md deleted file mode 100644 index c371ac6e9c..0000000000 --- a/community_images/mariadb/ironbank/README.md +++ /dev/null @@ -1,139 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for MariaDB IronBank - -RapidFort’s container optimization process hardened this MariaDB IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One MariaDB IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is MariaDB IronBank? - -> MariaDB Server is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, DBS Bank, and ServiceNow. - - -[Overview of MariaDB IronBank](https://www.mariadb.com/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened MariaDB IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw rapidfort/mariadb-ib:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One MariaDB IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One MariaDB IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/mariadb-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`latest` (Dockerfile)](https://repo1.dso.mil/dsop/opensource/mariadb/mariadb106/-/blob/development/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=mariadb-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmariadb%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmariadb%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmariadb%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmariadb%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmariadb%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/mariadb-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/mariadb-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mariadb/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mariadb/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fmariadb%2Fmariadb -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/mariadb-ib diff --git a/community_images/mariadb/ironbank/assets/cve_reduction.webp b/community_images/mariadb/ironbank/assets/cve_reduction.webp deleted file mode 100644 index 1a011266a042730d28158f3b9001e18533826778..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1850 zcmb`Hdpy%?7{K3=`?ZECVnRA8xwS+t&1G9tEq5)sj&8G^ZHc5!C8?!3LZ?GRmsQlN z;}(jPOBA`}lvXZjgb=FH%=zu~>7ze7pYzXo-p}*A-{12-&*ypG-~0Z4UN{dAYXt!O z-O&U;f?a?z000ST9t=1GfOB;v=*mEkKt@+;7gz#7j%LujFlb~z;C7_c_gzB6>D2H1 zlNkoU=S~1w0NPjoWc|NfN)aS_I21GvDT4+T2LKiUu~yVKj+JuQH)czj=HulG#pFV~ zBI*YY`+*NIs0=8kK^h-UrAb);@dom~{nA=ek#?*~iuUz}<^V|b0UdY&3_wHtzsmgk zq~rr&_Xz-5&b%+|cK}M00MPB4_nG7Zpm7XU1FTb)S`6+mC%&y2_I3RXe$4#J>p|E%-pJQ9 znObJGzrV!$_^S{^$fmYfg=`Jc;SBE3bjpmGB&v)uab{p{OeD*U#L0yPYsx0EwGN%~ zVmME$>KUfHt$%0=OMBj+xVT>8soR^H<2Z{gubB*Ko@JAQ?$$Pzw8_~~Up|u$zKO_D z|1v|S7!=pMRSY*xSuN{DR%sc-tl#*)eYFV>FMJWB9~Jp1V?ou9Uc$Z69n-h!oM#>y z%GW+R&RwYdW{dC2O{^eN>YD8olWD*Hvsm0sqN4!m{H*Zm(32HOOW&#dC0IJH*0j+R zQ-4ZkkIgLV1(19-uNsX&LwpfXmqi0>n^7zg^Q<6TKEHFwl#&(-Yx!> zgzFKwnS9aE$$~S~vFBZS z%Q)w*`ARldsq*Oz{9~ocduMg>X1B$4<|vB;_kQMdXlLmS%uU;{7f-~?b~v}cGNyEi zb{}1uR+y-6n28Qfp82?Sc*MX=rP5x}L-mVk`GO#;vjeHZ+vTP2MjVKIPP)3IO&PJL zFbiJ#!d4>7GC!XGf}Y-IqiS02dFi+ASO<|6Z@M)-MrYv(wwP5}R@BOUg;mK{DFV%?PtYj?$U*O z&Mn!!TOJ%h6kRW ztFZ7AW2;qE*x7VBO@)OSvPL4QF_-G#%1M&3g4flAm> zyIKUz275UGf1x;R`9Vvx7_KKalU3enjbz>@H&A*Ls2UZ2nh(Tar);vW=Ipo_Q7drn zGj<4V51lox5-=!@jZ;Mi8FKOTexBYTl3U7oviR^Zt#hjyZ+9f(2Jf~kD$!TVA-|C& z1hWzGe0sF9MeOChTSm(=;!^DG&(Ie(AH9|t)#Ko6k-@CsHKCY!=C&6L_82!aHi$;y zs!xMXj+dR6@9{(nw+CK0R+fv3;6*7sQG&(Peh5t%92T=K_-#EjJZ@q7@ZP>XVG*z6 z6oYj>(8JC*66UbBQ1rN3-eLSsGb@$1sYnwn<(ORI+KS_|ZNIWPrO4flaHju{jF z*GXCp7Bi%zQUf(jw>$M~HK+RCKb`Dy^_w*O$g<`LiLSojWRNh)u}&sebQ6W{ zyU846_#d^Kulv=vri>Y%zN)QbgsrICPf*tyfOC$aR?@I>rR?Gj8*gl&hWqJ{5EJ&~ SvL-HH8J*igq^dzb$G-vDLBCM| diff --git a/community_images/mariadb/ironbank/assets/metrics.webp b/community_images/mariadb/ironbank/assets/metrics.webp deleted file mode 100644 index 33ada3b0d0244d4acfa0d178fbdd7502354dc7fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26276 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

oIDLfejZAF%{ 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 SwYCeK(bmL@N!Jek0000*!$z -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for MariaDB Official - -RapidFort’s container optimization process hardened this MariaDB Official container. This container is free to use and has no license limitations. - -It is the same as the [MariaDB Developer Community MariaDB Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is MariaDB Official? - -> MariaDB Server is one of the most popular database servers in the world. It's made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, DBS Bank, and ServiceNow. - - -[Overview of MariaDB Official](https://www.mariadb.com/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened MariaDB Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw rapidfort/mariadb-ib:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [MariaDB Developer Community MariaDB Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [MariaDB Developer Community MariaDB Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/mariadb-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`10.10.1-rc-jammy`, `10.10-rc-jammy`, `10.10.1-rc`, `10.10-rc`](https://github.com/MariaDB/mariadb-docker/blob/ee8996e7fd507cfbef594c0369af092e5cf9078a/10.10/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=mariadb-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmariadb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mariadb-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/mariadb-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/mariadb-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mariadb/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mariadb/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/mariadb -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/mariadb-official diff --git a/community_images/mariadb/official/assets/cve_reduction.webp b/community_images/mariadb/official/assets/cve_reduction.webp deleted file mode 100644 index 7cb244b1fde7b05f732dff4e823b427751418032..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1714 zcmb`HeK^xw9Kg?PM&zpWqU&uUDczzn`lcQrP5`eus z?cBWFFy3ka02HM8Ft8l}CwqH0Z6#<3l(ZEVVGckToy8>L>`>l5z9@z7s|1oG!@u%( zdKdsx9RRWbJo)K6^Z(^q5EL9qhJwZ*Wig@T0KkGEUP}GK(F!Jg;WG+mdJyfQm^_G0 zsoyZ^8)mb@Sx`)aBAy)1RB$)MTf=Bkid+g&RJ<^l?&%Ko-jM2oNI(QQU?80-bdmCAc_Y-yKCNOoCkpBNdPJzhX*nP|0xCmStSYu0BJD*8a@DMwF02_ z%hy8Z*UsO?zw8wStXGW|tU2}b9r`_tO}W?PS&}uAh1v+R8W=A-oh=rP{pEdKTIKI&G(f;5H-k;I@UqoLskC^(^L z>}6J8Out-9|B2-0Z;x^9oG4LQuXss>3S6XnTsoV|=x9ze?tPVje~)aQDy%;An&n4Y zK6_bHRAF@iebMNzdNWeMEo_j}J`V$+`Dq7`-yAJS}g8T?O z`8%_k9rC912V43sVhIbbtX#(!63t2(mJW!;jSlnS!;Qy@gviZ z(I0|%6I*t>Q7Kha`EgB@`hl4Wn0iia>7u@pi#Oc*d;3E;U6}Y6q>Q|27xCwH8!g6< zMKT2J#gyiQHivUC=u~{y#`Fd&TfD<)J_*3R(z91w6&Gw*cBkLYG*S}dd$OL#$vF+R z`x2&)vecB^Cb#w5oW)c)qA3Dm#y)P}pKeKcMpF^PPmzG{)8m!vIAUrnb1$u9Ct0s; zX~inZ5*jY2RMKn`r&bQ)G7$Av!R4E}gRUaOACm=S`Hx0rV||B^VT{cQX()L{ya%mg zh%sAZa77MC$!&LpifilyiQ)Z+TDWlwA2NVRnuh@L-?!kztg1oYdcAd}3r^ zN9ga9N0BR2F$SX;}8hLwNpJ}=3ZwHMC93VBudkaL7(_u14G&VaS`&GwOJ zrL2}cL*r{ciNnw)hd-hD&gYI(dbe{VgNB5q4w*y_rE9WMq~UEskZ*o=xkG{>{NUMU zA*vP_Z{x=<_<#*m7hC9_Y@!_=^V3(ME*c!YI9gZ}_Ru&ch+*60`$oA;_ONa7=h|s5 zRi)>>(|S2}YCJaRne{F+gB`HFuCLz~os6#A7HxClIU^A_YKcU2^+lao;hPjw8lb=5 zlD_{1wMBJ#!|>>SJs*eTjcVEAnh>uXbmz-~`i~RRFu(4#RURj%;io%$`z6)%9O1c* zsy3fGPlVqdu#{@V7*`Z%2w?THqn|q2hr%L&v+a3U9IJJ+Xk)mnrv8! zIVMrKHv`iXyPC(239-v=ScDw7Gk~DJ+E7T~yzAkouAr~w6|gBwA3N7HR}EL`jgaW- zzMkkx|AN7GcX$bR*NaqH=!}1ICcR~YOMuJMg-1e#U?w+mxUJ%~(fSA4_4X%9>vn72 gSlM5!bL6`G=k5}h3(?{forR_iyaFAU;qFB diff --git a/community_images/mariadb/official/assets/metrics.webp b/community_images/mariadb/official/assets/metrics.webp deleted file mode 100644 index 54930c2a5a86dca9d8ecc79bd7121bdab8e089df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25958 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 ptcD diff --git a/community_images/mariadb/official/docker_coverage.sh b/community_images/mariadb/official/docker_coverage.sh deleted file mode 100755 index ca012424b3..0000000000 --- a/community_images/mariadb/official/docker_coverage.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -CONTAINER_NAME=$(jq -r '.container_details."mariadb-official".name' < "$JSON_PARAMS") -NETWORK_NAME=$(jq -r '.network_name' < "$JSON_PARAMS") -MYSQL_HOST=$(jq -r '.container_details."mariadb-official".ip_address' < "$JSON_PARAMS") - -SCRIPTPATH=$(jq -r '.image_script_dir' < "$JSON_PARAMS") - - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/tests/sysbench_tests.sh - -# get mysql password -MYSQL_ROOT_PASSWORD=my_root_password - -# copy test.sql into container -docker cp "${SCRIPTPATH}"/../../common/tests/test.my_sql "${CONTAINER_NAME}":/tmp/test.my_sql - -# run script -docker exec -i "${CONTAINER_NAME}" \ - /bin/bash -c "mysql -h localhost -uroot -p\"$MYSQL_ROOT_PASSWORD\" mysql < /tmp/test.my_sql" - -# copy mysql_coverage.sh into container -docker cp "${SCRIPTPATH}"/../../common/tests/mysql_coverage.sh "${CONTAINER_NAME}":/tmp/mysql_coverage.sh - -# run mysql_coverage on cluster -docker exec -i "${CONTAINER_NAME}" /bin/bash -c "/tmp/mysql_coverage.sh" - -# create sbtest schema -docker exec -i "${CONTAINER_NAME}" \ - /bin/bash -c \ - "mysql -h localhost -uroot -p\"$MYSQL_ROOT_PASSWORD\" -e \"CREATE SCHEMA sbtest;\"" - -# prepare benchmark -docker run --network="${NETWORK_NAME}" \ - --name sb-prepare --rm -i \ - severalnines/sysbench \ - sysbench \ - --db-driver=mysql \ - --oltp-table-size=100000 \ - --oltp-tables-count=24 \ - --threads=1 \ - --mysql-host="${MYSQL_HOST}" \ - --mysql-port=3306 \ - --mysql-user=root \ - --mysql-password="${MYSQL_ROOT_PASSWORD}" \ - --mysql-debug=on \ - /usr/share/sysbench/tests/include/oltp_legacy/parallel_prepare.lua \ - run - -# execute test -docker run --network="${NETWORK_NAME}" \ - --name sb-run --rm -i \ - severalnines/sysbench \ - sysbench \ - --db-driver=mysql \ - --report-interval=2 \ - --mysql-table-engine=innodb \ - --oltp-table-size=100000 \ - --oltp-tables-count=24 \ - --threads=4 \ - --time=45 \ - --mysql-host="${MYSQL_HOST}" \ - --mysql-port=3306 \ - --mysql-user=root \ - --mysql-password="${MYSQL_ROOT_PASSWORD}" \ - /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua \ - run diff --git a/community_images/mariadb/official/image.yml b/community_images/mariadb/official/image.yml deleted file mode 100644 index db5fe71b87..0000000000 --- a/community_images/mariadb/official/image.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: mariadb-official -official_name: MariaDB Official -official_website: https://www.mariadb.com/ -source_image_provider: MariaDB Developer Community -source_image_repo: docker.io/library/mariadb -source_image_repo_link: https://hub.docker.com/_/mariadb -source_image_readme: https://github.com/MariaDB/mariadb-docker/tree/ee8996e7fd507cfbef594c0369af092e5cf9078a#readme -rf_docker_link: rapidfort/mariadb-official -image_workflow_name: mariadb_official -github_location: mariadb/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmariadb -usage_instructions: | - $ docker run --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw rapidfort/mariadb-ib:latest -what_is_text: | - MariaDB Server is one of the most popular database servers in the world. It's made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, DBS Bank, and ServiceNow. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`10.10.1-rc-jammy`, `10.10-rc-jammy`, `10.10.1-rc`, `10.10-rc`](https://github.com/MariaDB/mariadb-docker/blob/ee8996e7fd507cfbef594c0369af092e5cf9078a/10.10/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - mariadb: - input_base_tag: "10.10.*" - output_repo: mariadb-official -runtimes: - - type: docker - script: docker_coverage.sh - wait_time_sec: 60 - mariadb-official: - exec_command: --default-authentication-plugin=mysql_native_password - environment: - MARIADB_ROOT_PASSWORD: my_root_password - MARIADB_ROOT_HOST: "%" diff --git a/community_images/mariadb/official/k8s_coverage.sh b/community_images/mariadb/official/k8s_coverage.sh deleted file mode 100755 index 06a7b33fcf..0000000000 --- a/community_images/mariadb/official/k8s_coverage.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/tests/sysbench_tests.sh - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# get mariadb password -MARIADB_ROOT_PASSWORD=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath="{.data.mariadb-root-password}" | base64 --decode) - -# copy test.sql into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/../../common/tests/test.my_sql "${RELEASE_NAME}"-0:/tmp/test.my_sql - -# run script -kubectl -n "${NAMESPACE}" exec -i "${RELEASE_NAME}"-0 -- /bin/bash -c "mysql -h localhost -uroot -p\"$MARIADB_ROOT_PASSWORD\" mysql < /tmp/test.my_sql" - -# copy mysql_coverage.sh into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/../../common/tests/mysql_coverage.sh "${RELEASE_NAME}"-0:/tmp/mysql_coverage.sh - -# run mysql_coverage on cluster -kubectl -n "${NAMESPACE}" exec -i "${RELEASE_NAME}"-0 -- /bin/bash -c "/tmp/mysql_coverage.sh" - -# create sbtest schema -kubectl -n "${NAMESPACE}" exec -i "${RELEASE_NAME}"-0 \ - -- /bin/bash -c \ - "mysql -h localhost -uroot -p\"$MARIADB_ROOT_PASSWORD\" -e \"CREATE SCHEMA sbtest;\"" - -# prepare benchmark -kubectl run -n "${NAMESPACE}" sb-prepare \ - --rm -i --restart='Never' \ - --image severalnines/sysbench \ - --command -- sysbench \ - --db-driver=mysql \ - --oltp-table-size=100000 \ - --oltp-tables-count=24 \ - --threads=1 \ - --mysql-host="${RELEASE_NAME}" \ - --mysql-port=3306 \ - --mysql-user=root \ - --mysql-password="${MARIADB_ROOT_PASSWORD}" \ - --mysql-debug=on \ - /usr/share/sysbench/tests/include/oltp_legacy/parallel_prepare.lua \ - run - -# execute test -kubectl run -n "${NAMESPACE}" sb-run \ - --rm -i --restart='Never' \ - --image severalnines/sysbench \ - --command -- sysbench \ - --db-driver=mysql \ - --report-interval=2 \ - --mysql-table-engine=innodb \ - --oltp-table-size=100000 \ - --oltp-tables-count=24 \ - --threads=4 \ - --time=30 \ - --mysql-host="${RELEASE_NAME}" \ - --mysql-port=3306 \ - --mysql-user=root \ - --mysql-password="${MARIADB_ROOT_PASSWORD}" \ - /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua \ - run diff --git a/community_images/mariadb/official/overrides.yml b/community_images/mariadb/official/overrides.yml deleted file mode 100644 index 8b521fe90c..0000000000 --- a/community_images/mariadb/official/overrides.yml +++ /dev/null @@ -1,35 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -primary: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -secondary: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 \ No newline at end of file diff --git a/community_images/memcached/bitnami/.rfignore b/community_images/memcached/bitnami/.rfignore deleted file mode 100644 index 1062bc27fb..0000000000 --- a/community_images/memcached/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/licenses -opt/bitnami/memcached/licenses -usr/share/common-licenses diff --git a/community_images/memcached/bitnami/README.md b/community_images/memcached/bitnami/README.md deleted file mode 100644 index c62f182576..0000000000 --- a/community_images/memcached/bitnami/README.md +++ /dev/null @@ -1,143 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Memcached - -RapidFort’s container optimization process hardened this Memcached container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Memcached][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Memcached? - -> Memcached is an high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load. - - -[Overview of Memcached](http://memcached.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Memcached image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Docker -$ docker run --name memcached rapidfort/memcached:latest -# Kubernetes -$ helm repo add bitnami https://charts.bitnami.com/bitnami -$ helm install my-release rapidfort/memcached - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Memcached][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Memcached][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/memcached][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`1`, `1-debian-11`, `1.6.22`, `1.6.22-debian-11-r` (1/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/memcached/1/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=memcached&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/memcached?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/memcached?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/memcached/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/memcached/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/memcached -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/memcached diff --git a/community_images/memcached/bitnami/assets/cve_reduction.webp b/community_images/memcached/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 8a79e204770e078af3617ddbc69f04c874ff8895..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1382 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 \[command\]\n" - send_user "e.g. ${argv0} 127.0.0.1 11211 \"stats settings\"\n" - send_user " ${argv0} 127.0.0.1 11211 \"set key_name 0 60 10\"$'\\n'\"0123456789\"\n" - send_user " ${argv0} 127.0.0.1 11211 \"get key_name\"\n\n" - exit 1 -} - -if { - [info exists PORT] - && "${PORT}" == "" -} { - set PORT "11211" -} - -if { - [info exists COMMAND] - && "${COMMAND}" == "" -} { - set COMMAND "stats" -} - -log_user 0 -spawn telnet ${HOST} ${PORT} -expect { - default { - send_user "ERROR: Unable to connect to ${HOST} ${PORT}\n" - exit 1 - } - "'^]'." { - log_user 1 - send "${COMMAND}\n" - expect { - -re "(?:DELETED|END|ERROR|NOT_FOUND|STORED|VERSION \[0-9\]+\.\[0-9\]+\.\[0-9\]+)" { - send "quit\n" - } - } - expect eof - } -} diff --git a/community_images/memcached/bitnami/overrides.yml b/community_images/memcached/bitnami/overrides.yml deleted file mode 100644 index f201e68505..0000000000 --- a/community_images/memcached/bitnami/overrides.yml +++ /dev/null @@ -1,18 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/memcached/ironbank/README.md b/community_images/memcached/ironbank/README.md deleted file mode 100755 index f2ef378afd..0000000000 --- a/community_images/memcached/ironbank/README.md +++ /dev/null @@ -1,139 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Memcached IronBank - -RapidFort’s container optimization process hardened this Memcached IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Memcached IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Memcached IronBank? - -> Memcached is an high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load. - - -[Overview of Memcached IronBank](http://memcached.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Memcached IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Docker -$ docker run --name memcached rapidfort/memcached-ib:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Memcached IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One Memcached IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/memcached-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=memcached-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmemcached%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmemcached%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmemcached%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmemcached%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmemcached%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/memcached-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/memcached-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/memcached/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/memcached/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fmemcached%2Fmemcached -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/memcached-ib diff --git a/community_images/memcached/ironbank/assets/cve_reduction.webp b/community_images/memcached/ironbank/assets/cve_reduction.webp deleted file mode 100644 index ee2f564e1c1186e6c74a68832b765c9f8537e544..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1340 zcmWIYbaOLdWnc(*bqWXzu!!JdU|>)H;)RS1_6!W3&dvc6Oh7IJlLUxlF<@ZG%_}Ji za(7aQh>TJIiNQc(a&ZBSjfG}pVEA^80Z1}1T-L=RPe_O}CAByisOSR_mlOdlXJBAV z0kTEXA?ykeI|;(>0kMlhf}DYB7692A=}7D(BzAd8K?zXJ36T2af+7(64v=k=n^Ow1 z3j{ze=1I*94F=K?KrF*h%n-!j&fo-OQxzb>Gk*~SgT+?{2IdI}v80&{4BJ~77$j~X z#8ehAFz~l9Fl;+tkXV!mb_@%UWJ*h8VEDA0fq^%YfkF5J0|Qqy%%KRqh`7MvR|TLR z8K6J&fiRsRhar_gfx(j@k0F^s56CiNFkmobFaxF-g>S(0At1ppmr-jGqXUCouGut? zCCW;QDrK1+4ZNM{d7tKAU(ohM<4$9Kddl;OY%jc>*E|0|{?+HzD#=HsKUEzz9;)+b zisg-M&b~#q9YEg0&W_Oik7udSnGWkKoL+_P4u1pQtcc0^XUNzIvxy};~ z##t{}J0-9z>)6X6{T9a*myZ%(n=fbi-DBWdXaAaw!DX+t+MWC2Ih#3z7Dy-mlf9=l zO?h=d%H_3tpKtffdL*|>zePK19p|pp3ND5;+x2CP>woDd_L?v-{QLQ%{@4Sh`as>5 zZJ)mH6a0`Gx@Ae?_B($yXJ(%_y#4!Z?4(%XpJ(RFH_pxUj${x0KjHSt1Qx+&2f?S| z>#AR$Tgy4+%#6!VuDsv6*y~AVuV7@(|E^^TIhP_-56HHkxGB1H&f<$p%=s?oKA-iG zVUEE9|78=5r-}Y~daZoPzlCfses4FE`c-haW`B#oMyr;41xu1PtuDBh_k{a{!5l4V zb@{Dt|M6DV{xDbh)%|k)rr&pX8qZEMjsK=Axb^YBwG-!TOUhZF_mhKX`kJt2W=n3y zH@DrsMjl-(_LlWRIZL0+L%TBn8PC`MfAuW!@;BrEYPGMdFD`lgJ?Ep7=2gS)>VQY4 z7SSh`)tZYGJ-aQv?QSp6ncWL6DKFOIcpv@g<2I(Y}c%e?G3s{CD^IReqQA84_1E-+ZdR$z9G(+e2S}f``*mk!zYKe*Bq#_?a`i z9pjtHhagg(@GwBIJwkoUaMdeQK{NCwT^l1+*N*ELNVY7KVFI`0bb^T_X`vGp|X4Ju5$5;8@* JL(YS86aX6T$CCg6 diff --git a/community_images/memcached/ironbank/assets/metrics.webp b/community_images/memcached/ironbank/assets/metrics.webp deleted file mode 100644 index 20533d004aa94e3c5048567b5332dab97276322e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24858 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 \[command\]\n" - send_user "e.g. ${argv0} 127.0.0.1 11211 \"stats settings\"\n" - send_user " ${argv0} 127.0.0.1 11211 \"set key_name 0 60 10\"$'\\n'\"0123456789\"\n" - send_user " ${argv0} 127.0.0.1 11211 \"get key_name\"\n\n" - exit 1 -} - -if { - [info exists PORT] - && "${PORT}" == "" -} { - set PORT "11211" -} - -if { - [info exists COMMAND] - && "${COMMAND}" == "" -} { - set COMMAND "stats" -} - -log_user 0 -spawn telnet ${HOST} ${PORT} -expect { - default { - send_user "ERROR: Unable to connect to ${HOST} ${PORT}\n" - exit 1 - } - "'^]'." { - log_user 1 - send "${COMMAND}\n" - expect { - -re "(?:DELETED|END|ERROR|NOT_FOUND|STORED|VERSION \[0-9\]+\.\[0-9\]+\.\[0-9\]+)" { - send "quit\n" - } - } - expect eof - } -} diff --git a/community_images/memcached/official/README.md b/community_images/memcached/official/README.md deleted file mode 100644 index 60bc6f2da9..0000000000 --- a/community_images/memcached/official/README.md +++ /dev/null @@ -1,141 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Memcached Official - -RapidFort’s container optimization process hardened this Memcached Official container. This container is free to use and has no license limitations. - -It is the same as the [The Docker Community Memcached Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Memcached Official? - -> Memcached is an high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load. - - -[Overview of Memcached Official](http://memcached.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Memcached Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Docker -$ docker run --name memcached rapidfort/memcached:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [The Docker Community Memcached Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [The Docker Community Memcached Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/memcached-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`1.6.17`, `1.6`, `1`, `latest`, `1.6.17-bullseye`, `1.6-bullseye`, `1-bullseye`, `bullseye` (Dockerfile)](https://github.com/docker-library/memcached/blob/1c39f318e3a5c1b06e4c9b0d4b870c9223b26428/debian/Dockerfile) -* [`1.6.17-alpine`, `1.6-alpine`, `1-alpine`, `alpine`, `1.6.17-alpine3.16`, `1.6-alpine3.16`, `1-alpine3.16`, `alpine3.16` (Dockerfile)](https://github.com/docker-library/memcached/blob/1c39f318e3a5c1b06e4c9b0d4b870c9223b26428/alpine/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=memcached-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmemcached?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=memcached-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/memcached-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/memcached-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/memcached/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/memcached/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/memcached -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/memcached-official diff --git a/community_images/memcached/official/assets/cve_reduction.webp b/community_images/memcached/official/assets/cve_reduction.webp deleted file mode 100644 index 549137f4276dbd6de60797fe84a5ebbe1ed21560..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1736 zcmb`HdoPI-jp$87|%^Hn3Pw8ArwYUULo4XBMinOQ6wWJ zN-8DKEzx>(JbKw#c@DBn1%N34b`};mSwUzB1ZDXarVT()a5x!nV~%ih_dxJ{-^8037W$2U&YKfPSqX%>S2bldoSG5ek}tG@J}22SC6VVrkM>j^eY=S5D(I*%@yE#V{aNBYnp{ z-*IGkXgCz}j2}-7CG+`rh>e2+Blx-a!mn7&FPPv2^=^>LfiQpvHozR>|5et{Go%Cn zqXhtjGS_`Rxd5;(03bWG?o(y}AaNdmhVD>rviCp5z#uE=?+?IiIRN7B0Br36K-BYF zq3dhc@8Vzfih$P0LHi7W8VLjfKY##sAQ%wAK8SRIHqZem=*1wYP)=?w@6#nC@a3X9&I$yhGpJ#7q`je8$A6FnEbiFZ#TLUe;Lj?+5ZRh33Z<&CNY z^d4+yA2n1JV>h2bUM>}h5KApfL%^qhF6e&lsmA>&HzqS=b7|AI5p?omZ-?AAQ(gH? zA{&sW&9r=uejJq5WR~JF;6T<`f2aC9zT*xie@z~#Yu~f>q(^!t<64emXvHgI$tPvV zT^N^g5qgStNo<7%Qxkde1Xjh^E-o*DWt-v@{@fl_!wa||ny~ywitIJFgMx(XM@RFO zS#dhRi+%%vTaE`j?%|maxrKSM&4)GVXzB3HAN}OfvRMmO_j|Zr?Qa{f+ap8^PY$Gt zOdsmMgK=CVr#{uPz=_8QRkp!)c<{`)Lu(rx%g)ACjzup2rBrtfX|$T}tezKg$=kAY z^hWLr-AX&%Zd^nQ$CD7HpxuW`$nHPDQVMLC&jGMscBR>rvkfSP%1bU(%B%dM$q^Q| zD%#4hQPO$p7BHhc^`$Pf=tvW>ICoNKznf?I4|wf>|?`HIxD#dP-PkuBbZC1`H^vm)7``uBN(zO1aX9-6xa2iLceXM02 ziaQ#d;|8n3jg{@p zquXBfd~tNWYpzDI@Hs3Kuh3uBdU&U5HR)j>Nh+F>d44KV@7-f|8F$OM-o&TO9fx$K zvi-f$n+-aW-p|S4g;7{uXP;wC(p?9hAPsw)N|PUJ&40P@I-AqaGvPL!jImw1%*IG0 zQF8Gey@}qI^=cx=YU~^6taOdjM&pDuhfpoIN7dAc;XMT%%BpBsoKR z6D|TX-AJqfiu$@Yl>_aaH+&Y#XZu*eJwAoemTeP}wHZyvLztgTmzaMwtCRk$NA&)YQwr$(CZDZOtrtO}#J#E|WXXm>&Zv5^Wv2W}@TPG^( zbF#9cvJjb7r|Kw6iHrX=1pqX}gca2lIW=Jc007ay$N>Ww1OTK&L=>?=|Gff0vHqjr zi~xY0y{ogbgfNk&mNwCUy#F1HOk5oQH~xP}K>&c~6~I3V04&n|Kji-+XpN9YGPlsXvfb$6e z089KIo^cic&>jW=U~T*lkE{>?Kneu_+GZV%oQ?i(Wx)SYP;+wt;JzFHK+pmJ(B=RD zSe^f^=>L@cpRxG=(^jH?W$^yB)8XG^0k8#_0f+!n0DFK5fc_t11~3Ac0PO!}3{jym z05Dezk_SS~2{Q!Xw`0waA|oj#AxW012tP!SE0b{;d9&Anw-VIa=iueNiWcrQ+{GTd-5?{Z!Po8!J z1r`Guffqo&>#Ohj=ajAX=Yo6xe!_X+6!7giA6Rf{cM9_11O%=kz1RSOe||hUycBc^ zeDsP2SOI|_fB@hV0Jy$#vl4JsuoGa|i}G^xjC9@CAg~8C_3QhzIVxxddVdvtUtC2! zLZ#Xl1FOF!mJ$vEj051l4xT4J#;$?eecOF&0fC=kj~;s-cLlqBP6EBY!QXP95g$9x z3O50_z`^eqpCX{m=9`ni<+p?{=m+7W!_&?-a6aG(C~#W+v2$$kvI7LteFuEaetEna z+!-7S1OVUs0|RKjlfFGZ6>gwj|K-2(?*VzfOFn+y0Dl?m0hhkpK0yK)zo)-}p9Sx; z>o=vqqks!wGEnS8=qlrp;g0Y{U>;cemGuGrZSiICt?_d6VDJ^N9RLIZUt)m3@0b37 zEd?O(@f$0^?jLg+!%uh@yU=lWTUTCAAc~gL(Z22{MgH8B3ZAGEkiRIV^qZ_X?%>J3}ODJV}A_F zm$v$pG8zhTbK+wCC$SlrmqVPJlngCRmJn-Jf(gC9kn(Gk+nyLsq-3y>qke|X#I3{T z(^K62E}nF0h`}EZ7iajFB9TU1=R+!VA90v3hckO)=)UGhQ98WNO++llP#_n40Sc7! z;t2p23oGjC3tZY%B1Ik?XJBm`QDEWGBYKrvC|Z4db*#x0_2v&}VQ8@IXCowZJ0s$Q zYn^}(iyhR0Nu05fFGNme6<&lkHpv4@AP9`c1nM6HbIlD5QHVF2EbwK1L0(%ju zdsJR5rip1up=zu&C#wUznXq`84n1V?3GzwE?w@jChMEbq_L9)`7)8k=(oV?=TtpN? z){Ob5-O5#$$%SVW5oT3C;4z=A#K#NoosVuZ4LldvECAwnj`{c7 z6b6nLtjJZAQuk`3!gPSbb@{}L+qp+{RgFuYS+wg#MQPP-N<^<{~og1)hxL|Sw{sY){8V{)O9 z*=^pfmqZ9>kbUlN8OX$Q8I}YX%<4ubzv5wJ%SNFe+paLj9%lhAo5bI~-&1ug^sM&>=nn}+ z;LyT&=R>N>g-BNp<&M%2{)7?Z2b6w%qD=IBA(c0<1O9Y#dP-_OF$*N=1?&wfZKr{l z`-V1}c1%WQsyNWr9$@BQ$%$MGs*J)BEH9+4RoyE2`XDNtn5tw^9G{<8hdfOmV}1SGV;=%WhH3mL^9S8P}37u#HYZwab9) zpfG$wv)Z&W&v+utNGiHb74oQ8a^yFtZUf(9=jaNkcli!p1qTQ3&K3{LF?+2!9*702 z`W(3C!1LN_VQD5R_&XfjGWdW7(mXCv4wy(>876}(RRreqNzO-vxtFkdxxB2Poh8l3 zMbsKb5X5~x?KJ+;QF2|bef-n%^>m`x&ppir{v_#|*&E?Wg>?9!- zUlxCSXzW2L^a%n9j4fQ%^uD+se%T*&XVkpCEYs4V<)~}fG4W5-_2EXmm<>?;(rz{L zdAN+3K$EyBHJ?WyTD8<_AC*7!Bo-C6`6?wf?kTh*`UwZ>=GN{rb_p1T>-B+tQ6`r1 zst>5lzt$5B5rePrA^EoO_E1c1J9*|_21e1c2UR`y%zxyKa^@mnBS%XTuKp}N4IS}; z2s+{K0=dFB{3(w!x2N@zZET-tIATh4)V5tU?P802QPX;EQJaxlMF*;*s4FWcM0DGl zJk&*@=`WbpGMb~zW^k6KmO@n@J)DG`NzOj(e>0KKMMvJmejk#@5QYV2ArYnrg&&wQ z^st>j5)Zh@AQ|!_Nlvykg5oqUvot4QCf3~P=7qp#8u=>xO2t71eJ1Kv?37zhU-}zj z(v4NpTTiPgge!qU29HaBd@>qmm!VbNFgUG-GrG)8IUEA|4R1QtE3*u6;ZHbg`IjP&4@5}q z6l;3AraZ;PFLG0)uC{8({O!jwwXu$4Z6PxCe7W#>f*lt{;+Ya zh)wrjg+j{PBnt ze_!!bP=Ee{FY1^kl%m@ti4a@EKvpRK$PZ0(@tP{T)kfi(bbjX=@yg-Qj)Ai@9>|>r zV*X{k4JRxQw$(1f+2qv?SL-!8=SHRuc?8jaGfozc=S5q*Wps(advO=mu%{XM7!_2T zex>OuwYdE;-!m&Bu4LBXLV?vUyylEBV>CrJp-45VUKNX0*SLV9=#KJfn6XAXSS<92WP@I{PEp{JqCYVg`JhZwWU^{Sq0=YUOjT`fKV(6@4)j z!&(q4geIdbZx@^8DS=|{6(xahRKybk+U{UNMO4{{YvUVimu7}j%$ISYJldJ4{iJoF zk5P*8J7?Uhy&K_Le1$Mlr)Gl80Be-B#DrK*4oM8{R;noi`{LW%Nrdn0lLoiQM`CIi zK9B>@Zv+U&pB;*K!h-G@Zg6*+v;8qS%B5FRQF;xm_bhI!sE>I#&9c5e5zpklAk zn`1#<57ak4cfulblU9p72j*H>Z}Z4wx-@i4q{PU1)~wTWw{RbMspANFgtk=1j%xp+$A! zs+{>xeYNpl#6{ICEdY}gvCiUlg1r?th>!Vp4oBE|1jsjizJ@E8yY+jm(@dkq}` z3WuuIZqP%i;f4m+WqPc#^f~Zp#Tq16xJ;i(nAyP);xiAU#hUa<_vexsMK_6O0%i_- z#>PMj=QpzdT`~fF|on{_`rGHf1iA9)-f5U#1)@|wMQV^%AnSv(F-r2#jL+EaFNxR}=Yk)?$2Q$XXgrRID_b8>b;K{b&UPG8hc zu1K;fBSuBb=&;fEsKOdOy3$8(cA}idWmEm`P`|wDugLZD7LG$(OlSU4SqnBz9Z9Hv z0AJhDL}1n@d&%fxa?V-`U}Wd#A?(toy2 zlqAGAv}-=~0s-h4qt~vxY4J%YWC;cO%(>=hn{Qq*-`b?OcF4|9L1EZ+Dz(`i)#PRxl*qURkq~{>v-)Tm+PjE&^`%Qn zkXZ?d{Aq{MAqC1gNBJA^RGe1)u#|pV|FSTdvPXfYY$DM+8LeRJ8PjUuzqI53#i3%A z028thP#`kU6>_d0PBXl`>+r?BS%zLOZ;?mxEld3Pn`d{c}cs?v^Rbax0=aof7*s z^(krl^KT}0w!N0`4-l~0U2kuXN#n}a!C!%uUiu&H7H4WNUWCNhnP`m*B0mS*0%lFR z=37YN81`0!c7HBRU4kmq^;^SAS&PRMw~ae@>_L^fX;=29bKY}(p8YBu!wm0vM4ppm zn8r6EjmX@CzIN)S{TfB%Ex+SsZ(63bJ(CIe4ng-8is_=aGp{?m-H{3G!_T?Q4e8@d zU3=P@7(11)X$b$b#0PI1|I{2qF>gf~de}XC@C6I{L=M3PntyVI1ZT_kyR7zuhBojV zmiI$ruQqTRn9;HXphF!Y@cN_$T?u$tyKb?A9^97UAy(p$|BbNCaUDPw(_h*EQ%cs~mAAQ+zItC^$+sEr4VUiSR}hGhC8W!B{+E|%-atm-<^7ab_SQc zQ~~hd0v7@|0=pDB@}(?ft`gOKAWM%WBiOY;lmC5^k(w^6Ya8gzo7TY4Q){N4RC6)_ z0d|W`6>4@95A;o5g1Ywjwe~DL?wve8X5wv$Vl}SOZEzs`M}T__2^HP6)aPh(oEpPfsXUK2q;F}An<%%(mAZFD9BJvW?2HuE*t44PKJ%3t5+NQOSxu*p8g8QY77 zPm$47iyq}IZ9j{dk!%Fb$RlnzJzkHdiODLhYcsn8e}4p*H`paE`8D`(EV+C{7b%yr z{znL5yxU4ovp!m_UX_D0$Oa3{(zjoSp5_0HmxKDva(b1y&%W z==~SMI3k~3XcNEzMOSy-;AOf{B*aACl3rPv3?d-1ub#ci@_OXJO80ijwrEiDYkeo9=n>gL~qI^}!H zEMY3w_YhN*+0!L{>opP0b+fgRd2{br#Dke~jwc9|3FvqP?G?wkOK9iWo6BcqshuGp z(1Lr*V?+Jy@P2LQD)X;{cw30c`$?bs5EJGIr#Ekt?$xv{J>MK$W$%{pg{fNVFeyHY z&L4Yrrgl2HR%TXFFfFEOtd+bIbJkbf_06^E^D5+UN2P_pECfDeX`zs0fM6!z2e7*K zKpNoXqr9W<%u$@vK2|0!6)?{Fsk=UOGCXE%w{F+DYxVaC{W-Z$C-Z9=Stw?o#LtGk z)w)gp3-0x#`*y@OTcvid9ljj3j-qR)fcL>Kr%_J_);@>@9aYPGX`D5GEnFB1kxf;1 zMd%O&?{dd{3?FwGiedd?vFCMYxyL-RrzTFlg#uVbzm`-)Y1ZDzp8toSTPGBb1uT9K zcV*e>yB)aXr+6PpBa8aIo&+&x=xlX39%>Q-+v3Z7COt!6t5Q?4Yb$rzfJO9esMEU=*`q(j+zt|5wHkUTvE| zn7i`Up!pA&xH%yOu@@v~%1YqMY~Zv#IDU#^ZZeTT4;=m*IRLd%S(+sp};WwE=eyoR3nI)q9PvU>}+?Dcu&x_7{Yxku7(tfi!3n z9aTJll+@0&G1KsV<_%Q$Ztg>bdpFoUA&Q+zV{BpV=$!KP4;6bwt9AYOY);EgO&wPa zaslCR?!eu$&OeWmCpTqV;ItLq56O%evEmUH&+VAOg8BctxhCVb)8CR z9x+VElj(~BZE;*%#>R`BTjZR}VZ$`8OCEbrNNz1mlZse^l&G`W+71;@*g7AGjtbNk zpK&!LQYz`lXPZZOag-m1R%3(&DIx$JWN4oC(O@JoZ70b$6kS6@S~}a)=?e#bt>GWL z`RZS8eq;0{;5b8u z5SL_YuT$%WepBPV7)cVW|2}B#-d+mNS1WJz%y*nv(5;rGsF{P_Q*N%jwY7k|Rt&9J zNtbwE=ET+iWD<}S-4Ne=CSb^gd}0ksU}bT4I?X`>;;vCQBY*e%S@V-GkVk{zu~sxG zi5yDYw>*i4-Vi#bUScmP{6Psk2s_deB5#ZBzB}GrC`>xa)5Cc3z68)r*|5QUB0#a_ z?-kojm(|gf1|`HrhsO^FKt(bnAo5Y8+Bl9XSJWU` z!ib%Ck%~;XK!YYZaQckFPTK80HDq!e?Pf(=7G=Rm1%ZNy{Y$6vDaqF(kr7~VPNNIr zezAE^;F@0h9ro$+*VDL7j%ww0GhCIuE!8&PsYBtctP>ssaUL8t+RT*AYjCU|dV~*- zub2s7p3>Yv0Fh(lBPEnV9g7{?D&%wU(K)iQ{ZrmG_u|LS2W~IyIvl9bWuL%W&nsRV zKWXcns8qryG#AZYf=EGxIEn(fHJGy@ZQgB0v>SfOiLaK8#B{@F1YMH04XnjCe4xsC zu0q~^<%(X~Dcn$ekKxYpq4esZ5Md>|D)t7d+B<`_R_!lv!cnFX*8`N?5+Ys;BX`Fh zV%c@nUlq#SAv_$WlJu^J@B54BMS-ugTZth7feV_gmte>bZLV!)_0$86e7~gYE;JmQ zVI0m)MtJddEj<=EPre$Ec0(Gp|JLY_H=!jh&1`| z3HdhH8ap6O9iM|JzWXdB82JztR=9As0TjBYDk$C1?lV+%PxcIhUZap)=;jp(nSgwL z#R3V=oZgzlDQb$kgd9G|b`!VLG1YR0{BFkMJ5NM~Z993})xibvw%}H4Lq8cZGV_wq z?`Cv+J2OuA-p|b4$?<;9TlmCuq;;0$J;{2N=z!GU^hmsG>Yz^k`arD0hm_RV713Rc zR1K;mvu_(vZ&nb~m8>6FT!eYtcH3nESb7Yi?7c-Drw$(t5JBBd2y489SGd7m&#cc zC(>u0ydbKIB*Q<>JC$0CzZ$0u6wCl8*MpUZhBGd(-!eUsV>P4@kSaAC$mjR2R1J=^ zv(omQ#cMNF9DS@BNk%CLve)V>yoq!UdTVOYIM9$uW)amDCA%`p=i9(F^aV&8h>khQ z%D<9S_Ia0mOZHG_^eet#ZX%)XRc@ryR+a+CD~3?v2Ji4ZOu0lIalTT(Q3@EeNz15& zpzo#4ylN;YgVyWL*iMSHePiD9I1szP;g0o`o?0g%noK$xl(Fp(9~BNRM+94k&}P`H zQvBO7TJ8_>_q*1Fi1WwhQ=_)T*P6?Hp~|Qt;d?xX7e1+?1itf%1aYKT9MKU$Yz7;9 ziT-%urrYJWQ7R(U88PTu-Gq%@qa(R@j%Pu$i-RrmeR`0iGs-dw2JTUrU5Ga;3C>=e z$gx?xzeWH2#d@d7%jt~!-D{yraE5^{N{n_3<^T%|@H6kFO1={7a_P1T+a4Yl`4v{n zI`<<%aXT4Z*?scYv5oE_JKOX%^m2Dx)yW1!bUhX5x4Dh5)3!Uvr$H9O?DyKWqpU!T zBNye5xzc7EGm7-T7HX0fj)lQ%RO0&(-DI*}@;m#l4;40lHa561!Bb0&rP8g`i_YHBINOWB%_t>0t$(VbjZY%W1(d zHs4IaqY}aUv}+Mnb70_+33~q)4Qrg8ZKf9Hh8^&%Zv&2!NMF}+5k;$fC>}{3z~63g zh0(7B(pYJ#Ne?^qW5b4ie~bF&DM@oFkC# zj^&jr#V2U|t7~Sjg2Uj8ciB%ciQVzCVXo^%6g6a4AH!hc6?&RBG}Nuz~4ex`k}E(E_WUm}#B<_v>=- z<{|mVCK>e>3OGf&Y39y-Gl#vgyrw*####4MZLC6M14*vmnUJ*}auFj@hNqyHDD>tt zIT>QZ%2LZ@+!s*1BK*(Q@2%#n+-F0@#4L<|te!h<(luSvz9j2BjX)H|8`u(|XCo~T zv_Y-1r{S0Rrl4mm@OttZxP1QIpTJ2LRnE#p=^Y%Qh5E3-d*NINvC7ND<<##31Bb=! z%pFGiWr19SaRZp+*E4w!|Ivc1qWG;h4U?Q#_Qb;p0hWkw3``EB-R1Qhu2ZnsCv*-$ zqCveq)qAh;{qDK64w{(wTQbRQ_OKX6CfF64ic-tO4`z??wU&=&wMU#gKYtY8c6GG9 zZZeY=@?){AkOf@S>$Y6}RGMhxi0B^*%G(r_9lO zZ3HIe-fF^lS3xLgENG=*D{*!bou1!HmSTvR(yGdgl$$@8#Y+)g>yNFwao%=(*XYl& zPsikZ-=rinef}XR>%)Fs`}y%?MN5Z3lC`Yu=8MbO<@Hxy#2%c%W;N=zr`meB>MTw! z7bcN&Qj6-?t;2?2*u1_cb}*@0a!Zog+=;Kr!IrKlpsC6c+H4#u>Y&14pW(_%_pu)E z1dXPkii7EXOShyR`K^@m5VWKFV`6gZDao!5wVTUXNi=J8BlN~`7c-99*N+u~nOSqQ zU3k?j?+jLrzn@A>I({!!Jp3+%Ore?%euye{uQRt1oEivyO|A^AJxNX)I+En{E`>9U z5edn15pK@nhqw?DB;SpX#|xZE%c%R=Wkc6;A{W$(TfQn1elBQh#K0r|yq2r)7WVTt zsi|uPvg_huz);rLAi*5rS2auaVx>-<``B^Ja}tjH30$#9VM;(@U{-G{1}pOy+%Hsx zlOaa5Q zf;B9a@qwy+i@!Y1J-epuVvJod%vvVY4v?%-&0KsPxaWRR4>*n4^Gzz+gPaF!M$un< zD^15gp!wS0I)t&H!`Y>@?jerZew=`lyIL&zvJN=--;%1_oQ_Y}N}1+2dm(}oJlGHE zPagB!s!KZ8Tu>MU-T3EX#1^dAWUvS1de59dNpX1qXv?gz3^B;Drrzyu6MYxIXr0Yo zHtCUI1IXt^IMvgkMf9EEr9PuE;e{=%+S)g4+>(k@hzIa6__Y5b)GH<8F*ltl96RNI z2k3fbkkx3_%uBk>hMaYXYR1S7=;$NsNk3S1*9fqbF{CRm#}(-n{$cVel#4u(K+$N? z|CNyUm2vQ<<}?r&RrH#ed$|Lb$r_1Xu3TiTNN|AWu%Od=PxXZLv@F`r!$VI-PCqPr z9;nr0!;lrrYqP|+1G0|;T6O#aX(}3dLfpx3r6{`4j z2YZ@r7Q)ed)b|zz8;=pGtDQH!4vO6}n!S*|+B6%)(Lhr#(T0hx=hsKPF;$a1p_Y2V z1|mrXWsUFg_KTjBUD7|7nIb73=34HjBcpMCg3`Jpitq=&a%M5nrJcJo&zXcA|9ByO zPlf2Yr$uxBl4?U=#pv0>%Hz*pHT1s}$AhXU$S~<)nimg_S#6zRf@P+3UlehK(jsZU z%zra#Ykxwcsd27?IGYy?s{?Wx)A5mU6$2;f$U73Q-gE3 zG_LM*t(SX}G6-*tjQBlP*8C1*cAR--yv&<9UT2LR$d_Sb&)UDIa-2{bdC39H*^eu7 znwYuX7bK5}An#Gp*K4(%P~RwKr9gS?c`7I7P(Kxs(Y$Hn+_b@3MJ@bhnr%uvGiKvA zg~b&NPB9;ssW|!V2QJtpz?Axqewf>*;L}owmVs9@F@irp*-d#m8^&6Yw$}VDS>kP} zRVpHzh3|uVQSCJWz(VNoX`*^t{{UCW(L{a**{?(s=%XP~0;ey?I>h7-{Oh9bdq|K; z@Dw00_~$76X1L0BlludIVCeNSG+?(K@hT_w8npqqA<;TVj1jp=xRQ=yeq!@i0o5q5 zH8|X@=RK0c-8gPqh0HMz`jT37*`c;=x-Gkn?j%6on6~L*b}i%wJd!4xNhWdKU^aWV zFsAy-_0L;O`BK$bQrJ7*$#P4#BpDfBAu4AF?r#{o(t+G<+5z>wqo#b^H&x8V5tl3;H<8FmVx`5OpNT{FbAf24muT2A(Mwx2 z9x_IoMq8S;sT;1Tgr)8C=@ypu)4OTr7}|;^0OBsa8uZWY#%<$RK2LDOZgA{{L)K^| z+Srn|p<5jh{#wrpt;F9kKR4RsE>pL_u?&I~Ethf_94bE%x+p_{&}qo9o%e0oQ(fBo zfBb%*ws(#8w_I+Ds)5>X*LuMK@-_T!j z{7Tz}S87;(F0B7%%bR|#=2+>fh~Au=h-Wb5W9-)r;C3VQ4h$c`Wsi=VM-4D}U-deo zW%t9fHsC0*OP6-|ML{Mt$S&f)hKH21gB<+tgcuQo`11BRU}|mZZXl)caj!Q{L4{4; z$&h1IXHApG(BStAXhzH4j=qe^DyV^IixXqvmM+8vJ}vaqO?h^v~wg0L_om}r6Z0RE8t!innebP1Uh zKDpD#nax^`m_7sNvZN7P%Et=Ips(nH>ZOV9#h3K)(5W5>1IWVZ!u_6|OrC$ZZ5~uNcyy(jft9-8`h$mm!U4z(-wYer0Jr@;dQQC^KYC^JS&% zd^o0@sU_Auh(QFM{`QE=BpUH1G-wCVTcX6SZpEff)5WQ@v zd?rc;&V|&eF6ebCsv2{X`EED0!|+^D2}e7odo_mI2Deyl@fN|QS$YG@&#HdJ9whVN zm6oOYzG?@X%uYJ1w0x1GLbAR$<|nZLnEYg&i13+x6!QmHERT*);5L7&9rVkR*w3A6 zr12FI8W1{xU3(=3ej5Qs+EJ-UoP8vsj(^9$IzWcb6*nWoZ7$Y1qJlp|r_@4`RETz~ z)8Qb#Ous#&q^$tP1Gl5CIajIceWs{|17!gkJFX8u$tRuBHuFVttRP|u zQUQMuCH;Jp5s8vN5x^vjIp*X=i6>y&f|&sM`bwITqZ zKcsX=FGyDGR6|pN;?2M^P-gDJh}R?tCg+hHT1=;D^;0X+T0|0$R61oB@T>pk69O}j zu0DyDxeJB@8|w|q@lWs%=;g7F@NTj!9km2NPp9lyJ|Bst1BMf%Ml}40IEi6Cc>$}) z=yVYPnx=rN@+*RQhk-$liUxG_P20y}KJ~at&1^fO*11g)X}N*k5S#Os;MCjtN)_f< z=9iG>nIzbr=^d$FnN2HIb${#}ApoY>7inN?lBt8%STF&eehvWZ3+tIIueZ7C3tou6Nku^mBp>B%5f)5g*M%=-U*p!&(X^V5)l}S@y!rJgIR9K$Obp8C8 z($jyiHP~cSQ27d^^a1_t2dP)f5lE7l+9`Z^K7}`k4yT)(F1*%J!=p>Avj;aH>&##z z`g?)jJ2Uvnw*1!m@5bhm61nKSyN(&1qLT4DH=5)4%MjNC-*#P>%n*YVuakonZKtEJ z#43CUt(}?>6y?YC@ofA40^?gG;)8r4J5zCcpXE5x^Row8CG~Fl`ks2TFg4ekg8rdE zkgR^IR~vdNI=0T2z%(|v^<%@VM98#@4XbQ}R2(;BrrM_{18&L#hf`pfZ!*vLT9SQ8 zL|0?08v^o67T4KBo=%sCk~`Mvy%qZ*k?LrvA#KxVn`B3Frdg$M~ZLS&?Aqm5)N z69MSVd!vgchjJYWf#P@qMTwx%uilqelv9UXt&#TmZF+kf55g*J8V?~zo)A4J4xU{) zA${x&`^S;;{h}Yc8!r=k8>Df==b@z^S&!$V{(QAEIC7uDVrtoag29}sxi=uH^l6-^rn0}A}##fePgF2}4 z1hO17FxDYK(La$`G=V5}@OwIUy>H&Ayl-F%z9SvsI`*Ll&!qB8dBP@k1w5us$Dsk- zWf2u0D~shVGIPK340z)u-^oF}{K)81C~S=_lBzC+-Gj}AS~*|krn$Z*kcAB?8G=vA zvMbms=_p)6X~K#F8aQbqwI{$WE;Ypv7SG^vb5dw^X|n%Zz{%W2C4D9YD5ne{cKhi_q(uxF7xojf3qf!esfoAvb|YS|lv z86F9ZJ0mg22|AH4smU6!P@RLH+SJo~9j0I%(r;8`qYb3p1UbJ={nwTZBE8=3f9?x| z`c$mhbgH9r!77NWCZ z?UV5VI8XIliF#yqh(V&HJ#Tr#5BvcpWN@h1Nv-hk#w6XYU(lIU**!Bu!qsw;$oKv{ z*jHHhU!0;DNqo?)Xz=T*^#t+F&MrzrNSENNXdGX2U8TT|;xYN7q@s*uDam>xk?pAH zBqXT1o!Tq3j|1=8pUwySFy2C6G6ZdG-<9&T4eMdlKVtLfTr3;{>c_@SEvKBvDzU$y z25FH76qbdsu8@02Dc85T8_5Q=I$OJS><4t>rQgeib@-Nw%G`2Kj?AZ^ z_6tCrdHnn&(A#DSY~J_JR@xGoZ21*pwD)6Hlj+^ia_T}~qb-A`i0aMaLFEpiT__C% zoecSbH$s?w7dbhBV&8E3Dq(vC%X9YmWe~>oM1}<1(8>y*VP+AYw@nX^8^9l}u&F5S z``{e-1kzK9+e71;r>X{=8Nf!**?4p0WWUf%HY2&;VxdZ}lb4=7Vor4i;kH zn%wOuBd94QavYnmq4GAqQQu$L5R-~A{jMF4erHG1CiC8#pM`O76)?KGMs7?3sr&KD zS=5xfcx83n5?sDmB;$Q~!(x4-do}rGIQwM_LY>t95oG?&F5T4c=R`x=(CBBTg}TJV zkf&%VNbs+vT49Ku!gcx|`L2r-U1%6;vl2EAnr>cNzIX*=m*8Qz zlUHX-J<#g+XNNS-ov|Nc^<@tUUN=%xdXlru^N$Q_YWgPNKobi|IE|tz=p4j(_oq2l zG`iq;RD;(U7HGtE?WO7kU6G}Ek8F#p0RBz-NsBW(qM=kI`f3id*MXJ^?$=2tE(jVk(b;??kOf}vJPmB|F-6g|&3`?UnxgXj340Pq(?H&Gt9W2K4j9K8 z`~nVFqttxtfa&4rbTqzl`QfD&bemZ}55ePj z$dMwVj_iK$8Uoy;03gLRrwu&}xg%TBO^1kC$4KR+qC$zRiGON%xqp07yYVzac;*+w z-NZNuYZYZ11$hH>?#klNO;jJ(Fe=hJ6y=#f9WBdG!JMsJz7=a2AwhML+CwRT?Q_^@ z>3f#@upku7vn)2BuUK%{N>%KNH?FQ$x~Wa1 zQEkA%w}t*)k2dKwQIhY6YVR+3hJd^LAE{?F!n5YZa9KTO3VMOe#vDk6^*pxh|S1N;?TUC^c#?mw{ zVz>iD&Rct8;I2U$(E)Wwxex8w8GJr996#HXWg9ORv^9DTPF-oUMZv7E_)6WD!8*tk zM@I%{Myi~vy#@xA_U|=7uGTw=pBgyFsW?)4>{2XIHkK<^vvxN%UZOmZIm6VIHyjIh#n@ejQtwQRQY>(sjgNee zRcG+Fh|2F8@XF^HmK!GGq{di}UflFORnVd0))fWG4^)-fgfNh+j zCIS;6x3dS|oTzl1y3c~Bk7B7Do_L_O|LYn0`m{fY_Q7^NE1p;koVhR{==I85d9;eO zxY%^M$NN=Dap$F)bbw(X#&nt*$R2hu+~twm;N61Iv;wHt!1Kw77`jggk4Q91$O&M; z`2&u23?U4lETSuoP?be!tx6NyZIXS*eIk8o6fLyA%m2`W?P&k06($^As%3SQw;_+C zjNEj^hMSpqrA(<~;Cts6P5uM1PR~|_${#5tz+d44nz%-c-J?TVHQeZUqfd<;QRO0l zHlzw0>wHn4ec9@}zv`|v9Y#Tgj|&S5a~u)Q+LhUA@@>x%QRYz!)wAZ^QwD+e}=~QA`?l>1(+Hw?S)FWeug8YjG9r)atp4gMbz=C9;rzCZY zCWyNUbqT2g=ljXnz97m)hRT$kFzp#E%^9;v?X|DlA((D|KR1&c2J{rGc{fXk&9;?g zfRJ+yH%ctPUiawv*pNf!;P3BBLL0H8Yge`?e9yTASJOp74C$?#o^@L|yqO!XO`c;Q zR-yK#s9%b5{oFGV(Kg+LuD+&nL>H`vp7k8*HwO{n3(0%ile+t>*7^Oixx6{`Cg~6r zUi*-NBt-ZJaWsmih1LtdCvlhPkIQB^QG1p4L-cHo@5PEwFpV=Vn}rz1e{o!pD8;Wq zLl8@TD=+T-rgO(`^N@!FxpXq1M`@0%ca-dsQmp!u8sp*V$S5Y{+_~!_k(hGMjbcQd zwTRyR7z#2<)E}OO|LIm zmlb1tdhRu9;hK&)0EA3h6R4O{NZ5Iv&%q|R^M=ZTrTV^7Ne3}TgLSuFzA_%&S3B2y z(@XuFam~Fhba%Q09Sud97QmD4jLGHfH7THII?TiVIneVdd~5b5-Wal$Z3d10U>Dfi z#cC$2b|3>_Kzj-$pe>{jMY=GIz9zw^gLsghv}Xa%xx^Lx`;k%(8&7vMC8?K*n3mP+Eh=Wx zO`Gk;n%dj3aLF1kf8?WA>%I~{!so4XYfR%_{YTO8sO2lUQs}-kXS^Q%FEoWNtC;J! z0ii*n{(}hf>`V>jH-w($I${~A04M307yp19S5voUaHs^&-_&m7VeAtl#x1YIKp!`KB{Nj54u&V{=iijr(Z_-jUAaNUwK1WOf39C2 zmRm94Dnl7RzPUdIU*Cj9*hnTn!+=%Va;4%|ftcuY$1*mLy`eGW{BM~W2g~qaU8G9U z-h8GHE`8mxR}imEhSZE=U~POyzO1IQG@WYg$hm)+_y{(G+K3|mOyXfwwQ|ZWruEH< zsbbRcQRVDz%C6t=WO?X|KMxLN?bwXfX59r#GKA8K#p;26oIN+;4vlV@{QIm4IMn0U zeNK@FK;{=v)^1+qSa6bFHR`Rx^%YQfmrbq(iQ_}VMDo9?MLwg#a@3;YJrFZ0EnLo$ z)YR?c;MC91l6l1{dMDMvv_6ZWwk-g^^{{@@&<})hl7AKGF>Adc8R@3)WA?*}eVv~t zD`SahakyQM70RQ68OU_{a|fb%GQA6BIfI7;=jVgVtQO0(hD(tg4n#G3%-yuW8zbzr zlPp9YO0Z-N10H$ih_&o5VP%q61qwk3H=3VNP9`C88;&evbE#9Dka~K?G$EB3#k>>9 zv?!YpX_d*c6hDVay%_F^1^YXMO?UHtcng2bGhD<`234tx-VVQXM9-a&oVf_dC+U1O z(YphLg=+Xl@;}p<rrMD zW@K;lVY)>{y!!+lnaA z^je=t>MN?Caar#XUG%tqCO&mzA;L^u>iqae{TQ0=@1ad)gUUEYu=cT$_!Q-HSSa)G zu?bK8#K)f21*|HP1egqWqF_Cxp^}J(E1WAaNOVg;uOxjWdWBZsy|SQLgJc@w0&JRP zn@&qye55hz&E8ZCnW{>8GmqjPijWZr^MoKJM{&4qqT*fGxNV<@B`}E`hpC3-$w3`i z%Yt6~mDG}L$e-M52g9-OiC*?B0L3B0Kxv&tycQOuUTp zg$PdZk>(&c5v)Gjdfwr?Hl6S^5a>`PUV~m9|7Z=C#WeJ}OcjETx6w%!lo0Dee&32l zwYC!?k+P}9#v+p*@8I4K77!a;;hgCZ_yW66V4x$GBpOG@SHsu+GPdY1Hi)Zq zY67RXgrD`g5K?(C;?G@xsao?Mt1hlDsIw*iQ`B+jJpF$KI3vg0#`o;n(NiuYUDA4C z&(i~vtRgDU^yWZkI#CY$CY)u07#XK z@*PN(>=~VJwX0&y8>AdWpZx8$|KGc zAF8gNtA!gQKmOSp$i0C)3c1ijVrv>@w!?*r3?8*lS(dBI2vwgss-WMdc_yumsPWbs zdIq4~U6s@zk;rT>aT?ukY*DbKlaX3_pR&9}lt=m+HPR%?+|ue<((W6wc96L_X&t_N z7;+gU_l>&MWc#lXFCe2WX9S;2so8?7F!B;k6#zC&hymP_;4Myj2H;LEu0uervwn6N z9$f$)TuMoZ%YIia7JeD}*+k5E5?>wO5NdKg0D5yKfgiD$und7J>6T-;_ermA;DzPd z|5e*=e+(gqa_o^C75D)aig09C>;hEHp@HuEg@5lC$qhrBV*UPoy@YfvC8FH3pd-vi z3L|_+>uG*+O&x*NiNKaEgGaA;Awro@vLQ5u)yD9m$9$*J(+en+i%1k6`{WOx5?sNCDp(Jo9f$58OC}99$P1!bsb(@(EX%>BHjPYj~48J@uN2~nBT2Px$TbQJNn$aDX+iN z1npbocD34m2n+OCBba7qKnUH8!SlL#zrSus$Pqvj460FASVwbCF;G;-asMAQ;Fq#M zLf#z}ub^;!ooQF6+CUV(fUpb0zfLaOJJIX!p_ntohnNS!zkotjYvG~2XypnZ{^OL3 zb5&k95|b$S!VEsS^X2tUbuO5VaHvF@gt)`Fw%Ybw4MYN_PNY z4yQ;`h2A@hkkET-*(y`0`#(m2Yoed6A9Kv!oONfDC>0ae!5FpME!=6)+`(1BNHE6? z%$PxQDJmUf{Oz8mOR5ngI67JckK1#515pJLdqqG%(FpbY!?wr52wJ}%6zwM~QP@#p zadbz@P@QfmyQtC#NUSRG6*jxTVz^ANG^ywSD=MUM!O^oVUx}llii)ZL6JB`VaCg?& zekZAM=ypG{LNEN%pPz`zo&434*PN_c&c{F=-9{vC>l4MprHecWs3jd0Hd%zAC~l?) zH$OJ8^aW9_4le3(Igm+v{>8vkkpGzpnwq zBUfy07g_7U9nnM?x*$ecpn0L!Yv2MD2@VkCjn{oASzc3;!h&ce$1GW9)-m(Q={BVK z^1wO%=Sv_>|Sly59sSF=`P+0*yP#l~mHXRK%oRpo;(kYrQ+tk;@DcC;Vu!$ZeKO*GG!Wed0Aa5>-pQ5t(z zqQu%kirUXh&HwtR(s(KoKxv0XvPQTODxh^QkHy04Et3o+!tMCYWs0nu|Ajc|SY?mZ zjF)a+PXZ{hK2S$*h4-Q3{3-;;6UK{){+7Q4*MIV)S`eQR8qVnj8Zo)B6q|wk*Ea*Y zIsZWmJGMzjZ z{pj#f!ShADt=02`$g~F?w73?}nhyo@XB}4?_D-vQgV&XTVxcoHlSv9xLJaB|xF8iY z9uy|4X!NtFPpcj~2FCz;yHT~bLN_OqDr(+lLMTR<%+OCnw;?t|sQCjbhL3tR!%%f> z0ld>WSm_y@5L)@4)%b=reK*YgtBxz(`i(&Yf55`)(5tlA&ESz~@G1Qn(8Vexp;MH= zX6wOh<12~z=>PT?#E2Z3bHA?{M`JdYm2X`GX<6kt1XAft#jp{?^B z@IgJr1`7#Y`ltiBADayBHqz*0u7H<-3;Je&>Ib~|nrO(blv6+uX>uVofI}tJrvlf~ zMr4J1j7+>1OZ6rN+q;i5F-C{dlv{A|op{zVi|)r&r0K@hE!wvCY@yZV zg!H{*3HJt~*=69Bu9PS@OaGx>cNgWc;>x@N&PC&N&18BTl!7ve#!!8W z91EQ{y(pQq`Z!b|Z9fpp|5*L4XRt?7xIS&tsn;oBk@rzcKEiY|ySpZKQ>xwynsJ{_ zqlv4%k52$D<)j#|d~Gj84`{&>A$1RW9SihP32dtJz}5vWbfE$N8wmjt)SKA~$ADsd zmxVC*Qn|jSwwPC<<)Ms8c5XF=?LP%Lt9>m7plAZ(x#$6{N9?!V?N#BB zH1KAJ)TZeC(|Gd|d4T4TuAD*+>tjfYmnR*d&do;RpwqCj)~W2+WB!5>LfP+JP3wdF z!c)j+9BBCqhvTV|NrOC=eiLKC6N*@6v+Z#-!g=SNJVLi#ug+{_QD>*T-F)s^Y_9t7 zbbZd0hvutWj3#;80#>swn_Kx?DBOz%e_2|< z2R4D_ke4n|p}Ys8%O8tc0|M2@yk81y(3{MLQQYNa%mMzrs&vg|L7v44<`%-thw{YK zVT&0HXYz-H5OZRgdP0~eWURZl3btMbGsv(6c;=J|eE{6 zY!#z4O8O-O?!&6a6G%TGU;-rJ)ECl1+weTjbngg{5%{-&omZh!Mn?$Q#8{{q?;dcn zhRz(^Ae$_4!|d#{YoO(3w!GuUdPOx%ECdr(h6gVA%^Nk*O)>=zTTW3mmx}Hw>9VAu zK=P5a#t5>va*uu*L&nl0;lxd`mvnLb5Z2z0xyo0{ARAGaU7=dGlMy5Y3EfXF z5v!ZSd@XG&(c)04j=%4`DvmYM0~W-4mj3ILC1Ao^zm^HRb-a^ zDXBX&&*xzl{GgCI33zAiRMrnpJ7)JAhi=5=4AqJo;6TT+xi2XcKQ6&nhKn=}rLlgV>cdf>)?d1MQEL1A z7GAs+@hm6*B#{It?@miDw}~WPJNn$5x9k3szlwY(rr)H(ryevAYKxOH z{rkm0eZ1#$+vY%l4&6l7VZvOd=e7#9ES)n|%hxyB#fk@doxKZw7(W?d)7p!EF{(G= z0h|oEN|=9;=yrtK5$fdI2dT;cS|IrjiBF^d1}$)Go;Y)gvTELhdV^$tN!sgxvf7L) zT_12?wYYeyMC!?Zo^}{)N;+IDfmZC_vjC!{m=hhS^Dw#3*pM}hiaDxb62#;hZ2f20 zEig8t8J+rbF!R$xZpzD;f7V8bQR4sSX{zRJTAx@F%sU=20F6PFpq)Ux@n~IYpD060 zOAm>9VZz~*kIE*ItD~j$nH~F#k3u>eA@kq0@0tqebGF{c3k)O|KgP*?XPF|fd|<9s0r{N)r?Xsul^(`?in?taA$$l>0ZYBTD*fBI@;LV}uzIDyFT zS!4bl?nnTi`D<;_^ch+DyS_bvsd{y>)A2eWobU?*sjyxELbz_@P-)E zlLg;PNxKCK8JR%JCvCTjzm8FHW^Gq*plLR7ej~Eo|GnafKvviL6*b0w+s~3qnzP?{ z%A43$#bI=dOQ%a6#J!YsZgta(GO0}hovpp(zQSD&6K*O<=@2Ysu~CgMlAA!%XJYqP zf>xy2HgRgyN+QD2aTJ;P-~{_kKhO>v#I9g%;$u6K-IvOjL9nDLWwer2M1+}3f@9L4 z(K)H1NO2i?q6`_P$d7Dnj=<%Fuo}ti-W?U4{uk$0FF6qDpH(oFkXHy53~#E*&@c;w zG*-)L%!8&mBXkmiIu^77LEUq;DH#|+m@)9&XvLb$F!3m5Qpg*VoPG_VDK1vGQOhh68<|`vQbHTW-vys?*F6+|{TjYx z`zw6eUoK5gjh&lvXx+RdwZ)N=Vw7QriEwt~j```$wBd`rgV?WvG-S3``0EcWhsJ01UkT#$iis$m$uNXRE(zxP! z*~JMsuXpMIA67?l6$sX;ae(`n{_Q3pks7bl$xaW|F?(!|)8H49^R}NP?6-9Ta3d4a zY8>6dejzs+m;`w3+B$+$}VT=P^@SZ46m`)~ME}{<8O5&uILvmM;H|-RY`1=_Xid*)_R^;V>SQ-m4m=DT4 zOam0m^?b7Jij|Ws>zN25MP@!*9i+T6)z2JMwx@dDUxWd#aM_cJsz!q7gn27_uoM)Woau7I&lDGrF;Tou!^3P!-(7&nrHt)-lEp=B>2oS&%!#wduPK zhoN?3|B`sda`W*fGGUY=4esP_dA5@dTCIL)oTCiJJ_D8J6;vqsc! zaxD>Y?4mu8SI`9caSd7t?#ek4fWI5F}n4i zvx%(5qoNHYC=`Gr}?(y z>Y6!+U}-H;Y&s`|gX!oRvqNGRGU{wV1cRt59?HAxqpn`Xb=8CLfFGU>C$267bh7A@ zI%Jtv+6;OZt2ycJLvgcETYk(!`TYc$BZ3v$rW>jLeFWZ zb7QV1tn#mkvy5|-`&&n#SxSn_R#=kejN?v;#o2w|$(|Y(WZ?G$A~Ski_x`OQ>C4}3 zyl)gDy#@qLu77}7^-_Y2aQ8^}Zh5?or;gJ1xG_u`Ag;L+4_`f*6nz22`Tpgl< zTsUyC!(avG#qT-PJ=+h?oL?Gf_o5QD>xCL|EC6_>`9t9mSUq1P9%EWJfXS7D*s%UT zw}*V7K%@=Af-PT70Vb=%s5_%$sxNmQ5Eq%{^>_YSBU5XJOMR~GjxjqE!M-y45^(%% z$sKy>I)~Ofy7E~ZV54T|86Cc~(Qe2NtZGI1T7-cutsZ)Sl~uh60VFfsJJ3$v+BEl}wqXx|xZ3w;=zAjP<9`8XS`^@X@ ze^=uvD%?v?g#0;ELE~b0&Q_nc>eNoY_-)wqbUEtwrni0omE4ZvA=T4uBN+sobZy@SF&Rcm=!N26T*d%=i>Z5ji?G9x_=Sv#ZUIHrr$v7^Q=j8B zOVW+XvzcqJG_L}&F^NeQzIzKS{lb8;m06>EQcz2o@3;8TMN6{ebb_J(L8?|DSMO4m zt#+d*6LG+b*p(+Et$g~d@DJ$w64~vFNs{y`Zl=DTe~Nr25oHQuz-fw|Y)|Ka%KSTAgOG7uggn+jTLBnU?LSNYqv zpYX*;m_HKn;gT8p7s{42do_ONy#s{Zi*+bA!A>}FXGHh>%9ZZZiFb<|zs<#)RU3nx z?!qvdG)O~t53NBIFHRm*4_sD>x~$F#)a9q6M?Q^;m4P7Xm@sbK;Sh-?x!Nlz9_ey# zC0gXdw~LR4LJ8yd-d)BDVFucep)<}gxM=eNeVakD!vkyL@RGnG`GN!__4Bisr=OZy zt0>p!VY-mOfCmybAt zRV0|30~K4sNHzh16kz%0iY%eo-Wem!lrK z-pK%A<5&d1uVUjyHE%4;H&m^uj#iZCKGRVOXp1C!000Uz8&On17% z36KCwX`8BSupsRnVO?ko?+88kjV^u~slZ3oRR92TtK)#;00000^t7yW01LfAe3AH6 zFe|E#c8?5v0G4^?Gdf}BhXLpeaP|}zs~Uli)|y+{m}@+(KopWWjl;tOBT)=saF<>V ze}_D_D@E@)Fn8=H{Md^W=>9%hy9|BSXPR0y{n#nIrKEPM{J@R^zuX94f|NI+Y&}sw0}!1 zfzH7VS^`Zt5@;vFqqn4RT3`(2$LJHhHOiOR#)}vE$6ve_8h82ZXQ`Vzs0nM<$Q}1} zila|;|1^G=ep+xxc-(d&EBt7P;<~A_g}OZH*o^G@o&yyjLOvTC`&$;q9)=Qs579H4 z0HQ(6XY$HF4duhrUxcIU_W{_A^kppI8Pwi$`teD-=cKz_sN%{DHQte>PKx+OC2i?V z8)w{rJN8p_@%iYsjJF>E6oL_SYm4XCgvk*#e7|uPafL2}WmVky;b;pcjP0zynF4E$ z9+fE}HO1=&iP{GR7W{CL=mz=#yhz7LnPWn(A{f=%oLq2?S3I;tO0pm0v?iL!lhwP<#iu3Z&JB^PKN@7=X>IZbBaCB)gQuw%@GIgh;jC+MjWQRFxtb z-F)&r%H+()UM>?{mK^iI087Y(Jtn4Y#mRq`^}6Ot^n{mcs)L7t!0XUMX_ z3~sxfeE*?N=dwr>*t%+NymI)0*4n?O8U93@De`7is0iD^P=R(Xbyts?3vByNxIq06 zkQ!>tBxEenAQwm}b(@zeaKNAnk8WLs1FndmOkevmLx$Xf6s(BEkpEMWZ(WW1id97q zN@kznBw+CR9XuuImE7iS{P7al zE*n*u_D{n=L6;eSVoU;;k}Jgb7U0l+AmdSxK*q>6pX`wMX$0O`LW4^bU=PM4;LHaR zG?zent#IaChobcwxUzX_`b{yaWDgmVS*i2)O(QRy$@b8fqa^YjJlp617#@`WN3$$T z(TmzC%A0)vXcjcogm*w_(7 zJ)22jNXj~g{|*c#kD1fFaP=sEJXmaG*UUXrkiZnnRM!d}S)`DwZf!gFH#&#W61MrG z-$(8yooT4~?1Pu=D$j3ZnKhMfDgXcs=}Z6s00007B2t9X9T_R}p2o$M?^n(=fsNHe zPRBLJP#ZB)oK`}w(8F;|k63EQRsRIXK{Y@T^^`^c)#m`j(zK1^L2mayb7-Li<%;Jm z7|X@MUkl@@SVChoFNh0I%Z&#H4mmKKD0Mxd4+lGZTM&M-$kh*C&S zq`ydO9_HDlRyu;vB8?@As%%Gz^s6!eswl#|C2uWRi> zW{-$Sn2Anc@kkaJ(v2}ALa|a`z+W7S5!9#I@eriQ-gFk6@rdWrH7q`~(T5)su zYGM_mT(CRJ*IIl3Y&O5ae{G*!4v`@on9)U-++wKPlg5;L9+}V7SgvJV5(W~B?qP$o z-8laULU7nb5GgC^(Gx#hn22PoP7n!&_36?zyz$RkhdQ#5DsklU=kQ)=a4L3y3Nsy# zwiDVv=9dfE6jsL6BIp1CIt0!h#p8SdqvDLPQI+m+>CONE9JRi!K?KzW)@s>CaVDfm z?1an^000~L+6jd(b#j{wetkZfz=L8UIaaqiM^}mwlNYKkzW%K z%*+zqRL`R^KUaDPyL-W(Mq+-uycyx(-E{eQON#}__)860xfvYnotGtaP^)L_(L$}C zuSE*Be!UbbCWlN%f((kHUI;QHRO1%Y9-Y$>l_MT#0Sf#eKD*OL2Rm=B`A7Vs8d_-J z=WX@hDF2j0OHCXc?b4BWlIy@DF$qc_FkBoVZx>R)n1FMjv!IKdl>eO7WtF`IT;!+x z=Bq5N=p$60(K+8unHcE0pcpe$WVV_FnrX00UjMIxT@~>$49vkTd;Y!&bXUa0GcyFf Lr$#U2J8u908!Mk_ diff --git a/community_images/memcached/official/dc_coverage.sh b/community_images/memcached/official/dc_coverage.sh deleted file mode 100755 index 3456e85b27..0000000000 --- a/community_images/memcached/official/dc_coverage.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") -echo "Json params for docker compose coverage = $JSON" - -SCRIPTPATH=$(jq -r '.image_script_dir' < "$JSON_PARAMS") - -# PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -"${SCRIPTPATH}"/mc_cli.sh 127.0.0.1 11211 "set test_key 0 60 10"$'\n'"0123456789" -"${SCRIPTPATH}"/mc_cli.sh 127.0.0.1 11211 "get test_key" -"${SCRIPTPATH}"/mc_cli.sh 127.0.0.1 11211 "replace test_key 0 100 11"$'\n'"Hello World" -"${SCRIPTPATH}"/mc_cli.sh 127.0.0.1 11211 "get test_key" -"${SCRIPTPATH}"/mc_cli.sh 127.0.0.1 11211 "delete test_key" -"${SCRIPTPATH}"/mc_cli.sh 127.0.0.1 11211 "stats" -"${SCRIPTPATH}"/mc_cli.sh 127.0.0.1 11211 "stats items" diff --git a/community_images/memcached/official/docker-compose.yml b/community_images/memcached/official/docker-compose.yml deleted file mode 100644 index 4af9f86aa1..0000000000 --- a/community_images/memcached/official/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: '2' - -services: - memcached: - image: ${MEMCACHED_IMAGE_REPOSITORY}:${MEMCACHED_IMAGE_TAG} - cap_add: - - SYS_PTRACE - ports: - - '11211:11211' diff --git a/community_images/memcached/official/image.yml b/community_images/memcached/official/image.yml deleted file mode 100644 index 0083e9293a..0000000000 --- a/community_images/memcached/official/image.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: memcached-official -official_name: Memcached Official -official_website: http://memcached.org/ -source_image_provider: The Docker Community -source_image_repo: docker.io/library/memcached -source_image_repo_link: https://hub.docker.com/_/memcached -source_image_readme: https://github.com/docker-library/memcached#readme -rf_docker_link: rapidfort/memcached-official -image_workflow_name: memcached_official -github_location: memcached/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmemcached -usage_instructions: | - # Docker - $ docker run --name memcached rapidfort/memcached:latest -what_is_text: | - Memcached is an high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`1.6.17`, `1.6`, `1`, `latest`, `1.6.17-bullseye`, `1.6-bullseye`, `1-bullseye`, `bullseye` (Dockerfile)](https://github.com/docker-library/memcached/blob/1c39f318e3a5c1b06e4c9b0d4b870c9223b26428/debian/Dockerfile)" - - "[`1.6.17-alpine`, `1.6-alpine`, `1-alpine`, `alpine`, `1.6.17-alpine3.16`, `1.6-alpine3.16`, `1-alpine3.16`, `alpine3.16` (Dockerfile)](https://github.com/docker-library/memcached/blob/1c39f318e3a5c1b06e4c9b0d4b870c9223b26428/alpine/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - memcached: - input_base_tag: "1.6*bullseye" - output_repo: memcached-official - - memcached: - input_base_tag: "1.6*alpine" - output_repo: memcached-official -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - memcached-official: - repository: "MEMCACHED_IMAGE_REPOSITORY" - tag: "MEMCACHED_IMAGE_TAG" diff --git a/community_images/memcached/official/mc_cli.sh b/community_images/memcached/official/mc_cli.sh deleted file mode 100755 index 87d6728db7..0000000000 --- a/community_images/memcached/official/mc_cli.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env expect - -set env(HOME) /usr/local/bin -set env(SHELL) /bin/bash -set env(TERM) xterm -set timeout 3 - -# Destination IP address -set HOST [lindex ${argv} 0] - -# Destination Port -set PORT [lindex ${argv} 1] - -# Memcached commands -set COMMAND [lindex ${argv} 2] - -# Usage instructions if no arguments supplied. -if { ${argc} < 1 } { - send_user "Usage: ${argv0} \[command\]\n" - send_user "e.g. ${argv0} 127.0.0.1 11211 \"stats settings\"\n" - send_user " ${argv0} 127.0.0.1 11211 \"set key_name 0 60 10\"$'\\n'\"0123456789\"\n" - send_user " ${argv0} 127.0.0.1 11211 \"get key_name\"\n\n" - exit 1 -} - -if { - [info exists PORT] - && "${PORT}" == "" -} { - set PORT "11211" -} - -if { - [info exists COMMAND] - && "${COMMAND}" == "" -} { - set COMMAND "stats" -} - -log_user 0 -spawn telnet ${HOST} ${PORT} -expect { - default { - send_user "ERROR: Unable to connect to ${HOST} ${PORT}\n" - exit 1 - } - "'^]'." { - log_user 1 - send "${COMMAND}\n" - expect { - -re "(?:DELETED|END|ERROR|NOT_FOUND|STORED|VERSION \[0-9\]+\.\[0-9\]+\.\[0-9\]+)" { - send "quit\n" - } - } - expect eof - } -} diff --git a/community_images/microsoft-sql-server-2019/ironbank/README.md b/community_images/microsoft-sql-server-2019/ironbank/README.md deleted file mode 100755 index b108cefc7d..0000000000 --- a/community_images/microsoft-sql-server-2019/ironbank/README.md +++ /dev/null @@ -1,140 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Microsoft SQL Server 2019 - -RapidFort’s container optimization process hardened this Microsoft SQL Server 2019 container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Microsoft SQL Server 2019][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Microsoft SQL Server 2019? - -> Microsoft SQL Server is a relational database management system developed by Microsoft. As a database server, it is a software product with the primary function of storing and retrieving data as requested by other software applications—which may run either on the same computer or on another computer across a network. - - -[Overview of Microsoft SQL Server 2019](https://www.microsoft.com/en-in/sql-server) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Microsoft SQL Server 2019 image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Using docker run: -$ docker run -d -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" --name my-mssql-server -p 1433:1433 rapidfort/microsoft-sql-server-2019-ib:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Microsoft SQL Server 2019][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One Microsoft SQL Server 2019][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/microsoft-sql-server-2019-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`latest` (Dockerfile)](https://repo1.dso.mil/dsop/microsoft/microsoft/microsoft-sql-server-2019-rhel8/-/blob/development/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=microsoft-sql-server-2019-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fmicrosoft%2Fmicrosoft%2Fmicrosoft-sql-server-2019-rhel8?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=microsoft-sql-server-2019-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fmicrosoft%2Fmicrosoft%2Fmicrosoft-sql-server-2019-rhel8?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=microsoft-sql-server-2019-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fmicrosoft%2Fmicrosoft%2Fmicrosoft-sql-server-2019-rhel8?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=microsoft-sql-server-2019-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fmicrosoft%2Fmicrosoft%2Fmicrosoft-sql-server-2019-rhel8?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=microsoft-sql-server-2019-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fmicrosoft%2Fmicrosoft%2Fmicrosoft-sql-server-2019-rhel8?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=microsoft-sql-server-2019-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/microsoft-sql-server-2019-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/microsoft-sql-server-2019-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/microsoft-sql-server-2019/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/microsoft-sql-server-2019/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/microsoft%2Fmicrosoft%2Fmicrosoft-sql-server-2019-rhel8 -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/microsoft-sql-server-2019-ib diff --git a/community_images/microsoft-sql-server-2019/ironbank/assets/cve_reduction.webp b/community_images/microsoft-sql-server-2019/ironbank/assets/cve_reduction.webp deleted file mode 100644 index 45eb3c961df7e86b22962a223daced8264894caa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1832 zcmb`Fdpy%?7{K4T&a7HtQAjA)uqkILxlBYdDO4_{v7KBt&1xYjDymada?QOI4%Wq7 zvg7EaIvv+sXG@LD(uL$QmvMeOefsE+&gcAdp7--S@ArM)=lML(dvSMiaL|$mz-zmm zo2MIY9|8cN1!*1(SOegM$GfRYK}#T|DzP$V0EANLGE`HNtg%m*3gh+l3Egxbc_t7cK(%+#r<)7Fva} z2=8x=F6J)2#lM_Y3(8T4&Pjy^8H9j9paq-&1rUJ=L|9-3Fu(%(F0>T66Wr2!>^iVpz^xWYPv9q3_r>k<%JJsZY3nqw z?W;evPEBt^1&;f$D;h~Lwd0Q#5*vSNsvBq5FQmmdF2w(SdG?UzOjCWNPC#VN&HO{U zxl13Vu#iutuR5Amht=vOTXJKKSr_0{eolA9xgk^KZw>O|EUE))3OiY8Q^6|7%-W9d z4owsOcw;-KG;tIAB3qxXIGP~WT3cWxY9C;lASmMFve>Z9SycRGeM~`1#D*-=c(%g_ zKYdZz(2&!He7m=Uu5nUNkJK)SAED{R8d?8Yy3;w3Ii%oeQ!ZMP6?pM(ZoX%*5kWYm z+KrP!U+kQ2c}t&w$@5n+&YuSJVk#<0rLe~dy&N&tX*OENU$ae-fn+pU?RcW^Uw*7D z7+r-_bZnea(+px3hQEl6#7S2o9Gi42H0V_3iSXd?{)Ecm47G!W@LYpN9|kYQE!H`L zVESyHue2~!7L_B9P%zY8H{a1@+Krx%#`t=-Q4COSd$@6t&Za#ioq?c`Gg%7VLA9{p z#>xA~+XvO8ytzfZ+o(~x(p}*~L=1am1}DpP-O?s9El5tQVaHgdy-yYQvePNAh&?3Z z$M~&DEiVZ!))k>eCLSq{t_@%8Sn&Dx(Pa_IUSpag%etcs?2A+`_{{Zvq06Zh`iNJ4 zUaM$^Tu%5ad&Otf{Fd@Fw~(p4><7&zoQ%C zxIa=%M^%xj{02Rx2|>iQEtg{~NQ9Y}X~R*kMvUMGjWLnx81J)fF(=8X+h=W8t(xfe zGv_$8k6P&l-O_xaq6^Px%BV^2Z{}zmXFc$KN@*^Wedxf)iqpaR620Bq4^Y%g>D4U3 zO0{0H7w&}jNJNw zW?JgpLW&x`xK2oLBPxlryqXh26+KrG#&d(UHG3jZEM7(tqXwzzcDm?Y?LkrNjvAF!6s0zx+;_UIEtroM5iQ*VaNc~{}F1m7=a zYv)rEu{kbl%)@>?f3~fyRr7S2r=OwAVB1bHeXERa`fe;ux$9c!A<=WDY@%p(ly+@@ z{Iq6|q0OG*oJ~7zo=>5EHnfG?hN-=-t?{@cdoCgec?vfv9PH(4_UJfIz4O5pU%9H) zXBExpW=)*JNOLd`QNpAxc^){2^p`az2tFgxvV*e;mU43cETg|qc_#SM6}x*2vOAqW z?5Y%xKAyo0`~Nm(ED&t=uSo1<37x3aHS21OukgCQY+ze-P&@s|u^9PUR`Ih~{^OPt x{25%yxsT?#h`N&QyY{q?CsZtg()zL*i`G@n*`qY1M0ohx+oTVfvk7Pb{suV5#{vKV diff --git a/community_images/microsoft-sql-server-2019/ironbank/assets/metrics.webp b/community_images/microsoft-sql-server-2019/ironbank/assets/metrics.webp deleted file mode 100644 index 565397d7f26d15fa4ccac7085c40ffed69370d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26472 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 diff --git a/community_images/microsoft-sql-server-2019/ironbank/dc_coverage.sh b/community_images/microsoft-sql-server-2019/ironbank/dc_coverage.sh deleted file mode 100755 index 9b656681b4..0000000000 --- a/community_images/microsoft-sql-server-2019/ironbank/dc_coverage.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -CONTAINER_NAME="${PROJECT_NAME}"-microsoft-sql-server-1 - -# Running tests -docker cp "${SCRIPTPATH}"/tests/azure_ib.ms_sql "${CONTAINER_NAME}":/tmp/test1.ms_sql -docker exec -i "${CONTAINER_NAME}" /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'DevPass123!' -i "./tmp/test1.ms_sql" - -# Running backup functionality test -docker cp "${SCRIPTPATH}"/tests/azure_ib_bak.ms_sql "${CONTAINER_NAME}":/tmp/test2.ms_sql -docker exec -i "${CONTAINER_NAME}" /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'DevPass123!' -i "./tmp/test2.ms_sql" \ No newline at end of file diff --git a/community_images/microsoft-sql-server-2019/ironbank/docker-compose.yml b/community_images/microsoft-sql-server-2019/ironbank/docker-compose.yml deleted file mode 100755 index 3667a4eb9b..0000000000 --- a/community_images/microsoft-sql-server-2019/ironbank/docker-compose.yml +++ /dev/null @@ -1,13 +0,0 @@ -version: '2' - -services: - microsoft-sql-server: - image: ${SQL_SERVER_REPOSITORY}:${SQL_SERVER_TAG} - environment: - - "ACCEPT_EULA=Y" - - "MSSQL_SA_PASSWORD=DevPass123!" - - "MSSQL_PID=Developer" - cap_add: - - SYS_PTRACE - ports: - - "1433:1433" \ No newline at end of file diff --git a/community_images/microsoft-sql-server-2019/ironbank/image.yml b/community_images/microsoft-sql-server-2019/ironbank/image.yml deleted file mode 100755 index 1a62e55bd7..0000000000 --- a/community_images/microsoft-sql-server-2019/ironbank/image.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: microsoft-sql-server-2019-ib -official_name: Microsoft SQL Server 2019 -official_website: https://www.microsoft.com/en-in/sql-server -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/microsoft/microsoft/microsoft-sql-server-2019-rhel8 -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/microsoft%2Fmicrosoft%2Fmicrosoft-sql-server-2019-rhel8 -source_image_readme: https://repo1.dso.mil/dsop/microsoft/microsoft/microsoft-sql-server-2019-rhel8/-/blob/development/README.md -rf_docker_link: rapidfort/microsoft-sql-server-2019-ib -image_workflow_name: microsoft-sql-server-2019_ironbank -github_location: microsoft-sql-server-2019/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fmicrosoft%2Fmicrosoft%2Fmicrosoft-sql-server-2019-rhel8 -usage_instructions: | - # Using docker run: - $ docker run -d -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" --name my-mssql-server -p 1433:1433 rapidfort/microsoft-sql-server-2019-ib:latest -what_is_text: | - Microsoft SQL Server is a relational database management system developed by Microsoft. As a database server, it is a software product with the primary function of storing and retrieving data as requested by other software applications—which may run either on the same computer or on another computer across a network. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`latest` (Dockerfile)](https://repo1.dso.mil/dsop/microsoft/microsoft/microsoft-sql-server-2019-rhel8/-/blob/development/Dockerfile)" -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - microsoft/microsoft/microsoft-sql-server-2019-rhel8: - input_base_tag: "2019-CU*-rhel-8" - output_repo: microsoft-sql-server-2019-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - wait_time_sec: 120 - tls_certs: - generate: true - out_dir: certs - image_keys: - microsoft-sql-server-2019-ib: - repository: "SQL_SERVER_REPOSITORY" - tag: "SQL_SERVER_TAG" diff --git a/community_images/microsoft-sql-server-2019/ironbank/tests/azure_ib.ms_sql b/community_images/microsoft-sql-server-2019/ironbank/tests/azure_ib.ms_sql deleted file mode 100644 index acc1ca8fe8..0000000000 --- a/community_images/microsoft-sql-server-2019/ironbank/tests/azure_ib.ms_sql +++ /dev/null @@ -1,271 +0,0 @@ -select @@VERSION -GO - -CREATE DATABASE TestDB; -SELECT Name from sys.databases; -GO - -USE TestDB; -GO - --- Create -CREATE TABLE employees ( - name VARCHAR(50), - id INT PRIMARY KEY, - email VARCHAR(50), - phone_number VARCHAR(20), - hire_date DATE, - salary INT -); - -CREATE TABLE employees_updates ( - name VARCHAR(50), - id INT PRIMARY KEY, - email VARCHAR(50), - phone_number VARCHAR(20), - hire_date DATE, - salary INT -); - -CREATE TABLE departments ( - id INT PRIMARY KEY, - name VARCHAR(50), - location VARCHAR(50) -); - -CREATE TABLE employee_department ( - employee_id INT, - department_id INT, - PRIMARY KEY (employee_id, department_id), - FOREIGN KEY (employee_id) REFERENCES employees(id), - FOREIGN KEY (department_id) REFERENCES departments(id) -); -GO - --- Insert -INSERT INTO employees (name, id, email, phone_number, hire_date, salary) -VALUES ('John Doe', 1, 'john.doe@gmail.com', '555-1234', '2020-01-01', 50000), - ('Jane Smith', 2, 'jane.smith@gmail.com', '555-5678', '2020-02-01', 60000), - ('Bob Johnson', 3, 'bob.johnson@gmail.com', '555-9012', '2020-03-01', 70000); - -INSERT INTO employees_updates (name, id, email, phone_number, hire_date, salary) -VALUES('Linda', 7, 'Linda.summer@gmail.com', '555-9753', '2021-02-01', 60000); - --- Select -SELECT * FROM employees; - --- Update -UPDATE employees SET salary = 55000 WHERE name = 'John Doe'; - --- Delete -DELETE FROM employees WHERE name = 'Bob Johnson'; - --- Merge -MERGE employees AS target -USING employees_updates AS source -ON (target.id = source.id) -WHEN MATCHED THEN - UPDATE SET target.name = source.name, - target.salary = source.salary, - target.email = source.email -WHEN NOT MATCHED BY TARGET THEN - INSERT (id, name, salary, email) - VALUES (source.id, source.name, source.salary, source.email); - --- Select -SELECT name, email, salary INTO new_employees FROM employees; -SELECT TOP 2 * FROM employees ORDER BY salary DESC; - --- Bulk insert --- BULK INSERT employees FROM 'C:\data\employees.csv' WITH (FORMAT = 'CSV'); - --- Group by -SELECT hire_date, COUNT(*) AS num_employees FROM employees GROUP BY hire_date; - --- Join -SELECT e.name AS employee_name, d.name AS department_name -FROM employees e -INNER JOIN employee_department ed ON e.id = ed.employee_id -INNER JOIN departments d ON ed.department_id = d.id - --- Truncate -TRUNCATE TABLE employees; -GO - --- Alter -ALTER TABLE employees ADD address VARCHAR(100); - --- Drop -ALTER TABLE employees DROP COLUMN address; - --- Create index -CREATE INDEX idx_email ON employees (email); - --- Alter index -ALTER INDEX idx_email ON employees REBUILD; - --- Drop index -DROP INDEX idx_email ON employees; -GO - --- Create view (should be first query in batch) -CREATE VIEW high_paid_employees AS -SELECT name, salary FROM employees WHERE salary > 50000; -GO - --- Alter view (should be first query in batch) -ALTER VIEW high_paid_employees AS -SELECT name, email, salary FROM employees WHERE salary > 50000; - --- Drop view -DROP VIEW high_paid_employees; -GO - --- Create procedure -CREATE PROCEDURE get_employee_info (@id INT) -AS -SELECT name, salary FROM employees WHERE id = @id; -GO - --- Alter procedure (must be in a single query batch) -ALTER PROCEDURE get_employee_info (@id INT) -AS -SELECT name, email, salary FROM employees WHERE id = @id; -GO - --- Drop procedure -DROP PROCEDURE get_employee_info; - --- Create function -CREATE FUNCTION get_employee_age (@hire_date DATE) -RETURNS INT -AS -BEGIN - DECLARE @age INT - SET @age = DATEDIFF(YEAR, @hire_date, GETDATE()) - RETURN @age -END; -GO - -SET STATISTICS TIME ON --- Alter function (must be in a single query batch) -ALTER FUNCTION get_employee_age (@hire_date DATE, @phone_number VARCHAR(20)) -RETURNS INT -AS -BEGIN - DECLARE @age INT - SET @age = DATEDIFF(YEAR, @hire_date, GETDATE()) - RETURN @age -END; -GO - --- Drop function -DROP FUNCTION get_employee_age; - --- Create trigger -CREATE TRIGGER update_hire_date -ON employees -AFTER UPDATE -AS -BEGIN - IF UPDATE(name) - BEGIN - UPDATE employees SET hire_date = GETDATE() WHERE id IN (SELECT id FROM inserted) - END -END; -GO - --- Alter trigger (must be in a single query batch) -ALTER TRIGGER update_hire_date -ON employees -AFTER UPDATE -AS -BEGIN - IF UPDATE(name) OR UPDATE(email) - BEGIN - UPDATE employees SET hire_date = GETDATE() WHERE id IN (SELECT id FROM inserted) - END -END; -GO - --- Grant permissions -CREATE LOGIN new_user WITH PASSWORD = 'Rapidfort123!'; -CREATE USER new_user FOR LOGIN new_user; -GRANT SELECT ON employees TO new_user; - --- Revoke permission -REVOKE SELECT ON employees FROM new_user; - --- Deny permission -DENY INSERT ON employees TO new_user; -DROP USER new_user -GO - --- Start transaction -BEGIN TRANSACTION; - -INSERT INTO employees (name, id, email, phone_number, hire_date, salary) -VALUES ('John Snow', 1001, 'john.show@gmail.com', '555-1234', '2022-01-01', 50000); - --- Save transaction -SAVE TRANSACTION Savepoint1; - -UPDATE employees SET phone_number = '555-5678' WHERE id = 1001; - --- Commit transaction -COMMIT TRANSACTION; - --- Start transaction -BEGIN TRANSACTION; - -INSERT INTO employees (name, id, email, phone_number, hire_date, salary) -VALUES ('Jane Smith', 1002, 'jane.smith@gmail.com', '555-9876', '2022-02-01', 60000); - --- Rollback transaction -ROLLBACK TRANSACTION Savepoint1; -GO - --- Some DQL queries -SELECT name, salary -FROM employees -WHERE salary > 50000 -ORDER BY salary DESC; - -SELECT TOP 5 name, salary -FROM employees -ORDER BY salary DESC; - -SELECT hire_date, AVG(salary) as avg_salary -FROM employees -GROUP BY hire_date -HAVING AVG(salary) > 40000; - -SELECT hire_date, COUNT(*) as num_employees -FROM employees -GROUP BY hire_date -ORDER BY hire_date ASC; - -SELECT DISTINCT hire_date -FROM employees -WHERE hire_date IS NOT NULL; -GO - --- Some System functions -SELECT name, hire_date, YEAR(hire_date) AS hire_year -FROM employees; - -UPDATE employees -SET salary = 75000 -WHERE YEAR(hire_date) = 2022; - -DELETE FROM employees -WHERE salary > 100000; - -SELECT TOP 2 name, salary -FROM employees -ORDER BY salary DESC; - -SELECT 'Hello, ' + USER_NAME() + '! Today is ' + CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 101); -SELECT OBJECT_ID('employees'); -SELECT CURRENT_TIMESTAMP, DATEPART(YEAR, CURRENT_TIMESTAMP), DATEPART(MONTH, CURRENT_TIMESTAMP); -GO diff --git a/community_images/microsoft-sql-server-2019/ironbank/tests/azure_ib_bak.ms_sql b/community_images/microsoft-sql-server-2019/ironbank/tests/azure_ib_bak.ms_sql deleted file mode 100644 index 8711058424..0000000000 --- a/community_images/microsoft-sql-server-2019/ironbank/tests/azure_ib_bak.ms_sql +++ /dev/null @@ -1,22 +0,0 @@ --- Backup database, delete then restore -USE master; -GO -BACKUP DATABASE TestDB -TO DISK = N'/var/opt/mssql/data/TestDB.bak' -WITH NOFORMAT, NOINIT, -NAME = N'TestDB-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10; -GO - -USE master; -GO -RESTORE DATABASE TestDB -FROM DISK = N'/var/opt/mssql/data/TestDB.bak' WITH FILE = 1, NOUNLOAD, STATS = 5; -GO - -EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'TestDB' -GO - -USE master; -GO -DROP DATABASE TestDB; -GO \ No newline at end of file diff --git a/community_images/mongodb/bitnami/.rfignore b/community_images/mongodb/bitnami/.rfignore deleted file mode 100644 index f12caf96d1..0000000000 --- a/community_images/mongodb/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/licenses -opt/bitnami/mongodb/licenses -usr/share/common-licenses diff --git a/community_images/mongodb/bitnami/README.md b/community_images/mongodb/bitnami/README.md deleted file mode 100644 index c91cc16833..0000000000 --- a/community_images/mongodb/bitnami/README.md +++ /dev/null @@ -1,144 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for MongoDB® - -RapidFort’s container optimization process hardened this MongoDB® container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami MongoDB®][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is MongoDB®? - -> MongoDB® is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemata. MongoDB is developed by MongoDB Inc., and is published under a combination of the Server Side Public License and the Apache License. - - -[Overview of MongoDB®](https://www.mongodb.com/) - -Disclaimer: The respective trademarks mentioned in the offering are owned by the respective companies. We do not provide a commercial license for any of these products. This listing has an open-source license. MongoDB(R) is run and maintained by MongoDB, which is a completely separate project from RapidFort. - - -## How do I use this hardened MongoDB® image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install mongodb, just replace repository with RapidFort registry -$ helm install my-mongodb bitnami/mongodb --set image.repository=rapidfort/mongodb - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami MongoDB®][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami MongoDB®][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/mongodb][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`7.0`, `7.0-debian-11`, `7.0.4`, `7.0.4-debian-11-r` (7.0/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/mongodb/7.0/debian-11/Dockerfile) -* [`6.0`, `6.0-debian-11`, `6.0.12`, `6.0.12-debian-11-r` (6.0/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/mongodb/6.0/debian-11/Dockerfile) -* [`5.0`, `5.0-debian-11`, `5.0.23`, `5.0.23-debian-11-r` (5.0/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/mongodb/5.0/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=mongodb&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmongodb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmongodb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmongodb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmongodb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmongodb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/mongodb?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/mongodb?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mongodb/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mongodb/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/mongodb -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/mongodb diff --git a/community_images/mongodb/bitnami/assets/cve_reduction.webp b/community_images/mongodb/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 3e5fc5ba5a3af36ab7181a022c3dd317f9b8c321..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1822 zcmb`FX;jlk5WpwI$f-pILC%0ER5=0&1w7&-5=2yNA_9sifrKIuAPGw42y%#&DrgOu zM$m`{EkdlpP~}#EDB^`k<%}RwuvG5Qgron|=fe;7^-E{p%>H(E_RY-hl01mS<;nm) zZmzrb>~iu|0{|?dd=%gTJP3qcx=P3rlynt#0S+L7&SH?<_@F3;f;$l25D^}u$fXcP#Trz)HyN3I5j6lNkiZ>W5&mCg{yrlw z0XR(nptI+F6fQtn8h~!wywB_+z!#|iq9;*-jKF`2S%6q28Vz9d8o(kyfMrhs)b@QW zbpGu8Tl`C}SmcZW(q|+xLLeNdfCUerLl9UaWCu8~1xMt^V1Gk$4zGkf)S64E&9EuL zF~|M#N>dYyaSz|5MHy6jXTZqKKEhPx@Ct0@t2%Z~oJD(rtY{ED(L9On@_J@H=6+E* zr$H#%Qs(bc!+dXMH9_53yR$Xnpy1B~gOxj3i^i*`1yOTvs+;kWiMDaQ8OB<*xlCob zOdEb4O0&(c@3XHjz51qF$7Yl%)o%?rwbQh|Sbm6;68n=(GvjH1?}VB-Tj|y^RYSV) zX3jXHI>ljoxLeI$pR24l z6b~Q2+!@Uoa?+10Y_+t^obKExUZ;I>9A>9Ib&Q(^iPOvZWm~$hc(!8%Zyf8R*%GU` zvZet$dO^{w+WDA@@@QTd<*!LkXK6oKm6!6uRyKg<5Q#^Ty;>&FmeN%VpWobVGuli@54UJtO%M?w zxB9*7CQvo3@UGw3@HX6_=}h1r)%4KWgZMcNFNZ2S=dvT>LWi5Y=cs)$rec_r$V^sd z3LDjVhgDOLNtj2g?$Cw=!&xKkIXX=dueDZF%x<&`RqQsr$4B~~NINiTHPqdJ;k}2ys@T>MoxJ2)>3YN))yDgo{}!^vaYpw8DhclW>!5~#~kSNGWvZxIrZ)`6AfwT zKJClH&x!GWrth*0{^RZ{m!`=txi0vF=TciSxc%;?_P&@)bFnq#IIz>Nr^@D%)DyYp zk2C4yD+Nv^=Gl$4drPMV`bafrt6Ht}LT=gVO1EQ{M0I@^5MJq=@3$?_ZEosx#3F09 zDR2FY{$uMdbl>sf%SBmRnunTBw+Q?QDJr8@$BK8{_UqOaj(p?Hz~@UewkvsB==iW@ zYPV==b>}jE7opsfeFu`$fBZoZgQ4KVxWsAyUXzVHewTbSA#1Ml-CE1lS}FVF51RTffeep48sIH2flI5G`Zh_SxP{%|m><0)VRe30`B<&eYx9Rx=QD%o ztZz%SSSflodU7R}!6uKt49$va$kDfT+W}nbo}>px zBeg*_zNucmpS8dFX&6@Aj9w;v}{ z_qLcyQyo1Ih)5KJufM%EzAy~i%ViFFu}d%uSZdnNs+rOi{M#Kb2^-E%qfS#@Wcicl zmsXv2y#90zs{eZNQJ03EEKVf5x6Us;);1$nfZp9FFdnGm8WzA(74zr>$)2sui;MdY hEj@HkKy4Kt&gL%c$y^d5m3Xv`$4Op27`v7P@HY*8yUYLp diff --git a/community_images/mongodb/bitnami/assets/metrics.webp b/community_images/mongodb/bitnami/assets/metrics.webp deleted file mode 100644 index 203b4db9fae883b8bbca41fc720d622500a2b45c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27954 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 el4Xi#k0>M>f8 diff --git a/community_images/mongodb/bitnami/client.yml.base b/community_images/mongodb/bitnami/client.yml.base deleted file mode 100644 index ca7379e421..0000000000 --- a/community_images/mongodb/bitnami/client.yml.base +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - labels: - run: mongodb-release-client - name: mongodb-release-client -spec: - containers: - - command: - - /bin/bash - - -c - - sleep infinity - env: - - name: MONGODB_ROOT_PASSWORD - value: ${MONGODB_ROOT_PASSWORD} - name: mongodb-release-client - image: ${IMAGE_REPOSITORY}:${TAG} - securityContext: - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] diff --git a/community_images/mongodb/bitnami/dc_coverage.sh b/community_images/mongodb/bitnami/dc_coverage.sh deleted file mode 100755 index f7d879da68..0000000000 --- a/community_images/mongodb/bitnami/dc_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" \ No newline at end of file diff --git a/community_images/mongodb/bitnami/docker-compose.yml b/community_images/mongodb/bitnami/docker-compose.yml deleted file mode 100644 index 054fc72e5e..0000000000 --- a/community_images/mongodb/bitnami/docker-compose.yml +++ /dev/null @@ -1,44 +0,0 @@ -version: '2' - -services: - mongodb-primary: - image: ${MONGODB_IMAGE_REPOSITORY}:${MONGODB_IMAGE_TAG} - environment: - - MONGODB_ADVERTISED_HOSTNAME=mongodb-primary - - MONGODB_REPLICA_SET_MODE=primary - - MONGODB_ROOT_PASSWORD=password123 - - MONGODB_REPLICA_SET_KEY=replicasetkey123 - volumes: - - 'mongodb_master_data:/bitnami/mongodb' - cap_add: - - SYS_PTRACE - - mongodb-secondary: - image: ${MONGODB_IMAGE_REPOSITORY}:${MONGODB_IMAGE_TAG} - depends_on: - - mongodb-primary - environment: - - MONGODB_ADVERTISED_HOSTNAME=mongodb-secondary - - MONGODB_REPLICA_SET_MODE=secondary - - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary - - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123 - - MONGODB_REPLICA_SET_KEY=replicasetkey123 - cap_add: - - SYS_PTRACE - - mongodb-arbiter: - image: ${MONGODB_IMAGE_REPOSITORY}:${MONGODB_IMAGE_TAG} - depends_on: - - mongodb-primary - environment: - - MONGODB_ADVERTISED_HOSTNAME=mongodb-arbiter - - MONGODB_REPLICA_SET_MODE=arbiter - - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary - - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123 - - MONGODB_REPLICA_SET_KEY=replicasetkey123 - cap_add: - - SYS_PTRACE - -volumes: - mongodb_master_data: - driver: local \ No newline at end of file diff --git a/community_images/mongodb/bitnami/docker-compose.yml.base b/community_images/mongodb/bitnami/docker-compose.yml.base deleted file mode 100644 index fa2109de2e..0000000000 --- a/community_images/mongodb/bitnami/docker-compose.yml.base +++ /dev/null @@ -1,44 +0,0 @@ -version: '2' - -services: - mongodb-primary: - image: @IMAGE - environment: - - MONGODB_ADVERTISED_HOSTNAME=mongodb-primary - - MONGODB_REPLICA_SET_MODE=primary - - MONGODB_ROOT_PASSWORD=password123 - - MONGODB_REPLICA_SET_KEY=replicasetkey123 - volumes: - - 'mongodb_master_data:/bitnami/mongodb' - cap_add: - - SYS_PTRACE - - mongodb-secondary: - image: @IMAGE - depends_on: - - mongodb-primary - environment: - - MONGODB_ADVERTISED_HOSTNAME=mongodb-secondary - - MONGODB_REPLICA_SET_MODE=secondary - - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary - - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123 - - MONGODB_REPLICA_SET_KEY=replicasetkey123 - cap_add: - - SYS_PTRACE - - mongodb-arbiter: - image: @IMAGE - depends_on: - - mongodb-primary - environment: - - MONGODB_ADVERTISED_HOSTNAME=mongodb-arbiter - - MONGODB_REPLICA_SET_MODE=arbiter - - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary - - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123 - - MONGODB_REPLICA_SET_KEY=replicasetkey123 - cap_add: - - SYS_PTRACE - -volumes: - mongodb_master_data: - driver: local \ No newline at end of file diff --git a/community_images/mongodb/bitnami/docker_coverage.sh b/community_images/mongodb/bitnami/docker_coverage.sh deleted file mode 100755 index 78f1290bd6..0000000000 --- a/community_images/mongodb/bitnami/docker_coverage.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/mongo_helpers.sh - -JSON_PARAMS="$1" -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -CONTAINER_NAME=$(jq -r '.image_tag_details.mongodb.container_name' < "$JSON_PARAMS") -MONGODB_ROOT_PASSWORD=password123 - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -# get docker host ip -MONGODB_HOST=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Networks[\"${NAMESPACE}\"].IPAddress") - -# run tests -run_mongodb_test "$MONGODB_HOST" "$MONGODB_ROOT_PASSWORD" "${NAMESPACE}" \ No newline at end of file diff --git a/community_images/mongodb/bitnami/image.yml b/community_images/mongodb/bitnami/image.yml deleted file mode 100644 index cb94b243a3..0000000000 --- a/community_images/mongodb/bitnami/image.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: mongodb -official_name: MongoDB® -official_website: https://www.mongodb.com/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/mongodb -source_image_repo_link: https://hub.docker.com/r/bitnami/mongodb -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/mongodb/README.md -rf_docker_link: rapidfort/mongodb -image_workflow_name: mongodb_bitnami -github_location: mongodb/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmongodb -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install mongodb, just replace repository with RapidFort registry - $ helm install my-mongodb bitnami/mongodb --set image.repository=rapidfort/mongodb -what_is_text: | - MongoDB® is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemata. MongoDB is developed by MongoDB Inc., and is published under a combination of the Server Side Public License and the Apache License. -disclaimer: | - Disclaimer: The respective trademarks mentioned in the offering are owned by the respective companies. We do not provide a commercial license for any of these products. This listing has an open-source license. MongoDB(R) is run and maintained by MongoDB, which is a completely separate project from RapidFort. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - mongodb: - input_base_tag: "7.0.2-debian-11-r" - - mongodb: - input_base_tag: "6.0.11-debian-11-r" - - mongodb: - input_base_tag: "5.0.21-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: mongodb - image_keys: - mongodb: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - mongodb: - repository: "MONGODB_IMAGE_REPOSITORY" - tag: "MONGODB_IMAGE_TAG" - - type: docker - script: docker_coverage.sh - mongodb: - environment: - MONGODB_ROOT_PASSWORD: password123 diff --git a/community_images/mongodb/bitnami/k8s_coverage.sh b/community_images/mongodb/bitnami/k8s_coverage.sh deleted file mode 100755 index 8cfb8050e4..0000000000 --- a/community_images/mongodb/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/mongo_helpers.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for k8s coverage = $JSON" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") -IMAGE_REPOSITORY=$(jq -r '.image_tag_details.mongodb.repo_path' < "$JSON_PARAMS") -TAG=$(jq -r '.image_tag_details.mongodb.tag' < "$JSON_PARAMS") - -# get pod name -POD_NAME=$(kubectl -n "${NAMESPACE}" get pods -l app.kubernetes.io/name=mongodb -o jsonpath="{.items[0].metadata.name}") -# copy mongodb_coverage.sh into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/../../common/tests/mongodb_coverage.sh "${POD_NAME}":/tmp/mongodb_coverage.sh - -# run mongodb_coverage on cluster -kubectl -n "${NAMESPACE}" exec -i "${POD_NAME}" -- /bin/bash -c "/tmp/mongodb_coverage.sh" - -# get mongodb password -MONGODB_ROOT_PASSWORD=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath="{.data.mongodb-root-password}" | base64 --decode) -# create MongoDB client -MONGODB_ROOT_PASSWORD="${MONGODB_ROOT_PASSWORD}" \ - IMAGE_REPOSITORY="${IMAGE_REPOSITORY}" \ - TAG="${TAG}" envsubst < "${SCRIPTPATH}"/client.yml.base | kubectl -n "${NAMESPACE}" apply -f - - -# wait for mongodb client to be ready -kubectl wait pods mongodb-release-client -n "${NAMESPACE}" --for=condition=ready --timeout=10m - -# copy test.mongo into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/../../common/tests/test.mongo mongodb-release-client:/tmp/test.mongo - -# run script -kubectl -n "${NAMESPACE}" exec -i mongodb-release-client \ - -- /bin/bash -c "mongosh admin --host ${RELEASE_NAME} \ - --authenticationDatabase admin -u root -p ${MONGODB_ROOT_PASSWORD} --file /tmp/test.mongo" - -# delete client container -kubectl -n "${NAMESPACE}" delete pod mongodb-release-client - -# run MongoDB tests -k8s_perf_runner "${NAMESPACE}" INSERT "${RELEASE_NAME}" "${MONGODB_ROOT_PASSWORD}" -k8s_perf_runner "${NAMESPACE}" UPDATE_MANY "${RELEASE_NAME}" "${MONGODB_ROOT_PASSWORD}" -k8s_perf_runner "${NAMESPACE}" ITERATE_MANY "${RELEASE_NAME}" "${MONGODB_ROOT_PASSWORD}" -k8s_perf_runner "${NAMESPACE}" DELETE_MANY "${RELEASE_NAME}" "${MONGODB_ROOT_PASSWORD}" diff --git a/community_images/mongodb/bitnami/mongo_helpers.sh b/community_images/mongodb/bitnami/mongo_helpers.sh deleted file mode 100644 index 2ae3684ae9..0000000000 --- a/community_images/mongodb/bitnami/mongo_helpers.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - -set -x -set -e - -k8s_perf_runner() -{ - NAMESPACE=$1 - OPERATION=$2 - HELM_RELEASE=$3 - MONGODB_ROOT_PASSWORD=$4 - - kubectl run -n "${NAMESPACE}" mongodb-perf \ - --rm -i --restart='Never' \ - --env="MONGODB_OPERATION=${OPERATION}" \ - --env="MONGODB_HOST=${HELM_RELEASE}" \ - --env="MONGODB_ROOT_PASSWORD=${MONGODB_ROOT_PASSWORD}" \ - --image rapidfort/mongodb-perfomance-test:latest -} - -run_mongodb_test_op() -{ - MONGODB_HOST=$1 - MONGODB_ROOT_PASSWORD=$2 - DOCKER_NETWORK=$3 - OPERATION=$4 - - docker run --rm -i --network="${DOCKER_NETWORK}" \ - -e "MONGODB_OPERATION=${OPERATION}" \ - -e "MONGODB_HOST=${MONGODB_HOST}" \ - -e "MONGODB_ROOT_PASSWORD=${MONGODB_ROOT_PASSWORD}" \ - rapidfort/mongodb-perfomance-test:latest -} - -run_mongodb_test() -{ - MONGODB_HOST=$1 - MONGODB_ROOT_PASSWORD=$2 - DOCKER_NETWORK=$3 - - run_mongodb_test_op "${MONGODB_HOST}" "${MONGODB_ROOT_PASSWORD}" "${DOCKER_NETWORK}" INSERT - run_mongodb_test_op "${MONGODB_HOST}" "${MONGODB_ROOT_PASSWORD}" "${DOCKER_NETWORK}" UPDATE_MANY - run_mongodb_test_op "${MONGODB_HOST}" "${MONGODB_ROOT_PASSWORD}" "${DOCKER_NETWORK}" ITERATE_MANY - run_mongodb_test_op "${MONGODB_HOST}" "${MONGODB_ROOT_PASSWORD}" "${DOCKER_NETWORK}" DELETE_MANY -} \ No newline at end of file diff --git a/community_images/mongodb/bitnami/overrides.yml b/community_images/mongodb/bitnami/overrides.yml deleted file mode 100644 index be3de698d5..0000000000 --- a/community_images/mongodb/bitnami/overrides.yml +++ /dev/null @@ -1,38 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -arbiter: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -hidden: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 \ No newline at end of file diff --git a/community_images/mongodb/bitnami/perf_test/Dockerfile b/community_images/mongodb/bitnami/perf_test/Dockerfile deleted file mode 100644 index 384186980b..0000000000 --- a/community_images/mongodb/bitnami/perf_test/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM openjdk:11 - -RUN git clone https://github.com/idealo/mongodb-performance-test.git - -WORKDIR /mongodb-performance-test/latest-version - -ADD ./entrypoint.sh /entrypoint.sh - -CMD ["/entrypoint.sh"] \ No newline at end of file diff --git a/community_images/mongodb/bitnami/perf_test/build_docker.sh b/community_images/mongodb/bitnami/perf_test/build_docker.sh deleted file mode 100755 index 849b3690a6..0000000000 --- a/community_images/mongodb/bitnami/perf_test/build_docker.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" -RAPIDFORT_ACCOUNT="${RAPIDFORT_ACCOUNT:-rapidfort}" - -TAG=$(git ls-remote https://github.com/idealo/mongodb-performance-test.git HEAD | awk '{ print $1}') - -IMAGE_TAG="$RAPIDFORT_ACCOUNT"/mongodb-perfomance-test:"${TAG}" - -docker build -t "${IMAGE_TAG}" "${SCRIPTPATH}" -docker push "${IMAGE_TAG}" -docker tag "${IMAGE_TAG}" "$RAPIDFORT_ACCOUNT"/mongodb-perfomance-test:latest -docker push "$RAPIDFORT_ACCOUNT"/mongodb-perfomance-test:latest diff --git a/community_images/mongodb/bitnami/perf_test/entrypoint.sh b/community_images/mongodb/bitnami/perf_test/entrypoint.sh deleted file mode 100755 index ef890ee7d3..0000000000 --- a/community_images/mongodb/bitnami/perf_test/entrypoint.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -set -x -set -e - -if [[ -z "$MONGODB_HOST" ]]; then - echo "Must provide MONGODB_HOST in environment" 1>&2 - exit 1 -fi - -if [[ -z "$MONGODB_ROOT_PASSWORD" ]]; then - echo "Must provide MONGODB_ROOT_PASSWORD in environment" 1>&2 - exit 1 -fi - -MONGODB_OPERATION="${MONGODB_OPERATION:-INSERT}" -MONGODB_PORT="${MONGODB_PORT:-27017}" -MONGODB_USER="${MONGODB_USER:-root}" -MONGODB_AUTHDB="${MONGODB_AUTHDB:-admin}" -DURATION="${DURATION:-30}" - -java -jar /mongodb-performance-test/latest-version/mongodb-performance-test.jar \ - -m "${MONGODB_OPERATION}" -o 1000000 -t 100 -db test -c perf -port "${MONGODB_PORT}" \ - -h "${MONGODB_HOST}" -u "${MONGODB_USER}" -p "${MONGODB_ROOT_PASSWORD}" -adb "${MONGODB_AUTHDB}" -d "${DURATION}" diff --git a/community_images/mongodb/ironbank/README.md b/community_images/mongodb/ironbank/README.md deleted file mode 100644 index 6084d27ef0..0000000000 --- a/community_images/mongodb/ironbank/README.md +++ /dev/null @@ -1,138 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for MongoDB® IronBank - -RapidFort’s container optimization process hardened this MongoDB® IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One MongoDB® IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is MongoDB® IronBank? - -> MongoDB® is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemata. MongoDB is developed by MongoDB Inc., and is published under a combination of the Server Side Public License and the Apache License. - - -[Overview of MongoDB® IronBank](https://www.mongodb.com/) - -Disclaimer: The respective trademarks mentioned in the offering are owned by the respective companies. We do not provide a commercial license for any of these products. This listing has an open-source license. MongoDB(R) is run and maintained by MongoDB, which is a completely separate project from RapidFort. - - -## How do I use this hardened MongoDB® IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run --name some-mongodb -d rapidfort/mongodb-ib:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One MongoDB® IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One MongoDB® IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/mongodb-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=mongodb-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmongodb%2Fmongodb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmongodb%2Fmongodb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmongodb%2Fmongodb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmongodb%2Fmongodb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmongodb%2Fmongodb?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/mongodb-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/mongodb-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mongodb/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mongodb/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fmongodb%2Fmongodb -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/mongodb-ib diff --git a/community_images/mongodb/ironbank/assets/cve_reduction.webp b/community_images/mongodb/ironbank/assets/cve_reduction.webp deleted file mode 100644 index f148825754e8bf3b4609802f6aab269bf3cbe997..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1692 zcmb`Hdpy)x6u{4DOl4S)Nn~s$wUSap#v?Y0JPJ)CqB85zG+TL0B99`nMk5<3kv7ek zL~W*;R+MS65+byeOk?v{v8gDAjK*(&vwiyLkM^_w?75$F?)RR1?&qBQ_*|Nsv-4>j zz_tzRsXkO|Uljl#p~}O6J%F2|BUM)k9fFds!eYq)p<$5`G?(=xU%%}nh3}ID1|ML3 z;xF_Vfbl1QT7WjwFUcat`feWlh`G1v} z^9(Nlu$BVM%AD~9odqaM0nioC_?B=1)PDfD)xrvl2>hoQENYc@?*@2R1fb>zKxhR} z+3~5+nYA-_@h^KNp=8+o*cu7Zr`1qIijN` z-!|8*IXV9{7oxG4MCW3+o`k}mr= zy4oFBX{l)1(hHk@CzXrzUD4^%{j;qyD?%9qUX!#mpAE$^ z^SlBFlM)2=MujQ)1s=5pk>jg5!VU*0|3xph^%)`9Wr9PK8ukWXJ}Bj?X1UB9$- zORJ-0W+#3v3{ORuw-+JPMi;V_iY0?K6^n0B4w601yvhc2w#;qSLP#o-qJuZ3xCNa-T-l=B%k_f$1w7pBL>{p_O?b;=r! zdkoAUMqItaaqBxJ%|@z-^b={TuE)%`b*uiiaD!bb;r;j86pgC^ES%vtTpkkWf>d+t zmK020`GaI+jQw4RWtQ`H)C_O4sC>UqO}WOZPbiU_K8|aX-$txNd;2ruv%vj35givd z*m%F*pEI6^IoG(PEp0L3*uDO*BpI8C%LjYpyo!CJ?hi`0>$$(jWy&bxjCNw&r$}PpHp+4dL&N7 z``)UEfq&ujop-HA$IWtt%agM)bBCzrXQVCqeyuIJP4f9|g%RvFYxw^u!aZ z=2{GTTDIehmBK@@f`$bv>;uOnWX*)@4U`Dijyf@q%6!l($Zjh8sW!Qz+q0zbc&+hh Lr=gxQ`u+S3B$j+g diff --git a/community_images/mongodb/ironbank/assets/metrics.webp b/community_images/mongodb/ironbank/assets/metrics.webp deleted file mode 100644 index 4033336a023554735914b8933dfe810ea6478384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27212 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≀G`4_5yNgqzs*N5GpZ%*o(Z(Gfr(y&ff40)8TbA6li>pxx zi@jd7?mlTvJr_gS0wT-|BT%x(iWgs{TnMsntJwW``I=(v)|6guz7-3nMf8=;t?%J4InYg^{moGI{*&j~ay8h|G;#|AIaz z^0rCi!TzWF;qc}p5NZ`)t8*dqS0n7i3?q^O=og4MsY|F@%Tq-`1N%M(HM;?(O$;_&XTgO04ToMWNdkAAgsE`a`w_{&JcO7e?qeGjt zUylV{P}IxOZWm6M{eZzcZHqRyJbm8I@&QOw)udF-IFI=17)X4Sl5k4N$synoPZyTs zK0ZG@$$jv=yxC|@tFP*Po-x?nfjX(aX| zui*>S2N!Pig%46D>}-4iHN^c^wc?es;>7JJm9SBhjNbdnA@!<7RYJ4eeAzY_7Gm*7EX23-Ob#D%iR3uz>yspdp!ElGzznHD5_zeVt^ z`%_hCNp-=LgILb;&$Lo)<<1U65M|Nq;^=5X`3fOA1$OIsBi~E@m?kV)tYZ#ei0jth}Xv* zPATHQw5@7VvQXN5o+Z;P!_`6YaP>(=z*m=D7KsWVeRx0=_)1#_Q2AO?-4ph9x!8Ux z)m5P+RFdQ{ADP`CNRpDGMYQtku>CZlE#Dq*BKGbsqXyv&Dsgm?pDQ+lGpIR_oO=HK z*PB7eRvo|Dm+zBLq*0|js!M_f2dB8Fw)urUn zTr?WAV66nIi29QzS?Q7%EsqAzw}Mt5j7(~Ja~#&U$qFHVV3cVl{#(y3iMmMTjJf&6 z3ed@9LfMFwIz4MHRAC31kP(m^r1*JtX#9JBpQN@HKh-oBFe@J_}WZQ^)D09MQcnc27S?Fs#{W99ChBYNM>%{AQ0@ zpKR3UJHYvgQCBTnls$XQ6tJ<|Qnd#GRcS{Z! zQH51h=cedQ!wBH%1MG}t?mbDF7Dv5*VBD>ZT5!lb=9%fPNo82L3W+1>^0~6m!BX^V zYT{ixmMIYX<7w6GOeQ|WIbaoz%2>(V;G{g#=6poOS?Vphm&ZOZil?0;P@>}?5ErFV zj^LI$*2zkvh+vlBWK+^v?Wv8YSfNK7;HLX z_O;s&)C_mDE+PhQLb304pKNp5_TQJB=4PQsn$3#MKL#qY6N)01><#-BatQbQ{1?+LoGsT%6?v_lUR=T3j`)|U2n2}>`4LCL z_37*v!oZr8p5b9HxYH*)0a&bd=2=zsA`{cJz#SQW@!z6fVRilcKHNUjmt1zD)KfDd zth(@wjRCkL_;MqD1FW!~e5zyBt6~iB13eq0Ude}36uY<07;a^!eHm)48*I}zX-p(#?Z`~pG# zDO(i=U!>Vs|j(^>m@St~HSYnwPh*9&ri|g=F7P;i$fiZ$AsmCBUS0)5iC!h?1 zb;8DbC%va-TZF&3<_$Zj-$G%Nx6iI%YJKbW21JCpIwnvA5B5;m$|w-oL0&_r2snR# zeXAljO?b}aO5VCAMMy#I_UEc`AYD;xE5D4BW4OWr*ZuMl(>f;NTV&=E+lLf4M)}Ou z-Ure$Kk%P8+fqRgc=+YY;>1e_@Lmh8y4=k)(eVB58VN>gp-_Tu00yoxok^@_BPM$i zEpVtk{Z+K!#?lvWgIqKpnCyI0X}#N^jAg+dEwqKO(^EDW)z3seoKu1JMCmWH?Or;n zfRHHp^0#1UG1lBDRlyeQ{%a>1P`tIa&(z`HmXuPhy1`?=@Z^?4$oAt$TU(b?_@Ya| zZX!R<^ij%>Elnudvsdu<(`wVRIQ%7D_VWDFh=J>&j&(4AD4s3h-?{Ih#Tp!_g)7?b z#<2Aq5O&>PSJA~uVKwhY4XGg|fM15jF5wh@4l4b@*`3243T_@8O%Fnt(QV~6Hl!5F zQ!1;))dsRC9`R}?g~ob5ligGkaeE~4hzYO)Td|lqCTt+*%dyz1z9`6)ENgz@bCxdpgHJlrL~ikhV&2>Q;rQVh#mymq{W(@nRRhgD^8>dX zx9fqHk&{HT=GEho5!^MEzQzggCw-Lp>Sds@tq5Mk)~dA17khRwLBuPOm;y1t>mW*1 zYb^mCYQfg>^!%%z@($$7H7Or9@`y+u>W5lC)eSXQs~|erfFJlx=rJL_YdKSIIg;2& znTcbOn*U9*+0*NI@0tT6QWA}q8-BnjEH4T{9w{`h)-&Z1ajZpYzb?}?dgjCvGub9M zGsoT}FNSgd$Je#_t@s1u>+2uwGK0JibcNl3PcZ?IsoQF`o zI_Y}#IdixN_iyJmNaKGs(8YY+7-~q!VN^bN+RX=RRybxAZCj>UQ&SMF@@Ph2h-{l_ zudo+~*XxBJf1+QtT^=9f=z7vUqF!i&OyNE++c3>r@fVVkf3*sPbc6I+kC@2nuP>42 z7atz6fswO|tykS)fbH_0Ad?mXJ^lKO-jg&FyYeiHFnyMYk+K>0OM0&7>5igj*))y$ zn({DR&)#GvloNJ?d;vykpLon4XN$}LP)vx_L{#Md`l1#+I7?X)D5e_isypht{4@ql zMq|_ITCgG)DX)ew>)%aD7g*2)FDgx+d(w|QdBHXtDZOlmy>v(Kz#o$iuz~|#@t%@RnLU<8(3yf3qY* zVal;@paz^+x?@C469#p$kVI(Qn=+qJJLFauRTIJhS)AYf6bh(r!0AR^HVRx2lnJ|t zxi!si;0W7E1LXVDyy*_r>@I{Yz+&mMQDI`ZD8?ANzsZvgK3_z@S8_^g04BH&lZMDt zrFMfb|HRt8tV0Hb!Rx|$1QlD_s87dA(E~9<@P-4m_7bAIS7T!1jn56deM+50#*9lY zHyo)>Ny<~^8bI ziw-EL&+b8SpJvnN=rI6507IKh{36<-FVEhTQ@f5J!WOZs&Vfk)OK5PgMQqI|IN@zH zVAYgk@QsIQ#wUM4)%M8+_tU3Zh0p^w=(V6)eQ&&O^C!AU-DlU@FLHS})Xz34VDgp1 z>pGcPlP7mm*|g9qKaIS5hLVQM0#mRJq3NGZDj`3ce6?rPd^a$~wAhw?smQ~OD1i6p3Exz?5{72mmY|fKvbOSV@Uq<1BZY`aYk&E8mNe;x?BOu^QEX9(R@n_ygQ7U|UXM^n zXaan=@EoqHunrLe7eaSDDDw!HUwxrYj|bGyf;c=|uHR3P$19ZGH$}$y8EJagQ#q%D z;)Wjj;CMaOqw3P&=IPdifZyx6#zzX}?Ah%My81LUltDpHbm7F@i~!8%lo6Gx`UDVvqmE;%wmVd-hkv`7Hg7ZO-0#_9 zCk;Bzt?+@Cm>Bhn2%v)vplNNKVhhv(5E01VAu%)T>_gwW!Z>duFM&3l1_G@M_W_4Qnzd4+M zw1>lkYCW{_g+}z&Yx&UUqjQn&pZ2#uhQ(@0`GTbz43VxuPvYQIk^WMk(H&0K2iNqB zy06+7qCP;gaH(9!Ez|V<5X-cu{k7PVF?y}>4l3CtRbBpT zK%w(nzK0x;_ftG3FZpQW_7cc1!tQu%iE?>v)w(T2ndBF6mHQk~Jk0 z?F6$c#4y^Im#6{%2cNKu!POkS63jf3sDvy#|AUU$)h4%h3k;j-5>@oD8k3V+tK?SKZ*vqxc4c2C9<8GFX(Ye)e;434_xF4UwB>V;nA6An4UHn>EGZbBcwp5*T)3>CX@?shC=`M2TFrIJl6ORi7`|I(@8~~ zspItG#qbGVaM3L1Qk7YNI<0+|4MvJA_ix?Kwbh>h;`K*qpMgs~H4GAvx>xIQ37=nm z+CoS-r&VZIh;GcuUr{R{R@LT?dwUw|!Xgir!ZRCC96rZ-*--tNe z9}9BCb-=iwxgUsx=ajD{MT(j5tGs9xqpe(|y^=k{2O%g|EFeqW@p-d9b?(c)9~}CZ+;a;K4@`+}PBcRV{C#Ci zt@HXcqt-6u2vA9_q{fa&Y=b-4Nn9d}KymkGwUpUI_y5WtpxFzDK@xft~U7s zL2%ZhNN41ipqP$)rj;jvI()T%m=a44B?;@!U-Nfx8X84<33LWV-c^!#wl*zWzZBZ@ z3?Hx{&$^zF;Y>dDj1$7_n|?urIKo}oYf@^5vm?Z9rDc);jG0~68da(J$RAVn-RoH6 zOGTt{)gJ~0&j@BsWj8qDU0^2u={ETcx?=~E!U$q8Q{{&YWy2z_$SBJQ6x-ZNT-P-@ zqXNJl7WsUpdd5d-&(xJ!jW{d;R!{cqYmd@BBJtgKzK*uATlK%Bw?HBw_Ewgvg|2oC z)xlT`7k`Omp~0$#c8HgQ9GYA$WuLY=uQNKaJ8yYZC5swWoaDw$yz&e@_Rp+Dbe0sq zS{&u|;|wD0TKfZQ;tvr$XMHlrx9}(*oalGp(eVS+#JH>m8jVEVS9*2UV~&7>O`3dd z?cHjvc9arx9%jnuKn)caeG2%F$26Xz%!pH?jIJa%R2m{K8w)D9ffWgHiVQxxUz$h{OT67{2cI%DdzWfw zEUZ>B#K+J{`|me`D`Cjo#e87%CPc~{U&PPX83PdaKfl{+#~sos6t6~EPJE`!-pBKl zUQ6bOIaQ1o1k8EGMGKJkiZ0)qIy-LM2pQio_)Vsbhun z{i9gQP*X0!Bx9h0uri;&0*&~56F?;^KWHwPl?qijy{Aw(Lc2c4mkpul@Re;+x8O&; zvYD75b=Pk+sZ#hT7zZWmCyTOsqmT+?_}x+-l6}jSly>43T3t9<+#RwYQ^y6<3U;$6 zm$#?tj(V8RlE8A3(^z_?L=nPdCG~>Bw3B-n_tX*0pFo+|Sh$B^Sp~MEWr;!Qs@{N@T;3komn10%9mz0)S*eI% zhH}wvZdT=}4n+?r7Mb^ZOIVa*>~XlxjDDMu=@sVnOj$_$9TL^53Pws4`&~L7@Y_k~ zFY_*ZZ5+PCHNT5++|>}Teozud>1jnmXH;^LQxlUlHlPryS_vhXWAY3ls%JjD%S z69~?{GZ|MMM*<*s>q)!Y2RTg|`A@F~O_L<1kh5D6qcX)1aQC=YT8*yDAn@^t6poS- zTTve&S?IBsrek9EJjnH}qsjJS0|{6#7dY$Gjg}|&8;yxM(mKXnO1uG-i|MSR$h~wC z4$8-y@75W(=SbC*cI>W(fhEjwM%Xc4Ocnbn{+OOxL?*5no;Ez4XH5_;95*jl{Hk~P z)CDdgq!R;c9*%!Ys+lIO=7w?yMFM_f4|MP;uWpC~b?w+n)Gc3TE=#*aMu_G$(Lt%6 z#7T`3zSM{(y$8Ss{+29a4^GCz_70_3T!US1qJh76mCM3+-VfxZb05S`aM>bw z?-GB}yxxE(ZdQWUp*uZwIHacR*khceC~Uj$N_EpFJkMvQ5Uie&>CXxxJ<25ASeeZw ztjX!P--@!Kl5Ha_L#+92<>0~wV1_F!y$#styKR5oNItH88I+MKl)ciTVzajRE`@~T zdAT_;MWLkJdjMO)2j`wCj0nltB*~;S@FO=N@Gui?-qk>7@Siq$)62~I=NJ2I*P|@z z)l&j^B_wNhh5{Kn0;(+PHV3|Q=3n3x+XU~055|kC*qEXE!ek!0P3f(Nuv*~)0eN>^ zVu2deB|?PNT{3cvbYSWiWC9667mIpu1bHvUK}CSE25Oqeo_0@#ye&SPJU&62ZzDh7k0)+2m8wGRScNq_3% zB+X~47%+LhE$Z@UOASp=SOun2y{^XMkXp_ixjJCkCQRc0>>qku4apX}%jG!9<_Z(X z-6@&oz%!vxr$v_G=nY$Oyw$~RW>4h*_(UO_V5RXeqktyfKe5s9E*QDEvpUXShDUlctxaxes7`Yc^ z3g%HNF!R1T(Rlt_A4g|GRO*%CQFjlU{mOzp$bMUKkti!td=zGUbY`9HGh<_CEctll z50fU1Dx%WIaN8Q*1T0VH5kNPZ5W;BBdHNVS4N^o;7@P-6Pc4!zz!W)x{WXnXX#72_k{dYJ%H>qowPc<|Py&UUM~b zePWo?8y!J-HhU^D)3TGSOu@6w6Bj*tzg9dtSl(FDO;MVesq&Tg#D-{ z)3BSNypa0-v&Gu_y!$J|S@@4ry0I(6ED^jU%q{ntLP0*&Dy6a7YPVT62{{49PpvK=Qb0r68riw#J2^bAx?e@{?K(Uo`10um zZnzv=Z=(Og%rCAypvD&UPz`4%6vk&kb8th(=IxxPLvd?`ZuaEMXI5g@I3bx>x>apP zd8(2`rB}{nK~g@hMtAg&R$Y_%n*Gq8gd{>O_a(_fu9K+S`+P4`o;7txbtI&Ak#$x&Hods zC{@=)vY!Mu&N?6-E4REDP{jlP_!YJY*ID->)B6>LXsLfbmg6FS;(5f?0UhV6&|!-W zP9CVttjJC&+TwK_Bu+e*u$Fi`)^*B`8OE?(KYSA=jwT0frGOyUrIAAJO}M*41l6X^ zLO1MjeYc*~SImXsVOd%B;_dQ@5XU$MD>0dMTbUlopEd85XdM}o)JBT~na^InepM^+ zjLhATQJJtRZkvCHP8-8x?+U|iH35`}#}GZEpHPQh`tUDd_x~LN&w`Y|mc6QBUTs#q zq$C|hv4MygR}Ny5@MG)>Z>E{lgv!lu*xJ@RU7}$u8UNLW_%#RWrTWrUR&T)XCjzrI z7!fnD86%LTu$Bsy!@UaG_;MJ=Px86~BkZBh1T2{wtlQq+hlA##t>6gv8u-VJsnkl~cbRT*CkAoxShH2i#)hf0Sm+@db}hkGWK@!JYx4()>(9kl=^E8?SotKsg4v$-&QFR@ zV^_QkTCcK)r=$iewX5>lQfV9d)G0733nlvYG7;+**;vbloI7vRm*C9^?9OwD+)}R9 z1@!?yoooKXy5O{(pL+hH<+YJfPjhU3poTc>9hWa)&Dc*^5bDPM_NH&*m3~q!eYG*t zBy`(oI7N6psAqSb|B@seHX@6_#6HLl?;Z(i2duR)S)oC@W3(g~EUtw8aLS3$EE?9( z`epuHG^B_<1o(l6S7e4nmYW%Xf>z+796>c6(SN0PV;V=sBEHlbQ0MuJEsw$Z;uR_F zb?a+l46taO4q-oVW8$)PHb2tu-h{Axy2^3%mV*nuqZRAGfJNIv@be?>x=q>%SqklU z(04T5z{;AJZilY9yEK8Ck-Z48&Lv=k&*E5sYk=|2o}T^&#rG2vyF80HcPv4~?r1w} zj8fT>s#+$O1Mo;v`fa9KZF_AF^+;dI8oHyVVby))%nIph+ZbM=UkbGu^!$re*agm< z$@pQvcz=~=7BlXMav&^FWhq+Sy!7C8M;Hu}Mj{BH#EaWG=Mf~QKN3$aDa%>z+A{Mw z8e7W^ZbO0p*wGrL0rROAQ7Va*b+t=s0JH0Tvf*IwfB@*;IKb#({Fm5W#6o^y>Ia!7 z3XE7;K0UKVe_8St5=UmMSn;AP^BMQft`eT$ebKd|FQeb5%hg-|UI#F{BN+b+w4jGdBdaSc7sZqTlM|CyT!fMmMD`ok|> zhp3MJeHvheREESiPjft{QEEBNfn9;{{R5MJ3qJ!)aB6Qu{G3RX?LQg0b$+3MB#V4k zztM8O5C;Elid?SJ4cy$$<39nwCDJ(08?@S$e{YFnaj|#XQ$`p)D>XfJ$jwvns3);! zcU*RF_)Ck|Nn=~^#eHL3$F-?pe|?d`c=-xQDi8*?(B`TBGx1XV^Cx6A0=%C`D zs2uLE8zaEC$PLBu(u=dK1uH}Z0C?Ssgkzf_*8&HJBfJsmdtPy)}1 z0UYRE8`p0KI#xJ>!EQXRs)}PRKjAJfT_||m3bu&Fp(bzVeL8RU=L2nJa=i8M4Y^0d z>t%6488Isj42>R$52sN?i3lYScn?>5~0=GjFx!!o>1M>O%`;F zMs-wZ5taV{5%-d<0oq-+78@VjtCJ-h+obiGcO|wcpnFcu9B;TLSyq^ZQ`d|0OVId4 zGzOs6F~0w>d`tx3gUc=hMy1jveh6{lE@2b@khP_=$9by#mpLtab5l10Qu1HS`1;J z#pkJ4a*BZO=bs$&Ki1>d8eJ_T-CBqtE7Y8T&Be6=4fe@sT&4@(h|C`dZxyFGClLhF z_6%^4q_+JCW<0%rgeDr}$jc!xE#4^m)(x7C7(BPtrP6M;zyC1PmN@?Xe$h7G6 zpI4(!^}!4(VZ^ENX}>s1!Tla4>_*~1uzsE5$SVtN58e#b5muwWZz~|{2nSP?V`#4m zG$8-m!NotpJ$&M@Sd{ydI4XmIqk{_lrRgj;c41X;E;toCJk<<5pKymG+y*twF8W|H z8K*hY!_lexAJ*{mz|jiAsd07*BT>+k5*9Z;|d3 z)x}Po7eD6R(aJu3G%*qYZ_yG<%gtg+W)&08(S0Q42sX3|1LGXA<4NV63ESpIaV1Q8 z#`I1lLQ85n%Hq+#qgU*{?s5?DgVF9CQjhG!o;^(fyLI2BNXuY|l5tRGde-I-8i1(q z!plZdwcR34OZ9e(APFG-BLuog6he>wdghmVRJ%#zYsUis$sfEv?aqn;<(&plfB^At zFaQmQ1Alz#BuBYcO#WxALSgNEMzE3Uk8^`T+I(PF&Ws0*E*$eq~HDyj@6U*GAi=*X1iExLG6m&!p%57?9e zK;Rc(7Xju-8g!}VO$fVXIW_-Z@m&d6xW~H|5?l^3n0Q+Ai5CHZ9}kWUk2%ZOXTa@C zfvHbNU_tzk+RNC!c$47u`qj0-%aN(YtIG0nWbq>HX(TFUt+_5d#F&zZpKL1;2VmID z+s^x~j5A~l#oYV%NK|*hgz74KWl#k)lDU7-Kqw!a>a_z~KD1DW%06(#1O}uQfhuvp z*W$-lw@9Jbu-E>PKj2u_*Z&4(wcT!>RL!tz9A03}W^y6V=KInL39DMJ*aTf*6_!N@ z58bvq9dse_AgqZ zj)QKrj<^(u5|zdv@S%jB<=@wrv|iH3tkpH=Q~XrfmZorF`EgbaxltjjN0SgyFbjHO zEAeoF(#5t^1Hn&Ab=^?|#c%p+*YD}ocEZzG2!rsk6TvW_Uw`7rKQJVh+hH0mfyLkz|n~A|xZ5zM!qau7#mbX8; zFuz-9qJ!=VxDOIZLfyR~rf|wYbn5J!v^2L=(icq6@lch4xQXiE|KM#baihcu!FSX0 zcmC6F)l3ePWboY3(U1~MYzbK|tW0Gq6)k^{Fs7g&tbmXZWexD;>9dA{b#qEmSQ(b7LxM^iR} z!l8k@V}pOj6dn70$rpmv8ZcxX0bAz@T+_)DwBr`{r&uUpj0aHU766J=brL&%9BA1D zN8A^Qvo?_Bm)C!X8lh8BLb=4WwnmUBatx!%hn+WMeljEMp&2e&zB@I zkXF3*yE=$M_2vU0c7yC8Z0Xn3HWOQ_! zEJLaosZ_4h7~L+9)NKX1=NAC1%zBG}>ncFu0a^mAC`$mrb8IuNI%)6O?d!k^?DL?x zgdtk*Q}Z2;NXrN+RU(=gl9O-~J|@!%C^@}n&`oV|9qH12zR*gVN#=6qlji!B@et>U z+w;C*V{`W6K)h~aI@Fh_lVB9=aXuBVytTh)s>-;woX0oL%kHS}7Iw@JdXQV+hp1Bj zl#|6&yfs70zw8n$qe>R0dbJR%uLM}}^_e)hBYSlxxHEC6Wp=AWQ0LxVKHTW8mkJE% zKr##;jrA`k4Yd?BqxJFxL9x_^UW?jU>#yUrtl_J0^JDJB={QRR;g0gigynA1Cih|8 z6~wTFG99zP)Q%*6CXprE@%>4}LiJ}`g<7d%gw>?(?Jk%ohPVphmA>GS7UbX?j0pPS z-Vs#agMWc(w+TPejziG_M zk#Ed-hUYdA1Mlf?#}E0RwL(^slQ04c6JPV`9mQ_>!Y|=&myG-_XL}U~%-T2n=yZ+0 zHVORL>PY4g>E#&nswA&_<+9NGP}Oj3IRvQUuw4HlT~F4XW#0~>-<+i~{+SR;{bm4u zAh8C?b0nucHiOC5AKlvtY_m34MnR2-o6q*vgN%A(tZkxpyLnW_6`vOqp9P~aQju#^ z5`O%RWwa$jVM6vd#4J&e1q$HpYI}WK<%2s0xt9wsXEhylm|(y0ofs##fi+$yZo7#m z%WE89!E+PSY#XaL$7ue=S}yA#1ZDj&_N__rK@3D)vLA_)3q9d8bee_cdDE$K!PXAGU`}WBHlaSkQ)?-`-+quot1d^yt z5E$7>Bk>dBof|+MJ`hTQLb%mFj-5SSb}m=g3Pwif&Y?Ujiwn)D&d|-96%tT?ftms? zHDq>Y=f@^MY+07p2YM%Hu>A7-35TW;#m90=Aqn*~PQl5Lc-IeV`*T(2>8+{=>Yak{ z2OM!Mz&bF;Z?F2!hFT|taWDV?000C$3rIFh=DFVMVJ~v3Jxx;pvOzM&4CxOD%exJt zR_~Je{uC0cVPvnM1_sfc#_B#e#g6a4QQ$e6$|AfhTs-rFjSrAnc(sBknw}*7 zuB|4XX^CMaw~7tfkBwj!;hqIAO$tNo?2h)HAq#PuM4W3@3DO|d7A>vilzQzb9EM?Y6%~HLDbv*l_Cd^jkWucmtd4WA-6o65Wa&Z-K^2PBd2B^P?ccR>8jKHuGlSD@d-orjKI91C zGHS{DHDIPinGit&3H-5%dLlpd{3w#>Nt6W454a*xthPxQZk8TyxtGY>#=vs^>5;h2 zBx~b1=R8|vPOc_0LczENkcGfIImo0)a^)i_ysc)=jC(-p9pHb6KT#WMxWyPeY-bIF z_N{W|Y|?H!Yw$J3+5ZgO{)$!t)rlV%)1i^o4pDvZ@co+aGvzx>h=e-3=Ov&kBA6vf zz+#*GDyB#73q<$WO@}OHaIiPp+K151&%v8y5kxBzRZU z4Q?&FNUZRJ!@0~L3%%oo%ha*EogQI)7a47n_dNxO@h??@W_fHCgfSZ442%(2{^+jj zu*Qd=l<=C~k5xMJUzC$|@bc7Upw7}!IQ1i{-{3Ev<|B$H;DoDR!!nFCn&T^405&uZ zB$$Gr+`kYXsestWfl>QW(TXzY2IZj@Ua9W9Tfgnx6)-E|Ppix=C1=ozYi8D%pqQYd zWB_A?6~8mAfw!9o3)pPMXGf+aeDVtw_MmBRD<1xk<;`Rmh_^g}lFa6-Bhm*9|ES~8 zsP@`{u2|@(r)jHpw3=(vaJo{PlhD=`_20}A7tGiTQ0bU=Y)cLGFnMK)9$Tw%T!kly zHyl-PaRv=OKyx=2xFU{Usj&qB0nqp}dMnU#PzHbja4sUYonBZjczp+tHUB%a!}`c| ztd!x?oEE?BXJAny=^#!C)lh1$Z%=DKf^s55S6OT%1nK^hr-pi^k8#8wo&WLuNv+62 zR7JwiHiTiT1C*o{|L-YS%>ZiSaP5U*o>@4!8CnH~E|WnG9IGBxFQ=nA0>QNbol$^X zoEm4({F@;VE#-6H1uip%RU9XiJRuQ8fT%IiKxC3LP%V;a$)RO?4+D${;=-3_Fm_`x z0+o(S*s1(xty-$~Z43tWOK`S94zm@%qSs}eE2PQ+Ih)DQ+5`>FV;v+Zpp1gU5UY0X zZ;$|&l>rc74#8Qgx!=Q1uCiB~FPZ@^_;WX(xF}2naa3%#OvDqnWPKSs#sE@yO%3Zg zU6;ew1jiQ><)%$Z%T+?YOu6eXE zYhhguOzAl0cB+8-VDc?6>W)OZuSp?e8jA)61!Wn0A_mL?1u>dB#~Mh5tx{l1pUZM& ze{_8L{-zZ>)iX{dk!i+@E_hMUH6W1;vl7teJG&uiV!It{Osmiw49T(Fr(Y6Fpx*Aln9cER^ZWb+>Ip@m zWJ2zSv7Z0Kqj-B58h~)z^wvr?+P`3kfu_bAkH`~(v{|Sz5f9iQ)xq7a({!nt5q17k zumvPYFI_bkRk-pY4Llb3HUF1f8yx|KA~7?Ndqij6!2FgEX6D{@mr_AlZ&se zQ=u*YqRUuDA{1wYW%?7m=ft$UO{jzJ)j566PZ+7hO07na2KTlZH8A6E%CxTy>_U%W zb{PMI*tK!hy_dXyiw4!yg+9V(zDsfLePtV|3g>Gz7h0y?o(>{sQ{Kx{qIT=FU9v%U zl2q`4laik``|~K6jxhL`a#IcOEQ6~iXbra|`?8sTtu&6$F-o)BOE*(?`D$f6jpcf? zZk60lCmkpsjF1!E?GwYNPB$R^m0%4rw=Nkr zqgI^yfFKVmRylHUy%F8lrPQ{*fCGNaO-$`hiWsoh`L)!Mfn|blB}0u0ZyG+tvCwJ! z*6oZl&@+8aQ|$$8n2}q@HpGT>4+*nIbQr;~Hn4ur78iV09274Vuuo4fnr*Q_GetJ4 zIA9Z>&b9Iuw{NC_+5damWjKXjy@ZPnDBlA&zvG_V9n%ZqTOm$I4>eJ)``B;nng_VzsN^v<#(6p85 zhl7ZaXd2fe0H+8d#mBiL3i1i;%piF!^2i?H^_croS&~Zl%^uHjgU^KSW-i1)U$Wz; zPk=yibTBr+3)K}uOxh}_W98)KyqmCRw+HEJiF(V6V@g*tyA5Kv>dD3K{1=<%)qPHL zFN^wENO@K}ZDoJ;&VGIm+-Ic;PYn#RFdhgk85E8@?xOGQ$v|L-dFv)Sjf;at z`iN>JBu6`^+_IORtQaKov&HF^J_aja?Ma%tvrjZau4Y;%bBeh^6Cj=vE9U?XjOXUX zhIR6>_RBg?<(${#X2VL>|C4v&$On9?5tR1&2{-g*o&=R@>d`!a+=qL?EsoTMoNvYe ziX?$}M_oeSwYR8KQC0)WQ`zP0I*+P(TwYl*eensYd5Qr*St_u(`XxDqrcuFp(L*L} zOnOP2*3y!{0TPuk-nP9p4*fU*B!O=+^!5y3%z|ULG=1D5MmaF@78K2ay zV!6A|l2~_M2El^_ezxXS*6c%i>wiJ^%yReITTwQ@Og z^0LNYUUxB9p73V~e&^uZ1%^tr#qa;R7?gT|dYhi??oH1yo1K}t|4(poc^8&aks9jp5Lu0dfgA}> z{zOAApm;RMYFwl=={I?_p?9Rry#7Ay$$^x?q7wL-V)--W#Z##4u1P;bjph~PlQ&|> z@gumo7K7M4b$%<*`jxg){!mMvf_x%|cqd{K7bt86l44ahTE^^yzvdKR6(|*Tq6Hc6 zqrwei*$k5Q0fHONHrF+CIhg!W+)TAHayFG^gmI$*WlWP9DF6QReh(fgNGfMMQPC= zh4r@1Cx%j7y1pYz1_KblkZ#e4X@tSMmtPgV`a*vT>K1NHWKvT?e)RJGvux>Ga*Qys zfY{jo_a2q+)3H_%1Ku$le_N-?hQWCt_HPz7s`{R?@!6x!MWJ94qb8rTA?y8?u^ zeYPRABEtQ#LJ@ys)mU0koV7wi-RQwY92v8CT(+6#Xp=Adu`cOtL~r?Ts(oyWr(j+M zXF=5PNMetfC5?Ke=MKD-E>lj3CjI?Zmve1+3|JOuwib!;GGOpkk3E0xbqBR^dGLCBr{$X%Wd3 zRn6L)zGXa3r|6Xfqd)j!(&ayicX{(Z1p55~o?MfjSL(xmi@>gly%g~~22dOe(dXS^ zDhk$joxx^E8%9;8pvq|$1~tbspmEQ{odICntGP1#X%siz^At{_rDSp3Imotqp*OW6 z%+ViLE)f@@{aDbeg!B^fooIp#skqEQ@7-t^Fof2x{!qX;^oG^O=bGdU8~P*A`Z{~1gsFH4K*nNVNHU)%ZYg@ZK+HXA6v{eOg_3Bj{*&RwAZ2O=ocThQv>1#7y)JsxWO8P)J+zwDQaw zT*99s^fxicP0ZNZ$w{!+8jK+%W(aZPGc0?l%6z0pf|0HQ6JQge+$Q0hzy*az!o?bF za0skVBYi)!khf6HjRR|2<;@!>*jawdtmKN$^CuaYQXHT!ZkE~|^+4GB; z(^PX7?!E%)7s(0QzQeHRrU(RhUYCW`fB+9Hxgn24cnfZCp&(=Y%9EWJn!wl~fI000IoS&0SMb)&er8CMhgO~@d z`3q3i?u@V|94YgO`%RAzF$!4%fXiq0lRB&J$8K7SD$UI|=VigX&^(}VOTc=CO-UY2 zfTqRg0<)ACMw7M6M;~;Vy_M|*ORa-_>dLicH*W}&w{?v#+=4d7;ggiBtY{3G30xf* zF*lk=papUH?r>$TL&Zn^txf()aZ5Rha}6I)GS*8A7-U?p(Y%JNxUYv<*1teOPhrky zNh^{NqKzn(q40ykuf*1C>Zyt z2J#z^jZ=S(6^b!c(e7A>bJ8JW zD*`a_4TJ}|{0eW?0KT|aO*hQYofkX?*{o#i{_9idSLGK{D__qNqKLQ>w;_0U{DeGf zs*JMr>qOa&DGa4YR%hE6J0rAuTZ&SjH3IBbvMCOlbKeU)s1?wzCW-@^bzHWZ7W^ph zj_|U?c4KODPj^v$*w?VtfZYE;2xb4^)LfjA3K5gSN{3Hs7niUlDN_r&F3H6VH}BM% z?kx`v=95oarXq-rArq(G4O99bonZJ`5nF}cmFd`+L?;8|^Z)XQz6UWi72s|n>US&g zn0I@a7Si2l@n()=ePu|FujscfMMR-8b{A1jul1}OO}mq*j{Sq0I0e+s6$J>c%><|a zL)_&;t!M5ZHW}N8OIEvl{?Y^y7@}DDo~EfoQ`jrgnGX05b3%S?oLm;1yx1KQ(8Z!) zi%2DeDTiJGy^n7>$mbaZb`=}@amzA;3q9?-A6&xmK0Vx@Ud9te|^WzR?JGEv>^$5L7r2rsT6a>f^>(TY)1sLSQS-#As z20TaIC=y=(I5e9n(z_mt))JzWFBcTQRuXi9ja2{i0f^S7=3;jF%I!8-yNg000n?E< zFf#{rnbh1o{ZXTj^r`CHKXX4U%91P6t9z|Y%*9ASS)E>49j%1xE7P&v?7V<82X-3) z#%;F2JKX@I^JyR&mFONx8Pl#(vfl6ju?p_GBp5aj&OhaZO=<}mdj^m!W#pRJ{5F}w zJeitrCCwx}_jL*v`yHM=i;Qt`T0j5*__uHX0BcA90AT$)V@W+!dIUCJOwvxD-8gW} z%5WB?$CmLI;hF*f=mT3Iw}&rh;6VU~G8Z_Xm%ul)%@{v%(nWscL36c-QW_{e891y=yfPz`Dfx(-B2 z@HxYIN?WL}w6Aa)!8H|511?vQmTgLV5qe=OeqKaNGW$X<7Klt$nUa96M5EYQe&*jB z?3fbK;=4{FSpA`GQgODcyt%6L>L~kxAIifh7)jf3f9kW`O)Z$wR%rtGkqs&@tTx<)#lik84TN?!#2|6sUZ9Rg)X~;X*E6(tSarlhY zehrV97*5rE+g<^<6JIGiBejZ+285w7BY^!3qfE@Lvob+^5YsQry}o{(=h;YdV!D|&b2(LRH^(A7Jqkg22_Q!|)bp!ufb`!y-$ ztg=Whfos8Xac%gS>;C{)BohP;xuVpa-#FwEoaf4r00FuTXGIsET)+mJ!9eIZw6)~} z_DN;)m;eC|huB_3z{gnng1qk5B-lUz007C##DHUrlXO2XbQov9_+yL8`9)Gg5+Tzq z^qB!{S`D$)0;{DRMix903Rpw>8Ix6+HCdBYnKfCHRhh}d^(%hz^-kD62ue4=c2vI^ zn~;aK;r&)r|A=?-k1>kdRAu0|K213n3Mq_n?K_VD1Q_owO$a*yR3~|``!FVrg7U(t z)RNmW*{We%EML6{Y^yO}=vjlo^Np=J5Mwu~`WUzWYxvLZCGoUQHhiuK=&7Cja!oZ^ zlU12DS(8 -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for MongoDB® Official - -RapidFort’s container optimization process hardened this MongoDB® Official container. This container is free to use and has no license limitations. - -It is the same as the [MongoDB MongoDB® Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is MongoDB® Official? - -> MongoDB® is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemata. MongoDB is developed by MongoDB Inc., and is published under a combination of the Server Side Public License and the Apache License. - - -[Overview of MongoDB® Official](https://www.mongodb.com/) - -Disclaimer: The respective trademarks mentioned in the offering are owned by the respective companies. We do not provide a commercial license for any of these products. This listing has an open-source license. MongoDB(R) is run and maintained by MongoDB, which is a completely separate project from RapidFort. - - -## How do I use this hardened MongoDB® Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [MongoDB MongoDB® Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [MongoDB MongoDB® Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/mongodb-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`6.0.2-focal`, `6.0-focal`, `6-focal`, `focal` (Dockerfile)](https://github.com/docker-library/mongo/blob/d68a62060cd2261be2196f9c796a770efb9df8fd/6.0/Dockerfile) -* [`5.0.13-focal`, `5.0-focal`, `5-focal` (Dockerfile)](https://github.com/docker-library/mongo/blob/b20fe71024b06ccaf366ef4c01161627114ce688/5.0/Dockerfile) -* [`4.4.18-focal`, `4.4-focal`, `4-focal` (Dockerfile)](https://github.com/docker-library/mongo/blob/37cfb713ddf069510524aebb03b82f385e891f7d/4.4/Dockerfile) -* [`4.2.23-bionic`, `4.2-bionic` (Dockerfile)](https://github.com/docker-library/mongo/blob/c830e47022955d24bad50f1237ef7b713792bf9e/4.2/Dockerfile) -* [`4.0.28-xenial`, `4.0-xenial` (Dockerfile)](https://github.com/docker-library/mongo/blob/9631e54a2885018f440e8da2840c21793c156f94/4.0/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=mongodb-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmongo?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmongo?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmongo?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmongo?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmongo?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mongodb-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/mongodb-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/mongodb-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mongodb/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mongodb/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/mongo -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/mongodb-official diff --git a/community_images/mongodb/official/assets/cve_reduction.webp b/community_images/mongodb/official/assets/cve_reduction.webp deleted file mode 100644 index 7037543399a4701560a5215455c832deadfe582b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1772 zcmb`Hc{J2p9Ki2bUQd)Pg(jKoHKc^6h$1A8nTE!Ur7&aE!_drlT2vxgdOS=NL$NS)MI>n8}(Y(wOD_=5;#yqj%mv?|aYpdq4MkzxRBF(i z!vI+A0gwftOZNx!|K*Y(dQ%Bd&;q113X~iG7!hK5pRasL$X;LhcOg@pFqTkECdAr4 z-?7(s983$OK{2huctRjW$b%4@`uhb5a|uOQv6MIYj3dc+McX^SEANJw?q@jLuU`g4bwwN1k{m3ceXN4Yuuo()39fo!*)*Usb9le z=w}NMw~$kBWOg03T)eEp!M7+7>{&bEn^>)k^fCV1fg~0~teS+|+o|PfpUEOInp+Nr zwai>i^*${}G!7D@>P1%hMRK%rZ=c2~eK=g~AVo6|@WvX5bip6a1V2 znap335VXt5jq031F++BwzRdUbF=yqlZj!^budnYM#FE#J6EmjeYvV4X&umiB9-$^r zHCLBnLiMZAMp~WO{EsMRZA9rD#tn0?_(A;|TM*k>v4HqY_!F6q#K0GW1c8M9s$$W% zH*)N|9-5{q;;JN=G5RiBCt}5qXtBFBGP0Lo!HuTj!wipr=XwqEiN%eK%%nsnT_)4l zqU{{jep2j#6I~-)87cUZ=8b{d|T2DUly$>`7Polk~+TniS{e5J8`^+BuX zS8b?s9j7n4D)78jxFxHFj#xo~Cl$u*&41*eh*NaYx;vxCqrGV>I=BSqS31LOou@76 z)VXbXxA00+%3s>lX4W!quuHe=Y_&RK=CMOJhp*0lpB5GRcw6|gm-1bQ9?970?dt{c z0ycV@_$f;v1r3YV}jg3sh&% zZ3|Wecacod){Rafv`z7m4T_c}Py#O_BvWMGa z1K#bfBuP$&=JI(c)@>C>P5MhRZuBI+>~WhFX{<|Djn~^UDRuX?1gDIf8W&w}kd`9% zF}J39{e&B{j6XkLR*#)ALk@c1Ag<=mcLlSJ&CI4ylKJ+dvwHpMmSY(6cE& j?aCgp;I!yYih4XPXCT9=Ag#L(XGn|lTwNL!{(yf2WN5T2 diff --git a/community_images/mongodb/official/assets/metrics.webp b/community_images/mongodb/official/assets/metrics.webp deleted file mode 100644 index eceda0748c77eb2ec8fc2220733b896995b53514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27964 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 -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for MySQL - -RapidFort’s container optimization process hardened this MySQL container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami MySQL][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is MySQL? - -> MySQL is the world's most popular open source database. With its proven performance, reliability and ease-of-use, MySQL has become the leading database choice for web-based applications, covering the entire range from personal projects and websites, via e-commerce and information services, all the way to high profile web properties including Facebook, Twitter, YouTube, Yahoo! and many more. - - -[Overview of MySQL](https://www.mysql.com/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened MySQL image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install mysql, just replace repository with RapidFort registry -$ helm install my-mysql bitnami/mysql --set image.repository=rapidfort/mysql - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami MySQL][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami MySQL][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/mysql][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`8.2`, `8.2-debian-11`, `8.2.0`, `8.2.0-debian-11-r` (8.2/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/mysql/8.2/debian-11/Dockerfile) -* [`8.0`, `8.0-debian-11`, `8.0.35`, `8.0.35-debian-11-r` (8.0/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/mysql/8.0/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=mysql&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmysql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmysql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmysql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmysql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fmysql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/mysql?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/mysql?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mysql/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mysql/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/mysql -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/mysql diff --git a/community_images/mysql/bitnami/assets/cve_reduction.webp b/community_images/mysql/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 2824f34b2a956cf9cd8e0e245963ae0bae752c6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1526 zcmb`Fdoi15#AC+3suxoh@xY4U%I<1;yn@71vU`D5$qBEUuEt-gR=oF z#sHLgb1`xTKuH_`rfn`}cnx4tEI_e@My z+*|z1S+U3-UF4j>$nXam_yQK3fDRP+2_YP8fQ?{|{1|M3GV&-oa0RtC8)XYNLFQ@O zuN&yEHss#IMxhh@>BBw?UN%_mm+7;s0$#e9h z=6uudbw*VzMYw5FiCxp<__DlR>-xo}Nl%H@?>IsrnfMB)gqk34v`bd-Cgo;g+d) zVuI4tBVpvi#t00^XDt&Gs)=I!`+RRjXPcNuW*E=L`<~4zG@6G7|W8$Af594E!y)z5dYZxckZ;lyQc~x?JiWk2X zF1^HzDFayS_;6z_FS26Zx<&y#;;~gpuUP~Ca=9!sCx92rbZt>G?qc@n-C0|xJd#Pb z5`TR2+9NgJ$0MV5_(U~dt}guRBCbqTTjnFE4ASH$Q*Y!OIp1Y>)d@{zNB_9^UEQeY zXFIPY?Ya0pot2x!Q4}VQFifePco#l#Rr=v&Nd8q+#PS${PTtdKQs2xAwWOQl_|BHe zl4`s$v7PV7NFrEPwui0vizN;Xo~OUjmU~Z@P(~XLyN0GaW|?UlRiE_CQzt*>Px?>A zT$b%KG2h#D<0G?Vml18R9y+dw%xj&ko19_TZB02dKxn@hbOw^*yta%s!o~T0JI57dbysNl1Ift`eXRq%4#=Yx%`*y#6F=#r)FN zW*k`-Chs_hKPP~<6Oh40w~$?}O*=mUH9OK`PdiFqW%f%@Kz%Bt;I9FH+*nx~BB-v~qpCdeLD2 zj*RXxEGe?oHrYLUV9mhs8UAevBbjaR8W*mS{oFve=ERPgjzZm>2900NuT`tM{OEvj zXY|eug{A$f&HeG&Cpl(Icb^_olW97cFT20uOr>*E*nTQbCYCQW#5~Fkyslb*CLE`6 zHn?@Au%c?VvHX1~&1Q}8(sQ?}<()p(`|okp3epQvJr&#LTb~lgu=&T*%QAL%OE6g? xZQcTYO6rop?NXsowk4iZ)cKyec-L4?aZ>aV^W?x|rj9iiND(@LHWpC;{{V<`HCzAy diff --git a/community_images/mysql/bitnami/assets/metrics.webp b/community_images/mysql/bitnami/assets/metrics.webp deleted file mode 100644 index 69268fdcc84906f8810733a878ff0e39b809c485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25648 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/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/tests/sysbench_tests.sh - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# get mysql password -MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath="{.data.mysql-root-password}" | base64 --decode) - -# copy test.sql into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/../../common/tests/test.my_sql "${RELEASE_NAME}"-0:/tmp/test.my_sql - -# run script -with_backoff kubectl -n "${NAMESPACE}" exec -i "${RELEASE_NAME}"-0 -- /bin/bash -c "mysql -h localhost -uroot -p\"$MYSQL_ROOT_PASSWORD\" mysql < /tmp/test.my_sql" - -# copy mysql_coverage.sh into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/../../common/tests/mysql_coverage.sh "${RELEASE_NAME}"-0:/tmp/mysql_coverage.sh - -# run mysql_coverage on cluster -kubectl -n "${NAMESPACE}" exec -i "${RELEASE_NAME}"-0 -- /bin/bash -c "/tmp/mysql_coverage.sh" - -# create sbtest schema -with_backoff kubectl -n "${NAMESPACE}" exec -i "${RELEASE_NAME}"-0 \ - -- /bin/bash -c \ - "mysql -h localhost -uroot -p\"$MYSQL_ROOT_PASSWORD\" -e \"CREATE SCHEMA sbtest;\"" - -# prepare benchmark -kubectl run -n "${NAMESPACE}" sb-prepare \ - --rm -i --restart='Never' \ - --image severalnines/sysbench \ - --command -- sysbench \ - --db-driver=mysql \ - --oltp-table-size=100000 \ - --oltp-tables-count=24 \ - --threads=1 \ - --mysql-host="${RELEASE_NAME}" \ - --mysql-port=3306 \ - --mysql-user=root \ - --mysql-password="${MYSQL_ROOT_PASSWORD}" \ - --mysql-debug=on \ - /usr/share/sysbench/tests/include/oltp_legacy/parallel_prepare.lua \ - run - -# execute test -kubectl run -n "${NAMESPACE}" sb-run \ - --rm -i --restart='Never' \ - --image severalnines/sysbench \ - --command -- sysbench \ - --db-driver=mysql \ - --report-interval=2 \ - --mysql-table-engine=innodb \ - --oltp-table-size=100000 \ - --oltp-tables-count=24 \ - --threads=4 \ - --time=45 \ - --mysql-host="${RELEASE_NAME}" \ - --mysql-port=3306 \ - --mysql-user=root \ - --mysql-password="${MYSQL_ROOT_PASSWORD}" \ - /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua \ - run - -# run mysql_coverage on cluster -kubectl -n "${NAMESPACE}" delete pod "${RELEASE_NAME}"-0 - -# wait for pod to be available again -kubectl -n "${NAMESPACE}" wait pod "${RELEASE_NAME}"-0 --for=condition=ready --timeout=5m - -# copy test.sql into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/../../common/tests/test.my_sql "${RELEASE_NAME}"-0:/tmp/test.my_sql - -# run script -kubectl -n "${NAMESPACE}" exec -i "${RELEASE_NAME}"-0 -- /bin/bash -c "mysql -h localhost -uroot -p\"$MYSQL_ROOT_PASSWORD\" mysql < /tmp/test.my_sql" diff --git a/community_images/mysql/bitnami/overrides.yml b/community_images/mysql/bitnami/overrides.yml deleted file mode 100644 index 8b521fe90c..0000000000 --- a/community_images/mysql/bitnami/overrides.yml +++ /dev/null @@ -1,35 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -primary: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -secondary: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 \ No newline at end of file diff --git a/community_images/mysql/ironbank/.rfignore b/community_images/mysql/ironbank/.rfignore deleted file mode 100644 index bd036ec246..0000000000 --- a/community_images/mysql/ironbank/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/licenses diff --git a/community_images/mysql/ironbank/README.md b/community_images/mysql/ironbank/README.md deleted file mode 100644 index 4d40cb7445..0000000000 --- a/community_images/mysql/ironbank/README.md +++ /dev/null @@ -1,139 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for MySQL IronBank - -RapidFort’s container optimization process hardened this MySQL IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One MySQL IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is MySQL IronBank? - -> MySQL is the world's most popular open source database. With its proven performance, reliability and ease-of-use, MySQL has become the leading database choice for web-based applications, covering the entire range from personal projects and websites, via e-commerce and information services, all the way to high profile web properties including Facebook, Twitter, YouTube, Yahoo! and many more. - - -[Overview of MySQL IronBank](https://www.mysql.com/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened MySQL IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d rapidfort/mysql8-ib:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One MySQL IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One MySQL IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/mysql8-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`latest` (Dockerfile)](https://repo1.dso.mil/dsop/opensource/mysql/mysql8/-/blob/development/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=mysql-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmysql%2Fmysql8?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmysql%2Fmysql8?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmysql%2Fmysql8?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmysql%2Fmysql8?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmysql%2Fmysql8?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/mysql8-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/mysql8-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mysql/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mysql/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fmysql%2Fmysql8 -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/mysql8-ib diff --git a/community_images/mysql/ironbank/assets/cve_reduction.webp b/community_images/mysql/ironbank/assets/cve_reduction.webp deleted file mode 100644 index 9e9f525b36b1ae2f13cfc1c30312a01a147a1b85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1488 zcmWIYbaOkw%D@or>J$(bU=hK^z`&pY#0wc2>=_t5ot*VV2 z7YKk{%#)fI8VsZ(fLMm1m?4P4oxusnrYb;$XZ|7v28*u@49pV{Vo5U@7`C@EFi6}& zh^Z`KVBl|IVAyuPAh9SB>=+gx$&{AH!0>4~0|Rd)1B37d1_rKZm_reI5pjXTuL?jt zGC+Uk17SKt4nrz~0)r<*9z!yN9*||kV8CF=UwdbbHzLV&euKn z|7+h-{>uLMdE|Wu{u_+pq9mUhMvSS$O@YS4rPr)U54J0A5@+9SBueyc3s=B@h}yF7Nk zmlTUVKJ8h}vz_T*dqd9O@_6n2tk>0U7uOE;KT+;8nths<$Di8bxZ`gB-*?Gg_V3g5 z8z%E#o%1;Gt&D;)zmU?~i%cI1%>$%a?~8l!O}WUCltVL z%azY#5?38PE5GeCi$?0oxo4x4ULSj8GvkGq?HQJva`(>kJr23{ZQhGdeYa08-Tf;6 zn^HodS@`~6KHb@;|K&>sHFCPEc|SgP_Tgt~hcf+c`_Efii{CNW?`Hr1`FZ>8*($-z z(~6>I@G(AYJ(m|_eq{AqwY!G5CiF}%x#sqcvDE)l_>Xlbwno32dh_-~^X#=>e#Bj4 z*?dtquIEAchiTV*AHPY;lTa#GZF8y~Wy6BVzX38%%Zd`vdq}}+|1moW6K8kb2&VOy{f7Z@-O8;ZZ K>&6G5Tn+#wj2SNg diff --git a/community_images/mysql/ironbank/assets/metrics.webp b/community_images/mysql/ironbank/assets/metrics.webp deleted file mode 100644 index 21f0d351411b0ae83a84ce2a1bc03bd67ec4e89e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21612 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 diff --git a/community_images/mysql/ironbank/docker_coverage.sh b/community_images/mysql/ironbank/docker_coverage.sh deleted file mode 100755 index f751aca935..0000000000 --- a/community_images/mysql/ironbank/docker_coverage.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -CONTAINER_NAME=$(jq -r '.container_details."mysql8-ib".name' < "$JSON_PARAMS") -NETWORK_NAME=$(jq -r '.network_name' < "$JSON_PARAMS") -MYSQL_HOST=$(jq -r '.container_details."mysql8-ib".ip_address' < "$JSON_PARAMS") - -SCRIPTPATH=$(jq -r '.image_script_dir' < "$JSON_PARAMS") - - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/tests/sysbench_tests.sh - -# get mysql password -MYSQL_ROOT_PASSWORD=my_root_password - -# copy test.sql into container -docker cp "${SCRIPTPATH}"/../../common/tests/test.my_sql "${CONTAINER_NAME}":/tmp/test.my_sql - -# run script -docker exec -i "${CONTAINER_NAME}" \ - /bin/bash -c "mysql -h localhost -uroot -p\"$MYSQL_ROOT_PASSWORD\" mysql < /tmp/test.my_sql" - -# copy mysql_coverage.sh into container -docker cp "${SCRIPTPATH}"/../../common/tests/mysql_coverage.sh "${CONTAINER_NAME}":/tmp/mysql_coverage.sh - -# run mysql_coverage on cluster -docker exec -i "${CONTAINER_NAME}" /bin/bash -c "/tmp/mysql_coverage.sh" - -# create sbtest schema -docker exec -i "${CONTAINER_NAME}" \ - /bin/bash -c \ - "mysql -h localhost -uroot -p\"$MYSQL_ROOT_PASSWORD\" -e \"CREATE SCHEMA sbtest;\"" - -# prepare benchmark -docker run --network="${NETWORK_NAME}" \ - --name sb-prepare --rm -i \ - severalnines/sysbench \ - sysbench \ - --db-driver=mysql \ - --oltp-table-size=100000 \ - --oltp-tables-count=24 \ - --threads=1 \ - --mysql-host="${MYSQL_HOST}" \ - --mysql-port=3306 \ - --mysql-user=root \ - --mysql-password="${MYSQL_ROOT_PASSWORD}" \ - --mysql-debug=on \ - /usr/share/sysbench/tests/include/oltp_legacy/parallel_prepare.lua \ - run - -# execute test -docker run --network="${NETWORK_NAME}" \ - --name sb-run --rm -i \ - severalnines/sysbench \ - sysbench \ - --db-driver=mysql \ - --report-interval=2 \ - --mysql-table-engine=innodb \ - --oltp-table-size=100000 \ - --oltp-tables-count=24 \ - --threads=4 \ - --time=45 \ - --mysql-host="${MYSQL_HOST}" \ - --mysql-port=3306 \ - --mysql-user=root \ - --mysql-password="${MYSQL_ROOT_PASSWORD}" \ - /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua \ - run diff --git a/community_images/mysql/ironbank/image.yml b/community_images/mysql/ironbank/image.yml deleted file mode 100644 index 8825efac69..0000000000 --- a/community_images/mysql/ironbank/image.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: mysql-ib -official_name: MySQL IronBank -official_website: https://www.mysql.com/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/mysql/mysql8 -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fmysql%2Fmysql8 -source_image_readme: https://repo1.dso.mil/dsop/opensource/mysql/mysql8/-/blob/development/README.md -rf_docker_link: rapidfort/mysql8-ib -image_workflow_name: mysql_ironbank -github_location: mysql/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fmysql%2Fmysql8 -usage_instructions: | - $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d rapidfort/mysql8-ib:latest -what_is_text: | - MySQL is the world's most popular open source database. With its proven performance, reliability and ease-of-use, MySQL has become the leading database choice for web-based applications, covering the entire range from personal projects and websites, via e-commerce and information services, all the way to high profile web properties including Facebook, Twitter, YouTube, Yahoo! and many more. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`latest` (Dockerfile)](https://repo1.dso.mil/dsop/opensource/mysql/mysql8/-/blob/development/Dockerfile)" -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/mysql/mysql8: - input_base_tag: "8." - output_repo: mysql8-ib -runtimes: - - type: docker - script: docker_coverage.sh - wait_time_sec: 60 - mysql8-ib: - exec_command: --default-authentication-plugin=mysql_native_password - environment: - MYSQL_ROOT_PASSWORD: my_root_password - MYSQL_ROOT_HOST: "%" diff --git a/community_images/mysql/official/.rfignore b/community_images/mysql/official/.rfignore deleted file mode 100644 index bd036ec246..0000000000 --- a/community_images/mysql/official/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/licenses diff --git a/community_images/mysql/official/README.md b/community_images/mysql/official/README.md deleted file mode 100644 index dbce5370e4..0000000000 --- a/community_images/mysql/official/README.md +++ /dev/null @@ -1,140 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for MySQL Official - -RapidFort’s container optimization process hardened this MySQL Official container. This container is free to use and has no license limitations. - -It is the same as the [The Docker Community MySQL Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is MySQL Official? - -> MySQL is the world's most popular open source database. With its proven performance, reliability and ease-of-use, MySQL has become the leading database choice for web-based applications, covering the entire range from personal projects and websites, via e-commerce and information services, all the way to high profile web properties including Facebook, Twitter, YouTube, Yahoo! and many more. - - -[Overview of MySQL Official](https://www.mysql.com/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened MySQL Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d rapidfort/mysql-official:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [The Docker Community MySQL Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [The Docker Community MySQL Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/mysql-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`8.0-debian`, `8-debian` (Dockerfile)](https://github.com/docker-library/mysql/blob/master/8.0/Dockerfile.debian) -* [`5.7-debian`, `5-debian` (Dockerfile)](https://github.com/docker-library/mysql/blob/master/5.7/Dockerfile.debian) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=mysql-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmysql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmysql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmysql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmysql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmysql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=mysql-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/mysql-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/mysql-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mysql/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/mysql/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/mysql -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/mysql-official diff --git a/community_images/mysql/official/assets/cve_reduction.webp b/community_images/mysql/official/assets/cve_reduction.webp deleted file mode 100644 index fbffa383e677b7c889affc6c86681b4faecc2e2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1826 zcmb`IdpOf;9Kc_4Ke-kbVj)B>Ax2CQOLZDC=29AJlx;GZG7Tju&e2gM)yAAqsFb4! z%@m`WT%(n0bV22kTQ)ntot_^3(Rt24=lee2@B4Yb@ArMa-}mx7?@mt-4=q^${M}u> z{JaoY1pojX(gF$K0)VHRn-@$H8Ujg}*h*OeKp@7(>_oZ3u>pZ_vG2R!!pPCz`6s;u z0Mk7HvH*0N|78BZT=L<2$zf2?7^JZ=P;vky!XaLc|HkoR4*kX%Vvh0M=?29xAU47O zz@a}dB{n)1ifIwYhegMTnFp~GA?lDgmsrFVFWpPT_&_}tQXN1BI{^x~Lj1qV;(3w^ z0YFRvuq12I7n%n^bt(X`{zac50|4dY0Q|*`#>L?NDMkvilKb`nFi{MEVgLZk+5u1q z`d;Yb+Qqy0m%YNFH9F8fNl?RsD6kj6fhQn>Fkk_ZHLwEffF1N=;5;a&iUGJJVOl7$ z5g-Y6xu_xo{Z&TYc}Yo%>3fMUb`up}(eY%cK`-A2qO6|>W|2z%OBCX$)Gt5@Kb$eKo zSYjAXf^mm$kEku}#!NHJtw`!fLv&xQW%ET6vSUY!UUltts{x7{ zi;b#mig@p&@xd-fe!ktjPBtWW%sKH&j#N|*h99NmsipZf#GxkE+rEB|B*3cQBz%5- z{aUJ{GG8~ozhST~V0u~BNv!svgMqGT0WL;dL5BR(cm5St=8AqPQK~SxUsEfM`kdVl zC!g8cZ;L3;{DpLX+g-{TW9JG076e;)^ulyy!HRM3b9Ys=(^lk9$aaLztu3_~q|2-3 zYfb;2b$KXm^MMC0aW5B=yyb)q2+c-fyAJFtH`3chXr#1aRmrWm?HU31 z!4|yx47*u<QwZqocvyppJ>1)Y-PEJ5cPdPb`kQQ z>!xsOFCX>YL5^jYhIUco@gwyiCN6_Ld^f47vjvHTHpc0iFLYTg#b1&iI%P1OKx<9C znOqJlzr(JQ{UvFf-AkvHbPa5ns4-f{EH}Klq;q2-g~?@3|9P*JpWC@G!7Um=?1Qm~ zL+bJi$s)Z4q$o{6=Z;8Pwzp}#LF#%h)*IGhdCr@r=^YGT9cv^%)TV`V3n zc7&hC3hIVhTO-sSuI43VvidZvjTyNq=-v^|5S)qD_Dttk3C8R`(>|`l8{fyOlYNolwMxa4Td5W-4N;Sp zmr!N7);Sa5YU}w?uXb!JuA>dF?y`o*_}X&og6{!UP3=#ob}$vYgnqL3!t^Z=x`CdZ n9jDu7$H=T6>7zqNgQ8AHT+VRjMKrS+rDs-4TxXvx{%rmRD(uFP diff --git a/community_images/mysql/official/assets/metrics.webp b/community_images/mysql/official/assets/metrics.webp deleted file mode 100644 index a712807da1a602d5b5adc13bf7daec8e165fb9cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25810 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 oo*H85{>tV$la=wWP01J?rSO5S3 diff --git a/community_images/mysql/official/docker_coverage.sh b/community_images/mysql/official/docker_coverage.sh deleted file mode 100755 index 5f3d1598e7..0000000000 --- a/community_images/mysql/official/docker_coverage.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -CONTAINER_NAME=$(jq -r '.container_details."mysql-official".name' < "$JSON_PARAMS") -NETWORK_NAME=$(jq -r '.network_name' < "$JSON_PARAMS") -MYSQL_HOST=$(jq -r '.container_details."mysql-official".ip_address' < "$JSON_PARAMS") - -SCRIPTPATH=$(jq -r '.image_script_dir' < "$JSON_PARAMS") - - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/tests/sysbench_tests.sh - -# get mysql password -MYSQL_ROOT_PASSWORD=my_root_password - -# copy test.sql into container -docker cp "${SCRIPTPATH}"/../../common/tests/test.my_sql "${CONTAINER_NAME}":/tmp/test.my_sql - -# run script -docker exec -i "${CONTAINER_NAME}" \ - /bin/bash -c "mysql -h localhost -uroot -p\"$MYSQL_ROOT_PASSWORD\" mysql < /tmp/test.my_sql" - -# copy mysql_coverage.sh into container -docker cp "${SCRIPTPATH}"/../../common/tests/mysql_coverage.sh "${CONTAINER_NAME}":/tmp/mysql_coverage.sh - -# run mysql_coverage on cluster -docker exec -i "${CONTAINER_NAME}" /bin/bash -c "/tmp/mysql_coverage.sh" - -# create sbtest schema -docker exec -i "${CONTAINER_NAME}" \ - /bin/bash -c \ - "mysql -h localhost -uroot -p\"$MYSQL_ROOT_PASSWORD\" -e \"CREATE SCHEMA sbtest;\"" - -# prepare benchmark -docker run --network="${NETWORK_NAME}" \ - --name sb-prepare --rm -i \ - severalnines/sysbench \ - sysbench \ - --db-driver=mysql \ - --oltp-table-size=100000 \ - --oltp-tables-count=24 \ - --threads=1 \ - --mysql-host="${MYSQL_HOST}" \ - --mysql-port=3306 \ - --mysql-user=root \ - --mysql-password="${MYSQL_ROOT_PASSWORD}" \ - --mysql-debug=on \ - /usr/share/sysbench/tests/include/oltp_legacy/parallel_prepare.lua \ - run - -# execute test -docker run --network="${NETWORK_NAME}" \ - --name sb-run --rm -i \ - severalnines/sysbench \ - sysbench \ - --db-driver=mysql \ - --report-interval=2 \ - --mysql-table-engine=innodb \ - --oltp-table-size=100000 \ - --oltp-tables-count=24 \ - --threads=4 \ - --time=45 \ - --mysql-host="${MYSQL_HOST}" \ - --mysql-port=3306 \ - --mysql-user=root \ - --mysql-password="${MYSQL_ROOT_PASSWORD}" \ - /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua \ - run diff --git a/community_images/mysql/official/image.yml b/community_images/mysql/official/image.yml deleted file mode 100644 index dfc80fb7b1..0000000000 --- a/community_images/mysql/official/image.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: mysql-official -official_name: MySQL Official -official_website: https://www.mysql.com/ -source_image_provider: The Docker Community -source_image_repo: docker.io/library/mysql -source_image_repo_link: https://hub.docker.com/_/mysql -source_image_readme: https://github.com/docker-library/docs/blob/master/mysql/README.md -rf_docker_link: rapidfort/mysql-official -image_workflow_name: mysql_official -github_location: mysql/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fmysql -usage_instructions: | - $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d rapidfort/mysql-official:latest -what_is_text: | - MySQL is the world's most popular open source database. With its proven performance, reliability and ease-of-use, MySQL has become the leading database choice for web-based applications, covering the entire range from personal projects and websites, via e-commerce and information services, all the way to high profile web properties including Facebook, Twitter, YouTube, Yahoo! and many more. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`8.0-debian`, `8-debian` (Dockerfile)](https://github.com/docker-library/mysql/blob/master/8.0/Dockerfile.debian)" - - "[`5.7-debian`, `5-debian` (Dockerfile)](https://github.com/docker-library/mysql/blob/master/5.7/Dockerfile.debian)" -input_registry: - registry: docker.io - account: library -repo_sets: - - mysql: - input_base_tag: "8.0.*-debian" - output_repo: mysql-official - - mysql: - input_base_tag: "5.7.*-debian" - output_repo: mysql-official -runtimes: - - type: docker - script: docker_coverage.sh - wait_time_sec: 60 - mysql-official: - exec_command: --default-authentication-plugin=mysql_native_password - environment: - MYSQL_ROOT_PASSWORD: my_root_password - MYSQL_ROOT_HOST: "%" diff --git a/community_images/nats/bitnami/.rfignore b/community_images/nats/bitnami/.rfignore deleted file mode 100644 index 260875870b..0000000000 --- a/community_images/nats/bitnami/.rfignore +++ /dev/null @@ -1,7 +0,0 @@ -usr/lib/x86_64-linux-gnu/gconv -opt/bitnami/scripts/postunpack.sh -opt/bitnami/nats -opt/bitnami/common/licenses -opt/bitnami/licenses -opt/bitnami/nats/licenses -usr/share/common-licenses diff --git a/community_images/nats/bitnami/README.md b/community_images/nats/bitnami/README.md deleted file mode 100644 index cb0dfc5302..0000000000 --- a/community_images/nats/bitnami/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for NATS - -RapidFort’s container optimization process hardened this NATS container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami NATS][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is NATS? - -> NATS is a connective technology built for the ever increasingly hyper-connected world. It is a single technology that enables applications to securely communicate across any combination of cloud vendors, on-premise, edge, web and mobile, and devices. NATS consists of a family of open source products that are tightly integrated but can be deployed easily and independently. NATS is being used globally by thousands of companies, spanning use-cases including microservices, edge computing, mobile, IoT and can be used to augment or replace traditional messaging - - -[Overview of NATS](https://nats.io) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened NATS image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install nats, just replace repository with RapidFort registry -$ helm install my-nats bitnami/nats --set image.repository=rapidfort/nats - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami NATS][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami NATS][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/nats][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`2`, `2-debian-11`, `2.10.7`, `2.10.7-debian-11-r` (2/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/nats/2/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=nats&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fnats?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fnats?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fnats?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fnats?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fnats?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/nats?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/nats?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/nats/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/nats/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/nats -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/nats diff --git a/community_images/nats/bitnami/assets/cve_reduction.webp b/community_images/nats/bitnami/assets/cve_reduction.webp deleted file mode 100644 index a25a38285f27cc861283a24f5f9ed26243ad49ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1506 zcmWIYbaT7K%D@or>J$(bU=hK^z`&pY#0wc2>=_t5ot*VV2 z7YKk{%#)fI8VsZ(fLMm1m?4P4oxusnrYb;$XZ|7v28*u@49pV{Vo5U@7`C@EFi6}& zh^Z`KVBl|IVAyuPAh9SB>=+gx$&{AH!0>4~0|Rd)1B37d1_rKZm_reI5pjXTuL?jt zGC+Uk17SKt4nrz~0)r<*9z!yN9*||kV8CF=U#%w^PC#OT0amuoi7 zLq%ChQB}OtqJg(FJ@0N@vq7lQ0sh$e2W%PYc2&L2T=)4^wL|5{S6<<7g|4~Jopo!T ziOru9#m~$C>KEic*?+NW)h~s*<9ui0_XpWCIK?YI__^)QN*B-G<=qyS#e+3%AGfET ze7tSCfvsZRHBFs480BaF^9>+Q-nZa4c2Uju|7%^+%d$D~{=*c0&AigP2Ru2n zUwI$y_uM&sf;NLt>&4~;?&h9ziaMtsu9TkefZ^XCFF~$@rWdw8a5{U_Aaee`S&5HW zOCDdfvpXo!9Pw4A+;_hEIqCuc0XQe8gbefOvH8*>(w zcD?&C-4z&3{2#P83BKq5ko~{s^u_i~yjM~WzuCy&*ng{KC*!)(F5O!zukuQ|%>Vj+ zM+LvwD;ASAVQb^fBd4St@szx`IbT~)f7!=qhl{qEsyiMeM=RIQ|MXgV|GS;h#k_^{ zv#+?Xc=1%odh0Ham+Oy)#z`i~J(d62y?U{G47*w6W8LRbsj*viT$qomn09JQD(P=I zW#edkhhuA6X8nh(cP#yS>mROrWSXUSDCgVRmF}PK@995tJ^sA950moo`oQnftG0-H zhxLXUDL8-o=5oehujlRvt1oq1yPj06KlwGN%;dxR6&)=;rw{r3Y!CmtPGsx853YT4 z?(UfD6>kx`RV=lsX8-19!RJgrRn6bMyf#Im{sW`V^JNPss~fwX&H6sUb>-$%pUykn z&)CneDDFAY+;PGF`Z{TAsb1*^Do&iD%eJwsPJZ6i_iek!+_L+@<|%e>PfmWcKdtKI z*G?VTlIn9zX=j{xMgRA2o6d3VH@2NpU2^H^#Vz*dpWOb#oZVd9n1?LXFwke4H-2JEJy;R>P7YE%RJd4W@TW@1Z?|plGPyWNit65t& zUGtPTT6NQ)XRF){-8Jn?dz_WNav_dJoxdmE_Izv%GH b;C5ksM{}Fg^E~C%->O~Kc4OnZ49vs;u__tU diff --git a/community_images/nats/bitnami/assets/metrics.webp b/community_images/nats/bitnami/assets/metrics.webp deleted file mode 100644 index 6c9b7f87340444d5c65044b6e9140da54baae389..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21552 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

<^Bu{Fyw#ozwEVMpvt97Omy>z{W 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 diff --git a/community_images/nats/bitnami/coverage.sh b/community_images/nats/bitnami/coverage.sh deleted file mode 100644 index 437df86633..0000000000 --- a/community_images/nats/bitnami/coverage.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -set -e -set -x - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -function test_nats() { - local NAMESPACE=$1 - local HELM_RELEASE=$2 - - NATS_USER=$(kubectl get secret --namespace "${NAMESPACE}" "${HELM_RELEASE}" -o jsonpath='{.data.*}' | base64 -d | grep -m 1 user | awk '{print $2}' | tr -d '"') - NATS_PASS=$(kubectl get secret --namespace "${NAMESPACE}" "${HELM_RELEASE}" -o jsonpath='{.data.*}' | base64 -d | grep -m 1 password | awk '{print $2}' | tr -d '"') - echo -e "Client credentials:\n\tUser: $NATS_USER\n\tPassword: $NATS_PASS" - - # clean up the pod with name nats-release-client first if present already - kubectl delete pod nats-release-client --namespace "${NAMESPACE}" --ignore-not-found=true - kubectl run nats-release-client --restart='Never' --env="NATS_USER=$NATS_USER" --env="NATS_PASS=$NATS_PASS" --image docker.io/bitnami/golang --namespace "${NAMESPACE}" --command -- sleep infinity - # wait for nats client to come up - kubectl wait pods nats-release-client -n "${NAMESPACE}" --for=condition=ready --timeout=10m - echo "#!/bin/bash - GO111MODULE=off go get github.com/nats-io/nats.go - cd \"\$GOPATH\"/src/github.com/nats-io/nats.go/examples/nats-pub && go install && cd || exit - cd \"\$GOPATH\"/src/github.com/nats-io/nats.go/examples/nats-echo && go install && cd || exit - nats-echo -s nats://$NATS_USER:$NATS_PASS@${HELM_RELEASE}.${NAMESPACE}.svc.cluster.local:4222 SomeSubject & - nats-pub -s nats://$NATS_USER:$NATS_PASS@${HELM_RELEASE}.${NAMESPACE}.svc.cluster.local:4222 -reply Hi SomeSubject 'Hi everyone'" > "$SCRIPTPATH"/commands.sh - - chmod +x "$SCRIPTPATH"/commands.sh - POD_NAME="nats-release-client" - kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/commands.sh "${POD_NAME}":/tmp/common_commands.sh - - kubectl -n "${NAMESPACE}" exec -i "${POD_NAME}" -- bash -c "/tmp/common_commands.sh" - - # delete the generated commands.sh - rm "$SCRIPTPATH"/commands.sh -} diff --git a/community_images/nats/bitnami/dc_coverage.sh b/community_images/nats/bitnami/dc_coverage.sh deleted file mode 100755 index f1e9de1475..0000000000 --- a/community_images/nats/bitnami/dc_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" diff --git a/community_images/nats/bitnami/docker-compose.yml b/community_images/nats/bitnami/docker-compose.yml deleted file mode 100644 index 00f446899b..0000000000 --- a/community_images/nats/bitnami/docker-compose.yml +++ /dev/null @@ -1,11 +0,0 @@ -version: '2' - -services: - nats1: - image: ${NATS_IMAGE_REPOSITORY}:${NATS_IMAGE_TAG} - cap_add: - - SYS_PTRACE - ports: - - '4222:4222' - - '6222:6222' - - '8222:8222' diff --git a/community_images/nats/bitnami/docker_coverage.sh b/community_images/nats/bitnami/docker_coverage.sh deleted file mode 100755 index f1e9de1475..0000000000 --- a/community_images/nats/bitnami/docker_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" diff --git a/community_images/nats/bitnami/image.yml b/community_images/nats/bitnami/image.yml deleted file mode 100644 index 349e8693ae..0000000000 --- a/community_images/nats/bitnami/image.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: nats -official_name: NATS -official_website: https://nats.io -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/nats -source_image_repo_link: https://hub.docker.com/r/bitnami/nats -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/nats/README.md -rf_docker_link: rapidfort/nats -image_workflow_name: nats_bitnami -github_location: nats/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fnats -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install nats, just replace repository with RapidFort registry - $ helm install my-nats bitnami/nats --set image.repository=rapidfort/nats -what_is_text: | - NATS is a connective technology built for the ever increasingly hyper-connected world. It is a single technology that enables applications to securely communicate across any combination of cloud vendors, on-premise, edge, web and mobile, and devices. NATS consists of a family of open source products that are tightly integrated but can be deployed easily and independently. NATS is being used globally by thousands of companies, spanning use-cases including microservices, edge computing, mobile, IoT and can be used to augment or replace traditional messaging -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - nats: - input_base_tag: "2.10.2-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: nats - image_keys: - nats: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - nats: - repository: "NATS_IMAGE_REPOSITORY" - tag: "NATS_IMAGE_TAG" - - type: docker - script: docker_coverage.sh diff --git a/community_images/nats/bitnami/k8s_coverage.sh b/community_images/nats/bitnami/k8s_coverage.sh deleted file mode 100755 index 4b8ea90e2b..0000000000 --- a/community_images/nats/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -test_nats "${NAMESPACE}" "${RELEASE_NAME}" diff --git a/community_images/nats/bitnami/overrides.yml b/community_images/nats/bitnami/overrides.yml deleted file mode 100644 index 6584d81765..0000000000 --- a/community_images/nats/bitnami/overrides.yml +++ /dev/null @@ -1,20 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -resourceType: deployment -replicaCount: 1 -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/nats/ironbank/README.md b/community_images/nats/ironbank/README.md deleted file mode 100644 index 85b2686800..0000000000 --- a/community_images/nats/ironbank/README.md +++ /dev/null @@ -1,139 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for NATS Ironbank - -RapidFort’s container optimization process hardened this NATS Ironbank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One NATS Ironbank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is NATS Ironbank? - -> NATS is a connective technology built for the ever increasingly hyper-connected world. It is a single technology that enables applications to securely communicate across any combination of cloud vendors, on-premise, edge, web and mobile, and devices. NATS consists of a family of open source products that are tightly integrated but can be deployed easily and independently. NATS is being used globally by thousands of companies, spanning use-cases including microservices, edge computing, mobile, IoT and can be used to augment or replace traditional messaging - - -[Overview of NATS Ironbank](https://nats.io) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened NATS Ironbank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -# Run NATS server using docker run -$ docker run -d --name nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 rapidfort/nats-ib - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One NATS Ironbank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One NATS Ironbank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/nats-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=nats-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fsynadia%2Fnats-server?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fsynadia%2Fnats-server?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fsynadia%2Fnats-server?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fsynadia%2Fnats-server?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fsynadia%2Fnats-server?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/nats-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/nats-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/nats/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/nats/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fsynadia%2Fnats-server -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/nats-ib diff --git a/community_images/nats/ironbank/assets/cve_reduction.webp b/community_images/nats/ironbank/assets/cve_reduction.webp deleted file mode 100644 index a73cd971d944e04fb2bcb91825973640363e4316..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1758 zcmb`Hdpy)x6u{4*l+3cGLQRb@MUqEF5APWy!j4DYpT;z3F{~L%QXY|>rbQ$sj~Jnq zH@!%xwGt`Myj8TMm{GCjx4+pwee_5B*?;!j&pG#d&pr2Z&V76?#lp<2V=2G^QxjW9 z+nr7l0HAHUR|3fc1upBHkFJ%xnEWT33#{SAA5 z!$(+wEHvh^FrF3|B;=PU>-qZy3v&rYSg|CX;b4dMPN?F62^25~6O{i~Sv=2xEP$PS z08#d$&+`gEWek8^&!SH`13>B&K*iHQY7q6GV#H7@;^hS}%>}?Z1K?T#BwW81y0~`n zF8*b&3g{X;j)0W{c(k~V097U-ZaMj-{wDXj?Un9W%jBQWsao@B19 zq_|=8+P!%Z*fTW7U@dq_rXmrY!&BE1(gu2Q{S#>hF~yT_nbS6fQ)Hx7%9c=v6bkCY z?jyNlUObqU<-z!w$9^+@?bT;>qXr!l8-Kewjh;bL^{fd3E#na?2^}C*AJutO@+dn>TW0nR&X7zxb3>re7zRHqC~SWBCPh z(vuFibTdO9|5>VwHCq!{*T&oO@C2bnGHP2_>BEEj^imvjF0>Z9{o3hmk(~EzRpf8P zE$&&hAZUwJ;SPEQ4M<^dm#tQNPvzm7mu6dbe>AS!ICpoA)eDx#>w=y8VyFv<47+oL z-Z~sU)7N%m9=WM$Re(Iv+#hsmK`OP6t`?_k&uHI7yq{a5KjyV0;J#F!GRLxtx1G(Y zo0_Aio-A{Haj7D?k%`qZiHT)?@J*>WbN%GSzHN=W-b3y2hwl36YO%`B)xKdZ=Zg&7 zew>f%Dnb~|6_QqQpPR%(btti6qGG+TkJ_c=)R%<&V~^BVyK;SpDZJbV3(L(mMvi3K ziNBIQ98eaXsnSKMxjsB3SaO+>U?Lf9?7k2z&Ldo{>rm6M;V4BUcep0SIQ#324~y(` ztwHK+o`&S7ySbHR#rk{lC!(_gn``O?oq}DVGrcTwaUuIBt$Z66Kiyg;)OrP1r_v$e zlTYM?>|K*{jg2c^-jkY&tR-$$^cu(OcdF!<1^cI;HJVbsXi6JVB{&Q$(5@3klSZ!+ zeBxg8;jCJeREq8y>I^0+oZ_nXX8VeMxKd2Z*0{HNS%wic36RorJLutu$~_DC?OAxT z9L8l`_4=P{NqAP#2|E$PR)+?Tf%qdunNts3YX-@)W6G^_NYuz>LeZ!7Ibz&nHC0uP zeCvrjHb_A-Wu8kvU1YrQ23t@XHDs-s8s<}ulULj`Kjx8LlARdEZbuBs3-3}*#+&Sl zPjgn{gY8_arj)$Z2uodD`KFPr8Ns!qBw|uqZly+3SqRx~?l$p?B;Ad2DbzDjM?JYK zRC>rw&a$R|B|9LoD^ELs$Ek0aKXY~B1g2-MHMT@xx~{)V?TG#p;bj0>>M z)zulL^RH^`_uL-dc9H0d;~ZFmkqFUSU}T2>71=&Exv6o>*3G6RTi_d2^b7}jf z!*{3gw122n&^P#N5Yl#tP~WFp9k(Iqi}|km)R5ABgw&FhQ!A1;&bxDMrb&?%|LBOl zAmR6-T#=OPyey%(MnVJ&uv85@ky}6!Z>_!r@7p z);X<`ckZiH8^ZABrt6n^BMn~hrH7{9UeUXz-s$5Ob5NGv@9Z>tV?b@U_Kf{LR*y&Y zn|pg7h)Ot>t|hkJt9@2@8oO!#!=zDCT2PMDc4OPOj?{U4SRav_FqlS-P93ixGcyV$ UxwMU)M1eSyggmc1i2h&jHv%@G`Tzg` diff --git a/community_images/nats/ironbank/assets/metrics.webp b/community_images/nats/ironbank/assets/metrics.webp deleted file mode 100644 index 8dcc372ef45f45694cf5179b1898d002d29db767..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22758 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 Ul79ar{r*Y&{Ng_*3~E+D07HmpP5=M^ diff --git a/community_images/nats/ironbank/coverage.sh b/community_images/nats/ironbank/coverage.sh deleted file mode 100644 index 11962ee789..0000000000 --- a/community_images/nats/ironbank/coverage.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - -set -e -set -x - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -function test_nats() { - local NAMESPACE=$1 - local RELEASE_NAME=$2 - - NATS_SERVER=$(kubectl get pod "${RELEASE_NAME}" -n "${NAMESPACE}" --template '{{.status.podIP}}') - - # NATS_USER=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath='{.data.*}' | base64 -d | grep -m 1 user | awk '{print $2}' | tr -d '"') - # NATS_PASS=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath='{.data.*}' | base64 -d | grep -m 1 password | awk '{print $2}' | tr -d '"') - NATS_USER=ruser - NATS_PASS=T0pS3cr3t - - echo -e "Client credentials:\n\tUser: $NATS_USER\n\tPassword: $NATS_PASS" - - # clean up the pod with name nats-release-client first if present already - kubectl delete pod nats-release-client --namespace "${NAMESPACE}" --ignore-not-found=true - kubectl run nats-release-client --restart='Never' --env="NATS_USER=$NATS_USER" --env="NATS_PASS=$NATS_PASS" --image docker.io/bitnami/golang --namespace "${NAMESPACE}" --command -- sleep infinity - # wait for nats client to come up - kubectl wait pods nats-release-client -n "${NAMESPACE}" --for=condition=ready --timeout=10m - echo "#!/bin/bash - set -x - set -e - GO111MODULE=off go get github.com/nats-io/nats.go - cd \"\$GOPATH\"/src/github.com/nats-io/nats.go/examples/nats-pub && go install && cd || exit - cd \"\$GOPATH\"/src/github.com/nats-io/nats.go/examples/nats-echo && go install && cd || exit - nats-echo -s nats://$NATS_USER:$NATS_PASS@${NATS_SERVER}:4222 SomeSubject & - nats-pub -s nats://$NATS_USER:$NATS_PASS@${NATS_SERVER}:4222 -reply Hi SomeSubject 'Hi everyone'" > "$SCRIPTPATH"/commands.sh - # nats-echo -s nats://$NATS_USER:$NATS_PASS@${RELEASE_NAME}.${NAMESPACE}.svc.cluster.local:4222 SomeSubject & - # nats-pub -s nats://$NATS_USER:$NATS_PASS@${RELEASE_NAME}.${NAMESPACE}.svc.cluster.local:4222 -reply Hi SomeSubject 'Hi everyone'" > "$SCRIPTPATH"/commands.sh - - chmod +x "$SCRIPTPATH"/commands.sh - POD_NAME="nats-release-client" - kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/commands.sh "${POD_NAME}":/tmp/common_commands.sh - - kubectl -n "${NAMESPACE}" exec -i "${POD_NAME}" -- bash -c "/tmp/common_commands.sh" - - # delete the generated commands.sh - rm "$SCRIPTPATH"/commands.sh -} diff --git a/community_images/nats/ironbank/image.yml b/community_images/nats/ironbank/image.yml deleted file mode 100644 index c3f1d61121..0000000000 --- a/community_images/nats/ironbank/image.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: nats-ib -official_name: NATS Ironbank -official_website: https://nats.io -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/synadia/nats-server -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fsynadia%2Fnats-server -source_image_readme: https://repo1.dso.mil/dsop/opensource/synadia/nats-server/-/blob/development/README.md -rf_docker_link: rapidfort/nats-ib -image_workflow_name: nats_ironbank -github_location: nats/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fsynadia%2Fnats-server -usage_instructions: | - # Run NATS server using docker run - $ docker run -d --name nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 rapidfort/nats-ib -what_is_text: | - NATS is a connective technology built for the ever increasingly hyper-connected world. It is a single technology that enables applications to securely communicate across any combination of cloud vendors, on-premise, edge, web and mobile, and devices. NATS consists of a family of open source products that are tightly integrated but can be deployed easily and independently. NATS is being used globally by thousands of companies, spanning use-cases including microservices, edge computing, mobile, IoT and can be used to augment or replace traditional messaging -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/synadia/nats-server: - input_base_tag: "2.9." - output_repo: nats-ib -runtimes: - - type: k8s - script: k8s_coverage.sh - use_helm: False - image_keys: - nats-ib: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - readiness_wait_pod_name_suffix: - - "" diff --git a/community_images/nats/ironbank/k8s_coverage.sh b/community_images/nats/ironbank/k8s_coverage.sh deleted file mode 100755 index 4b8ea90e2b..0000000000 --- a/community_images/nats/ironbank/k8s_coverage.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -test_nats "${NAMESPACE}" "${RELEASE_NAME}" diff --git a/community_images/nats/ironbank/overrides.yml b/community_images/nats/ironbank/overrides.yml deleted file mode 100644 index 6584d81765..0000000000 --- a/community_images/nats/ironbank/overrides.yml +++ /dev/null @@ -1,20 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -resourceType: deployment -replicaCount: 1 -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/nats/official/README.md b/community_images/nats/official/README.md deleted file mode 100644 index e6cf521ab1..0000000000 --- a/community_images/nats/official/README.md +++ /dev/null @@ -1,141 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for NATS Official - -RapidFort’s container optimization process hardened this NATS Official container. This container is free to use and has no license limitations. - -It is the same as the [NATS NATS Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is NATS Official? - -> NATS is a connective technology built for the ever increasingly hyper-connected world. It is a single technology that enables applications to securely communicate across any combination of cloud vendors, on-premise, edge, web and mobile, and devices. NATS consists of a family of open source products that are tightly integrated but can be deployed easily and independently. NATS is being used globally by thousands of companies, spanning use-cases including microservices, edge computing, mobile, IoT and can be used to augment or replace traditional messaging - - -[Overview of NATS Official](https://nats.io) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened NATS Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add nats https://nats-io.github.io/k8s/helm/charts/ - -# install nats, just replace repository with RapidFort registry -$ helm install my-nats nats/nats --set image.repository=rapidfort/nats-official - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [NATS NATS Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [NATS NATS Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/nats-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=nats-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fnats?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fnats?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fnats?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fnats?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fnats?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nats-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/nats-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/nats-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/nats/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/nats/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/nats -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/nats-official diff --git a/community_images/nats/official/assets/cve_reduction.webp b/community_images/nats/official/assets/cve_reduction.webp deleted file mode 100644 index 369cbb0b8be24422b04f0f8e9306cafae029fa4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 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/dev/null 2>&1 ; pwd -P )" - -function test_nats() { - local NAMESPACE=$1 - local HELM_RELEASE=$2 - - # NATS_USER=$(kubectl get secret --namespace "${NAMESPACE}" "${HELM_RELEASE}" -o jsonpath='{.data.*}' | base64 -d | grep -m 1 user | awk '{print $2}' | tr -d '"') - # NATS_PASS=$(kubectl get secret --namespace "${NAMESPACE}" "${HELM_RELEASE}" -o jsonpath='{.data.*}' | base64 -d | grep -m 1 password | awk '{print $2}' | tr -d '"') - NATS_USER="testuser" - NATS_PASS="testpass" - echo -e "Client credentials:\n\tUser: $NATS_USER\n\tPassword: $NATS_PASS" - - # clean up the pod with name nats-release-client first if present already - kubectl delete pod nats-release-client --namespace "${NAMESPACE}" --ignore-not-found=true - kubectl run nats-release-client --restart='Never' --env="NATS_USER=$NATS_USER" --env="NATS_PASS=$NATS_PASS" --image docker.io/bitnami/golang --namespace "${NAMESPACE}" --command -- sleep infinity - # wait for nats client to come up - kubectl wait pods nats-release-client -n "${NAMESPACE}" --for=condition=ready --timeout=10m - echo "#!/bin/bash - GO111MODULE=off go get github.com/nats-io/nats.go - cd \"\$GOPATH\"/src/github.com/nats-io/nats.go/examples/nats-pub && go install && cd || exit - cd \"\$GOPATH\"/src/github.com/nats-io/nats.go/examples/nats-echo && go install && cd || exit - nats-echo -s nats://$NATS_USER:$NATS_PASS@${HELM_RELEASE}.${NAMESPACE}.svc.cluster.local:4222 SomeSubject & - nats-pub -s nats://$NATS_USER:$NATS_PASS@${HELM_RELEASE}.${NAMESPACE}.svc.cluster.local:4222 -reply Hi SomeSubject 'Hi everyone'" > "$SCRIPTPATH"/commands.sh - - chmod +x "$SCRIPTPATH"/commands.sh - POD_NAME="nats-release-client" - kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/commands.sh "${POD_NAME}":/tmp/common_commands.sh - - kubectl -n "${NAMESPACE}" exec -i "${POD_NAME}" -- bash -c "/tmp/common_commands.sh" - - # delete the generated commands.sh - rm "$SCRIPTPATH"/commands.sh -} diff --git a/community_images/nats/official/dc_coverage.sh b/community_images/nats/official/dc_coverage.sh deleted file mode 100755 index f1e9de1475..0000000000 --- a/community_images/nats/official/dc_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" diff --git a/community_images/nats/official/docker-compose.yml b/community_images/nats/official/docker-compose.yml deleted file mode 100644 index 00f446899b..0000000000 --- a/community_images/nats/official/docker-compose.yml +++ /dev/null @@ -1,11 +0,0 @@ -version: '2' - -services: - nats1: - image: ${NATS_IMAGE_REPOSITORY}:${NATS_IMAGE_TAG} - cap_add: - - SYS_PTRACE - ports: - - '4222:4222' - - '6222:6222' - - '8222:8222' diff --git a/community_images/nats/official/docker_coverage.sh b/community_images/nats/official/docker_coverage.sh deleted file mode 100755 index f1e9de1475..0000000000 --- a/community_images/nats/official/docker_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" diff --git a/community_images/nats/official/image.yml b/community_images/nats/official/image.yml deleted file mode 100644 index 05793a7a17..0000000000 --- a/community_images/nats/official/image.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: nats-official -official_name: NATS Official -official_website: https://nats.io -source_image_provider: NATS -source_image_repo: docker.io/library/nats -source_image_repo_link: https://hub.docker.com/_/nats -source_image_readme: https://github.com/nats-io/nats-docker/blob/main/README.md -rf_docker_link: rapidfort/nats-official -image_workflow_name: nats_official -github_location: nats/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fnats -usage_instructions: | - $ helm repo add nats https://nats-io.github.io/k8s/helm/charts/ - - # install nats, just replace repository with RapidFort registry - $ helm install my-nats nats/nats --set image.repository=rapidfort/nats-official -what_is_text: | - NATS is a connective technology built for the ever increasingly hyper-connected world. It is a single technology that enables applications to securely communicate across any combination of cloud vendors, on-premise, edge, web and mobile, and devices. NATS consists of a family of open source products that are tightly integrated but can be deployed easily and independently. NATS is being used globally by thousands of companies, spanning use-cases including microservices, edge computing, mobile, IoT and can be used to augment or replace traditional messaging -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: library -repo_sets: - - nats: - input_base_tag: "2.9.*" - output_repo: nats-official -needs_common_commands: False -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: nats - repo_url: https://nats-io.github.io/k8s/helm/charts/ - chart: nats - image_keys: - nats-official: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - helm_additional_params: - auth.enabled: true - auth.user: "testuser" - auth.password: "testpass" - auth.token: "" - auth.timeout: 1 - auth.usersCredentials: [] - auth.noAuthUser: "" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - nats-official: - repository: "NATS_IMAGE_REPOSITORY" - tag: "NATS_IMAGE_TAG" diff --git a/community_images/nats/official/k8s_coverage.sh b/community_images/nats/official/k8s_coverage.sh deleted file mode 100755 index 4b8ea90e2b..0000000000 --- a/community_images/nats/official/k8s_coverage.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -test_nats "${NAMESPACE}" "${RELEASE_NAME}" diff --git a/community_images/nats/official/overrides.yml b/community_images/nats/official/overrides.yml deleted file mode 100644 index 6584d81765..0000000000 --- a/community_images/nats/official/overrides.yml +++ /dev/null @@ -1,20 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -resourceType: deployment -replicaCount: 1 -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/nginx/bitnami/.rfignore b/community_images/nginx/bitnami/.rfignore deleted file mode 100644 index 65f311e731..0000000000 --- a/community_images/nginx/bitnami/.rfignore +++ /dev/null @@ -1,6 +0,0 @@ -opt/bitnami/nginx/conf -opt/bitnami/scripts -opt/bitnami/common/licenses -opt/bitnami/licenses -opt/bitnami/nginx/licenses -usr/share/common-licenses diff --git a/community_images/nginx/bitnami/README.md b/community_images/nginx/bitnami/README.md deleted file mode 100644 index 4358c439e0..0000000000 --- a/community_images/nginx/bitnami/README.md +++ /dev/null @@ -1,143 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for NGINX - -RapidFort’s container optimization process hardened this NGINX container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami NGINX][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is NGINX? - -> Nginx (pronounced "engine-x") is an open source reverse proxy server for HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer, HTTP cache, and a web server (origin server). The nginx project started with a strong focus on high concurrency, high performance and low memory usage. It is licensed under the 2-clause BSD-like license and it runs on Linux, BSD variants, Mac OS X, Solaris, AIX, HP-UX, as well as on other *nix flavors. It also has a proof of concept port for Microsoft Windows. - - -[Overview of NGINX](http://nginx.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened NGINX image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install nginx, just replace repository with RapidFort registry -$ helm install my-nginx bitnami/nginx --set image.repository=rapidfort/nginx - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami NGINX][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami NGINX][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/nginx][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`1.25`, `1.25-debian-11`, `1.25.3`, `1.25.3-debian-11-r` (1.25/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/nginx/1.25/debian-11/Dockerfile) -* [`1.24`, `1.24-debian-11`, `1.24.0`, `1.24.0-debian-11-r` (1.24/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/nginx/1.24/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=nginx&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/nginx?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/nginx?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/nginx/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/nginx/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/nginx -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/nginx diff --git a/community_images/nginx/bitnami/assets/cve_reduction.webp b/community_images/nginx/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 928b4a9e4ed0e3eb3be2232604fa785a95fc29be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1630 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 diff --git a/community_images/nginx/bitnami/configs/server_block_backends.conf b/community_images/nginx/bitnami/configs/server_block_backends.conf deleted file mode 100644 index fbdfb561be..0000000000 --- a/community_images/nginx/bitnami/configs/server_block_backends.conf +++ /dev/null @@ -1,9 +0,0 @@ -upstream backend_a { - server backend1a; - server backend2a; -} - -upstream backend_b { - server backend1b; - server backend2b; -} \ No newline at end of file diff --git a/community_images/nginx/bitnami/configs/server_include_backends.conf b/community_images/nginx/bitnami/configs/server_include_backends.conf deleted file mode 100644 index d607e1f009..0000000000 --- a/community_images/nginx/bitnami/configs/server_include_backends.conf +++ /dev/null @@ -1,27 +0,0 @@ -listen 8443 ssl; - -ssl_certificate bitnami/certs/server.crt; -ssl_certificate_key bitnami/certs/server.key; -ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; -ssl_session_cache shared:SSL:1m; -ssl_session_timeout 5m; - -ssl_ciphers HIGH:!aNULL:!MD5; -ssl_prefer_server_ciphers on; - -location /a { - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header HOST $http_host; - proxy_set_header X-NginX-Proxy true; - - proxy_pass http://backend_a; -} - -location /b { - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header HOST $http_host; - proxy_set_header X-NginX-Proxy true; - - proxy_pass http://backend_b; - proxy_redirect off; -} diff --git a/community_images/nginx/bitnami/coverage_script.sh b/community_images/nginx/bitnami/coverage_script.sh deleted file mode 100755 index 3bff5c9f3c..0000000000 --- a/community_images/nginx/bitnami/coverage_script.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -set -x -set -e - -declare -a MODULE_ARRAY=("ngx_http_brotli_static_module" "ngx_stream_geoip2_module" "ngx_http_brotli_filter_module" "ngx_http_geoip2_module"); -for module in "${MODULE_ARRAY[@]}" -do - echo "load_module modules/${module}.so;" | cat - /opt/bitnami/nginx/conf/nginx.conf > /tmp/nginx.conf && \ - cp /tmp/nginx.conf /opt/bitnami/nginx/conf/nginx.conf -done - -/opt/bitnami/scripts/nginx/reload.sh - -/opt/bitnami/scripts/nginx/status.sh - diff --git a/community_images/nginx/bitnami/dc_coverage.sh b/community_images/nginx/bitnami/dc_coverage.sh deleted file mode 100755 index c9911edae9..0000000000 --- a/community_images/nginx/bitnami/dc_coverage.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -CONTAINER_NAME="${PROJECT_NAME}"-nginx-1 - -# exec into container and run coverage script -docker exec -i "${CONTAINER_NAME}" bash -c /opt/bitnami/scripts/coverage_script.sh - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8443/tcp\"[0].HostPort" -NON_TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort") -TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8443/tcp\"[0].HostPort") - -# run curl in loop for different endpoints -for i in {1..20}; -do - echo "Attempt $i" - curl http://localhost:"${NON_TLS_PORT}"/a - curl http://localhost:"${NON_TLS_PORT}"/b - with_backoff curl https://localhost:"${TLS_PORT}"/a -k -v - with_backoff curl https://localhost:"${TLS_PORT}"/b -k -v -done \ No newline at end of file diff --git a/community_images/nginx/bitnami/docker-compose.yml b/community_images/nginx/bitnami/docker-compose.yml deleted file mode 100644 index 1226cebaae..0000000000 --- a/community_images/nginx/bitnami/docker-compose.yml +++ /dev/null @@ -1,39 +0,0 @@ -version: '2' - -services: - nginx: - image: ${NGINX_IMAGE_REPOSITORY}:${NGINX_IMAGE_TAG} - user: root - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::8080' - - '0.0.0.0::8443' - volumes: - - ./configs/server_block_backends.conf:/opt/bitnami/nginx/conf/server_blocks/server_block_backends.conf:ro - - ./configs/server_include_backends.conf:/opt/bitnami/nginx/conf/bitnami/server_include_backends.conf:ro - - ./coverage_script.sh:/opt/bitnami/scripts/coverage_script.sh - backend1a: - image: nginxdemos/hello:plain-text - cap_add: - - SYS_PTRACE - ports: - - '80' - backend1b: - image: nginxdemos/hello:plain-text - cap_add: - - SYS_PTRACE - ports: - - '80' - backend2a: - image: nginxdemos/hello:plain-text - cap_add: - - SYS_PTRACE - ports: - - '80' - backend2b: - image: nginxdemos/hello:plain-text - cap_add: - - SYS_PTRACE - ports: - - '80' diff --git a/community_images/nginx/bitnami/image.yml b/community_images/nginx/bitnami/image.yml deleted file mode 100644 index b8483ad8d8..0000000000 --- a/community_images/nginx/bitnami/image.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: nginx -official_name: NGINX -official_website: http://nginx.org/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/nginx -source_image_repo_link: https://hub.docker.com/r/bitnami/nginx -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/nginx/README.md -rf_docker_link: rapidfort/nginx -image_workflow_name: nginx_bitnami -github_location: nginx/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fnginx -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install nginx, just replace repository with RapidFort registry - $ helm install my-nginx bitnami/nginx --set image.repository=rapidfort/nginx -what_is_text: | - Nginx (pronounced "engine-x") is an open source reverse proxy server for HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer, HTTP cache, and a web server (origin server). The nginx project started with a strong focus on high concurrency, high performance and low memory usage. It is licensed under the 2-clause BSD-like license and it runs on Linux, BSD variants, Mac OS X, Solaris, AIX, HP-UX, as well as on other *nix flavors. It also has a proof of concept port for Microsoft Windows. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - nginx: - input_base_tag: "1.25.2-debian-11-r" - - nginx: - input_base_tag: "1.24.0-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: nginx - tls_certs: - generate: true - secret_name: localhost-server-tls - common_name: localhost - image_keys: - nginx: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - nginx: - repository: "NGINX_IMAGE_REPOSITORY" - tag: "NGINX_IMAGE_TAG" diff --git a/community_images/nginx/bitnami/k8s_coverage.sh b/community_images/nginx/bitnami/k8s_coverage.sh deleted file mode 100755 index 7e810330e4..0000000000 --- a/community_images/nginx/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# fetch service url and store the urls in URLS file -rm -f URLS -URL=$(minikube service "${RELEASE_NAME}" -n "${NAMESPACE}" --url) - -# sleep 5 after minikube service (Required) -sleep 5 - -# curl to http url -curl "${URL}" - -# fetch minikube ip -MINIKUBE_IP=$(minikube ip) - -# curl to https url -curl http://"${MINIKUBE_IP}" -k \ No newline at end of file diff --git a/community_images/nginx/bitnami/overrides.yml b/community_images/nginx/bitnami/overrides.yml deleted file mode 100644 index d10e24319d..0000000000 --- a/community_images/nginx/bitnami/overrides.yml +++ /dev/null @@ -1,23 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 0 - runAsNonRoot: false - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - enabled: false -readinessProbe: - enabled: false -cloneStaticSiteFromGit: - enabled: true - repository: https://github.com/mdn/beginner-html-site-styled.git - branch: master -ingress: - enabled: true diff --git a/community_images/nginx/ironbank/.rfignore b/community_images/nginx/ironbank/.rfignore deleted file mode 100644 index aed237496c..0000000000 --- a/community_images/nginx/ironbank/.rfignore +++ /dev/null @@ -1,6 +0,0 @@ -usr/share/nginx -usr/libexec/initscripts/legacy-actions/nginx -etc/nginx -usr/lib/systemd/system/nginx* -usr/lib64/nginx/modules -usr/share/licenses diff --git a/community_images/nginx/ironbank/README.md b/community_images/nginx/ironbank/README.md deleted file mode 100644 index 590328f528..0000000000 --- a/community_images/nginx/ironbank/README.md +++ /dev/null @@ -1,139 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for NGINX IronBank - -RapidFort’s container optimization process hardened this NGINX IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One NGINX IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is NGINX IronBank? - -> Nginx (pronounced "engine-x") is an open source reverse proxy server for HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer, HTTP cache, and a web server (origin server). The nginx project started with a strong focus on high concurrency, high performance and low memory usage. It is licensed under the 2-clause BSD-like license and it runs on Linux, BSD variants, Mac OS X, Solaris, AIX, HP-UX, as well as on other *nix flavors. It also has a proof of concept port for Microsoft Windows. - - -[Overview of NGINX IronBank](http://nginx.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened NGINX IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run -v /some/content:/usr/share/nginx/html:ro -d rapidfort/nginx-ib:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One NGINX IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One NGINX IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/nginx-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`latest` (Dockerfile)](https://repo1.dso.mil/dsop/opensource/nginx/nginx/-/blob/development/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=nginx-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fnginx%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fnginx%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fnginx%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fnginx%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fnginx%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/nginx-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/nginx-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/nginx/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/nginx/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fnginx%2Fnginx -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/nginx-ib diff --git a/community_images/nginx/ironbank/assets/cve_reduction.webp b/community_images/nginx/ironbank/assets/cve_reduction.webp deleted file mode 100644 index 5566ca708f7be53265c1d0f114debda0ac651e79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1436 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 SM%dO4o#29RWxUArB7gwrR|KB` diff --git a/community_images/nginx/ironbank/dc_coverage.sh b/community_images/nginx/ironbank/dc_coverage.sh deleted file mode 100755 index 80f65e1d29..0000000000 --- a/community_images/nginx/ironbank/dc_coverage.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -CONTAINER_NAME="${PROJECT_NAME}"-nginx-1 - -# reloading nginx -docker exec -i "${CONTAINER_NAME}" nginx -s reload -sleep 10 -docker exec -i "${CONTAINER_NAME}" nginx -t - -# Condition to handle distroless container -TAG_NAME=$(jq -r '.runtime_props.image_keys.nginx-ib.tag' < "$JSON_PARAMS") -if [[ "$TAG_NAME" != *distroless* ]]; then - docker exec -i "${CONTAINER_NAME}" /tmp/common_commands.sh -fi - -# find non-tls and tls port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8443/tcp\"[0].HostPort" -NON_TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort") -TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8443/tcp\"[0].HostPort") - -# run curl in loop for different endpoints -for i in {1..20}; -do - echo "Attempt $i" - curl http://localhost:"${NON_TLS_PORT}"/a - curl http://localhost:"${NON_TLS_PORT}"/b - with_backoff curl https://localhost:"${TLS_PORT}"/a -k -v - with_backoff curl https://localhost:"${TLS_PORT}"/b -k -v -done diff --git a/community_images/nginx/ironbank/docker-compose.yml b/community_images/nginx/ironbank/docker-compose.yml deleted file mode 100644 index 5fa555a91e..0000000000 --- a/community_images/nginx/ironbank/docker-compose.yml +++ /dev/null @@ -1,39 +0,0 @@ -version: '2' - -services: - nginx: - image: ${NGINX_IMAGE_REPOSITORY}:${NGINX_IMAGE_TAG} - user: root - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::8080' - - '0.0.0.0::8443' - volumes: - - ./certs:/certs - - ./nginx.conf:/etc/nginx/nginx.conf:ro - - ./../../common/tests/common_commands.sh:/tmp/common_commands.sh - backend1a: - image: nginxdemos/hello:plain-text - cap_add: - - SYS_PTRACE - ports: - - '80' - backend1b: - image: nginxdemos/hello:plain-text - cap_add: - - SYS_PTRACE - ports: - - '80' - backend2a: - image: nginxdemos/hello:plain-text - cap_add: - - SYS_PTRACE - ports: - - '80' - backend2b: - image: nginxdemos/hello:plain-text - cap_add: - - SYS_PTRACE - ports: - - '80' \ No newline at end of file diff --git a/community_images/nginx/ironbank/image.yml b/community_images/nginx/ironbank/image.yml deleted file mode 100644 index 7fe9ebabd3..0000000000 --- a/community_images/nginx/ironbank/image.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: nginx-ib -official_name: NGINX IronBank -official_website: http://nginx.org/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/nginx/nginx -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fnginx%2Fnginx -source_image_readme: https://repo1.dso.mil/dsop/opensource/nginx/nginx/-/blob/development/README.md -rf_docker_link: rapidfort/nginx-ib -image_workflow_name: nginx_ironbank -github_location: nginx/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fnginx%2Fnginx -usage_instructions: | - $ docker run -v /some/content:/usr/share/nginx/html:ro -d rapidfort/nginx-ib:latest -what_is_text: | - Nginx (pronounced "engine-x") is an open source reverse proxy server for HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer, HTTP cache, and a web server (origin server). The nginx project started with a strong focus on high concurrency, high performance and low memory usage. It is licensed under the 2-clause BSD-like license and it runs on Linux, BSD variants, Mac OS X, Solaris, AIX, HP-UX, as well as on other *nix flavors. It also has a proof of concept port for Microsoft Windows. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`latest` (Dockerfile)](https://repo1.dso.mil/dsop/opensource/nginx/nginx/-/blob/development/Dockerfile)" -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/nginx/nginx: - input_base_tag: "1." - output_repo: nginx-ib -needs_common_commands: False -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - nginx-ib: - repository: "NGINX_IMAGE_REPOSITORY" - tag: "NGINX_IMAGE_TAG" diff --git a/community_images/nginx/ironbank/nginx.conf b/community_images/nginx/ironbank/nginx.conf deleted file mode 100644 index 441113ffa8..0000000000 --- a/community_images/nginx/ironbank/nginx.conf +++ /dev/null @@ -1,108 +0,0 @@ -# The user directive is ignored because the container -# is run by user `nginx` and is unprivileged. This -# prevents nginx from switching users. Enabling this -# directive will simply cause nginx to ignore and -# proceed with the default `nginx` user. -user nginx; -worker_processes auto; - -#error_log logs/error.log; -error_log /var/log/nginx/error.log notice; -#error_log logs/error.log info; - - -pid /var/cache/nginx/nginx.pid; - -events { - worker_connections 1024; -} - - -http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - sendfile on; - #tcp_nopush on; - - keepalive_timeout 65; - - #gzip on; - - include /etc/nginx/conf.d/*.conf; - - upstream backend_a { - server backend1a; - server backend2a; - } - - upstream backend_b { - server backend1b; - server backend2b; - } - - - - server { - # Port to listen on, can also be set in IP:PORT format - listen 8080; - - listen 8443 ssl; - server_name localhost; - - ssl_certificate /certs/server.crt; - ssl_certificate_key /certs/server.key; - ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; - ssl_session_cache shared:SSL:1m; - ssl_session_timeout 5m; - - ssl_ciphers HIGH:!aNULL:!MD5; - ssl_prefer_server_ciphers on; - - location /a { - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header HOST $http_host; - proxy_set_header X-NginX-Proxy true; - - proxy_pass http://backend_a; - } - - location /b { - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header HOST $http_host; - proxy_set_header X-NginX-Proxy true; - proxy_pass http://backend_b; - proxy_redirect off; - } - - location /status { - stub_status on; - access_log off; - allow 127.0.0.1; - deny all; - } - - #charset koi8-r; - - #access_log logs/host.access.log main; - - location / { - root html; - index index.html index.htm; - } - - #error_page 404 /404.html; - - # redirect server error pages to the static page /50x.html - # - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root html; - } - } -} \ No newline at end of file diff --git a/community_images/nginx/official/.rfignore b/community_images/nginx/official/.rfignore deleted file mode 100644 index 1c799e0088..0000000000 --- a/community_images/nginx/official/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/common-licenses \ No newline at end of file diff --git a/community_images/nginx/official/README.md b/community_images/nginx/official/README.md deleted file mode 100644 index 66e235c8f1..0000000000 --- a/community_images/nginx/official/README.md +++ /dev/null @@ -1,144 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for NGINX Official - -RapidFort’s container optimization process hardened this NGINX Official container. This container is free to use and has no license limitations. - -It is the same as the [The NGINX Docker Maintainers NGINX Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is NGINX Official? - -> Nginx (pronounced "engine-x") is an open source reverse proxy server for HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer, HTTP cache, and a web server (origin server). The nginx project started with a strong focus on high concurrency, high performance and low memory usage. It is licensed under the 2-clause BSD-like license and it runs on Linux, BSD variants, Mac OS X, Solaris, AIX, HP-UX, as well as on other *nix flavors. It also has a proof of concept port for Microsoft Windows. - - -[Overview of NGINX Official](http://nginx.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened NGINX Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ Using docker run: -$ docker run --name my-nginx-app -p 8080:80 -v /some/content:/usr/share/nginx/html:ro -d rapidfort/nginx-official - -# If you wish to change the default configuration: -$ docker run --name my-nginx-app -p 8080:80 -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d rapidfort/nginx-official - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [The NGINX Docker Maintainers NGINX Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [The NGINX Docker Maintainers NGINX Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/nginx-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`1.23.2-perl`, `mainline-perl`, `1-perl`, `1.23-perl`, `perl`](https://github.com/nginxinc/docker-nginx/blob/fef51235521d1cdf8b05d8cb1378a526d2abf421/mainline/debian-perl/Dockerfile) -* [`1.22.1-perl`, `stable-perl`, `1.22-perl`](https://github.com/nginxinc/docker-nginx/blob/fef51235521d1cdf8b05d8cb1378a526d2abf421/stable/debian-perl/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=nginx-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fnginx?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=nginx-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/nginx-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/nginx-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/nginx/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/nginx/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/nginx -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/nginx-official diff --git a/community_images/nginx/official/assets/cve_reduction.webp b/community_images/nginx/official/assets/cve_reduction.webp deleted file mode 100644 index 0b44780f81673720ad8425e4ca4f2500071d1296..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1604 zcmb`HX;9Ng6u_6jfZV5YgdtI|p^QYTlpB&J3W8h>hZ2s+5n_wP5H69*F+h>SV37hU zh@gNKJD`Yyil`B#B7{ph0;pU8l5#{7goN0C>Nxm8r(gPZ-rL{4eQ);dF-vfDc6N{l z;J{v-x4*Z|K_vhH64FW;fC0c2kN4JtK|=u3lUg|o0HUdJbb<>Gc`$&8l=?nNXm~8` z6MvzX0YLZ?Ko)?0^DoT*mrF5%92*V=EkPPbhZYAwCIVs|%11sX<*<*OFJ-zf0T0Do zgxHkw8HatwiE*?zD5gUiA5No7c@$!Y=p*scwWK1gScOdW^MU$2k(L(8={}v+$Sy*Hw0Q_12R09Ce z?g2n4@Kd21xf^%!mAxXN97AZIN1;XmM*tZhfh(YbaDawr7q9@|0W0XmASJQ@^uR&6 zj9HZo7C1#)mAG6s-nJEGyK0lBnnR{898&BxjS?CxSZ7_oC+0mkKEXNLug`fV%dM!&7MwVwtbIro~eInN1|X53clyW{PvWWf2(<9 zy}kB^Gxp1-Fg9&x^%f!HHIP*fK@8$hcYh+`jhw~;wp|Ntdz9Q+yOL40zNoz{I_okp z713ljn{1sw?blR>J7)7{1|E~^T1}3who95YjN-K>c5lTcp4mM1+($Xzel>h(kVr~- zzm;3ZD|c1l5LoXhSb^41d$Ptth`R{QP>ea8LxaHu)*}cWOqk$DXI@%Ku27%_o3mzw z4R+PL$R9B6%-cV{XU^Fs>%PFU@32;P4EMo5ESh^d;?+bk1`nnws!TYBadWES>AG%! z;Ji^3hRNQOhY-$Ui_`p;b=n@M&Y?`}>V_Ld)rm&@!>&qmO_AoFr18L$#GI><3oAkD zWy@wELk`@llj9lh{$Nmp$bvSK^9efMFA}>Coy%fqX|)fg+HQtDDG~)?>KK_yq?N9s zQ}`ZkP0wyc;eI!(6X|4Zxg_pN>(D9AvWRvjKdk5>8`p9)-zzs=?3_{1-)qvWAZW(c zj(cm@u$wx+VcCXg-G8>j)900?IGxpgVdns9Ah?sfs7UE@%FuO59EGb2<_Co9THM$3 zCZ&7149m(oV-Hb{g_G>$%{qR=`{` z?%XpT;u1N_b%K*4p~b$qR&CL7!mVV4=pQ4RkIve{hRbJDXlXm2PIfg}`!FSY?)|P# z#2p{Do5NmbJfJYxODFRdg0-K=cCi0S@MVvdM%Kqvk;c`_^3t7L+}GP}*RB*Cjw8+F zm-ZRI1(iSO>3gj8aj2e`Pd21u)0HWvcYO*XXLB{`u#eI5Nkr2FQ}GB?E5ZjoyX2FN zNhwBNXcHs2_T$qnH;gQ*a~9F9HTCwX?AaHAk`BuPlfvS47cT`$)|O#^zhMa%c8!J4 aBD2QzuG{Kb*SgPlGx&y@fgV`soA?KC6Io^e diff --git a/community_images/nginx/official/assets/metrics.webp b/community_images/nginx/official/assets/metrics.webp deleted file mode 100644 index 9465bc1c5e35821ec8fec5558031dccffebc3093..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22394 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

!tm({?h$Od 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/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -CONTAINER_NAME="${PROJECT_NAME}"-nginx-1 - -# reloading nginx -docker exec -i "${CONTAINER_NAME}" nginx -s reload - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8443/tcp\"[0].HostPort" -NON_TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort") -TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8443/tcp\"[0].HostPort") - -# run curl in loop for different endpoints -for i in {1..20}; -do - echo "Attempt $i" - curl http://localhost:"${NON_TLS_PORT}"/a - curl http://localhost:"${NON_TLS_PORT}"/b - with_backoff curl https://localhost:"${TLS_PORT}"/a -k -v - with_backoff curl https://localhost:"${TLS_PORT}"/b -k -v -done diff --git a/community_images/nginx/official/docker-compose.yml b/community_images/nginx/official/docker-compose.yml deleted file mode 100755 index 3f01840d6f..0000000000 --- a/community_images/nginx/official/docker-compose.yml +++ /dev/null @@ -1,39 +0,0 @@ -version: '2' - -services: - nginx: - image: ${NGINX_OFFICIAL_IMAGE_REPOSITORY}:${NGINX_OFFICIAL_IMAGE_TAG} - user: root - cap_add: - - SYS_PTRACE - ports: - - '0.0.0.0::8080' - - '0.0.0.0::8443' - volumes: - - ./configs/nginx.conf:/etc/nginx/nginx.conf - - ./coverage_script.sh:/opt/scripts/coverage_script.sh - - ./certs:/certs - backend1a: - image: nginxdemos/hello:plain-text - cap_add: - - SYS_PTRACE - ports: - - '80' - backend1b: - image: nginxdemos/hello:plain-text - cap_add: - - SYS_PTRACE - ports: - - '80' - backend2a: - image: nginxdemos/hello:plain-text - cap_add: - - SYS_PTRACE - ports: - - '80' - backend2b: - image: nginxdemos/hello:plain-text - cap_add: - - SYS_PTRACE - ports: - - '80' diff --git a/community_images/nginx/official/image.yml b/community_images/nginx/official/image.yml deleted file mode 100644 index dade5dbf53..0000000000 --- a/community_images/nginx/official/image.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: nginx-official -official_name: NGINX Official -official_website: http://nginx.org/ -source_image_provider: The NGINX Docker Maintainers -source_image_repo: docker.io/library/nginx -source_image_repo_link: https://hub.docker.com/_/nginx -source_image_readme: https://github.com/docker-library/docs/blob/master/nginx/README.md -rf_docker_link: rapidfort/nginx-official -image_workflow_name: nginx_official -github_location: nginx/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fnginx -usage_instructions: | - $ Using docker run: - $ docker run --name my-nginx-app -p 8080:80 -v /some/content:/usr/share/nginx/html:ro -d rapidfort/nginx-official - - # If you wish to change the default configuration: - $ docker run --name my-nginx-app -p 8080:80 -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d rapidfort/nginx-official -what_is_text: | - Nginx (pronounced "engine-x") is an open source reverse proxy server for HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer, HTTP cache, and a web server (origin server). The nginx project started with a strong focus on high concurrency, high performance and low memory usage. It is licensed under the 2-clause BSD-like license and it runs on Linux, BSD variants, Mac OS X, Solaris, AIX, HP-UX, as well as on other *nix flavors. It also has a proof of concept port for Microsoft Windows. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`1.23.2-perl`, `mainline-perl`, `1-perl`, `1.23-perl`, `perl`](https://github.com/nginxinc/docker-nginx/blob/fef51235521d1cdf8b05d8cb1378a526d2abf421/mainline/debian-perl/Dockerfile)" - - "[`1.22.1-perl`, `stable-perl`, `1.22-perl`](https://github.com/nginxinc/docker-nginx/blob/fef51235521d1cdf8b05d8cb1378a526d2abf421/stable/debian-perl/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - nginx: - input_base_tag: "1.23.*-perl" - output_repo: nginx-official - - nginx: - input_base_tag: "1.22.*-perl" - output_repo: nginx-official -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - nginx-official: - repository: "NGINX_OFFICIAL_IMAGE_REPOSITORY" - tag: "NGINX_OFFICIAL_IMAGE_TAG" diff --git a/community_images/nginx/official/overrides.yml b/community_images/nginx/official/overrides.yml deleted file mode 100644 index d10e24319d..0000000000 --- a/community_images/nginx/official/overrides.yml +++ /dev/null @@ -1,23 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 0 - runAsNonRoot: false - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - enabled: false -readinessProbe: - enabled: false -cloneStaticSiteFromGit: - enabled: true - repository: https://github.com/mdn/beginner-html-site-styled.git - branch: master -ingress: - enabled: true diff --git a/community_images/oncall/grafana/.env_hobby b/community_images/oncall/grafana/.env_hobby deleted file mode 100644 index 1addd06cfc..0000000000 --- a/community_images/oncall/grafana/.env_hobby +++ /dev/null @@ -1,7 +0,0 @@ -DOMAIN=http://localhost:8080 -SECRET_KEY=my_random_secret_must_be_more_than_32_characters_long -RABBITMQ_PASSWORD=rabbitmq_secret_pw -MYSQL_PASSWORD=mysql_secret_pw -COMPOSE_PROFILES=with_grafana -GRAFANA_USER=admin -GRAFANA_PASSWORD=admin diff --git a/community_images/oncall/grafana/.rfignore b/community_images/oncall/grafana/.rfignore deleted file mode 100644 index 655232a74f..0000000000 --- a/community_images/oncall/grafana/.rfignore +++ /dev/null @@ -1,8 +0,0 @@ -etc/app -LICENSE -LICENSE.txt -LICENSE.md -LICENSE.rst -LICENSE.BSD -LICENSE.APACHE -LICENSE-SELECT2.md \ No newline at end of file diff --git a/community_images/oncall/grafana/README.md b/community_images/oncall/grafana/README.md deleted file mode 100644 index d808fcecce..0000000000 --- a/community_images/oncall/grafana/README.md +++ /dev/null @@ -1,163 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Grafana Oncall - -RapidFort’s container optimization process hardened this Grafana Oncall container. This container is free to use and has no license limitations. - -It is the same as the [Grafana Grafana Oncall][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Grafana Oncall? - -> Developer-friendly incident response with brilliant Slack integration. - - -[Overview of Grafana Oncall](https://grafana.com/products/oncall) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Grafana Oncall image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -#1. Download docker-compose.yaml: -curl -fsSL https://raw.githubusercontent.com/grafana/oncall/dev/docker-compose.yml -o docker-compose.yml - -#2. Set variables: -echo "DOMAIN=http://localhost:8080 -SECRET_KEY=my_random_secret_must_be_more_than_32_characters_long -RABBITMQ_PASSWORD=rabbitmq_secret_pw -MYSQL_PASSWORD=mysql_secret_pw -COMPOSE_PROFILES=with_grafana # Remove this line if you want to use existing grafana -GRAFANA_USER=admin -GRAFANA_PASSWORD=admin" > .env_hobby - -#3. Launch services: -docker-compose --env-file .env_hobby -f docker-compose.yml up --build -d - -#4. Issue one-time invite token: -docker-compose --env-file .env_hobby -f docker-compose.yml run engine python manage.py issue_invite_for_the_frontend --override - -#5. Go to [OnCall Plugin Configuration](http://localhost:3000/plugins/grafana-oncall-app), using log in credentials as defined above: `admin`/`admin` (or find OnCall plugin in configuration->plugins) and connect OnCall _plugin_ with OnCall _backend_: - -Invite token: ^^^ from the previous step. -OnCall backend URL: http://engine:8080 -Grafana Url: http://grafana:3000 - -#6. Enjoy! Check our [OSS docs](https://grafana.com/docs/grafana-cloud/oncall/open-source/) if you want to set up Slack, Telegram, Twilio or SMS/calls through Grafana Cloud. - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Grafana Grafana Oncall][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Grafana Grafana Oncall][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/oncall][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`v1.0.0`, `latest` (engine/Dockerfile)](https://github.com/grafana/oncall/blob/dev/engine/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=oncall&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fgrafana%2Foncall?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=oncall&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fgrafana%2Foncall?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=oncall&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fgrafana%2Foncall?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=oncall&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fgrafana%2Foncall?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=oncall&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fgrafana%2Foncall?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=oncall&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/oncall?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/oncall?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/oncall/grafana/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/oncall/grafana/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/grafana/oncall -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/oncall diff --git a/community_images/oncall/grafana/assets/cve_reduction.webp b/community_images/oncall/grafana/assets/cve_reduction.webp deleted file mode 100644 index 141ea2e0e1e477187bbe7ab2faeba0b347ab0e74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1690 zcmb`Ic{J2p9Ki1&TSO!r+c2_kDe94|*`H*I@q`%-<6wp{l7^uoX|eQXdNj}elu{^_ zByno*Jp6~a5?)QH0`F`(m&h>I}bi5)AfZriI z&!e9E{lx(Qa7asFz#0G-dwWj>0cZ#W6!=!i1b}E9k>KTI2lqz?!1=zff(ng``O4qv zVE}v@0+0n@!0ZRfVy-56h=3Fn#BM}r2+7;HwHyO{Zot(WCg;)0GPi4fFu$C***Zo zfBIVJ=Gx7>_?NxHp*70TKJics2T=e6;J^joKqxSR$P}1>-M}1rF>oI!XN(#sfa#UO zY{0>2bBdEDLPK3oArYG@nHh>>2MHp0wIlwY6k^$)mIrE7JqpWsAy$z@_P(Nfib>O} zB2hC;###xl!b1UtFxE*VF z$>vgy^a^WonU3ydQ!6%F##jwz!ktrCUwVn~qtXdelSCMmm{uTVPdNxDUMb@LwflBe-K zG0SLVmIlg8h^>LXE9>TGTUNQ8MnZOB985+Ybq=*ea`qO(i3zft7O=5S`i&Mmr=Axt z?e#KDgtxp`IOE4AyCr@76F=vy=yXXAHDM zb@oks7|9?lx{XN<%1R70uHOsX$r z)y^i-CXKUhC#KJ}r#ik(8dDlb4=^ODiuF@pJMjin3R-!2^?|Kh-w`Ja@OU-Cwx~ZX zd2R*6pL-9vAJp_uwH0rp^cCs6>7NOn56K==V?-1YtJVuO79w9L(Ld^KRFpW$-(qDj zju1?14|XWrV&1(pwRZ~%k#jDIC>MD65Lt)OM^_CHy*%QLl{3Q&<75t~?wkx+YOf$O zYzu3&J!WLYaOb7&T$w-{@yMsrWus45?vt!@UEQF065d`NTazETKS7OMR&g9tws;!k ze7R17-Z`db6jRDkFli`GGD~IJJ}Ga{06VhAt5ZZM$l__2H#wq~??s9!E29Uedu? z3m(>HT)?s)QOB*mmvx@*%P{&uYT>hZBw_wRe7F88FMD}y?jBbq0?%(r-A5 z4u0`EA|kC`9Hp!KVc5H2IjAJwPmc8ttCB1~b}_^tsVZ|mqxno^`ME+f0Z&Q|+_@nX~ zx^-z467$t9MM%Fw@7VLeK`)t=^P4}EMqsgmm5z%Z;wUP=+di={b F@;6Lqe}4b~ diff --git a/community_images/oncall/grafana/assets/metrics.webp b/community_images/oncall/grafana/assets/metrics.webp deleted file mode 100644 index dfbb60e46ad7a2ee42354615d31755828717fb94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26852 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 WwSA^-Uum0H+H)Ycpoup&L;wJTUwJG5 diff --git a/community_images/oncall/grafana/dc_coverage.sh b/community_images/oncall/grafana/dc_coverage.sh deleted file mode 100755 index 2489691c52..0000000000 --- a/community_images/oncall/grafana/dc_coverage.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") - -# run pytest -set +e #ignore test failures -docker-compose --env-file "${SCRIPTPATH}"/.env_hobby.temp -f "${SCRIPTPATH}"/docker-compose.yml -p "${NAMESPACE}" run engine python -m pytest -set -e - -# issue token -docker-compose --env-file "${SCRIPTPATH}"/.env_hobby.temp -f "${SCRIPTPATH}"/docker-compose.yml -p "${NAMESPACE}" run engine python manage.py issue_invite_for_the_frontend --override \ No newline at end of file diff --git a/community_images/oncall/grafana/docker-compose.yml b/community_images/oncall/grafana/docker-compose.yml deleted file mode 100644 index 6a84aadf34..0000000000 --- a/community_images/oncall/grafana/docker-compose.yml +++ /dev/null @@ -1,187 +0,0 @@ -services: - engine: - image: ${ONCALL_IMAGE_REPOSITORY}:${ONCALL_IMAGE_TAG} - cap_add: - - SYS_PTRACE - restart: always - ports: - - "8080" - command: > - sh -c "uwsgi --ini uwsgi.ini" - environment: - BASE_URL: $DOMAIN - SECRET_KEY: $SECRET_KEY - RABBITMQ_USERNAME: "rabbitmq" - RABBITMQ_PASSWORD: $RABBITMQ_PASSWORD - RABBITMQ_HOST: "rabbitmq" - RABBITMQ_PORT: "5672" - RABBITMQ_DEFAULT_VHOST: "/" - MYSQL_PASSWORD: $MYSQL_PASSWORD - MYSQL_DB_NAME: oncall_hobby - MYSQL_USER: ${MYSQL_USER:-root} - MYSQL_HOST: ${MYSQL_HOST:-mysql} - MYSQL_PORT: 3306 - REDIS_URI: redis://redis:6379/0 - DJANGO_SETTINGS_MODULE: settings.hobby - OSS: "True" - CELERY_WORKER_QUEUE: "default,critical,long,slack,telegram,webhook,retry,celery" - depends_on: - mysql: - condition: service_healthy - oncall_db_migration: - condition: service_completed_successfully - rabbitmq: - condition: service_healthy - redis: - condition: service_started - - celery: - image: ${ONCALL_IMAGE_REPOSITORY}:${ONCALL_IMAGE_TAG} - cap_add: - - SYS_PTRACE - restart: always - command: sh -c "./celery_with_exporter.sh" - environment: - BASE_URL: $DOMAIN - SECRET_KEY: $SECRET_KEY - RABBITMQ_USERNAME: "rabbitmq" - RABBITMQ_PASSWORD: $RABBITMQ_PASSWORD - RABBITMQ_HOST: "rabbitmq" - RABBITMQ_PORT: "5672" - RABBITMQ_DEFAULT_VHOST: "/" - MYSQL_PASSWORD: $MYSQL_PASSWORD - MYSQL_DB_NAME: oncall_hobby - MYSQL_USER: ${MYSQL_USER:-root} - MYSQL_HOST: ${MYSQL_HOST:-mysql} - MYSQL_PORT: 3306 - REDIS_URI: redis://redis:6379/0 - DJANGO_SETTINGS_MODULE: settings.hobby - OSS: "True" - CELERY_WORKER_QUEUE: "default,critical,long,slack,telegram,webhook,retry,celery" - CELERY_WORKER_CONCURRENCY: "1" - CELERY_WORKER_MAX_TASKS_PER_CHILD: "100" - CELERY_WORKER_SHUTDOWN_INTERVAL: "65m" - CELERY_WORKER_BEAT_ENABLED: "True" - depends_on: - mysql: - condition: service_healthy - oncall_db_migration: - condition: service_completed_successfully - rabbitmq: - condition: service_healthy - redis: - condition: service_started - - oncall_db_migration: - image: ${ONCALL_IMAGE_REPOSITORY}:${ONCALL_IMAGE_TAG} - cap_add: - - SYS_PTRACE - command: python manage.py migrate --noinput - environment: - BASE_URL: $DOMAIN - SECRET_KEY: $SECRET_KEY - RABBITMQ_USERNAME: "rabbitmq" - RABBITMQ_PASSWORD: $RABBITMQ_PASSWORD - RABBITMQ_HOST: "rabbitmq" - RABBITMQ_PORT: "5672" - RABBITMQ_DEFAULT_VHOST: "/" - MYSQL_PASSWORD: $MYSQL_PASSWORD - MYSQL_DB_NAME: oncall_hobby - MYSQL_USER: ${MYSQL_USER:-root} - MYSQL_HOST: ${MYSQL_HOST:-mysql} - MYSQL_PORT: 3306 - REDIS_URI: redis://redis:6379/0 - DJANGO_SETTINGS_MODULE: settings.hobby - OSS: "True" - CELERY_WORKER_QUEUE: "default,critical,long,slack,telegram,webhook,retry,celery" - depends_on: - mysql: - condition: service_healthy - rabbitmq: - condition: service_healthy - - mysql: - image: mysql:5.7 - platform: linux/x86_64 - mem_limit: 500m - cpus: 0.5 - command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci - restart: always - expose: - - 3306 - volumes: - - dbdata:/var/lib/mysql - environment: - MYSQL_ROOT_PASSWORD: $MYSQL_PASSWORD - MYSQL_DATABASE: oncall_hobby - healthcheck: - test: "mysql -uroot -p$MYSQL_PASSWORD oncall_hobby -e 'select 1'" - timeout: 20s - retries: 10 - - redis: - image: redis - mem_limit: 100m - cpus: 0.1 - restart: always - expose: - - 6379 - - rabbitmq: - image: "rabbitmq:3.7.15-management" - restart: always - hostname: rabbitmq - mem_limit: 1000m - cpus: 0.5 - volumes: - - rabbitmqdata:/var/lib/rabbitmq - environment: - RABBITMQ_DEFAULT_USER: "rabbitmq" - RABBITMQ_DEFAULT_PASS: $RABBITMQ_PASSWORD - RABBITMQ_DEFAULT_VHOST: "/" - healthcheck: - test: rabbitmq-diagnostics -q ping - interval: 30s - timeout: 30s - retries: 3 - - mysql_to_create_grafana_db: - image: mysql:5.7 - platform: linux/x86_64 - command: bash -c "mysql -h ${MYSQL_HOST:-mysql} -uroot -p${MYSQL_PASSWORD} -e 'CREATE DATABASE IF NOT EXISTS grafana CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'" - environment: - MYSQL_HOST: ${MYSQL_HOST:-mysql} - MYSQL_PASSWORD: $MYSQL_PASSWORD - depends_on: - mysql: - condition: service_healthy - profiles: - - with_grafana - - grafana: - image: "grafana/grafana:9.0.0-beta3" - restart: always - mem_limit: 500m - ports: - - "3000" - cpus: 0.5 - environment: - GF_DATABASE_TYPE: mysql - GF_DATABASE_HOST: ${MYSQL_HOST:-mysql} - GF_DATABASE_USER: ${MYSQL_USER:-root} - GF_DATABASE_PASSWORD: ${MYSQL_PASSWORD:?err} - GF_SECURITY_ADMIN_USER: ${GRAFANA_USER:-admin} - GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD:?err} - GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: grafana-oncall-app - GF_INSTALL_PLUGINS: grafana-oncall-app - depends_on: - mysql_to_create_grafana_db: - condition: service_completed_successfully - mysql: - condition: service_healthy - profiles: - - with_grafana - -volumes: - dbdata: - rabbitmqdata: diff --git a/community_images/oncall/grafana/image.yml b/community_images/oncall/grafana/image.yml deleted file mode 100644 index 9fc4530b9e..0000000000 --- a/community_images/oncall/grafana/image.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: oncall -official_name: Grafana Oncall -official_website: https://grafana.com/products/oncall -source_image_provider: Grafana -source_image_repo: docker.io/grafana/oncall -source_image_repo_link: https://hub.docker.com/r/grafana/oncall -source_image_readme: https://github.com/grafana/oncall/blob/dev/README.md -rf_docker_link: rapidfort/oncall -image_workflow_name: oncall_grafana -github_location: oncall/grafana -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fgrafana%2Foncall -usage_instructions: | - #1. Download docker-compose.yaml: - curl -fsSL https://raw.githubusercontent.com/grafana/oncall/dev/docker-compose.yml -o docker-compose.yml - - #2. Set variables: - echo "DOMAIN=http://localhost:8080 - SECRET_KEY=my_random_secret_must_be_more_than_32_characters_long - RABBITMQ_PASSWORD=rabbitmq_secret_pw - MYSQL_PASSWORD=mysql_secret_pw - COMPOSE_PROFILES=with_grafana # Remove this line if you want to use existing grafana - GRAFANA_USER=admin - GRAFANA_PASSWORD=admin" > .env_hobby - - #3. Launch services: - docker-compose --env-file .env_hobby -f docker-compose.yml up --build -d - - #4. Issue one-time invite token: - docker-compose --env-file .env_hobby -f docker-compose.yml run engine python manage.py issue_invite_for_the_frontend --override - - #5. Go to [OnCall Plugin Configuration](http://localhost:3000/plugins/grafana-oncall-app), using log in credentials as defined above: `admin`/`admin` (or find OnCall plugin in configuration->plugins) and connect OnCall _plugin_ with OnCall _backend_: - - Invite token: ^^^ from the previous step. - OnCall backend URL: http://engine:8080 - Grafana Url: http://grafana:3000 - - #6. Enjoy! Check our [OSS docs](https://grafana.com/docs/grafana-cloud/oncall/open-source/) if you want to set up Slack, Telegram, Twilio or SMS/calls through Grafana Cloud. -what_is_text: | - Developer-friendly incident response with brilliant Slack integration. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`v1.0.0`, `latest` (engine/Dockerfile)](https://github.com/grafana/oncall/blob/dev/engine/Dockerfile)" -input_registry: - registry: docker.io - account: grafana -repo_sets: - - oncall: - input_base_tag: "v1.0." -runtimes: - - type: docker_compose - script: dc_coverage.sh - env_file: .env_hobby - compose_file: docker-compose.yml - image_keys: - oncall: - repository: "ONCALL_IMAGE_REPOSITORY" - tag: "ONCALL_IMAGE_TAG" diff --git a/community_images/oncall/grafana/overrides.yml b/community_images/oncall/grafana/overrides.yml deleted file mode 100644 index f201e68505..0000000000 --- a/community_images/oncall/grafana/overrides.yml +++ /dev/null @@ -1,18 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/postgresql/bitnami/.rfignore b/community_images/postgresql/bitnami/.rfignore deleted file mode 100644 index b0dbbed88a..0000000000 --- a/community_images/postgresql/bitnami/.rfignore +++ /dev/null @@ -1,8 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/licenses -opt/bitnami/postgresql/licenses -usr/share/common-licenses -opt/bitnami/postgresql/share/timezone -opt/bitnami/postgresql/share/timezonesets -opt/bitnami/postgresql/share/extension -opt/bitnami/postgresql/lib \ No newline at end of file diff --git a/community_images/postgresql/bitnami/README.md b/community_images/postgresql/bitnami/README.md deleted file mode 100644 index bb815efba2..0000000000 --- a/community_images/postgresql/bitnami/README.md +++ /dev/null @@ -1,146 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for PostgreSQL - -RapidFort’s container optimization process hardened this PostgreSQL container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami PostgreSQL][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is PostgreSQL? - -> PostgreSQL, often simply "Postgres", is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance. As a database server, its primary function is to store data, securely and supporting best practices, and retrieve it later, as requested by other software applications, be it those on the same computer or those running on another computer across a network (including the Internet). It can handle workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users. Recent versions also provide replication of the database itself for security and scalability. - - -[Overview of PostgreSQL](https://www.postgresql.com/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened PostgreSQL image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install postgresql, just replace repository with RapidFort registry -$ helm install my-postgresql bitnami/postgresql --set image.repository=rapidfort/postgresql - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami PostgreSQL][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami PostgreSQL][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/postgresql][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`16`, `16-debian-11`, `16.1.0`, `16.1.0-debian-11-r` (16/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/postgresql/16/debian-11/Dockerfile) -* [`15`, `15-debian-11`, `15.5.0`, `15.5.0-debian-11-r` (15/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/postgresql/15/debian-11/Dockerfile) -* [`14`, `14-debian-11`, `14.10.0`, `14.10.0-debian-11-r` (14/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/postgresql/14/debian-11/Dockerfile) -* [`13`, `13-debian-11`, `13.13.0`, `13.13.0-debian-11-r` (13/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/postgresql/13/debian-11/Dockerfile) -* [`12`, `12-debian-11`, `12.17.0`, `12.17.0-debian-11-r` (12/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/postgresql/12/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=postgresql&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fpostgresql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fpostgresql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fpostgresql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fpostgresql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fpostgresql?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/postgresql?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/postgresql?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/postgresql/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/postgresql/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/postgresql -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/postgresql diff --git a/community_images/postgresql/bitnami/assets/cve_reduction.webp b/community_images/postgresql/bitnami/assets/cve_reduction.webp deleted file mode 100644 index d5b36b8be55b21a5a60a9af56334ae8d84e00299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1794 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 N`GA6qVojhM004ohzZC!g diff --git a/community_images/postgresql/bitnami/dc_coverage.sh b/community_images/postgresql/bitnami/dc_coverage.sh deleted file mode 100755 index 576d1aa11f..0000000000 --- a/community_images/postgresql/bitnami/dc_coverage.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -# pg container -PG_CONTAINER="${PROJECT_NAME}"-postgresql-master-1 - -# Get Port -#PG_PORT=$(docker inspect "${PG_CONTAINER}" | jq -r ".[].NetworkSettings.Ports.\"5432/tcp\"[0].HostPort") - -# run pgbench test -docker exec -i "${PG_CONTAINER}" pgbench --host localhost -U postgres -d postgres -p 5432 -i -s 25 \ No newline at end of file diff --git a/community_images/postgresql/bitnami/docker-compose.yml b/community_images/postgresql/bitnami/docker-compose.yml deleted file mode 100644 index f278606925..0000000000 --- a/community_images/postgresql/bitnami/docker-compose.yml +++ /dev/null @@ -1,62 +0,0 @@ -version: '2' - -services: - postgresql-master: - image: ${PG_IMAGE_REPOSITORY}:${PG_IMAGE_TAG} - ports: - - '::5432' - volumes: - - 'postgresql_master_data:/bitnami/postgresql' - environment: - - POSTGRESQL_REPLICATION_MODE=master - - POSTGRESQL_REPLICATION_USER=repl_user - - POSTGRESQL_REPLICATION_PASSWORD=repl_password - - POSTGRESQL_USERNAME=postgres - - POSTGRESQL_PASSWORD=my_password - - POSTGRESQL_DATABASE=my_database - - ALLOW_EMPTY_PASSWORD=yes - - POSTGRESQL_TIMEZONE=UTC - - PGPASSWORD=my_password - - POSTGRESQL_SHARED_PRELOAD_LIBRARIES=pg_visibility,cube,fuzzystrmatch,pg_trgm,auto_explain,orafce,pgaudit,pg_stat_statements,pg_trgm,unaccent - cap_add: - - SYS_PTRACE - - postgresql-slave1: - image: ${PG_IMAGE_REPOSITORY}:${PG_IMAGE_TAG} - ports: - - '5432' - depends_on: - - postgresql-master - environment: - - POSTGRESQL_REPLICATION_MODE=slave - - POSTGRESQL_REPLICATION_USER=repl_user - - POSTGRESQL_REPLICATION_PASSWORD=repl_password - - POSTGRESQL_MASTER_HOST=postgresql-master - - POSTGRESQL_PASSWORD=my_password - - POSTGRESQL_MASTER_PORT_NUMBER=5432 - - ALLOW_EMPTY_PASSWORD=yes - - POSTGRESQL_TIMEZONE=Asia/Almaty - cap_add: - - SYS_PTRACE - - postgresql-slave2: - image: ${PG_IMAGE_REPOSITORY}:${PG_IMAGE_TAG} - ports: - - '5432' - depends_on: - - postgresql-master - environment: - - POSTGRESQL_REPLICATION_MODE=slave - - POSTGRESQL_REPLICATION_USER=repl_user - - POSTGRESQL_REPLICATION_PASSWORD=repl_password - - POSTGRESQL_MASTER_HOST=postgresql-master - - POSTGRESQL_PASSWORD=my_password - - POSTGRESQL_MASTER_PORT_NUMBER=5432 - - ALLOW_EMPTY_PASSWORD=yes - - POSTGRESQL_TIMEZONE=UTC+11:00 - cap_add: - - SYS_PTRACE - -volumes: - postgresql_master_data: - driver: local diff --git a/community_images/postgresql/bitnami/docker_coverage.sh b/community_images/postgresql/bitnami/docker_coverage.sh deleted file mode 100755 index e083ca606e..0000000000 --- a/community_images/postgresql/bitnami/docker_coverage.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -NETWORK_NAME=$(jq -r '.network_name' < "$JSON_PARAMS") -PG_HOST=$(jq -r '.container_details.postgresql.ip_address' < "$JSON_PARAMS") - -# run test on docker container -docker run --rm --network="${NETWORK_NAME}" \ - -i --env="PGPASSWORD=PgPwd" rapidfort/postgresql:latest \ - -- pgbench --host "${PG_HOST}" -U postgres -d postgres -p 5432 -i -s 25 diff --git a/community_images/postgresql/bitnami/image.yml b/community_images/postgresql/bitnami/image.yml deleted file mode 100644 index 89b7e13723..0000000000 --- a/community_images/postgresql/bitnami/image.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: postgresql -official_name: PostgreSQL -official_website: https://www.postgresql.com/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/postgresql -source_image_repo_link: https://hub.docker.com/r/bitnami/postgresql -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/postgresql/README.md -rf_docker_link: rapidfort/postgresql -image_workflow_name: postgresql_bitnami -github_location: postgresql/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fpostgresql -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install postgresql, just replace repository with RapidFort registry - $ helm install my-postgresql bitnami/postgresql --set image.repository=rapidfort/postgresql -what_is_text: | - PostgreSQL, often simply "Postgres", is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance. As a database server, its primary function is to store data, securely and supporting best practices, and retrieve it later, as requested by other software applications, be it those on the same computer or those running on another computer across a network (including the Internet). It can handle workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users. Recent versions also provide replication of the database itself for security and scalability. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - postgresql: - input_base_tag: "16.0.0-debian-11-r" - - postgresql: - input_base_tag: "15.4.0-debian-11-r" - - postgresql: - input_base_tag: "14.9.0-debian-11-r" - - postgresql: - input_base_tag: "13.12.0-debian-11-r" - - postgresql: - input_base_tag: "12.16.0-debian-11-r" - - postgresql: - input_base_tag: "11.21.0-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: postgresql - image_keys: - postgresql: {} - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - postgresql: - repository: "PG_IMAGE_REPOSITORY" - tag: "PG_IMAGE_TAG" - - type: docker - postgresql: - environment: - POSTGRES_PASSWORD: PgPwd diff --git a/community_images/postgresql/bitnami/k8s_coverage.sh b/community_images/postgresql/bitnami/k8s_coverage.sh deleted file mode 100755 index 465f96b4e0..0000000000 --- a/community_images/postgresql/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -SCRIPTPATH=$(jq -r '.image_script_dir' < "$JSON_PARAMS") -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# get postgresql passwordk -POSTGRES_PASSWORD=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath="{.data.postgres-password}" | base64 --decode) - -# copy test.psql into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/../../common/tests/test.psql "${RELEASE_NAME}"-0:/tmp/test.psql - -# run script -kubectl -n "${NAMESPACE}" exec -i "${RELEASE_NAME}"-0 \ - -- /bin/bash -c "PGPASSWORD=${POSTGRES_PASSWORD} psql --host localhost -U postgres -d postgres -p 5432 -f /tmp/test.psql" - -# copy postgres_coverage.sh into container -kubectl -n "${NAMESPACE}" cp \ - "${SCRIPTPATH}"/../../common/tests/postgres_coverage.sh \ - "${RELEASE_NAME}"-0:/tmp/postgres_coverage.sh - -# run postgres_coverage on cluster -kubectl -n "${NAMESPACE}" exec -i "${RELEASE_NAME}"-0 \ - -- /bin/bash -c "/tmp/postgres_coverage.sh" diff --git a/community_images/postgresql/bitnami/overrides.yml b/community_images/postgresql/bitnami/overrides.yml deleted file mode 100644 index 68a7c413f6..0000000000 --- a/community_images/postgresql/bitnami/overrides.yml +++ /dev/null @@ -1,35 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -primary: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readReplicas: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 \ No newline at end of file diff --git a/community_images/postgresql/ironbank/.rfignore b/community_images/postgresql/ironbank/.rfignore deleted file mode 100644 index f53843b813..0000000000 --- a/community_images/postgresql/ironbank/.rfignore +++ /dev/null @@ -1,9 +0,0 @@ -usr/pgsql-12 -etc/ld.so.conf.d/postgresql-pgdg-libs.conf -etc/pam.d -usr/bin/postgresql-12-setup -usr/lib/systemd/system/postgresql-12.service -usr/lib64/security/pam_postgresok.so -usr/share/licenses -LICENSE.txt -LICENSE diff --git a/community_images/postgresql/ironbank/README.md b/community_images/postgresql/ironbank/README.md deleted file mode 100644 index 378c5600eb..0000000000 --- a/community_images/postgresql/ironbank/README.md +++ /dev/null @@ -1,139 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for PostgreSQL IronBank - -RapidFort’s container optimization process hardened this PostgreSQL IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One PostgreSQL IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is PostgreSQL IronBank? - -> PostgreSQL, often simply "Postgres", is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance. As a database server, its primary function is to store data, securely and supporting best practices, and retrieve it later, as requested by other software applications, be it those on the same computer or those running on another computer across a network (including the Internet). It can handle workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users. Recent versions also provide replication of the database itself for security and scalability. - - -[Overview of PostgreSQL IronBank](https://www.postgresql.com/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened PostgreSQL IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run -e POSTGRES_PASSWORD=mysecretpassword -d rapidfort/postgresql12-ib:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One PostgreSQL IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One PostgreSQL IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/postgresql12-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`latest` (Dockerfile)](https://repo1.dso.mil/dsop/opensource/postgres/postgresql12/-/blob/development/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=postgresql-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fpostgres%2Fpostgresql12?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fpostgres%2Fpostgresql12?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fpostgres%2Fpostgresql12?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fpostgres%2Fpostgresql12?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fpostgres%2Fpostgresql12?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/postgresql12-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/postgresql12-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/postgresql/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/postgresql/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fpostgres%2Fpostgresql12 -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/postgresql12-ib diff --git a/community_images/postgresql/ironbank/assets/cve_reduction.webp b/community_images/postgresql/ironbank/assets/cve_reduction.webp deleted file mode 100644 index 5abe1a898c08fbdfc7c26c1ca8978e1f89c992cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1542 zcmb`Gdo*$sk4VObvl(oqVRjJB%>JfMM}M?u|JnOJ_kKU$`@Q#k@ApOCK_V#@ z0{FQQynMavC^`UuL-aBV907I^iC!2rWC&^)m0e&35XFdzCc6@F6#oF6%J)%%LfEX2 z{FxpFFx3Ny1?aN;%=~}3v_q-v5F|)~XiPM+H~=aXVI%qnj#Y8+2j;6d+J{U;V)78S zpnt-_pYY)rRtysJKouXtidJzy!uC;-Kd9DHiK=2zWv7!U#*5V8g<_!?}G7lUh52e2}MY}C4ZloL2a z*<`qxtyyjQWu{y2G4vTaW4u-S+4sD^I8k+i=J@?lol?|n*(~qP+EH~*L@xGOmuaOv zzBsI1a5&AepkZvbK(_mDoSdg+)8d)t5iNdw;EL47-@dAL*_>(J)ZKQw*4cD1 z*C+nf#()?%dB)KT!6U|m6tA6SGk$L$tzU0IY2eHXYG|Sr#xB-%OS@TGcM?s{a88Am z7Ex7fS(sr|cbw)cV-p(Wl2UjQTwoI&^oG#6__f6C0cJ~#%?zUObw#sFk~kZ^0LDp+0=CD8+z1T02^@6aQ5hkl54iNTs`sX-t}&VNB+;kFnZ*6{sZIEdp+*o z`C9I#NfMH|uj{Au6|E(S`1%~n+&o2Xthj7&DD-~q7W(s-V;3qO=9VW&ij+g;axAS? z^DfTTaOD%wJK%1+XxD)bi%2|)E-#wHWK6#k4GoQlA~r>2vC>b|{t;+}l>mG~^`l@JX&b2BgCn${oO_`Y%@rHpMg z7FVbI(LuJ7NeCACd1tHlp%sTN7gCoIn#xLFpvBBK9M&;@ZS3_SQBQLahF!=tC&Gkn zW)7Mo=21}k+mc-Mi@R#sGB%|!i6E<6<=D(gy?HO%Y9Q@K&8WGsAgA|+!?3xuK0;RZ zG=0-ZRZ1lvyWHrcFlKgnBP09w;jGMx+f(7k-3^}ZUw89SK&0nn!-QhM34PuIAFFq3 zOWfi)4eV@~SbJ0Pu-}n`c@~;k*%GsU+eP>YdEMd~txjcfvPnR0vYltIwblKMix`UI zL7f&g!QzDOq}wR;k2tZOH7BIsH*s(f5sn<0Z!KBu^YWAD%wh7WZPA!I;7; zHzZ|Xf)g@4Ct*7jbhy6Lt#VUPJ(KX}7GY(M`F1`Yk+G$^Ek0~NgND@W0m7et87%7D z{>2(=_luY-5n`Xh1pQrl4jcQ;MVRDsvZ_D#iZwiiZ?LD&`U}n8yslRGdNN7l8*H2! LUAG!HA|L%93`aFC diff --git a/community_images/postgresql/ironbank/assets/metrics.webp b/community_images/postgresql/ironbank/assets/metrics.webp deleted file mode 100644 index 76e358fc56e3ff87da6360aad0d4c993e0f199af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25568 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 diff --git a/community_images/postgresql/ironbank/dc_coverage.sh b/community_images/postgresql/ironbank/dc_coverage.sh deleted file mode 100755 index 590d14ac0a..0000000000 --- a/community_images/postgresql/ironbank/dc_coverage.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -# password -POSTGRESQL_PASSWORD=my_password - -# pg container -PG_CONTAINER="${PROJECT_NAME}"-postgresql-1 - -# run pg tests -docker exec -i "${PG_CONTAINER}" bash -c "PGPASSWORD=${POSTGRESQL_PASSWORD} psql --host localhost -U postgres -d postgres -p 5432 -f /tmp/test.psql" - -# run pg coverage -docker exec -i "${PG_CONTAINER}" bash -c "/tmp/postgres_coverage.sh" - -# run pgbench -docker exec -i "${PG_CONTAINER}" pgbench -i -s 50 diff --git a/community_images/postgresql/ironbank/docker-compose.yml b/community_images/postgresql/ironbank/docker-compose.yml deleted file mode 100644 index 315acadcef..0000000000 --- a/community_images/postgresql/ironbank/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -version: '2' - -services: - postgresql: - image: ${PG_IMAGE_REPOSITORY}:${PG_IMAGE_TAG} - cap_add: - - SYS_PTRACE - ports: - - '5432:5432' - volumes: - - 'postgresql_data:/var/lib/postgresql/data' - - ../../common/tests/test.psql:/tmp/test.psql - - ../../common/tests/common_commands.sh:/tmp/common_commands.sh - - ../../common/tests/postgres_coverage.sh:/tmp/postgres_coverage.sh - environment: - - POSTGRES_USER=postgres - - POSTGRES_PASSWORD=my_password - - POSTGRES_DB=my_database - - PGDATA=/var/lib/postgresql/data - -volumes: - postgresql_data: - driver: local diff --git a/community_images/postgresql/ironbank/docker_coverage.sh b/community_images/postgresql/ironbank/docker_coverage.sh deleted file mode 100644 index 98a41c89ea..0000000000 --- a/community_images/postgresql/ironbank/docker_coverage.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -PG_CONTAINER=$(jq -r '.container_details.postgresql12-ib.name' < "$JSON_PARAMS") - -# run pgbench -docker exec -i "${PG_CONTAINER}" pgbench -i -s 50 diff --git a/community_images/postgresql/ironbank/image.yml b/community_images/postgresql/ironbank/image.yml deleted file mode 100644 index 8ed82b0260..0000000000 --- a/community_images/postgresql/ironbank/image.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: postgresql-ib -official_name: PostgreSQL IronBank -official_website: https://www.postgresql.com/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/postgres/postgresql12 -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fpostgres%2Fpostgresql12 -source_image_readme: https://repo1.dso.mil/dsop/opensource/postgres/postgresql12/-/blob/development/README.md -rf_docker_link: rapidfort/postgresql12-ib -image_workflow_name: postgresql_ironbank -github_location: postgresql/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fpostgres%2Fpostgresql12 -usage_instructions: | - $ docker run -e POSTGRES_PASSWORD=mysecretpassword -d rapidfort/postgresql12-ib:latest -what_is_text: | - PostgreSQL, often simply "Postgres", is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance. As a database server, its primary function is to store data, securely and supporting best practices, and retrieve it later, as requested by other software applications, be it those on the same computer or those running on another computer across a network (including the Internet). It can handle workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users. Recent versions also provide replication of the database itself for security and scalability. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`latest` (Dockerfile)](https://repo1.dso.mil/dsop/opensource/postgres/postgresql12/-/blob/development/Dockerfile)" -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/postgres/postgresql12: - input_base_tag: "12." - output_repo: postgresql12-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - postgresql12-ib: - repository: "PG_IMAGE_REPOSITORY" - tag: "PG_IMAGE_TAG" - - type: docker - postgresql12-ib: - environment: - POSTGRES_PASSWORD: PgPwd diff --git a/community_images/postgresql/official/README.md b/community_images/postgresql/official/README.md deleted file mode 100644 index b551105d27..0000000000 --- a/community_images/postgresql/official/README.md +++ /dev/null @@ -1,145 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for PostgreSQL Official - -RapidFort’s container optimization process hardened this PostgreSQL Official container. This container is free to use and has no license limitations. - -It is the same as the [Postgres PostgreSQL Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is PostgreSQL Official? - -> PostgreSQL, often simply "Postgres", is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance. As a database server, its primary function is to store data, securely and supporting best practices, and retrieve it later, as requested by other software applications, be it those on the same computer or those running on another computer across a network (including the Internet). It can handle workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users. Recent versions also provide replication of the database itself for security and scalability. - - -[Overview of PostgreSQL Official](https://www.postgresql.org) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened PostgreSQL Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -1. Define your app's environment with a Dockerfile so it can be reproduced anywhere. -2. Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment. -3. Lastly, run docker compose up and Compose will start and run your entire app. - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Postgres PostgreSQL Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Postgres PostgreSQL Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/postgresql-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`15`, `15.0`, `latest`, `15.0-bullseye`, `15-bullseye`, `bullseye` (Dockerfile)](https://github.com/docker-library/postgres/blob/648e5c7dc31db0e34d8dc11891ccc50641ba6e42/15/bullseye/Dockerfile) -* ['14' '14.6', '14.6-bullseye', '14-bullseye' (Dockerfile)](https://github.com/docker-library/postgres/blob/e8ba287990e5e312278fc59131f8a796953dc6c4/14/bullseye/Dockerfile) -* [`13`, `13.9`, `13.9-bullseye`, `13-bullseye` (DockerFile)](https://github.com/docker-library/postgres/blob/883b1c3f7b485153ec5d841271801ee436ec3314/13/bullseye/Dockerfile) -* [`12`, `12.13`, `12.13-bullseye`, `12-bullseye` (DockerFile)](https://github.com/docker-library/postgres/blob/5ca94d535d75308b16125d132048bf93172521db/12/bullseye/Dockerfile) -* [`11.18-bullseye`, `11-bullseye` (DockerFile)](https://github.com/docker-library/postgres/blob/14022440352a9e24d86cae450600ea56969d234b/11/bullseye/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=postgresql-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fpostgres?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fpostgres?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fpostgres?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fpostgres?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fpostgres?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=postgresql-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/postgresql-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/postgresql-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/postgresql/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/postgresql/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/postgres -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/postgresql-official diff --git a/community_images/postgresql/official/assets/cve_reduction.webp b/community_images/postgresql/official/assets/cve_reduction.webp deleted file mode 100644 index 12d73805be93a1f93b585f4fa27b85eeb7b42ecb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1820 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 AZU6uP diff --git a/community_images/postgresql/official/dc_coverage.sh b/community_images/postgresql/official/dc_coverage.sh deleted file mode 100755 index ad0189cfd1..0000000000 --- a/community_images/postgresql/official/dc_coverage.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -# password -POSTGRESQL_PASSWORD=my_password - -# pg container -PG_CONTAINER="${PROJECT_NAME}"-postgresql-1 -# Get Port -#PG_PORT=$(docker inspect "${PG_CONTAINER}" | jq -r ".[].NetworkSettings.Ports.\"5432/tcp\"[0].HostPort") - -# run pg tests -docker exec -i "${PG_CONTAINER}" bash -c "PGPASSWORD=${POSTGRESQL_PASSWORD} psql --host localhost -U postgres -d postgres -p 5432 -f /tmp/test.psql" - -# run pg coverage -docker exec -i "${PG_CONTAINER}" bash -c "/tmp/postgres_coverage.sh" - -# run pgbench -docker exec -i "${PG_CONTAINER}" pgbench --host localhost -U postgres -d postgres -p 5432 -i -s 50 diff --git a/community_images/postgresql/official/docker-compose.yml b/community_images/postgresql/official/docker-compose.yml deleted file mode 100644 index ba828055f6..0000000000 --- a/community_images/postgresql/official/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -version: '2' - -services: - postgresql: - image: ${PG_IMAGE_REPOSITORY}:${PG_IMAGE_TAG} - cap_add: - - SYS_PTRACE - ports: - - '::5432' - volumes: - - 'postgresql_data:/var/lib/postgresql/data' - - ../../common/tests/test.psql:/tmp/test.psql - - ../../common/tests/common_commands.sh:/tmp/common_commands.sh - - ../../common/tests/postgres_coverage.sh:/tmp/postgres_coverage.sh - environment: - - POSTGRES_USER=postgres - - POSTGRES_PASSWORD=my_password - - POSTGRES_DB=my_database - - PGDATA=/var/lib/postgresql/data - -volumes: - postgresql_data: - driver: local diff --git a/community_images/postgresql/official/image.yml b/community_images/postgresql/official/image.yml deleted file mode 100644 index 1a5b71cba3..0000000000 --- a/community_images/postgresql/official/image.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: postgresql-official -official_name: PostgreSQL Official -official_website: https://www.postgresql.org -source_image_provider: Postgres -source_image_repo: docker.io/library/postgres -source_image_repo_link: https://hub.docker.com/_/postgres -source_image_readme: https://github.com/docker-library/postgres/blob/master/README.md -rf_docker_link: rapidfort/postgresql-official -image_workflow_name: postgresql_official -github_location: postgresql/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fpostgres -usage_instructions: | - 1. Define your app's environment with a Dockerfile so it can be reproduced anywhere. - 2. Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment. - 3. Lastly, run docker compose up and Compose will start and run your entire app. - -what_is_text: | - PostgreSQL, often simply "Postgres", is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance. As a database server, its primary function is to store data, securely and supporting best practices, and retrieve it later, as requested by other software applications, be it those on the same computer or those running on another computer across a network (including the Internet). It can handle workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users. Recent versions also provide replication of the database itself for security and scalability. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`15`, `15.0`, `latest`, `15.0-bullseye`, `15-bullseye`, `bullseye` (Dockerfile)](https://github.com/docker-library/postgres/blob/648e5c7dc31db0e34d8dc11891ccc50641ba6e42/15/bullseye/Dockerfile)" - - "['14' '14.6', '14.6-bullseye', '14-bullseye' (Dockerfile)](https://github.com/docker-library/postgres/blob/e8ba287990e5e312278fc59131f8a796953dc6c4/14/bullseye/Dockerfile)" - - "[`13`, `13.9`, `13.9-bullseye`, `13-bullseye` (DockerFile)](https://github.com/docker-library/postgres/blob/883b1c3f7b485153ec5d841271801ee436ec3314/13/bullseye/Dockerfile)" - - "[`12`, `12.13`, `12.13-bullseye`, `12-bullseye` (DockerFile)](https://github.com/docker-library/postgres/blob/5ca94d535d75308b16125d132048bf93172521db/12/bullseye/Dockerfile)" - - "[`11.18-bullseye`, `11-bullseye` (DockerFile)](https://github.com/docker-library/postgres/blob/14022440352a9e24d86cae450600ea56969d234b/11/bullseye/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - postgres: - input_base_tag: "15.*-bullseye" - output_repo: postgresql-official - - postgres: - input_base_tag: "14.*-bullseye" - output_repo: postgresql-official - - postgres: - input_base_tag: "13.*-bullseye" - output_repo: postgresql-official - - postgres: - input_base_tag: "12.*-bullseye" - output_repo: postgresql-official - - postgres: - input_base_tag: "11.*-bullseye" - output_repo: postgresql-official -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - postgresql-official: - repository: "PG_IMAGE_REPOSITORY" - tag: "PG_IMAGE_TAG" - - type: docker - postgresql-official: - environment: - POSTGRES_PASSWORD: PgPwd diff --git a/community_images/prometheus/bitnami/.rfignore b/community_images/prometheus/bitnami/.rfignore deleted file mode 100644 index dadbf436a8..0000000000 --- a/community_images/prometheus/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/prometheus -opt/bitnami/common/licenses -opt/bitnami/licenses -usr/share/common-licenses diff --git a/community_images/prometheus/bitnami/Dockerfile b/community_images/prometheus/bitnami/Dockerfile deleted file mode 100644 index 3bc0205538..0000000000 --- a/community_images/prometheus/bitnami/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM python:3.10.6-alpine3.15 -ADD . /application -WORKDIR /application -RUN set -e; \ - apk add --no-cache --virtual .build-deps \ - gcc \ - libc-dev \ - linux-headers \ - ; \ - pip install --upgrade pip; \ - pip install -r requirements.txt; \ - apk del .build-deps; -EXPOSE 5000 -VOLUME /application -CMD uwsgi --http :5000 --manage-script-name --mount /myapplication=flask_app:app --enable-threads --processes 5 diff --git a/community_images/prometheus/bitnami/README.md b/community_images/prometheus/bitnami/README.md deleted file mode 100644 index a6f41811cb..0000000000 --- a/community_images/prometheus/bitnami/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Prometheus - -RapidFort’s container optimization process hardened this Prometheus container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Prometheus][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Prometheus? - -> Prometheus is a free software application used for event monitoring and alerting. - - -[Overview of Prometheus](https://prometheus.io/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Prometheus image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install prometheus, just replace repository with RapidFort registry -$ helm install my-prometheus bitnami/prometheus --set image.repository=rapidfort/prometheus - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Prometheus][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Prometheus][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/prometheus][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`2`, `2-debian-11`, `2.48.0`, `2.48.0-debian-11-r` (2/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/prometheus/2/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=prometheus&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fprometheus?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=prometheus&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fprometheus?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=prometheus&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fprometheus?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=prometheus&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fprometheus?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=prometheus&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fprometheus?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=prometheus&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/prometheus?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/prometheus?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/prometheus/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/prometheus/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/prometheus -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/prometheus diff --git a/community_images/prometheus/bitnami/assets/cve_reduction.webp b/community_images/prometheus/bitnami/assets/cve_reduction.webp deleted file mode 100644 index fff7538e5b8ca6fcdd6150d3051f6fc39e68bb84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1692 zcmb`HdoSd&M2)M`8yc`Pz$WIbk#N6KJ^5J%*lTJkDO5mRA3 zLbO6dEQ2iD3Mn&K8|ArLZ^r&+J01Pep8aRP_k6$ibHDd{&-Z&D=Q>$iTITQqaK^&S z(bdrqF9-lYLV6blumD(_n>)&KK|{bL%dv260D{P26elY)B;M^TlH>a%1RrY1C;mbY z17K|!Ko)@Cw7xL^UoHWXFVzPMT81=?0wo6kMuJ$<|073onD~*eahT%lWDdm?L#*!q z852L_h_H|_D2Bm__X(kJ_zlEg2VDr~kRkvTH~}kQ2J!zY`{x;4 z0)XKv0Nk1TK4LxqkCOn99ozRQ7Xu)Y2teaN2!TTQrx-Y7x%~V9Sa|?|up0mpg8&G+ ze=2l;?fzZ-%U+St8U(b@V5s?n3&0m3fi)llAAo^K7ia?=pbxzmq$`xuQ3>3JX_UZB zz{w!}Tq_#tu#%e5CO%F$&6hmxrTT;vxuq~?I52y;(xdsLH}*8v$9OXAwE>NSjQNqx zZGYw&UnyI++1TvW_Fn2L?`HNOYf!P>i$Q;|*Eg5FtvCPN+Tdt}3ZK1{Tlwtz)>i>C z$)?ih7~}C*=;j2zeEOBC3{l(h_6GC>n~EPkaz6ntTbAJ6cnv*1Avga<>Xg3CpC8C} z4$SzV*<*;L^AbBKqG#2vA0={hL5+rKzG}0OjTuL;Wo$ob+!c^PHA{9n8Yb~KFp^UH zs{`AOSF(uwJ5fI&dv}F{`b(OA)oom|db@a7Pp8`?FeOM>G}W>9KCLpKezG*QS2o*J zF~RkQH~{ROvLT*K(_@tEO>|GC_6tYs-jqg@VLa!%QKyJIEu;OV9?tA&;bnats zSCVK!9z3@{MBv>ot9!lo^`~BEzSbO``&k^#P+7RDu8sf*=|P&YpP)@$?-1*HB6cU6IbuAt?mC{>=7#2l}AEKBI>F*au zTIK2`-<5M$r7M6Dt?I})bN92%a(>&oU{M5rk0-9EX7^=n&b*(lmRCQEy57ppWs6x* zY+9WUOSd2soh^JuqEc$UJ|6(Ti19i|d4&qZtzs^+RY&iyw+!**CKPB@2o-cBs@l1f zy#S&Fw}OzA1(N-gXmp!$>&cLN;a)@ewjnwahnOh$zW(4@gk+y&xzih%!-DT_H>-Mi zIJ7`nH4<095udqfXEklGfXclTCYxQiCCInDn9ZLmGbOAOb!-04o=AQIcIFQ<8fz$> zvm|03L5m43xH65{ELX8z3pg>eLJbt|EYcw8acQ!*a_*q*P!qc&XY~E+0!fg zmdMBNx$85I-^@1v6c>Jz)-jprMVI<#t7RAMn|vm^aOvHM2l1T^sjFghNA3OE)r*|l9YvLE zAC{)kO2o(mxb*OhjqR098!oigUaU7`WA$5+3XgLr3)oZ57AaMllR66Hc7*5`-P}~V zx#pebG(bn(S-vIcNg%H9(c6R>DwGz2SoMu;qTnH=K>JpD)}p_nhDmPIFd{S0-t`gb z#9dP!lM1n5IQp-}16{nM?^u{#FcojLq-{x7sG7yI8*7EIi{rIjZKtd~eed$BtC33T zd1C51Xl$eE(+C3uFAN>+|7%Fvmp@Y3*US82G;!?Otc7$Xnn>`l!<<#Fckqj0Ah IdFcE38xzQB>i_@% diff --git a/community_images/prometheus/bitnami/assets/metrics.webp b/community_images/prometheus/bitnami/assets/metrics.webp deleted file mode 100644 index d18be72ccee02da7867bfb90df9fd90006d191b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26930 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 AC;$Ke diff --git a/community_images/prometheus/bitnami/build_docker.sh b/community_images/prometheus/bitnami/build_docker.sh deleted file mode 100755 index 23bfdebfd7..0000000000 --- a/community_images/prometheus/bitnami/build_docker.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -TAG="latest" - -IMAGE_TAG=rapidfort/flaskapp:"${TAG}" - -docker build -t "${IMAGE_TAG}" "${SCRIPTPATH}" -docker push "${IMAGE_TAG}" diff --git a/community_images/prometheus/bitnami/config/prometheus/prometheus.yml b/community_images/prometheus/bitnami/config/prometheus/prometheus.yml deleted file mode 100644 index 10b6400e4a..0000000000 --- a/community_images/prometheus/bitnami/config/prometheus/prometheus.yml +++ /dev/null @@ -1,33 +0,0 @@ -# my global config -global: - scrape_interval: 15s # By default, scrape targets every 15 seconds. - evaluation_interval: 15s # By default, scrape targets every 15 seconds. - # scrape_timeout is set to the global default (10s). - - # Attach these labels to any time series or alerts when communicating with - # external systems (federation, remote storage, Alertmanager). - external_labels: - monitor: 'my-project' - -# A scrape configuration containing exactly one endpoint to scrape: -# Here it's Prometheus itself. -scrape_configs: - # The job name is added as a label `job=` to any timeseries scraped from this config. - - - job_name: 'prometheus' - - # Override the global default and scrape targets from this job every 5 seconds. - scrape_interval: 15s - - static_configs: - - targets: ['localhost:9090'] - - - job_name: 'webapp' - - # Override the global default and scrape targets from this job every 5 seconds. - scrape_interval: 5s - - # metrics_path defaults to '/metrics' - # scheme defaults to 'http'. - static_configs: - - targets: ['webapp:5000'] diff --git a/community_images/prometheus/bitnami/coverage.sh b/community_images/prometheus/bitnami/coverage.sh deleted file mode 100755 index 12b147d8cc..0000000000 --- a/community_images/prometheus/bitnami/coverage.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash - -set -e -set -x - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -function get_unused_port() { - netstat -aln | awk ' - $6 == "LISTEN" { - if ($4 ~ "[.:][0-9]+$") { - split($4, a, /[:.]/); - port = a[length(a)]; - p[port] = 1 - } - } - END { - for (i = 3000; i < 65000 && p[i]; i++){}; - if (i == 65000) {exit 1}; - print i - } - ' -} - -function test_prometheus() { - local NAMESPACE=$1 - local PROMETHEUS_SERVER=$2 - local PROMETHEUS_PORT=$3 - - FLASK_POD_NAME="flaskapp" - FLASK_LOCAL_PORT=$(get_unused_port) - - kubectl run "${FLASK_POD_NAME}" --restart='Never' --image rapidfort/flaskapp --namespace "${NAMESPACE}" - - # wait for flask app pod to come up - kubectl wait pods "${FLASK_POD_NAME}" -n "${NAMESPACE}" --for=condition=ready --timeout=10m - - # port forward the pod to the host machine - kubectl port-forward "${FLASK_POD_NAME}" "${FLASK_LOCAL_PORT}":5000 --namespace "${NAMESPACE}" & - PID_PF="$!" - - # hit the flaskapp endpoints so that prometheus metrics are published - for i in {1..10}; do - echo "attempt $i" - with_backoff curl -L http://localhost:"${FLASK_LOCAL_PORT}"/test - with_backoff curl -L http://localhost:"${FLASK_LOCAL_PORT}"/test1 - sleep 1 - done - - # wait for 10 secs for the metrics to be scraped and published - sleep 10 - - # run selenium tests - "${SCRIPTPATH}"/../../common/selenium_tests/runner.sh "${PROMETHEUS_SERVER}" "${PROMETHEUS_PORT}" "${SCRIPTPATH}"/selenium_tests "${NAMESPACE}" 2>&1 - - - # delete pod - kubectl delete pod "${FLASK_POD_NAME}" -n "${NAMESPACE}" - - # kill pid - kill -9 "$PID_PF" - -} diff --git a/community_images/prometheus/bitnami/dc_coverage.sh b/community_images/prometheus/bitnami/dc_coverage.sh deleted file mode 100755 index f7d879da68..0000000000 --- a/community_images/prometheus/bitnami/dc_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" \ No newline at end of file diff --git a/community_images/prometheus/bitnami/docker-compose.yml b/community_images/prometheus/bitnami/docker-compose.yml deleted file mode 100644 index 36d646a4e6..0000000000 --- a/community_images/prometheus/bitnami/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: '2' - -services: - prometheus1: - image: ${PROMETHEUS_IMAGE_REPOSITORY}:${PROMETHEUS_IMAGE_TAG} - cap_add: - - SYS_PTRACE - ports: - - '9090:9090' diff --git a/community_images/prometheus/bitnami/docker_coverage.sh b/community_images/prometheus/bitnami/docker_coverage.sh deleted file mode 100755 index fcafaf9f02..0000000000 --- a/community_images/prometheus/bitnami/docker_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" \ No newline at end of file diff --git a/community_images/prometheus/bitnami/flask_app.py b/community_images/prometheus/bitnami/flask_app.py deleted file mode 100644 index 288039cc2f..0000000000 --- a/community_images/prometheus/bitnami/flask_app.py +++ /dev/null @@ -1,43 +0,0 @@ -"""The flask application""" -#!/usr/bin/env python3 - -from flask import Flask, Response # pylint: disable=import-error -import prometheus_client # pylint: disable=import-error -from helpers.middleware import setup_metrics - -CONTENT_TYPE_LATEST = str('text/plain; version=0.0.4; charset=utf-8') - - -app = Flask(__name__) -setup_metrics(app) - - -@app.route('/test/') -def test(): - """The test endpoint""" - return 'rest' - - -@app.route('/test1/') -def test1(): - """The test1 endpoint""" - 1 / 0 # pylint: disable=pointless-statement - return 'rest' - - -@app.errorhandler(500) -def handle_500(error): - """The error handler""" - return str(error), 500 - - -@app.route('/metrics') -def metrics(): - """The metrics endpoint""" - return Response( - prometheus_client.generate_latest(), - mimetype=CONTENT_TYPE_LATEST) - - -if __name__ == '__main__': - app.run() diff --git a/community_images/prometheus/bitnami/helpers/middleware.py b/community_images/prometheus/bitnami/helpers/middleware.py deleted file mode 100644 index e23abde40c..0000000000 --- a/community_images/prometheus/bitnami/helpers/middleware.py +++ /dev/null @@ -1,41 +0,0 @@ -"""The middleware module""" -#!/usr/bin/env python3 - -import time -from flask import request # pylint: disable=import-error -from prometheus_client import Counter, Histogram # pylint: disable=import-error - -REQUEST_COUNT = Counter( - 'request_count', 'App Request Count', - ['app_name', 'method', 'endpoint', 'http_status'] -) -REQUEST_LATENCY = Histogram('request_latency_seconds', 'Request latency', - ['app_name', 'endpoint'] - ) - - -def start_timer(): - """The start timer function""" - request.start_time = time.time() - - -def stop_timer(response): - """The stop timer function""" - resp_time = time.time() - request.start_time - REQUEST_LATENCY.labels('webapp', request.path).observe(resp_time) - return response - - -def record_request_data(response): - """The method to record the request metadata""" - REQUEST_COUNT.labels('webapp', request.method, request.path, - response.status_code).inc() - return response - - -def setup_metrics(app): - """The method to setup the metrics""" - app.before_request(start_timer) - # we want stop_timer to execute first - app.after_request(record_request_data) - app.after_request(stop_timer) diff --git a/community_images/prometheus/bitnami/image.yml b/community_images/prometheus/bitnami/image.yml deleted file mode 100644 index 258573add9..0000000000 --- a/community_images/prometheus/bitnami/image.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: prometheus -official_name: Prometheus -official_website: https://prometheus.io/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/prometheus -source_image_repo_link: https://hub.docker.com/r/bitnami/prometheus -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/prometheus/README.md -rf_docker_link: rapidfort/prometheus -image_workflow_name: prometheus_bitnami -github_location: prometheus/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fprometheus -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install prometheus, just replace repository with RapidFort registry - $ helm install my-prometheus bitnami/prometheus --set image.repository=rapidfort/prometheus -what_is_text: | - Prometheus is a free software application used for event monitoring and alerting. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - prometheus: - input_base_tag: "2.47.1-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - use_helm: False - image_keys: - prometheus: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - readiness_wait_pod_name_suffix: - - "" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - prometheus: - repository: "PROMETHEUS_IMAGE_REPOSITORY" - tag: "PROMETHEUS_IMAGE_TAG" - - type: docker - script: docker_coverage.sh diff --git a/community_images/prometheus/bitnami/k8s_coverage.sh b/community_images/prometheus/bitnami/k8s_coverage.sh deleted file mode 100755 index 461ca4e1d8..0000000000 --- a/community_images/prometheus/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for k8s coverage = $JSON" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# get pod name -PROMETHEUS_SERVER=$(kubectl get pod "${RELEASE_NAME}" -n "${NAMESPACE}" --template '{{.status.podIP}}') - -PROMETHEUS_PORT=9090 - -test_prometheus "${NAMESPACE}" "${PROMETHEUS_SERVER}" "${PROMETHEUS_PORT}" diff --git a/community_images/prometheus/bitnami/overrides.yml b/community_images/prometheus/bitnami/overrides.yml deleted file mode 100644 index 6584d81765..0000000000 --- a/community_images/prometheus/bitnami/overrides.yml +++ /dev/null @@ -1,20 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -resourceType: deployment -replicaCount: 1 -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/prometheus/bitnami/requirements.txt b/community_images/prometheus/bitnami/requirements.txt deleted file mode 100644 index c73851dd5b..0000000000 --- a/community_images/prometheus/bitnami/requirements.txt +++ /dev/null @@ -1,8 +0,0 @@ -click==8.1.3 -Flask==2.3.2 -itsdangerous==2.1.2 -Jinja2==3.1.2 -MarkupSafe==2.1.1 -prometheus-client==0.14.1 -uWSGI==2.0.22 -Werkzeug==3.0.1 diff --git a/community_images/prometheus/bitnami/selenium_tests/__init__.py b/community_images/prometheus/bitnami/selenium_tests/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/community_images/prometheus/bitnami/selenium_tests/conftest.py b/community_images/prometheus/bitnami/selenium_tests/conftest.py deleted file mode 100644 index f30cea12f5..0000000000 --- a/community_images/prometheus/bitnami/selenium_tests/conftest.py +++ /dev/null @@ -1,23 +0,0 @@ -"""The conftest file for running selenium test.""" -# pylint: skip-file - -# conftest.py -import pytest # pylint: disable=import-error - - -def pytest_addoption(parser): - """The function to add options""" - parser.addoption("--server", action="store", help="prometheus server") - parser.addoption("--port", action="store", - help="port for prometheus container") - - -@pytest.fixture -def params(request): - """the params""" - config_params = {} - config_params['server'] = request.config.getoption('--server') - config_params['port'] = request.config.getoption('--port') - if config_params['server'] is None or config_params['port'] is None: - pytest.skip() - return config_params diff --git a/community_images/prometheus/bitnami/selenium_tests/prometheus_selenium_test.py b/community_images/prometheus/bitnami/selenium_tests/prometheus_selenium_test.py deleted file mode 100644 index c820e2c497..0000000000 --- a/community_images/prometheus/bitnami/selenium_tests/prometheus_selenium_test.py +++ /dev/null @@ -1,77 +0,0 @@ -"""The selenium test.""" -# pylint: skip-file - -# Generated by Selenium IDE -import json # pylint: disable=import-error disable=unused-import -import time # pylint: disable=import-error disable=unused-import -import pytest # pylint: disable=import-error disable=unused-import -from selenium import webdriver # pylint: disable=import-error -from selenium.webdriver.chrome.options import Options # pylint: disable=import-error -from selenium.webdriver.common.by import By # pylint: disable=import-error -from selenium.webdriver.common.action_chains import ActionChains # pylint: disable=import-error disable=unused-import -from selenium.webdriver.support import expected_conditions # pylint: disable=import-error disable=unused-import -from selenium.webdriver.support.wait import WebDriverWait # pylint: disable=import-error disable=unused-import -from selenium.webdriver.common.keys import Keys # pylint: disable=import-error disable=unused-import -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # pylint: disable=import-error disable=unused-import - - -class TestPrometheus(): - """The test word press class for testing wordpress image.""" - - def setup_method(self): - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_prometheus(self, params): - """The test method""" - # Test name: s1 - # Step # | name | target | value - # 1 | open | - # /graph?g0.expr=&g0.tab=1&g0.stacked=0&g0.show_exemplars=0&g0.range_input=1h - # | - self.driver.get( - "http://{}:{}/".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - # 2 | setWindowSize | 1200x859 | - self.driver.set_window_size(1200, 859) - # 3 | click | css=.cm-line | - self.driver.find_element(By.CSS_SELECTOR, ".cm-line").click() - # 4 | click | css=.execute-btn | - self.driver.find_element(By.CSS_SELECTOR, ".execute-btn").click() - # 5 | click | css=.cm-line | - self.driver.find_element(By.CSS_SELECTOR, ".cm-line").click() - # 6 | editContent | css=.cm-content |
request_count_total
- element = self.driver.find_element(By.CSS_SELECTOR, ".cm-content") - self.driver.execute_script( - "if(arguments[0].contentEditable === 'true') {arguments[0].innerText = '
request_count_total
'}", - element) # pylint: disable=line-too-long - # 7 | click | css=.execute-btn | - self.driver.find_element(By.CSS_SELECTOR, ".execute-btn").click() - # search for the text on the page now - assert "request_count_total" in self.driver.page_source - # 8 | editContent | css=.cm-content |
request_latency_seconds_bucket
# pylint: - # disable=line-too-long - element = self.driver.find_element(By.CSS_SELECTOR, ".cm-content") - self.driver.execute_script( - "if(arguments[0].contentEditable === 'true') {arguments[0].innerText = '
request_latency_seconds_bucket
'}", - element) - # 9 | click | css=.execute-btn | - self.driver.find_element(By.CSS_SELECTOR, ".execute-btn").click() - # search for the text on the page - assert "request_latency_seconds_bucket" in self.driver.page_source diff --git a/community_images/prometheus/ironbank/.rfignore b/community_images/prometheus/ironbank/.rfignore deleted file mode 100644 index bd036ec246..0000000000 --- a/community_images/prometheus/ironbank/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/licenses diff --git a/community_images/prometheus/ironbank/README.md b/community_images/prometheus/ironbank/README.md deleted file mode 100644 index 32ccdf2eea..0000000000 --- a/community_images/prometheus/ironbank/README.md +++ /dev/null @@ -1,141 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Prometheus Ironbank - -RapidFort’s container optimization process hardened this Prometheus Ironbank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Prometheus Ironbank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Prometheus Ironbank? - -> Prometheus is a free software application used for event monitoring and alerting. - - -[Overview of Prometheus Ironbank](https://prometheus.io/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Prometheus Ironbank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install prometheus, just replace repository with RapidFort registry -$ helm install my-prometheus bitnami/prometheus --set image.repository=rapidfort/prometheus-ib - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Prometheus Ironbank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One Prometheus Ironbank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/prometheus-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=prometheus-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fprometheus%2Fprometheus?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=prometheus-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fprometheus%2Fprometheus?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=prometheus-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fprometheus%2Fprometheus?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=prometheus-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fprometheus%2Fprometheus?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=prometheus-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fprometheus%2Fprometheus?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=prometheus-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/prometheus-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/prometheus-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/prometheus/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/prometheus/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fprometheus%2Fprometheus -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/prometheus-ib diff --git a/community_images/prometheus/ironbank/assets/cve_reduction.webp b/community_images/prometheus/ironbank/assets/cve_reduction.webp deleted file mode 100644 index be4646b564872fc6c5a6e32629818b4703b85c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1700 zcmb`Hc{J2p9KbIIFWU$;W6LN#o@Ge3%2H&lgGQEk#V}(Zqp{aaI3u1%&-y4MTQVs% z$d)I&P_|Seaukz9+1J6m-@HyofAr4#=Y8+_e(&dg@AsbX_b%sREX~Za`2cV2Y?F)v4q!G4(G7@S5D+G=`6+siphgm$?H3I z|Bl0g1B0QM4o^-hq=fFOVY=D--@|5bL*lUM+N z-ZB6@$vZyx8vs;a1pxVG$ET1706YeOs@^~>3HwhmFvxOydIGRO2SE570OEZB2)KMJ zbZ70(UHr>lQP3J0XrDx=c>#Zb2Pj|(0)PiVL!=2bz#*Umy%^L5D5t0#xXGnlz;zrL z6139I3lA2^|1!|2R4N>g2QRIijCvRT8q=)rnRQujH1ec)8VC}#7eBC$R~VG4 z2S$u7N%yk)>YH+lT^H66W-;WtJnr;;FAJ)U+T+XZnn%SZ`1Uw^MA1jW;=1}?6c*ds zH}X%>skZionxS5e)%pfUg!+dzRw|b|V|sN3v-el!&1~_ta~D3J4&Z63Gt-jksw+zH z^}t0JMmo$6O2u_QIlEuZ=kfakDrUDBp|3H+2r;RM(<7bv!#Kw*{j6a7hsoj#04l?;XP&LU zj1$Q$%0RTWW8R!OOEJtT$&6nc-Ft@{#ib2s$!lT)_eRuHk5Z%^(4#Ye*XU+Wgpdf2VD)vi`|`KM-k$7@AIR6qWfU>Z}hWfx6%%Spr6vBsD3H`W^w*NKOpSyyf~ zuh85LA{l+ZI%?~obFE%I7{b8kTZ$To7i?3Kq=m_N*Lpq8569iI8O79P_86F`OL9A9 zt>EUZXjjJd)?&4~%@w{a>`9PYe_^;8wtL~7SMuaKl?czSo@h`~8Xyw|bQSwVwUA-% z;r!i`-fqN#Ce;udWi14YnF%Z@$vJ-BV3Yk?J#w1+@&p@pc~Cqz_WUIL%N@I#EqX=$ z{IxJin_PBCvap1Lu1v(Fh~!|0{H}Fmz-Uqal}E%Z*2-acWs7U|MTKUISx|ozx(We)nmZ%PCFlvB!NryU-=x8rjv$cGj7=pF>m~8Pn*=i{j~&)|1w8 z2$;*ow$1RSlVYgR1{<%K11`n=3FEI^hUt~?szU73`^?I1v!QZw%_8Y0DtDYRQ+^2M zI>x5ScAfC0WrUkY%_x)hZ#={v(}^LF7YFV!Yd1{&jR2Lv=XvUxDJ<@evE!EZh}`_T z>H-$+_L$ye9%SfaetoovoFZe9y_uMQs>1?NP%JmrJy@!_d__w_g*R(aLF0@FrY*Wm N$WS*Vkp_K3e*=c!du{*# diff --git a/community_images/prometheus/ironbank/assets/metrics.webp b/community_images/prometheus/ironbank/assets/metrics.webp deleted file mode 100644 index 246cb179df0d6c852afadfcab35b0ebd7e994eca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26690 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 LtNV)A)&2kgX~rkk diff --git a/community_images/prometheus/ironbank/config/prometheus/prometheus.yml b/community_images/prometheus/ironbank/config/prometheus/prometheus.yml deleted file mode 100644 index 10b6400e4a..0000000000 --- a/community_images/prometheus/ironbank/config/prometheus/prometheus.yml +++ /dev/null @@ -1,33 +0,0 @@ -# my global config -global: - scrape_interval: 15s # By default, scrape targets every 15 seconds. - evaluation_interval: 15s # By default, scrape targets every 15 seconds. - # scrape_timeout is set to the global default (10s). - - # Attach these labels to any time series or alerts when communicating with - # external systems (federation, remote storage, Alertmanager). - external_labels: - monitor: 'my-project' - -# A scrape configuration containing exactly one endpoint to scrape: -# Here it's Prometheus itself. -scrape_configs: - # The job name is added as a label `job=` to any timeseries scraped from this config. - - - job_name: 'prometheus' - - # Override the global default and scrape targets from this job every 5 seconds. - scrape_interval: 15s - - static_configs: - - targets: ['localhost:9090'] - - - job_name: 'webapp' - - # Override the global default and scrape targets from this job every 5 seconds. - scrape_interval: 5s - - # metrics_path defaults to '/metrics' - # scheme defaults to 'http'. - static_configs: - - targets: ['webapp:5000'] diff --git a/community_images/prometheus/ironbank/coverage.sh b/community_images/prometheus/ironbank/coverage.sh deleted file mode 100755 index 12b147d8cc..0000000000 --- a/community_images/prometheus/ironbank/coverage.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash - -set -e -set -x - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -function get_unused_port() { - netstat -aln | awk ' - $6 == "LISTEN" { - if ($4 ~ "[.:][0-9]+$") { - split($4, a, /[:.]/); - port = a[length(a)]; - p[port] = 1 - } - } - END { - for (i = 3000; i < 65000 && p[i]; i++){}; - if (i == 65000) {exit 1}; - print i - } - ' -} - -function test_prometheus() { - local NAMESPACE=$1 - local PROMETHEUS_SERVER=$2 - local PROMETHEUS_PORT=$3 - - FLASK_POD_NAME="flaskapp" - FLASK_LOCAL_PORT=$(get_unused_port) - - kubectl run "${FLASK_POD_NAME}" --restart='Never' --image rapidfort/flaskapp --namespace "${NAMESPACE}" - - # wait for flask app pod to come up - kubectl wait pods "${FLASK_POD_NAME}" -n "${NAMESPACE}" --for=condition=ready --timeout=10m - - # port forward the pod to the host machine - kubectl port-forward "${FLASK_POD_NAME}" "${FLASK_LOCAL_PORT}":5000 --namespace "${NAMESPACE}" & - PID_PF="$!" - - # hit the flaskapp endpoints so that prometheus metrics are published - for i in {1..10}; do - echo "attempt $i" - with_backoff curl -L http://localhost:"${FLASK_LOCAL_PORT}"/test - with_backoff curl -L http://localhost:"${FLASK_LOCAL_PORT}"/test1 - sleep 1 - done - - # wait for 10 secs for the metrics to be scraped and published - sleep 10 - - # run selenium tests - "${SCRIPTPATH}"/../../common/selenium_tests/runner.sh "${PROMETHEUS_SERVER}" "${PROMETHEUS_PORT}" "${SCRIPTPATH}"/selenium_tests "${NAMESPACE}" 2>&1 - - - # delete pod - kubectl delete pod "${FLASK_POD_NAME}" -n "${NAMESPACE}" - - # kill pid - kill -9 "$PID_PF" - -} diff --git a/community_images/prometheus/ironbank/image.yml b/community_images/prometheus/ironbank/image.yml deleted file mode 100644 index 3f74f20b7d..0000000000 --- a/community_images/prometheus/ironbank/image.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: prometheus-ib -official_name: Prometheus Ironbank -official_website: https://prometheus.io/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/prometheus/prometheus -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fprometheus%2Fprometheus -source_image_readme: https://repo1.dso.mil/dsop/opensource/prometheus/prometheus/-/blob/development/README.md -rf_docker_link: rapidfort/prometheus-ib -# image_workflow_name: prometheus_ironbank -github_location: prometheus/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fprometheus%2Fprometheus -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install prometheus, just replace repository with RapidFort registry - $ helm install my-prometheus bitnami/prometheus --set image.repository=rapidfort/prometheus-ib -what_is_text: | - Prometheus is a free software application used for event monitoring and alerting. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/prometheus/prometheus: - input_base_tag: "2.44." - output_repo: prometheus-ib -runtimes: - - type: k8s - script: k8s_coverage.sh - use_helm: False - image_keys: - prometheus-ib: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - readiness_wait_pod_name_suffix: - - "" diff --git a/community_images/prometheus/ironbank/k8s_coverage.sh b/community_images/prometheus/ironbank/k8s_coverage.sh deleted file mode 100755 index 461ca4e1d8..0000000000 --- a/community_images/prometheus/ironbank/k8s_coverage.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for k8s coverage = $JSON" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# get pod name -PROMETHEUS_SERVER=$(kubectl get pod "${RELEASE_NAME}" -n "${NAMESPACE}" --template '{{.status.podIP}}') - -PROMETHEUS_PORT=9090 - -test_prometheus "${NAMESPACE}" "${PROMETHEUS_SERVER}" "${PROMETHEUS_PORT}" diff --git a/community_images/prometheus/ironbank/overrides.yml b/community_images/prometheus/ironbank/overrides.yml deleted file mode 100644 index 6584d81765..0000000000 --- a/community_images/prometheus/ironbank/overrides.yml +++ /dev/null @@ -1,20 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -resourceType: deployment -replicaCount: 1 -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/prometheus/ironbank/selenium_tests/__init__.py b/community_images/prometheus/ironbank/selenium_tests/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/community_images/prometheus/ironbank/selenium_tests/conftest.py b/community_images/prometheus/ironbank/selenium_tests/conftest.py deleted file mode 100644 index f30cea12f5..0000000000 --- a/community_images/prometheus/ironbank/selenium_tests/conftest.py +++ /dev/null @@ -1,23 +0,0 @@ -"""The conftest file for running selenium test.""" -# pylint: skip-file - -# conftest.py -import pytest # pylint: disable=import-error - - -def pytest_addoption(parser): - """The function to add options""" - parser.addoption("--server", action="store", help="prometheus server") - parser.addoption("--port", action="store", - help="port for prometheus container") - - -@pytest.fixture -def params(request): - """the params""" - config_params = {} - config_params['server'] = request.config.getoption('--server') - config_params['port'] = request.config.getoption('--port') - if config_params['server'] is None or config_params['port'] is None: - pytest.skip() - return config_params diff --git a/community_images/prometheus/ironbank/selenium_tests/prometheus_selenium_test.py b/community_images/prometheus/ironbank/selenium_tests/prometheus_selenium_test.py deleted file mode 100644 index c820e2c497..0000000000 --- a/community_images/prometheus/ironbank/selenium_tests/prometheus_selenium_test.py +++ /dev/null @@ -1,77 +0,0 @@ -"""The selenium test.""" -# pylint: skip-file - -# Generated by Selenium IDE -import json # pylint: disable=import-error disable=unused-import -import time # pylint: disable=import-error disable=unused-import -import pytest # pylint: disable=import-error disable=unused-import -from selenium import webdriver # pylint: disable=import-error -from selenium.webdriver.chrome.options import Options # pylint: disable=import-error -from selenium.webdriver.common.by import By # pylint: disable=import-error -from selenium.webdriver.common.action_chains import ActionChains # pylint: disable=import-error disable=unused-import -from selenium.webdriver.support import expected_conditions # pylint: disable=import-error disable=unused-import -from selenium.webdriver.support.wait import WebDriverWait # pylint: disable=import-error disable=unused-import -from selenium.webdriver.common.keys import Keys # pylint: disable=import-error disable=unused-import -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # pylint: disable=import-error disable=unused-import - - -class TestPrometheus(): - """The test word press class for testing wordpress image.""" - - def setup_method(self): - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_prometheus(self, params): - """The test method""" - # Test name: s1 - # Step # | name | target | value - # 1 | open | - # /graph?g0.expr=&g0.tab=1&g0.stacked=0&g0.show_exemplars=0&g0.range_input=1h - # | - self.driver.get( - "http://{}:{}/".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - # 2 | setWindowSize | 1200x859 | - self.driver.set_window_size(1200, 859) - # 3 | click | css=.cm-line | - self.driver.find_element(By.CSS_SELECTOR, ".cm-line").click() - # 4 | click | css=.execute-btn | - self.driver.find_element(By.CSS_SELECTOR, ".execute-btn").click() - # 5 | click | css=.cm-line | - self.driver.find_element(By.CSS_SELECTOR, ".cm-line").click() - # 6 | editContent | css=.cm-content |
request_count_total
- element = self.driver.find_element(By.CSS_SELECTOR, ".cm-content") - self.driver.execute_script( - "if(arguments[0].contentEditable === 'true') {arguments[0].innerText = '
request_count_total
'}", - element) # pylint: disable=line-too-long - # 7 | click | css=.execute-btn | - self.driver.find_element(By.CSS_SELECTOR, ".execute-btn").click() - # search for the text on the page now - assert "request_count_total" in self.driver.page_source - # 8 | editContent | css=.cm-content |
request_latency_seconds_bucket
# pylint: - # disable=line-too-long - element = self.driver.find_element(By.CSS_SELECTOR, ".cm-content") - self.driver.execute_script( - "if(arguments[0].contentEditable === 'true') {arguments[0].innerText = '
request_latency_seconds_bucket
'}", - element) - # 9 | click | css=.execute-btn | - self.driver.find_element(By.CSS_SELECTOR, ".execute-btn").click() - # search for the text on the page - assert "request_latency_seconds_bucket" in self.driver.page_source diff --git a/community_images/rabbitmq/bitnami/.rfignore b/community_images/rabbitmq/bitnami/.rfignore deleted file mode 100644 index a6a546bb28..0000000000 --- a/community_images/rabbitmq/bitnami/.rfignore +++ /dev/null @@ -1,5 +0,0 @@ -opt/bitnami/rabbitmq -opt/bitnami/common/licenses -opt/bitnami/licenses -opt/bitnami/rabbitmq/licenses -usr/share/common-licenses diff --git a/community_images/rabbitmq/bitnami/README.md b/community_images/rabbitmq/bitnami/README.md deleted file mode 100644 index 3e2e351ce5..0000000000 --- a/community_images/rabbitmq/bitnami/README.md +++ /dev/null @@ -1,144 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for RabbitMQ - -RapidFort’s container optimization process hardened this RabbitMQ container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami RabbitMQ][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is RabbitMQ? - -> RabbitMQ is an open source general-purpose message broker that is designed for consistent, highly-available messaging scenarios (both synchronous and asynchronous). - - -[Overview of RabbitMQ](https://www.rabbitmq.com/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened RabbitMQ image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install rabbitmq, just replace repository with RapidFort registry -$ helm install my-rabbitmq bitnami/rabbitmq --set image.repository=rapidfort/rabbitmq - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami RabbitMQ][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami RabbitMQ][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/rabbitmq][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`3.12`, `3.12-debian-11`, `3.12.10`, `3.12.10-debian-11-r` (3.12/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq/3.12/debian-11/Dockerfile) -* [`3.11`, `3.11-debian-11`, `3.11.26`, `3.11.26-debian-11-r` (3.11/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq/3.11/debian-11/Dockerfile) -* [`3.10`, `3.10-debian-11`, `3.10.25`, `3.10.25-debian-11-r` (3.10/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq/3.10/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=rabbitmq&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Frabbitmq?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=rabbitmq&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Frabbitmq?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=rabbitmq&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Frabbitmq?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=rabbitmq&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Frabbitmq?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=rabbitmq&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Frabbitmq?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=rabbitmq&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/rabbitmq?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/rabbitmq?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/rabbitmq/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/rabbitmq/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/rabbitmq -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/rabbitmq diff --git a/community_images/rabbitmq/bitnami/assets/cve_reduction.webp b/community_images/rabbitmq/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 08319fdff6f296bc1e8275c733567bfebe4dc134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1870 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/dev/null 2>&1 ; pwd -P )" - -function test_rabbitmq() { - local NAMESPACE=$1 - local RABBITMQ_SERVER=$2 - local RABBITMQ_PASS=$3 - - PUBLISHER_POD_NAME="publisher" - kubectl run "${PUBLISHER_POD_NAME}" --restart='Never' --image bitnami/python --namespace "${NAMESPACE}" --command -- sleep infinity - # wait for publisher pod to come up - kubectl wait pods "${PUBLISHER_POD_NAME}" -n "${NAMESPACE}" --for=condition=ready --timeout=10m - echo "#!/bin/bash - pip install pika - python3 /tmp/publish.py --rabbitmq-server=$RABBITMQ_SERVER --password=$RABBITMQ_PASS" > "$SCRIPTPATH"/publish_commands.sh - - kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/publish.py "${PUBLISHER_POD_NAME}":/tmp/publish.py - chmod +x "$SCRIPTPATH"/publish_commands.sh - kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/publish_commands.sh "${PUBLISHER_POD_NAME}":/tmp/publish_commands.sh - - kubectl -n "${NAMESPACE}" exec -i "${PUBLISHER_POD_NAME}" -- bash -c "/tmp/publish_commands.sh" - - # consumer specific - CONSUMER_POD_NAME="consumer" - kubectl run "${CONSUMER_POD_NAME}" --restart='Never' --image bitnami/python --namespace "${NAMESPACE}" --command -- sleep infinity - # wait for consumer pod to come up - kubectl wait pods "${CONSUMER_POD_NAME}" -n "${NAMESPACE}" --for=condition=ready --timeout=10m - echo "#!/bin/bash - pip install pika - python3 /tmp/consume.py --rabbitmq-server=$RABBITMQ_SERVER --password=$RABBITMQ_PASS" > "$SCRIPTPATH"/consume_commands.sh - - kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/consume.py "${CONSUMER_POD_NAME}":/tmp/consume.py - chmod +x "$SCRIPTPATH"/consume_commands.sh - kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/consume_commands.sh "${CONSUMER_POD_NAME}":/tmp/consume_commands.sh - - kubectl -n "${NAMESPACE}" exec -i "${CONSUMER_POD_NAME}" -- bash -c "/tmp/consume_commands.sh" - - # delete the client containers - kubectl -n "${NAMESPACE}" delete pod "${PUBLISHER_POD_NAME}" - kubectl -n "${NAMESPACE}" delete pod "${CONSUMER_POD_NAME}" - - # delete the generated command files - rm "$SCRIPTPATH"/publish_commands.sh - rm "$SCRIPTPATH"/consume_commands.sh - - PERF_POD="perf-test" - DEFAULT_RABBITMQ_USER='user' - PERF_TEST_IMAGE_VERSION='2.18.0' - - # run the perf benchmark test - kubectl run -i "${PERF_POD}" \ - --env RABBITMQ_PERF_TEST_LOGGERS=com.rabbitmq.perf=debug,com.rabbitmq.perf.Producer=debug \ - --image=pivotalrabbitmq/perf-test:"${PERF_TEST_IMAGE_VERSION}" \ - --namespace "${NAMESPACE}" -- \ - --uri amqp://"${DEFAULT_RABBITMQ_USER}":"${RABBITMQ_PASS}"@"${RABBITMQ_SERVER}" \ - --time 10 - - # check for message from perf test - out=$(kubectl logs "${PERF_POD}" -n "${NAMESPACE}" | grep -ic 'consumer latency') - - if (( out < 1 )); then - echo "The perf benchmark didn't run properly" - return 1 - fi - - # delete the perf container - kubectl -n "${NAMESPACE}" delete pod "${PERF_POD}" -} diff --git a/community_images/rabbitmq/bitnami/dc_coverage.sh b/community_images/rabbitmq/bitnami/dc_coverage.sh deleted file mode 100755 index f1e9de1475..0000000000 --- a/community_images/rabbitmq/bitnami/dc_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" diff --git a/community_images/rabbitmq/bitnami/docker-compose.yml b/community_images/rabbitmq/bitnami/docker-compose.yml deleted file mode 100644 index 9cfdf749a1..0000000000 --- a/community_images/rabbitmq/bitnami/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -version: '2' - -services: - rabbitmq: - image: ${RABBITMQ_IMAGE_REPOSITORY}:${RABBITMQ_IMAGE_TAG} - cap_add: - - SYS_PTRACE - environment: - - RABBITMQ_DEFAULT_USER=user - - RABBITMQ_DEFAULT_PASS=bitnami - ports: - # AMQP protocol port - - '5672' - # HTTP management UI - - '15672' diff --git a/community_images/rabbitmq/bitnami/docker_coverage.sh b/community_images/rabbitmq/bitnami/docker_coverage.sh deleted file mode 100755 index 109008160b..0000000000 --- a/community_images/rabbitmq/bitnami/docker_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" diff --git a/community_images/rabbitmq/bitnami/image.yml b/community_images/rabbitmq/bitnami/image.yml deleted file mode 100644 index 56b832dde9..0000000000 --- a/community_images/rabbitmq/bitnami/image.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: rabbitmq -official_name: RabbitMQ -official_website: https://www.rabbitmq.com/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/rabbitmq -source_image_repo_link: https://hub.docker.com/r/bitnami/rabbitmq -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/rabbitmq/README.md -rf_docker_link: rapidfort/rabbitmq -image_workflow_name: rabbitmq_bitnami -github_location: rabbitmq/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Frabbitmq -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install rabbitmq, just replace repository with RapidFort registry - $ helm install my-rabbitmq bitnami/rabbitmq --set image.repository=rapidfort/rabbitmq -what_is_text: | - RabbitMQ is an open source general-purpose message broker that is designed for consistent, highly-available messaging scenarios (both synchronous and asynchronous). -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - rabbitmq: - input_base_tag: "3.12.6-debian-11-r" - - rabbitmq: - input_base_tag: "3.11.23-debian-11-r" - - rabbitmq: - input_base_tag: "3.10.25-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: rabbitmq - image_keys: - rabbitmq: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - rabbitmq: - repository: "RABBITMQ_IMAGE_REPOSITORY" - tag: "RABBITMQ_IMAGE_TAG" - - type: docker - script: docker_coverage.sh diff --git a/community_images/rabbitmq/bitnami/k8s_coverage.sh b/community_images/rabbitmq/bitnami/k8s_coverage.sh deleted file mode 100755 index ebe5af4a61..0000000000 --- a/community_images/rabbitmq/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( - cd -- "$(dirname "$0")" >/dev/null 2>&1 - pwd -P -)" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' <"$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' <"$JSON_PARAMS") - -RABBITMQ_SERVER="${RELEASE_NAME}"."${NAMESPACE}".svc.cluster.local - -RABBITMQ_PASS=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath="{.data.rabbitmq-password}" | base64 -d) -# run coverage script -test_rabbitmq "${NAMESPACE}" "${RABBITMQ_SERVER}" "${RABBITMQ_PASS}" diff --git a/community_images/rabbitmq/bitnami/overrides.yml b/community_images/rabbitmq/bitnami/overrides.yml deleted file mode 100644 index 6584d81765..0000000000 --- a/community_images/rabbitmq/bitnami/overrides.yml +++ /dev/null @@ -1,20 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -resourceType: deployment -replicaCount: 1 -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/rabbitmq/bitnami/publish.py b/community_images/rabbitmq/bitnami/publish.py deleted file mode 100644 index ef50928dd6..0000000000 --- a/community_images/rabbitmq/bitnami/publish.py +++ /dev/null @@ -1,39 +0,0 @@ -"""The rabbitmq publisher.""" -#!/usr/bin/env python3 -import getopt -import sys - -import pika # pylint: disable=import-error - -DEFAULT_RABBITMQ_USER = 'user' -DEFAULT_RABBITMQ_PASSWORD = 'bitnami' -DEFAULT_TOPIC_NAME = 'test' - -server = 'localhost' # pylint: disable=invalid-name -password = DEFAULT_RABBITMQ_PASSWORD # pylint: disable=invalid-name -user = DEFAULT_RABBITMQ_USER # pylint: disable=invalid-name -try: - opts, args = getopt.getopt(sys.argv[1:], "s:p:u:", [ - "rabbitmq-server=", "password=", "user="]) -except getopt.GetoptError: - print('python3 publish.py --rabbitmq-server --password --user ') - sys.exit(2) -for opt, arg in opts: - if opt in ("--rabbitmq-server", "--s"): - server = arg - elif opt in ("--password", "--p"): - password = arg - elif opt in ("--user", "--u"): - user = arg - -params = pika.URLParameters(f'amqp://{user}:{password}@{server}') -connection = pika.BlockingConnection(params) -channel = connection.channel() - -channel.queue_declare(queue=DEFAULT_TOPIC_NAME) - -message = 'This is a test message!' # pylint: disable=invalid-name -channel.basic_publish( - exchange='', routing_key=DEFAULT_TOPIC_NAME, body=message) -print(f" [x] Sent '{message}'") -connection.close() diff --git a/community_images/redis-cluster/bitnami/.rfignore b/community_images/redis-cluster/bitnami/.rfignore deleted file mode 100644 index cc3759b36a..0000000000 --- a/community_images/redis-cluster/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/licenses -opt/bitnami/redis/licenses -usr/share/common-licenses diff --git a/community_images/redis-cluster/bitnami/README.md b/community_images/redis-cluster/bitnami/README.md deleted file mode 100644 index c6e7bb46a4..0000000000 --- a/community_images/redis-cluster/bitnami/README.md +++ /dev/null @@ -1,143 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Redis™ Cluster - -RapidFort’s container optimization process hardened this Redis™ Cluster container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Redis™ Cluster][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Redis™ Cluster? - -> Redis™ is an open-source, networked, in-memory, key-value data store with optional durability. It is written in ANSI C. The development of Redis is sponsored by Redis Labs today; before that, it was sponsored by Pivotal and VMware. According to the monthly ranking by DB-Engines.com, Redis is the most popular key-value store. The name Redis means REmote DIctionary Server. - - -[Overview of Redis™ Cluster](http://redis.io) - -Disclaimer: Redis is a registered trademark of Redis Labs Ltd. Any rights therein are reserved to Redis Labs Ltd. Any use by RapidFort is for referential purposes only and does not indicate any sponsorship, endorsement, or affiliation between Redis Labs Ltd. - - -## How do I use this hardened Redis™ Cluster image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install redis-cluster, just replace repository with RapidFort registry -$ helm install my-redis-cluster bitnami/redis-cluster --set image.repository=rapidfort/redis-cluster - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Redis™ Cluster][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Redis™ Cluster][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/redis-cluster][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`7.2`, `7.2-debian-11`, `7.2.3`, `7.2.3-debian-11-r` (7.2/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/redis-cluster/7.2/debian-11/Dockerfile) -* [`7.0`, `7.0-debian-11`, `7.0.14`, `7.0.14-debian-11-r` (7.0/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/redis-cluster/7.0/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=redis-cluster&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fredis-cluster?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-cluster&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fredis-cluster?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-cluster&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fredis-cluster?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-cluster&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fredis-cluster?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-cluster&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fredis-cluster?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-cluster&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/redis-cluster?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/redis-cluster?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/redis-cluster/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/redis-cluster/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/redis-cluster -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/redis-cluster diff --git a/community_images/redis-cluster/bitnami/assets/cve_reduction.webp b/community_images/redis-cluster/bitnami/assets/cve_reduction.webp deleted file mode 100644 index b78acd29293c62a5d305bbb226a9cc85365ffade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1766 zcmb`Hdpy%?7{K4nrQ;Unl1eOz$Z?5wT-L~C3fYpHOSvs1#>_gd3!RE^LN1-6O)D#> zQaMQ-r;!k~YJ^cDp-6PG3ES-acKYxB7 zye{$^4*P}^sbne?(=XcXM*z@yw&*jg06_IH05_kILn)#E6e9~+ctivMpDqBP;tzlZ z7XZb;uZ1qIUA&8b*((xSqYLdb4r-Ag28077*a~6+5tu`?0ayYnfP!8OvI5G+$d^yB(&Nu=gL0`8YF4 zF^}DlWUwIem>LXFcvC_fB)?$B=`TET$hybm_$E;i9_IP&{kXZKp4S)Jt&Yj(v>lLW z#9tEG56kxBG1Z9jljNFl`(4i)cu3nNcY68H(bk1L+Mb4UMWccSk&@#worio&xoSoa z>wR8emWXKuxT(hTK|{1qZqHKlB%ys4YDGs8Pip|k6c0se-0$@LS%GMgqpi^4e&Y4I z_F(spT$1s#CM4 z=E@j_aXrjAff;u>KV4XTtW}QZ0_(e`xLwl|d#PRVQyn{rof8t#fOWJyN>({?QIq?2 zo7d1C2K^~PZSoanJlW=8{cv)NdoVA+!(>y@Aw)p{#v^7)-U1 zZPXmjEUZL_c8OczEHbg{v9$$Hq@oo?wM^Y}-jshNqGFVq#MO_FDlfS)D3O0VF3cj+ zM+^&3*Qt=rtS9#?A0~x z3w7*-`ptcpIB)3tkndi$PryR?r;4{3Uc6W~y5WxwT$v%vwazE$$GXu9Z? z_`RT}`@oI(*1Bd#yy*y0Ie?JT-(t&Ns`Lx3V1j^=?Ovb49y7CR398*`LT+b;T37uv zc3*O>Os!%4s>7QG)c7Olk%jZa8BRtKgi`t2qbmL5>UyR5=I@L;69CTDJ`ZPVlXFhd z2}d)r=ccNMEhQNAMKf*fWY#BhI+G-Mu$rk`E-;L6p>WFY&T*__;|5~12F2hhvldaP z9X+l|K7`*jUX{Kr(Bke)i}>R}dF<^E6~4*#PZ85?`)e}|RAuKf6=FQjwC-P--Q#KV zYhwl};#TqHdeln9v}&${`@vk!d~dbz-9GB7g<;f^^uC&v*-g~^~)w56+9P& h_mkOkIYL*h?OSxpJ-T(bSQ>9kmN}tB5X?d!+22LjoO}QP diff --git a/community_images/redis-cluster/bitnami/assets/metrics.webp b/community_images/redis-cluster/bitnami/assets/metrics.webp deleted file mode 100644 index 18c59c9ce3edc77f5ab5469503806c2f3bc84205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25632 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 diff --git a/community_images/redis-cluster/bitnami/dc_coverage.sh b/community_images/redis-cluster/bitnami/dc_coverage.sh deleted file mode 100755 index f3a04312b8..0000000000 --- a/community_images/redis-cluster/bitnami/dc_coverage.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -CONTAINER_NAME="${PROJECT_NAME}"-redis-node-0-1 -REDIS_PASSWORD=bitnami - -# run all redis commands in test.redis -docker exec -i "$CONTAINER_NAME" \ - bash -c "/tmp/redis_cluster_runner.sh ${REDIS_PASSWORD} localhost 6379 /tmp/test.redis" - -# run redis coverage -docker exec -i "$CONTAINER_NAME" \ - bash -c "/tmp/redis_coverage.sh" - -# run redis benchmark -docker exec -i "$CONTAINER_NAME" bash -c "redis-benchmark -h localhost -p 6379 -c 2 -n 100 -a ${REDIS_PASSWORD} --cluster" diff --git a/community_images/redis-cluster/bitnami/docker-compose.yml b/community_images/redis-cluster/bitnami/docker-compose.yml deleted file mode 100644 index 3301be846d..0000000000 --- a/community_images/redis-cluster/bitnami/docker-compose.yml +++ /dev/null @@ -1,88 +0,0 @@ -version: '2' -services: - redis-node-0: - image: ${REDIS_CLUSTER_IMAGE_REPOSITORY}:${REDIS_CLUSTER_IMAGE_TAG} - volumes: - - redis-cluster_data-0:/bitnami/redis/data - - ../../common/tests/test.redis:/tmp/test.redis - - ../../common/tests/redis_coverage.sh:/tmp/redis_coverage.sh - - ./redis_cluster_runner.sh:/tmp/redis_cluster_runner.sh - - environment: - - 'REDIS_PASSWORD=bitnami' - - 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5' - cap_add: - - SYS_PTRACE - - redis-node-1: - image: ${REDIS_CLUSTER_IMAGE_REPOSITORY}:${REDIS_CLUSTER_IMAGE_TAG} - volumes: - - redis-cluster_data-1:/bitnami/redis/data - environment: - - 'REDIS_PASSWORD=bitnami' - - 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5' - cap_add: - - SYS_PTRACE - - redis-node-2: - image: ${REDIS_CLUSTER_IMAGE_REPOSITORY}:${REDIS_CLUSTER_IMAGE_TAG} - volumes: - - redis-cluster_data-2:/bitnami/redis/data - environment: - - 'REDIS_PASSWORD=bitnami' - - 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5' - cap_add: - - SYS_PTRACE - - redis-node-3: - image: ${REDIS_CLUSTER_IMAGE_REPOSITORY}:${REDIS_CLUSTER_IMAGE_TAG} - volumes: - - redis-cluster_data-3:/bitnami/redis/data - environment: - - 'REDIS_PASSWORD=bitnami' - - 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5' - cap_add: - - SYS_PTRACE - - redis-node-4: - image: ${REDIS_CLUSTER_IMAGE_REPOSITORY}:${REDIS_CLUSTER_IMAGE_TAG} - volumes: - - redis-cluster_data-4:/bitnami/redis/data - environment: - - 'REDIS_PASSWORD=bitnami' - - 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5' - cap_add: - - SYS_PTRACE - - redis-node-5: - image: ${REDIS_CLUSTER_IMAGE_REPOSITORY}:${REDIS_CLUSTER_IMAGE_TAG} - volumes: - - redis-cluster_data-5:/bitnami/redis/data - depends_on: - - redis-node-0 - - redis-node-1 - - redis-node-2 - - redis-node-3 - - redis-node-4 - environment: - - 'REDIS_PASSWORD=bitnami' - - 'REDISCLI_AUTH=bitnami' - - 'REDIS_CLUSTER_REPLICAS=1' - - 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5' - - 'REDIS_CLUSTER_CREATOR=yes' - cap_add: - - SYS_PTRACE - -volumes: - redis-cluster_data-0: - driver: local - redis-cluster_data-1: - driver: local - redis-cluster_data-2: - driver: local - redis-cluster_data-3: - driver: local - redis-cluster_data-4: - driver: local - redis-cluster_data-5: - driver: local \ No newline at end of file diff --git a/community_images/redis-cluster/bitnami/image.yml b/community_images/redis-cluster/bitnami/image.yml deleted file mode 100644 index 2ba9774245..0000000000 --- a/community_images/redis-cluster/bitnami/image.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: redis-cluster -official_name: Redis™ Cluster -official_website: http://redis.io -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/redis-cluster -source_image_repo_link: https://hub.docker.com/r/bitnami/redis-cluster -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/redis-cluster/README.md -rf_docker_link: rapidfort/redis-cluster -image_workflow_name: redis-cluster_bitnami -github_location: redis-cluster/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fredis-cluster -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install redis-cluster, just replace repository with RapidFort registry - $ helm install my-redis-cluster bitnami/redis-cluster --set image.repository=rapidfort/redis-cluster -what_is_text: | - Redis™ is an open-source, networked, in-memory, key-value data store with optional durability. It is written in ANSI C. The development of Redis is sponsored by Redis Labs today; before that, it was sponsored by Pivotal and VMware. According to the monthly ranking by DB-Engines.com, Redis is the most popular key-value store. The name Redis means REmote DIctionary Server. -disclaimer: | - Disclaimer: Redis is a registered trademark of Redis Labs Ltd. Any rights therein are reserved to Redis Labs Ltd. Any use by RapidFort is for referential purposes only and does not indicate any sponsorship, endorsement, or affiliation between Redis Labs Ltd. -bitnami_excluded_branches: - - "6.2" -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - redis-cluster: - input_base_tag: "7.2.1-debian-11-r" - - redis-cluster: - input_base_tag: "7.0.13-debian-11-r" -runtimes: - - type: k8s - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: redis-cluster - image_keys: - redis-cluster: {} - override_file: "overrides.yml" - - type: k8s - script: k8s_tls_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: redis-cluster - tls_certs: - generate: true - secret_name: rf-redis-cluster-tls - common_name: rf-redis-cluster - helm_additional_params: - tls.enabled: true - tls.existingSecret: rf-redis-cluster-tls - tls.certCAFilename: ca.crt - tls.certFilename: tls.crt - tls.certKeyFilename: tls.key - image_keys: - redis-cluster: {} - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - redis-cluster: - repository: "REDIS_CLUSTER_IMAGE_REPOSITORY" - tag: "REDIS_CLUSTER_IMAGE_TAG" diff --git a/community_images/redis-cluster/bitnami/k8s_tls_coverage.sh b/community_images/redis-cluster/bitnami/k8s_tls_coverage.sh deleted file mode 100755 index 57f5d9b0ac..0000000000 --- a/community_images/redis-cluster/bitnami/k8s_tls_coverage.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# get Redis passwordk -REDIS_PASSWORD=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath="{.data.redis-password}" | base64 --decode) - -# run redis_cluster_runner on cluster -kubectl -n "${NAMESPACE}" exec \ - -i "${RELEASE_NAME}"-0 \ - -- /bin/bash -c \ - "REDISCLI_AUTH=${REDIS_PASSWORD} redis-cli -h ${RELEASE_NAME} -p 6379 --tls --cert /opt/bitnami/redis/certs/tls.crt --key /opt/bitnami/redis/certs/tls.key --cacert /opt/bitnami/redis/certs/ca.crt -c ping" diff --git a/community_images/redis-cluster/bitnami/overrides.yml b/community_images/redis-cluster/bitnami/overrides.yml deleted file mode 100644 index c8bd440b7d..0000000000 --- a/community_images/redis-cluster/bitnami/overrides.yml +++ /dev/null @@ -1,18 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -redis: - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/redis-cluster/bitnami/redis_cluster_runner.sh b/community_images/redis-cluster/bitnami/redis_cluster_runner.sh deleted file mode 100755 index 98139c273e..0000000000 --- a/community_images/redis-cluster/bitnami/redis_cluster_runner.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -x -set -e - -REDIS_PASSWORD=$1 -shift -REDIS_HOST=$1 -shift -REDIS_PORT=$1 -shift -REDIS_TEST_FILE=$1 -shift -TLS_PREFILX=( "$@" ) - -input="${REDIS_TEST_FILE}" -while IFS= read -r line -do - # shellcheck disable=SC2086 - REDISCLI_AUTH="${REDIS_PASSWORD}" redis-cli -h "${REDIS_HOST}" -p "${REDIS_PORT}" "${TLS_PREFILX[@]}" -c $line -done < "$input" diff --git a/community_images/redis-cluster/bitnami/tls_certs.yml b/community_images/redis-cluster/bitnami/tls_certs.yml deleted file mode 100644 index e35da66fd8..0000000000 --- a/community_images/redis-cluster/bitnami/tls_certs.yml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: rf-redis-cluster-cert -spec: - commonName: rf-redis-cluster - duration: 2160h - isCA: false - issuerRef: - group: cert-manager.io - kind: Issuer - name: ci-ca-issuer - privateKey: - algorithm: RSA - encoding: PKCS1 - size: 2048 - renewBefore: 360h - secretName: rf-redis-cluster-tls - subject: - organizations: - - rapidfort - usages: - - server auth - - client auth diff --git a/community_images/redis/bitnami/.rfignore b/community_images/redis/bitnami/.rfignore deleted file mode 100644 index 9484480c02..0000000000 --- a/community_images/redis/bitnami/.rfignore +++ /dev/null @@ -1,6 +0,0 @@ -usr/local/bin/redis-check-aof -usr/local/bin/redis-check-rdb -usr/share/common-licenses -opt/bitnami/redis/licenses -opt/bitnami/licenses -opt/bitnami/common/licenses diff --git a/community_images/redis/bitnami/README.md b/community_images/redis/bitnami/README.md deleted file mode 100644 index 15db35537e..0000000000 --- a/community_images/redis/bitnami/README.md +++ /dev/null @@ -1,144 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Redis™ - -RapidFort’s container optimization process hardened this Redis™ container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Redis™][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Redis™? - -> Redis™ is an open-source, networked, in-memory, key-value data store with optional durability. It is written in ANSI C. The development of Redis is sponsored by Redis Labs today; before that, it was sponsored by Pivotal and VMware. According to the monthly ranking by DB-Engines.com, Redis is the most popular key-value store. The name Redis means REmote DIctionary Server. - - -[Overview of Redis™](http://redis.io) - -Disclaimer: Redis is a registered trademark of Redis Labs Ltd. Any rights therein are reserved to Redis Labs Ltd. Any use by RapidFort is for referential purposes only and does not indicate any sponsorship, endorsement, or affiliation between Redis Labs Ltd. - - -## How do I use this hardened Redis™ image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install redis, just replace repository with RapidFort registry -$ helm install my-redis bitnami/redis --set image.repository=rapidfort/redis - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Redis™][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Redis™][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/redis][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`7.2`, `7.2-debian-11`, `7.2.3`, `7.2.3-debian-11-r` (7.2/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/redis/7.2/debian-11/Dockerfile) -* [`7.0`, `7.0-debian-11`, `7.0.14`, `7.0.14-debian-11-r` (7.0/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/redis/7.0/debian-11/Dockerfile) -* [`6.2`, `6.2-debian-11`, `6.2.14`, `6.2.14-debian-11-r` (6.2/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/redis/6.2/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=redis&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fredis?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fredis?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fredis?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fredis?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fredis?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/redis?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/redis?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/redis/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/redis/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/redis -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/redis diff --git a/community_images/redis/bitnami/assets/cve_reduction.webp b/community_images/redis/bitnami/assets/cve_reduction.webp deleted file mode 100644 index b78acd29293c62a5d305bbb226a9cc85365ffade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1766 zcmb`Hdpy%?7{K4nrQ;Unl1eOz$Z?5wT-L~C3fYpHOSvs1#>_gd3!RE^LN1-6O)D#> zQaMQ-r;!k~YJ^cDp-6PG3ES-acKYxB7 zye{$^4*P}^sbne?(=XcXM*z@yw&*jg06_IH05_kILn)#E6e9~+ctivMpDqBP;tzlZ z7XZb;uZ1qIUA&8b*((xSqYLdb4r-Ag28077*a~6+5tu`?0ayYnfP!8OvI5G+$d^yB(&Nu=gL0`8YF4 zF^}DlWUwIem>LXFcvC_fB)?$B=`TET$hybm_$E;i9_IP&{kXZKp4S)Jt&Yj(v>lLW z#9tEG56kxBG1Z9jljNFl`(4i)cu3nNcY68H(bk1L+Mb4UMWccSk&@#worio&xoSoa z>wR8emWXKuxT(hTK|{1qZqHKlB%ys4YDGs8Pip|k6c0se-0$@LS%GMgqpi^4e&Y4I z_F(spT$1s#CM4 z=E@j_aXrjAff;u>KV4XTtW}QZ0_(e`xLwl|d#PRVQyn{rof8t#fOWJyN>({?QIq?2 zo7d1C2K^~PZSoanJlW=8{cv)NdoVA+!(>y@Aw)p{#v^7)-U1 zZPXmjEUZL_c8OczEHbg{v9$$Hq@oo?wM^Y}-jshNqGFVq#MO_FDlfS)D3O0VF3cj+ zM+^&3*Qt=rtS9#?A0~x z3w7*-`ptcpIB)3tkndi$PryR?r;4{3Uc6W~y5WxwT$v%vwazE$$GXu9Z? z_`RT}`@oI(*1Bd#yy*y0Ie?JT-(t&Ns`Lx3V1j^=?Ovb49y7CR398*`LT+b;T37uv zc3*O>Os!%4s>7QG)c7Olk%jZa8BRtKgi`t2qbmL5>UyR5=I@L;69CTDJ`ZPVlXFhd z2}d)r=ccNMEhQNAMKf*fWY#BhI+G-Mu$rk`E-;L6p>WFY&T*__;|5~12F2hhvldaP z9X+l|K7`*jUX{Kr(Bke)i}>R}dF<^E6~4*#PZ85?`)e}|RAuKf6=FQjwC-P--Q#KV zYhwl};#TqHdeln9v}&${`@vk!d~dbz-9GB7g<;f^^uC&v*-g~^~)w56+9P& h_mkOkIYL*h?OSxpJ-T(bSQ>9kmN}tB5X?d!+22LjoO}QP diff --git a/community_images/redis/bitnami/assets/metrics.webp b/community_images/redis/bitnami/assets/metrics.webp deleted file mode 100644 index 29b52e9ed178f48336a9ca2382870fd24f39ecb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25580 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%0Ay0<&2lZ^2{ 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 byh={7c$A%D@hLjR;!=0eNy-{Y-5>w}LJs&g diff --git a/community_images/redis/bitnami/docker-compose.yml b/community_images/redis/bitnami/docker-compose.yml deleted file mode 100644 index 84783dc25f..0000000000 --- a/community_images/redis/bitnami/docker-compose.yml +++ /dev/null @@ -1,35 +0,0 @@ -version: '2' - -services: - redis-primary: - image: ${REDIS_IMAGE_REPOSITORY}:${REDIS_IMAGE_TAG} - ports: - - '6379' - environment: - - REDIS_REPLICATION_MODE=master - - REDIS_PASSWORD=my_password - - REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL - volumes: - - 'redis_data:/bitnami/redis/data' - cap_add: - - SYS_PTRACE - - redis-secondary: - image: ${REDIS_IMAGE_REPOSITORY}:${REDIS_IMAGE_TAG} - ports: - - '6379' - depends_on: - - redis-primary - environment: - - REDIS_REPLICATION_MODE=slave - - REDIS_MASTER_HOST=redis-primary - - REDIS_MASTER_PORT_NUMBER=6379 - - REDIS_MASTER_PASSWORD=my_password - - REDIS_PASSWORD=my_password - - REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL - cap_add: - - SYS_PTRACE - -volumes: - redis_data: - driver: local \ No newline at end of file diff --git a/community_images/redis/bitnami/image.yml b/community_images/redis/bitnami/image.yml deleted file mode 100644 index d47800d7a2..0000000000 --- a/community_images/redis/bitnami/image.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: redis -official_name: Redis™ -official_website: http://redis.io -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/redis -source_image_repo_link: https://hub.docker.com/r/bitnami/redis -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/redis/README.md -rf_docker_link: rapidfort/redis -image_workflow_name: redis_bitnami -github_location: redis/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fredis -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install redis, just replace repository with RapidFort registry - $ helm install my-redis bitnami/redis --set image.repository=rapidfort/redis -what_is_text: | - Redis™ is an open-source, networked, in-memory, key-value data store with optional durability. It is written in ANSI C. The development of Redis is sponsored by Redis Labs today; before that, it was sponsored by Pivotal and VMware. According to the monthly ranking by DB-Engines.com, Redis is the most popular key-value store. The name Redis means REmote DIctionary Server. -disclaimer: | - Disclaimer: Redis is a registered trademark of Redis Labs Ltd. Any rights therein are reserved to Redis Labs Ltd. Any use by RapidFort is for referential purposes only and does not indicate any sponsorship, endorsement, or affiliation between Redis Labs Ltd. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - redis: - input_base_tag: "7.2.1-debian-11-r" - - redis: - input_base_tag: "7.0.13-debian-11-r" - - redis: - input_base_tag: "6.2.13-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: redis - readiness_wait_pod_name_suffix: - - "master-0" - image_keys: - redis: {} - override_file: "overrides.yml" - - type: k8s - script: k8s_tls_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: redis - readiness_wait_pod_name_suffix: - - "master-0" - tls_certs: - generate: true - secret_name: localhost-server-tls - common_name: localhost - helm_additional_params: - tls.enabled: true - tls.existingSecret: localhost-server-tls - tls.certCAFilename: ca.crt - tls.certFilename: tls.crt - tls.certKeyFilename: tls.key - image_keys: - redis: {} - override_file: "overrides.yml" - - type: docker_compose - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - redis: - repository: "REDIS_IMAGE_REPOSITORY" - tag: "REDIS_IMAGE_TAG" - - type: docker - redis: - environment: - REDIS_PASSWORD: my_password \ No newline at end of file diff --git a/community_images/redis/bitnami/k8s_coverage.sh b/community_images/redis/bitnami/k8s_coverage.sh deleted file mode 100755 index e8c1d46d38..0000000000 --- a/community_images/redis/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -SCRIPTPATH=$(jq -r '.image_script_dir' < "$JSON_PARAMS") -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# get Redis password -REDIS_PASSWORD=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath="{.data.redis-password}" | base64 --decode) - -# copy test.redis into container -kubectl -n "${NAMESPACE}" cp \ - "${SCRIPTPATH}"/../../common/tests/test.redis "${RELEASE_NAME}"-master-0:/tmp/test.redis - -# run script -kubectl -n "${NAMESPACE}" \ - exec -i "${RELEASE_NAME}"-master-0 \ - -- /bin/bash -c "cat /tmp/test.redis | REDISCLI_AUTH=\"${REDIS_PASSWORD}\" redis-cli -h localhost --pipe" - -# copy redis_coverage.sh into container -kubectl -n "${NAMESPACE}" cp \ - "${SCRIPTPATH}"/../../common/tests/redis_coverage.sh \ - "${RELEASE_NAME}"-master-0:/tmp/redis_coverage.sh - -# run redis_coverage command on cluster -kubectl -n "${NAMESPACE}" exec \ - -i "${RELEASE_NAME}"-master-0 -- /bin/bash -c \ - "/tmp/redis_coverage.sh" - - -kubectl run "${RELEASE_NAME}"-client --restart='Never' --namespace "${NAMESPACE}" \ - --image bitnami/redis --command -- sleep infinity -kubectl wait pod "${RELEASE_NAME}"-client --for=condition=ready --timeout=10m -n "${NAMESPACE}" -kubectl exec -it "${RELEASE_NAME}"-client -n "${NAMESPACE}" -- \ - redis-benchmark -h "${RELEASE_NAME}"-master -p 6379 -a "${REDIS_PASSWORD}" -n 1000 -c 10 - -# # run redis benchmark -# kubectl run "${RELEASE_NAME}"-client --rm -i \ -# --restart='Never' --namespace "${NAMESPACE}" \ -# --image rapidfort/redis --command \ -# -- redis-benchmark -h "${RELEASE_NAME}"-master -p 6379 -a "${REDIS_PASSWORD}" -n 1000 -c 10 \ No newline at end of file diff --git a/community_images/redis/bitnami/k8s_tls_coverage.sh b/community_images/redis/bitnami/k8s_tls_coverage.sh deleted file mode 100755 index c2e4f86783..0000000000 --- a/community_images/redis/bitnami/k8s_tls_coverage.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -SCRIPTPATH=$(jq -r '.image_script_dir' < "$JSON_PARAMS") -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# get Redis passwordk -REDIS_PASSWORD=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath="{.data.redis-password}" | base64 --decode) - -# copy test.redis into container -kubectl -n "${NAMESPACE}" cp \ - "${SCRIPTPATH}"/../../common/tests/test.redis "${RELEASE_NAME}"-master-0:/tmp/test.redis - -# run tls script -kubectl -n "${NAMESPACE}" \ - exec -i "${RELEASE_NAME}"-master-0 \ - -- /bin/bash -c "cat /tmp/test.redis | REDISCLI_AUTH=\"${REDIS_PASSWORD}\" redis-cli -h localhost --tls --cert /opt/bitnami/redis/certs/tls.crt --key /opt/bitnami/redis/certs/tls.key --cacert /opt/bitnami/redis/certs/ca.crt --pipe" diff --git a/community_images/redis/bitnami/overrides.yml b/community_images/redis/bitnami/overrides.yml deleted file mode 100644 index c27764377f..0000000000 --- a/community_images/redis/bitnami/overrides.yml +++ /dev/null @@ -1,33 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -master: - containerSecurityContext: - enabled: true - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -replica: - containerSecurityContext: - enabled: true - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 \ No newline at end of file diff --git a/community_images/redis/bitnami/tls_certs.yml b/community_images/redis/bitnami/tls_certs.yml deleted file mode 100644 index 3c07fca644..0000000000 --- a/community_images/redis/bitnami/tls_certs.yml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: localhost-cert -spec: - commonName: localhost - duration: 2160h - isCA: false - issuerRef: - group: cert-manager.io - kind: Issuer - name: ci-ca-issuer - privateKey: - algorithm: RSA - encoding: PKCS1 - size: 2048 - renewBefore: 360h - secretName: localhost-server-tls - subject: - organizations: - - rapidfort - usages: - - server auth - - client auth diff --git a/community_images/redis/ironbank/.rfignore b/community_images/redis/ironbank/.rfignore deleted file mode 100644 index dbff0827b0..0000000000 --- a/community_images/redis/ironbank/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -usr/local/bin/redis-check-aof -usr/local/bin/redis-check-rdb -usr/share/licenses -LICENSE.txt diff --git a/community_images/redis/ironbank/README.md b/community_images/redis/ironbank/README.md deleted file mode 100644 index a7318d7047..0000000000 --- a/community_images/redis/ironbank/README.md +++ /dev/null @@ -1,139 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Redis™ IronBank - -RapidFort’s container optimization process hardened this Redis™ IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Redis™ IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Redis™ IronBank? - -> Redis™ is an open-source, networked, in-memory, key-value data store with optional durability. It is written in ANSI C. The development of Redis is sponsored by Redis Labs today; before that, it was sponsored by Pivotal and VMware. According to the monthly ranking by DB-Engines.com, Redis is the most popular key-value store. The name Redis means REmote DIctionary Server. - - -[Overview of Redis™ IronBank](http://redis.io) - -Disclaimer: Redis is a registered trademark of Redis Labs Ltd. Any rights therein are reserved to Redis Labs Ltd. Any use by RapidFort is for referential purposes only and does not indicate any sponsorship, endorsement, or affiliation between Redis Labs Ltd. - - -## How do I use this hardened Redis™ IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run -it --rm -p6379:6379 rapidfort/redis6-ib:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Redis™ IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One Redis™ IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/redis6-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`latest` (Dockerfile)](https://repo1.dso.mil/dsop/opensource/redis/redis6/-/blob/development/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=redis-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fredis%2Fredis6?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fredis%2Fredis6?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fredis%2Fredis6?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fredis%2Fredis6?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fredis%2Fredis6?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/redis6-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/redis6-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/redis/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/redis/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fredis%2Fredis6 -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/redis6-ib diff --git a/community_images/redis/ironbank/assets/cve_reduction.webp b/community_images/redis/ironbank/assets/cve_reduction.webp deleted file mode 100644 index 15a12b0540d2d6445c0c076b4f5ec471acd656f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1542 zcmb`HdoByD4j_aP7V6?ez)G%cOh&S5`0p*mQs`zYXmUd4kEn=qI$pr7jOas!vCu* zoagae0Q@AtBF=)(F9Sdj4}j@d@EP#{wBi6BG%$Tbeg7#2jaU^L4PY!EK+_XoWg~#v z;rT)rau@F6U-pVca`cdW9!DA-f*}B~KmrE%!xn_h0S8;b3VAWu$BO_Ob%BdA$wfJU zeTY@s?!0w|Mn>kO+E~qVbcV#c>>+BZQ^13)RDix=Vw=t zEF?4WrB9}a!9Ja9?SfcZx%$$^Yu(YkzYZ<`CNt=fMN|z}XVg@l-5qAzJg{q7(=me7 z*z6%g=-G%Je-ALH*k`wP$%{J%WZH}8Uf%c1U4{K!yeamyWv4*RzVD{M)h)@E-I3bc z-XFh(ROP@be=vKKrtP2^q*J1yp0|DDQ5^FR^#kjo?SHNw7BsSFy@95lv6-WraP@$> z?N5@fz9?!ckCt9v8RsaOkX|jL()*|dl-7tr^6Hs3T$)ogkFJQ+ovxY6{yrv?iTfK zWq13fI+Jkp%MG!p)&yCmMsRy^u^1Z*e+{tC+BsEh;9%KIECCnuh#sN7@V2?i~~EzDLcgsEz$CX5xCj>bu+Ltv5~*wu-hF zElb*@HDLSthced??IhoZQ~auzCm7QA&T%7`S~rJSDmJXEA*d9n<(kb)9YzxHe2`l=(6)WRy12x zG-L8~In-2rsV5`B-qTwxx83yZXp0+qBIe+%T~VsnK5S~?QgIqeI@Vvrc@)aUKd;_< zB}*=xt#ZI$em2NlHHhwcazkvwl5(k1l) z)hP`=ZJgnF@#^3S8}r1`f}OxqluvVvm9 PB@VSbvqG2HAV0+42!lk| diff --git a/community_images/redis/ironbank/assets/metrics.webp b/community_images/redis/ironbank/assets/metrics.webp deleted file mode 100644 index 010ebec2469a5b750c5caab5945d4c16cc8111f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25392 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 diff --git a/community_images/redis/ironbank/dc_coverage.sh b/community_images/redis/ironbank/dc_coverage.sh deleted file mode 100755 index b4ee42d08a..0000000000 --- a/community_images/redis/ironbank/dc_coverage.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") - -CONTAINER_NAME="${NAMESPACE}"-redis-primary-1 - -# run redis tests -docker exec -i "${CONTAINER_NAME}" bash -c "cat /tmp/test.redis | redis-cli" - -# run redis coverage -docker exec -i "${CONTAINER_NAME}" bash -c "/tmp/redis_coverage.sh" diff --git a/community_images/redis/ironbank/docker-compose.yml b/community_images/redis/ironbank/docker-compose.yml deleted file mode 100644 index aa72499bd6..0000000000 --- a/community_images/redis/ironbank/docker-compose.yml +++ /dev/null @@ -1,37 +0,0 @@ -version: '2' - -services: - redis-primary: - image: ${REDIS_IMAGE_REPOSITORY}:${REDIS_IMAGE_TAG} - ports: - - '6379' - environment: - - REDIS_REPLICATION_MODE=master - - REDIS_PASSWORD=my_password - - REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL - volumes: - - 'redis_data:/bitnami/redis/data' - - ../../common/tests/test.redis:/tmp/test.redis - - ../../common/tests/redis_coverage.sh:/tmp/redis_coverage.sh - cap_add: - - SYS_PTRACE - - redis-secondary: - image: ${REDIS_IMAGE_REPOSITORY}:${REDIS_IMAGE_TAG} - ports: - - '6379' - depends_on: - - redis-primary - environment: - - REDIS_REPLICATION_MODE=slave - - REDIS_MASTER_HOST=redis-primary - - REDIS_MASTER_PORT_NUMBER=6379 - - REDIS_MASTER_PASSWORD=my_password - - REDIS_PASSWORD=my_password - - REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL - cap_add: - - SYS_PTRACE - -volumes: - redis_data: - driver: local diff --git a/community_images/redis/ironbank/docker_coverage.sh b/community_images/redis/ironbank/docker_coverage.sh deleted file mode 100755 index 2280cf13e9..0000000000 --- a/community_images/redis/ironbank/docker_coverage.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -RAPIDFORT_ACCOUNT="${RAPIDFORT_ACCOUNT:-rapidfort}" -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") - -# get docker host ip -REDIS_HOST=$(jq -r '.container_details."redis6-ib".ip_address' < "$JSON_PARAMS") -REPO_PATH=$(jq -r '.image_tag_details."redis6-ib".repo_path' < "$JSON_PARAMS") -TAG=$(jq -r '.image_tag_details."redis6-ib".tag' < "$JSON_PARAMS") - -# run redis-client tests -docker run --rm -i --cap-add=SYS_PTRACE \ - --network="${NAMESPACE}" \ - "${REPO_PATH}:${TAG}" \ - redis-benchmark -h "${REDIS_HOST}" -p 6379 -n 1000 -c 10 diff --git a/community_images/redis/ironbank/image.yml b/community_images/redis/ironbank/image.yml deleted file mode 100644 index c4072375bb..0000000000 --- a/community_images/redis/ironbank/image.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: redis-ib -official_name: Redis™ IronBank -official_website: http://redis.io -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/redis/redis6 -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fredis%2Fredis6 -source_image_readme: https://repo1.dso.mil/dsop/opensource/redis/redis6/-/blob/development/README.md -rf_docker_link: rapidfort/redis6-ib -image_workflow_name: redis_ironbank -github_location: redis/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fredis%2Fredis6 -usage_instructions: | - $ docker run -it --rm -p6379:6379 rapidfort/redis6-ib:latest -what_is_text: | - Redis™ is an open-source, networked, in-memory, key-value data store with optional durability. It is written in ANSI C. The development of Redis is sponsored by Redis Labs today; before that, it was sponsored by Pivotal and VMware. According to the monthly ranking by DB-Engines.com, Redis is the most popular key-value store. The name Redis means REmote DIctionary Server. -disclaimer: | - Disclaimer: Redis is a registered trademark of Redis Labs Ltd. Any rights therein are reserved to Redis Labs Ltd. Any use by RapidFort is for referential purposes only and does not indicate any sponsorship, endorsement, or affiliation between Redis Labs Ltd. -docker_links: - - "[`latest` (Dockerfile)](https://repo1.dso.mil/dsop/opensource/redis/redis6/-/blob/development/Dockerfile)" -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/redis/redis6: - input_base_tag: "6.2." - output_repo: redis6-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - redis6-ib: - repository: "REDIS_IMAGE_REPOSITORY" - tag: "REDIS_IMAGE_TAG" - - type: docker - script: docker_coverage.sh - redis6-ib: {} \ No newline at end of file diff --git a/community_images/redis/official/.rfignore b/community_images/redis/official/.rfignore deleted file mode 100644 index dbff0827b0..0000000000 --- a/community_images/redis/official/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -usr/local/bin/redis-check-aof -usr/local/bin/redis-check-rdb -usr/share/licenses -LICENSE.txt diff --git a/community_images/redis/official/README.md b/community_images/redis/official/README.md deleted file mode 100644 index 4646d0989a..0000000000 --- a/community_images/redis/official/README.md +++ /dev/null @@ -1,146 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Redis™ Official - -RapidFort’s container optimization process hardened this Redis™ Official container. This container is free to use and has no license limitations. - -It is the same as the [The Docker Community Redis™ Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Redis™ Official? - -> Redis™ is an open-source, networked, in-memory, key-value data store with optional durability. It is written in ANSI C. The development of Redis is sponsored by Redis Labs today; before that, it was sponsored by Pivotal and VMware. According to the monthly ranking by DB-Engines.com, Redis is the most popular key-value store. The name Redis means REmote DIctionary Server. - - -[Overview of Redis™ Official](http://redis.io) - -Disclaimer: Redis is a registered trademark of Redis Labs Ltd. Any rights therein are reserved to Redis Labs Ltd. Any use by RapidFort is for referential purposes only and does not indicate any sponsorship, endorsement, or affiliation between Redis Labs Ltd. - - -## How do I use this hardened Redis™ Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ docker run -it --rm -p 6379:6379 rapidfort/redis-official:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [The Docker Community Redis™ Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [The Docker Community Redis™ Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/redis-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`7.2.0`, `7.2`, `7`, `latest`, `7.2.0-bookworm`, `7.2-bookworm`, `7-bookworm`, `bookworm`](https://github.com/docker-library/redis/blob/9b538c33746872dcd1e8c809cbde9f21ac2ec3ac/7.2/Dockerfile) -* [`7.2.0-alpine`, `7.2-alpine`, `7-alpine`, `alpine`, `7.2.0-alpine3.18`, `7.2-alpine3.18`, `7-alpine3.18`, `alpine3.18`](https://github.com/docker-library/redis/blob/9b538c33746872dcd1e8c809cbde9f21ac2ec3ac/7.2/alpine/Dockerfile) -* [`7.0.12`, `7.0`, `7.0.12-bookworm`, `7.0-bookworm`](https://github.com/docker-library/redis/blob/5c8459f1bd20b7b7f92325f83898636f3c8db95f/7.0/Dockerfile) -* [`7.0.12-alpine`, 7.0-alpine`, `7.0.12-alpine3.18`, `7.0-alpine3.18`](https://github.com/docker-library/redis/blob/5c8459f1bd20b7b7f92325f83898636f3c8db95f/7.0/alpine/Dockerfile) -* [`6.2.13`, `6.2`, `6`, `6.2.13-bookworm`, `6.2-bookworm`, `6-bookworm`](https://github.com/docker-library/redis/blob/f2da8752a05b783eb805b67ad7a56a997a0fe91f/6.2/Dockerfile) -* [`6.2.13-alpine`, `6.2-alpine`, `6-alpine`, `6.2.13-alpine3.18`, `6.2-alpine3.18`, `6-alpine3.18`](https://github.com/docker-library/redis/blob/f2da8752a05b783eb805b67ad7a56a997a0fe91f/6.2/alpine/Dockerfile) -* [`6.0.20`, `6.0`, `6.0.20-bookworm`, `6.0-bookworm`](https://github.com/docker-library/redis/blob/873a7cac27da5a275d0c1e0c7d41724ae2701071/6.0/Dockerfile) -* [`6.0.20-alpine`, `6.0-alpine`, `6.0.20-alpine3.18`, `6.0-alpine3.18`](https://github.com/docker-library/redis/blob/873a7cac27da5a275d0c1e0c7d41724ae2701071/6.0/alpine/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=redis-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fredis?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fredis?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fredis?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fredis?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fredis?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=redis-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/redis-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/redis-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/redis/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/redis/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/redis -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/redis-official diff --git a/community_images/redis/official/assets/cve_reduction.webp b/community_images/redis/official/assets/cve_reduction.webp deleted file mode 100644 index 369cbb0b8be24422b04f0f8e9306cafae029fa4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 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 diff --git a/community_images/redis/official/dc_coverage.sh b/community_images/redis/official/dc_coverage.sh deleted file mode 100755 index 978a51a194..0000000000 --- a/community_images/redis/official/dc_coverage.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") - -CONTAINER_NAME="${NAMESPACE}"-redis-primary-1 - -# run redis tests -(docker exec -i "${CONTAINER_NAME}" bash -c "cat ../tmp/test.redis | redis-cli") || (docker exec -i "${CONTAINER_NAME}" sh -c "cat ../tmp/test.redis | redis-cli") - -# run redis coverage -(docker exec -i "${CONTAINER_NAME}" sh ../tmp/redis_coverage.sh) || (docker exec -i "${CONTAINER_NAME}" bash -c "../tmp/redis_coverage.sh") diff --git a/community_images/redis/official/docker-compose.yml b/community_images/redis/official/docker-compose.yml deleted file mode 100644 index aa72499bd6..0000000000 --- a/community_images/redis/official/docker-compose.yml +++ /dev/null @@ -1,37 +0,0 @@ -version: '2' - -services: - redis-primary: - image: ${REDIS_IMAGE_REPOSITORY}:${REDIS_IMAGE_TAG} - ports: - - '6379' - environment: - - REDIS_REPLICATION_MODE=master - - REDIS_PASSWORD=my_password - - REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL - volumes: - - 'redis_data:/bitnami/redis/data' - - ../../common/tests/test.redis:/tmp/test.redis - - ../../common/tests/redis_coverage.sh:/tmp/redis_coverage.sh - cap_add: - - SYS_PTRACE - - redis-secondary: - image: ${REDIS_IMAGE_REPOSITORY}:${REDIS_IMAGE_TAG} - ports: - - '6379' - depends_on: - - redis-primary - environment: - - REDIS_REPLICATION_MODE=slave - - REDIS_MASTER_HOST=redis-primary - - REDIS_MASTER_PORT_NUMBER=6379 - - REDIS_MASTER_PASSWORD=my_password - - REDIS_PASSWORD=my_password - - REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL - cap_add: - - SYS_PTRACE - -volumes: - redis_data: - driver: local diff --git a/community_images/redis/official/docker.env.temp b/community_images/redis/official/docker.env.temp deleted file mode 100644 index 91f3bf6f23..0000000000 --- a/community_images/redis/official/docker.env.temp +++ /dev/null @@ -1,2 +0,0 @@ -REDIS_IMAGE_REPOSITORY=rapidfort/redis-official -REDIS_IMAGE_TAG=6.0.20-alpine3.18 diff --git a/community_images/redis/official/docker_coverage.sh b/community_images/redis/official/docker_coverage.sh deleted file mode 100755 index ba69a1e0a7..0000000000 --- a/community_images/redis/official/docker_coverage.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -RAPIDFORT_ACCOUNT="${RAPIDFORT_ACCOUNT:-rapidfort}" -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") - -# get docker host ip -REDIS_HOST=$(jq -r '.container_details."redis-official".ip_address' < "$JSON_PARAMS") -REPO_PATH=$(jq -r '.image_tag_details."redis-official".repo_path' < "$JSON_PARAMS") -TAG=$(jq -r '.image_tag_details."redis-official".tag' < "$JSON_PARAMS") - -# run redis-client tests -docker run --rm -i --cap-add=SYS_PTRACE \ - --network="${NAMESPACE}" \ - "${REPO_PATH}:${TAG}" \ - redis-benchmark -h "${REDIS_HOST}" -p 6379 -n 1000 -c 10 diff --git a/community_images/redis/official/image.yml b/community_images/redis/official/image.yml deleted file mode 100644 index 0ba9cb0188..0000000000 --- a/community_images/redis/official/image.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: redis-official -official_name: Redis™ Official -official_website: http://redis.io -source_image_provider: The Docker Community -source_image_repo: docker.io/library/redis -source_image_repo_link: https://hub.docker.com/_/redis -source_image_readme: https://github.com/docker-library/docs/blob/master/redis/README.md -rf_docker_link: rapidfort/redis-official -image_workflow_name: redis_official -github_location: redis/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fredis -usage_instructions: | - $ docker run -it --rm -p 6379:6379 rapidfort/redis-official:latest -what_is_text: | - Redis™ is an open-source, networked, in-memory, key-value data store with optional durability. It is written in ANSI C. The development of Redis is sponsored by Redis Labs today; before that, it was sponsored by Pivotal and VMware. According to the monthly ranking by DB-Engines.com, Redis is the most popular key-value store. The name Redis means REmote DIctionary Server. -disclaimer: | - Disclaimer: Redis is a registered trademark of Redis Labs Ltd. Any rights therein are reserved to Redis Labs Ltd. Any use by RapidFort is for referential purposes only and does not indicate any sponsorship, endorsement, or affiliation between Redis Labs Ltd. -docker_links: - - "[`7.2.0`, `7.2`, `7`, `latest`, `7.2.0-bookworm`, `7.2-bookworm`, `7-bookworm`, `bookworm`](https://github.com/docker-library/redis/blob/9b538c33746872dcd1e8c809cbde9f21ac2ec3ac/7.2/Dockerfile)" - - "[`7.2.0-alpine`, `7.2-alpine`, `7-alpine`, `alpine`, `7.2.0-alpine3.18`, `7.2-alpine3.18`, `7-alpine3.18`, `alpine3.18`](https://github.com/docker-library/redis/blob/9b538c33746872dcd1e8c809cbde9f21ac2ec3ac/7.2/alpine/Dockerfile)" - - "[`7.0.12`, `7.0`, `7.0.12-bookworm`, `7.0-bookworm`](https://github.com/docker-library/redis/blob/5c8459f1bd20b7b7f92325f83898636f3c8db95f/7.0/Dockerfile)" - - "[`7.0.12-alpine`, 7.0-alpine`, `7.0.12-alpine3.18`, `7.0-alpine3.18`](https://github.com/docker-library/redis/blob/5c8459f1bd20b7b7f92325f83898636f3c8db95f/7.0/alpine/Dockerfile)" - - "[`6.2.13`, `6.2`, `6`, `6.2.13-bookworm`, `6.2-bookworm`, `6-bookworm`](https://github.com/docker-library/redis/blob/f2da8752a05b783eb805b67ad7a56a997a0fe91f/6.2/Dockerfile)" - - "[`6.2.13-alpine`, `6.2-alpine`, `6-alpine`, `6.2.13-alpine3.18`, `6.2-alpine3.18`, `6-alpine3.18`](https://github.com/docker-library/redis/blob/f2da8752a05b783eb805b67ad7a56a997a0fe91f/6.2/alpine/Dockerfile)" - - "[`6.0.20`, `6.0`, `6.0.20-bookworm`, `6.0-bookworm`](https://github.com/docker-library/redis/blob/873a7cac27da5a275d0c1e0c7d41724ae2701071/6.0/Dockerfile)" - - "[`6.0.20-alpine`, `6.0-alpine`, `6.0.20-alpine3.18`, `6.0-alpine3.18`](https://github.com/docker-library/redis/blob/873a7cac27da5a275d0c1e0c7d41724ae2701071/6.0/alpine/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - redis: - input_base_tag: "6.0.*-alpine" - output_repo: redis-official - - redis: - input_base_tag: "6.0.*-bookworm" - output_repo: redis-official - - redis: - input_base_tag: "6.2.*-alpine" - output_repo: redis-official - - redis: - input_base_tag: "6.2.*-bookworm" - output_repo: redis-official - - redis: - input_base_tag: "7.0.*-alpine" - output_repo: redis-official - - redis: - input_base_tag: "7.0.*-bookworm" - output_repo: redis-official - - redis: - input_base_tag: "7.2.*-alpine" - output_repo: redis-official - - redis: - input_base_tag: "7.2.*-bookworm" - output_repo: redis-official -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - redis-official: - repository: "REDIS_IMAGE_REPOSITORY" - tag: "REDIS_IMAGE_TAG" - - type: docker - script: docker_coverage.sh - redis-official: {} diff --git a/community_images/telegraf/bitnami/README.md b/community_images/telegraf/bitnami/README.md deleted file mode 100644 index 970f6e293f..0000000000 --- a/community_images/telegraf/bitnami/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Telegraf - -RapidFort’s container optimization process hardened this Telegraf container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Telegraf][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is Telegraf? - -> Telegraf is a server-based agent for collecting and sending all metrics and events from databases, systems, and IoT sensors. Telegraf is written in Go and compiles into a single binary with no external dependencies, and requires a very minimal memory footprint. - - -[Overview of Telegraf](https://www.influxdata.com/time-series-platform/telegraf) - -Telegraf(TM) is a trademark owned by InfluxData, which is not affiliated with, and does not endorse, this site. - - -## How do I use this hardened Telegraf image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install telegraf, just replace repository with RapidFort registry -$ helm install my-telegraf bitnami/telegraf --set image.repository=rapidfort/telegraf - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Telegraf][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Bitnami Telegraf][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/telegraf][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`1`, `1-debian-11`, `1.28.5`, `1.28.5-debian-11-r` (1/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/telegraf/1/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=telegraf&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Ftelegraf?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=telegraf&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Ftelegraf?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=telegraf&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Ftelegraf?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=telegraf&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Ftelegraf?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=telegraf&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Ftelegraf?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=telegraf&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/telegraf?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/telegraf?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/telegraf/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/telegraf/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/telegraf -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/telegraf diff --git a/community_images/telegraf/bitnami/assets/cve_reduction.webp b/community_images/telegraf/bitnami/assets/cve_reduction.webp deleted file mode 100644 index cadc685647df84184a41888377e92dd2301a8baf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1684 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/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -function test_telegraf() { - local ORG=$1 - local TOKEN=$2 - wget https://dl.influxdata.com/influxdb/releases/influxdb2-client-2.6.1-linux-amd64.tar.gz - tar xvzf influxdb2-client-2.6.1-linux-amd64.tar.gz - sudo cp influxdb2-client-2.6.1-linux-amd64/influx /usr/local/bin/ - # bring up a client influxdb instance - influx query 'from(bucket:"example_bucket") |> range(start:-1m)' --org "${ORG}" -t "${TOKEN}" -} - -function setup_telegraf() { - local NAMESPACE=$1 - # local CONTAINER_NAME=$2 - # create a sample telegraf configuration file - telegraf --sample-config --input-filter cpu:mem --output-filter influxdb_v2\ - --aggregator-filter : --processor-filter : > telegraf.conf - # start the telegraf server - # telegraf --config telegraf.conf -} - -function setup_influxdb() { - local NAMESPACE=$1 - # start the influxdb - INFLUXDB_POD_NAME="influxdb_telegraf" - docker run --name influxdb_telegraf --net "${NAMESPACE}" -p 8086:8086 \ - -p 8088:8088 -d rapidfort/influxdb - - # create the bucket and and example org - chmod +x "${SCRIPTPATH}"/influx_bucket_org_create.sh - docker cp "${SCRIPTPATH}"/influx_bucket_org_create.sh "${INFLUXDB_POD_NAME}":/tmp/influx_bucket_org_create.sh - - with_backoff docker exec -t "${INFLUXDB_POD_NAME}" bash /tmp/influx_bucket_org_create.sh -} \ No newline at end of file diff --git a/community_images/telegraf/bitnami/dc_coverage.sh b/community_images/telegraf/bitnami/dc_coverage.sh deleted file mode 100755 index 82dc182d1b..0000000000 --- a/community_images/telegraf/bitnami/dc_coverage.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" -test_telegraf example_org admintoken123 diff --git a/community_images/telegraf/bitnami/docker-compose.yml b/community_images/telegraf/bitnami/docker-compose.yml deleted file mode 100644 index 4f8291b6cf..0000000000 --- a/community_images/telegraf/bitnami/docker-compose.yml +++ /dev/null @@ -1,44 +0,0 @@ -version: '2' -services: - telegraf: - image: ${TELEGRAF_IMAGE_REPOSITORY}:${TELEGRAF_IMAGE_TAG} - cap_add: - - SYS_PTRACE - depends_on: - - init-influxdb - links: - - influxdb - # this seems to start the telegraf container correctly - command: telegraf --version - ports: - - "8092:8092/udp" - - 8094:8094 - - "8125:8125/udp" - volumes: - - ./telegraf.conf:/etc/telegraf/telegraf.conf:ro - init-influxdb: - image: rapidfort/influxdb - command: /init_influxdb.sh - volumes: - - ./init_influxdb.sh:/init_influxdb.sh - depends_on: - influxdb: - condition: service_healthy - influxdb: - image: rapidfort/influxdb - ports: - - 8086:8086 - - 8088:8088 - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8086"] - interval: 30s - timeout: 10s - retries: 5 - environment: - - INFLUXDB_ADMIN_USER_PASSWORD=bitnami123 - - INFLUXDB_ADMIN_USER_TOKEN=admintoken123 - - INFLUXDB_USER=my_user - - INFLUXDB_USER_PASSWORD=my_password - - INFLUXDB_DB=my_database - - INFLUXDB_USER_BUCKET=my_bucket - - INFLUXDB_ORG=my_org \ No newline at end of file diff --git a/community_images/telegraf/bitnami/docker.env b/community_images/telegraf/bitnami/docker.env deleted file mode 100644 index 6b520ad4b3..0000000000 --- a/community_images/telegraf/bitnami/docker.env +++ /dev/null @@ -1,5 +0,0 @@ -INFLUXDB_ADMIN_USER_PASSWORD="bitnami123" -INFLUXDB_ADMIN_USER_TOKEN="admintoken123" -INFLUXDB_USER="my_user" -INFLUXDB_USER_PASSWORD="my_password" -INFLUXDB_DB="my_database" diff --git a/community_images/telegraf/bitnami/docker_coverage.sh b/community_images/telegraf/bitnami/docker_coverage.sh deleted file mode 100755 index fcafaf9f02..0000000000 --- a/community_images/telegraf/bitnami/docker_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" \ No newline at end of file diff --git a/community_images/telegraf/bitnami/image.yml b/community_images/telegraf/bitnami/image.yml deleted file mode 100644 index 1465625d79..0000000000 --- a/community_images/telegraf/bitnami/image.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: telegraf -official_name: Telegraf -official_website: https://www.influxdata.com/time-series-platform/telegraf -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/telegraf -source_image_repo_link: https://hub.docker.com/r/bitnami/telegraf -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/telegraf/README.md -rf_docker_link: rapidfort/telegraf -image_workflow_name: telegraf_bitnami -github_location: telegraf/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Ftelegraf -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install telegraf, just replace repository with RapidFort registry - $ helm install my-telegraf bitnami/telegraf --set image.repository=rapidfort/telegraf -what_is_text: | - Telegraf is a server-based agent for collecting and sending all metrics and events from databases, systems, and IoT sensors. Telegraf is written in Go and compiles into a single binary with no external dependencies, and requires a very minimal memory footprint. -disclaimer: | - Telegraf(TM) is a trademark owned by InfluxData, which is not affiliated with, and does not endorse, this site. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - telegraf: - input_base_tag: "1.28.2-debian-11-r" -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - telegraf: - repository: "TELEGRAF_IMAGE_REPOSITORY" - tag: "TELEGRAF_IMAGE_TAG" diff --git a/community_images/telegraf/bitnami/init_influxdb.sh b/community_images/telegraf/bitnami/init_influxdb.sh deleted file mode 100755 index d6cfaa836d..0000000000 --- a/community_images/telegraf/bitnami/init_influxdb.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -set -e -influx org create --name example_org -t admintoken123 --host 'http://influxdb:8086' -influx bucket create -n example_bucket -t admintoken123 --org example_org -r 7d --host 'http://influxdb:8086' \ No newline at end of file diff --git a/community_images/telegraf/bitnami/k8s_coverage.sh b/community_images/telegraf/bitnami/k8s_coverage.sh deleted file mode 100755 index 001d4f89ed..0000000000 --- a/community_images/telegraf/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") -REPOSITORY=influxdb - -# get pod name -POD_NAME=$(kubectl -n "${NAMESPACE}" get pods -l app.kubernetes.io/name="$REPOSITORY" -o jsonpath="{.items[0].metadata.name}") - -# get influxdb token -INFLUXDB_TOKEN=$(kubectl get secret --namespace "${NAMESPACE}" "${RELEASE_NAME}" -o jsonpath="{.data.admin-user-token}" | base64 --decode) - -# copy tests into container -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/tests/example.csv "${POD_NAME}":/tmp/example.csv -kubectl -n "${NAMESPACE}" cp "${SCRIPTPATH}"/tests/query.flux "${POD_NAME}":/tmp/query.flux - -# write data to db -kubectl -n "${NAMESPACE}" exec -it "${POD_NAME}" -- /bin/bash -c "influx write -t $INFLUXDB_TOKEN -b primary --org-id primary -f /tmp/example.csv" - -# run query on db -kubectl -n "${NAMESPACE}" exec -i "${POD_NAME}" -- influx query -t "$INFLUXDB_TOKEN" --org primary -f /tmp/query.flux diff --git a/community_images/telegraf/bitnami/overrides.yml b/community_images/telegraf/bitnami/overrides.yml deleted file mode 100644 index 71a692bfe6..0000000000 --- a/community_images/telegraf/bitnami/overrides.yml +++ /dev/null @@ -1,28 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -telegraf: - containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] - extraEnvVars: - - name: "RF_VERBOSE" - value: "0" - livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 - readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -auth: - admin: - username: admin - password: bitnami123 - token: admintoken123 -auth: - user: - username: my_user - password: my_password diff --git a/community_images/telegraf/bitnami/telegraf.conf b/community_images/telegraf/bitnami/telegraf.conf deleted file mode 100644 index 0a429ac638..0000000000 --- a/community_images/telegraf/bitnami/telegraf.conf +++ /dev/null @@ -1,1127 +0,0 @@ -# Telegraf Configuration -# -# Telegraf is entirely plugin driven. All metrics are gathered from the -# declared inputs, and sent to the declared outputs. -# -# Plugins must be declared in here to be active. -# To deactivate a plugin, comment out the name and any variables. -# -# Use 'telegraf -config telegraf.conf -test' to see what metrics a config -# file would generate. -# -# Environment variables can be used anywhere in this config file, simply surround -# them with ${}. For strings the variable must be within quotes (ie, "${STR_VAR}"), -# for numbers and booleans they should be plain (ie, ${INT_VAR}, ${BOOL_VAR}) - - -# Global tags can be specified here in key="value" format. -[global_tags] - # dc = "us-east-1" # will tag all metrics with dc=us-east-1 - # rack = "1a" - ## Environment variables can be used as tags, and throughout the config file - # user = "$USER" - -# Configuration for telegraf agent -[agent] - ## Default data collection interval for all inputs - interval = "10s" - ## Rounds collection interval to 'interval' - ## ie, if interval="10s" then always collect on :00, :10, :20, etc. - round_interval = true - - ## Telegraf will send metrics to outputs in batches of at most - ## metric_batch_size metrics. - ## This controls the size of writes that Telegraf sends to output plugins. - metric_batch_size = 1000 - - ## Maximum number of unwritten metrics per output. Increasing this value - ## allows for longer periods of output downtime without dropping metrics at the - ## cost of higher maximum memory usage. - metric_buffer_limit = 10000 - - ## Collection jitter is used to jitter the collection by a random amount. - ## Each plugin will sleep for a random time within jitter before collecting. - ## This can be used to avoid many plugins querying things like sysfs at the - ## same time, which can have a measurable effect on the system. - collection_jitter = "0s" - - ## Collection offset is used to shift the collection by the given amount. - ## This can be be used to avoid many plugins querying constraint devices - ## at the same time by manually scheduling them in time. - # collection_offset = "0s" - - ## Default flushing interval for all outputs. Maximum flush_interval will be - ## flush_interval + flush_jitter - flush_interval = "10s" - ## Jitter the flush interval by a random amount. This is primarily to avoid - ## large write spikes for users running a large number of telegraf instances. - ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s - flush_jitter = "0s" - - ## Collected metrics are rounded to the precision specified. Precision is - ## specified as an interval with an integer + unit (e.g. 0s, 10ms, 2us, 4s). - ## Valid time units are "ns", "us" (or "µs"), "ms", "s". - ## - ## By default or when set to "0s", precision will be set to the same - ## timestamp order as the collection interval, with the maximum being 1s: - ## ie, when interval = "10s", precision will be "1s" - ## when interval = "250ms", precision will be "1ms" - ## - ## Precision will NOT be used for service inputs. It is up to each individual - ## service input to set the timestamp at the appropriate precision. - precision = "0s" - - ## Log at debug level. - # debug = false - ## Log only error level messages. - # quiet = false - - ## Log target controls the destination for logs and can be one of "file", - ## "stderr" or, on Windows, "eventlog". When set to "file", the output file - ## is determined by the "logfile" setting. - # logtarget = "file" - - ## Name of the file to be logged to when using the "file" logtarget. If set to - ## the empty string then logs are written to stderr. - # logfile = "" - - ## The logfile will be rotated after the time interval specified. When set - ## to 0 no time based rotation is performed. Logs are rotated only when - ## written to, if there is no log activity rotation may be delayed. - # logfile_rotation_interval = "0h" - - ## The logfile will be rotated when it becomes larger than the specified - ## size. When set to 0 no size based rotation is performed. - # logfile_rotation_max_size = "0MB" - - ## Maximum number of rotated archives to keep, any older logs are deleted. - ## If set to -1, no archives are removed. - # logfile_rotation_max_archives = 5 - - ## Pick a timezone to use when logging or type 'local' for local time. - ## Example: America/Chicago - # log_with_timezone = "" - - ## Override default hostname, if empty use os.Hostname() - hostname = "" - ## If set to true, do no set the "host" tag in the telegraf agent. - omit_hostname = false - - ## Method of translating SNMP objects. Can be "netsnmp" (deprecated) which - ## translates by calling external programs snmptranslate and snmptable, - ## or "gosmi" which translates using the built-in gosmi library. - # snmp_translator = "netsnmp" - -############################################################################### -# SECRETSTORE PLUGINS # -############################################################################### - - -# # File based Javascript Object Signing and Encryption based secret-store -# [[secretstores.jose]] -# ## Unique identifier for the secret-store. -# ## This id can later be used in plugins to reference the secrets -# ## in this secret-store via @{:} (mandatory) -# id = "secretstore" -# -# ## Directory for storing the secrets -# # path = "secrets" -# -# ## Password to access the secrets. -# ## If no password is specified here, Telegraf will prompt for it at startup time. -# # password = "" - - -# # Operating System native secret-store -# [[secretstores.os]] -# ## Unique identifier for the secret-store. -# ## This id can later be used in plugins to reference the secrets -# ## in this secret-store via @{:} (mandatory) -# id = "secretstore" -# -# ## MacOS' Keychain name and service name -# # keyring = "telegraf" -# # collection = "" -# -# ## MacOS' Keychain password -# ## If no password is specified here, Telegraf will prompt for it at startup time. -# # password = "" -# -# ## Allow dynamic secrets that are updated during runtime of telegraf -# # dynamic = false - - -############################################################################### -# SECRETSTORE PLUGINS # -############################################################################### - - -# # File based Javascript Object Signing and Encryption based secret-store -# [[secretstores.jose]] -# ## Unique identifier for the secret-store. -# ## This id can later be used in plugins to reference the secrets -# ## in this secret-store via @{:} (mandatory) -# id = "secretstore" -# -# ## Directory for storing the secrets -# # path = "secrets" -# -# ## Password to access the secrets. -# ## If no password is specified here, Telegraf will prompt for it at startup time. -# # password = "" - - -# # Operating System native secret-store -# [[secretstores.os]] -# ## Unique identifier for the secret-store. -# ## This id can later be used in plugins to reference the secrets -# ## in this secret-store via @{:} (mandatory) -# id = "secretstore" -# -# ## MacOS' Keychain name and service name -# # keyring = "telegraf" -# # collection = "" -# -# ## MacOS' Keychain password -# ## If no password is specified here, Telegraf will prompt for it at startup time. -# # password = "" -# -# ## Allow dynamic secrets that are updated during runtime of telegraf -# # dynamic = false - - -# Configuration for sending metrics to InfluxDB 2.0 -[[outputs.influxdb_v2]] - ## The URLs of the InfluxDB cluster nodes. - ## - ## Multiple URLs can be specified for a single cluster, only ONE of the - ## urls will be written to each interval. - ## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"] - urls = ["http://influxdb:8086"] - - ## Token for authentication. - token = "admintoken123" - - ## Organization is the name of the organization you wish to write to. - organization = "example_org" - - ## Destination bucket to write into. - bucket = "example_bucket" - - ## The value of this tag will be used to determine the bucket. If this - ## tag is not set the 'bucket' option is used as the default. - # bucket_tag = "" - - ## If true, the bucket tag will not be added to the metric. - # exclude_bucket_tag = false - - ## Timeout for HTTP messages. - # timeout = "5s" - - ## Additional HTTP headers - # http_headers = {"X-Special-Header" = "Special-Value"} - - ## HTTP Proxy override, if unset values the standard proxy environment - ## variables are consulted to determine which proxy, if any, should be used. - # http_proxy = "http://corporate.proxy:3128" - - ## HTTP User-Agent - # user_agent = "telegraf" - - ## Content-Encoding for write request body, can be set to "gzip" to - ## compress body or "identity" to apply no encoding. - # content_encoding = "gzip" - - ## Enable or disable uint support for writing uints influxdb 2.0. - # influx_uint_support = false - - ## Optional TLS Config for use on HTTP connections. - # tls_ca = "/etc/telegraf/ca.pem" - # tls_cert = "/etc/telegraf/cert.pem" - # tls_key = "/etc/telegraf/key.pem" - ## Use TLS but skip chain & host verification - # insecure_skip_verify = false - - -############################################################################### -# PROCESSOR PLUGINS # -############################################################################### - - -# # Attach AWS EC2 metadata to metrics -# [[processors.aws_ec2]] -# ## Instance identity document tags to attach to metrics. -# ## For more information see: -# ## https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html -# ## -# ## Available tags: -# ## * accountId -# ## * architecture -# ## * availabilityZone -# ## * billingProducts -# ## * imageId -# ## * instanceId -# ## * instanceType -# ## * kernelId -# ## * pendingTime -# ## * privateIp -# ## * ramdiskId -# ## * region -# ## * version -# imds_tags = [] -# -# ## EC2 instance tags retrieved with DescribeTags action. -# ## In case tag is empty upon retrieval it's omitted when tagging metrics. -# ## Note that in order for this to work, role attached to EC2 instance or AWS -# ## credentials available from the environment must have a policy attached, that -# ## allows ec2:DescribeTags. -# ## -# ## For more information see: -# ## https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeTags.html -# ec2_tags = [] -# -# ## Timeout for http requests made by against aws ec2 metadata endpoint. -# timeout = "10s" -# -# ## ordered controls whether or not the metrics need to stay in the same order -# ## this plugin received them in. If false, this plugin will change the order -# ## with requests hitting cached results moving through immediately and not -# ## waiting on slower lookups. This may cause issues for you if you are -# ## depending on the order of metrics staying the same. If so, set this to true. -# ## Keeping the metrics ordered may be slightly slower. -# ordered = false -# -# ## max_parallel_calls is the maximum number of AWS API calls to be in flight -# ## at the same time. -# ## It's probably best to keep this number fairly low. -# max_parallel_calls = 10 - - -# # Apply metric modifications using override semantics. -# [[processors.clone]] -# ## All modifications on inputs and aggregators can be overridden: -# # name_override = "new_name" -# # name_prefix = "new_name_prefix" -# # name_suffix = "new_name_suffix" -# -# ## Tags to be added (all values must be strings) -# # [processors.clone.tags] -# # additional_tag = "tag_value" - - -# # Convert values to another metric value type -# [[processors.converter]] -# ## Tags to convert -# ## -# ## The table key determines the target type, and the array of key-values -# ## select the keys to convert. The array may contain globs. -# ## = [...] -# [processors.converter.tags] -# measurement = [] -# string = [] -# integer = [] -# unsigned = [] -# boolean = [] -# float = [] -# -# ## Fields to convert -# ## -# ## The table key determines the target type, and the array of key-values -# ## select the keys to convert. The array may contain globs. -# ## = [...] -# [processors.converter.fields] -# measurement = [] -# tag = [] -# string = [] -# integer = [] -# unsigned = [] -# boolean = [] -# float = [] - - -# # Dates measurements, tags, and fields that pass through this filter. -# [[processors.date]] -# ## New tag to create -# tag_key = "month" -# -# ## New field to create (cannot set both field_key and tag_key) -# # field_key = "month" -# -# ## Date format string, must be a representation of the Go "reference time" -# ## which is "Mon Jan 2 15:04:05 -0700 MST 2006". -# date_format = "Jan" -# -# ## If destination is a field, date format can also be one of -# ## "unix", "unix_ms", "unix_us", or "unix_ns", which will insert an integer field. -# # date_format = "unix" -# -# ## Offset duration added to the date string when writing the new tag. -# # date_offset = "0s" -# -# ## Timezone to use when creating the tag or field using a reference time -# ## string. This can be set to one of "UTC", "Local", or to a location name -# ## in the IANA Time Zone database. -# ## example: timezone = "America/Los_Angeles" -# # timezone = "UTC" - - -# # Filter metrics with repeating field values -# [[processors.dedup]] -# ## Maximum time to suppress output -# dedup_interval = "600s" - - -# ## Set default fields on your metric(s) when they are nil or empty -# [[processors.defaults]] -# ## Ensures a set of fields always exists on your metric(s) with their -# ## respective default value. -# ## For any given field pair (key = default), if it's not set, a field -# ## is set on the metric with the specified default. -# ## -# ## A field is considered not set if it is nil on the incoming metric; -# ## or it is not nil but its value is an empty string or is a string -# ## of one or more spaces. -# ## = -# [processors.defaults.fields] -# field_1 = "bar" -# time_idle = 0 -# is_error = true - - -# # Map enum values according to given table. -# [[processors.enum]] -# [[processors.enum.mapping]] -# ## Name of the field to map. Globs accepted. -# field = "status" -# -# ## Name of the tag to map. Globs accepted. -# # tag = "status" -# -# ## Destination tag or field to be used for the mapped value. By default the -# ## source tag or field is used, overwriting the original value. -# dest = "status_code" -# -# ## Default value to be used for all values not contained in the mapping -# ## table. When unset and no match is found, the original field will remain -# ## unmodified and the destination tag or field will not be created. -# # default = 0 -# -# ## Table of mappings -# [processors.enum.mapping.value_mappings] -# green = 1 -# amber = 2 -# red = 3 - - -# # Run executable as long-running processor plugin -# [[processors.execd]] -# ## One program to run as daemon. -# ## NOTE: process and each argument should each be their own string -# ## eg: command = ["/path/to/your_program", "arg1", "arg2"] -# command = ["cat"] -# -# ## Environment variables -# ## Array of "key=value" pairs to pass as environment variables -# ## e.g. "KEY=value", "USERNAME=John Doe", -# ## "LD_LIBRARY_PATH=/opt/custom/lib64:/usr/local/libs" -# # environment = [] -# -# ## Delay before the process is restarted after an unexpected termination -# # restart_delay = "10s" - - -# # Performs file path manipulations on tags and fields -# [[processors.filepath]] -# ## Treat the tag value as a path and convert it to its last element, storing the result in a new tag -# # [[processors.filepath.basename]] -# # tag = "path" -# # dest = "basepath" -# -# ## Treat the field value as a path and keep all but the last element of path, typically the path's directory -# # [[processors.filepath.dirname]] -# # field = "path" -# -# ## Treat the tag value as a path, converting it to its the last element without its suffix -# # [[processors.filepath.stem]] -# # tag = "path" -# -# ## Treat the tag value as a path, converting it to the shortest path name equivalent -# ## to path by purely lexical processing -# # [[processors.filepath.clean]] -# # tag = "path" -# -# ## Treat the tag value as a path, converting it to a relative path that is lexically -# ## equivalent to the source path when joined to 'base_path' -# # [[processors.filepath.rel]] -# # tag = "path" -# # base_path = "/var/log" -# -# ## Treat the tag value as a path, replacing each separator character in path with a '/' character. Has only -# ## effect on Windows -# # [[processors.filepath.toslash]] -# # tag = "path" - - -# # Add a tag of the network interface name looked up over SNMP by interface number -# [[processors.ifname]] -# ## Name of tag holding the interface number -# # tag = "ifIndex" -# -# ## Name of output tag where service name will be added -# # dest = "ifName" -# -# ## Name of tag of the SNMP agent to request the interface name from -# # agent = "agent" -# -# ## Timeout for each request. -# # timeout = "5s" -# -# ## SNMP version; can be 1, 2, or 3. -# # version = 2 -# -# ## SNMP community string. -# # community = "public" -# -# ## Number of retries to attempt. -# # retries = 3 -# -# ## The GETBULK max-repetitions parameter. -# # max_repetitions = 10 -# -# ## SNMPv3 authentication and encryption options. -# ## -# ## Security Name. -# # sec_name = "myuser" -# ## Authentication protocol; one of "MD5", "SHA", or "". -# # auth_protocol = "MD5" -# ## Authentication password. -# # auth_password = "pass" -# ## Security Level; one of "noAuthNoPriv", "authNoPriv", or "authPriv". -# # sec_level = "authNoPriv" -# ## Context Name. -# # context_name = "" -# ## Privacy protocol used for encrypted messages; one of "DES", "AES" or "". -# # priv_protocol = "" -# ## Privacy password used for encrypted messages. -# # priv_password = "" -# -# ## max_parallel_lookups is the maximum number of SNMP requests to -# ## make at the same time. -# # max_parallel_lookups = 100 -# -# ## ordered controls whether or not the metrics need to stay in the -# ## same order this plugin received them in. If false, this plugin -# ## may change the order when data is cached. If you need metrics to -# ## stay in order set this to true. keeping the metrics ordered may -# ## be slightly slower -# # ordered = false -# -# ## cache_ttl is the amount of time interface names are cached for a -# ## given agent. After this period elapses if names are needed they -# ## will be retrieved again. -# # cache_ttl = "8h" - - -# # Adds noise to numerical fields -# [[processors.noise]] -# ## Specified the type of the random distribution. -# ## Can be "laplacian", "gaussian" or "uniform". -# # type = "laplacian -# -# ## Center of the distribution. -# ## Only used for Laplacian and Gaussian distributions. -# # mu = 0.0 -# -# ## Scale parameter for the Laplacian or Gaussian distribution -# # scale = 1.0 -# -# ## Upper and lower bound of the Uniform distribution -# # min = -1.0 -# # max = 1.0 -# -# ## Apply the noise only to numeric fields matching the filter criteria below. -# ## Excludes takes precedence over includes. -# # include_fields = [] -# # exclude_fields = [] - - -# # Apply metric modifications using override semantics. -# [[processors.override]] -# ## All modifications on inputs and aggregators can be overridden: -# # name_override = "new_name" -# # name_prefix = "new_name_prefix" -# # name_suffix = "new_name_suffix" -# -# ## Tags to be added (all values must be strings) -# # [processors.override.tags] -# # additional_tag = "tag_value" - - -# # Parse a value in a specified field(s)/tag(s) and add the result in a new metric -# [[processors.parser]] -# ## The name of the fields whose value will be parsed. -# parse_fields = ["message"] -# -# ## The name of the tags whose value will be parsed. -# # parse_tags = [] -# -# ## If true, incoming metrics are not emitted. -# # drop_original = false -# -# ## If set to override, emitted metrics will be merged by overriding the -# ## original metric using the newly parsed metrics. -# ## Only has effect when drop_original is set to false. -# merge = "override" -# -# ## The dataformat to be read from files -# ## Each data format has its own unique set of configuration options, read -# ## more about them here: -# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md -# data_format = "influx" - - -# # Rotate a single valued metric into a multi field metric -# [[processors.pivot]] -# ## Tag to use for naming the new field. -# tag_key = "name" -# ## Field to use as the value of the new field. -# value_key = "value" - - -# # Given a tag/field of a TCP or UDP port number, add a tag/field of the service name looked up in the system services file -# [[processors.port_name]] -# ## Name of tag holding the port number -# # tag = "port" -# ## Or name of the field holding the port number -# # field = "port" -# -# ## Name of output tag or field (depending on the source) where service name will be added -# # dest = "service" -# -# ## Default tcp or udp -# # default_protocol = "tcp" -# -# ## Tag containing the protocol (tcp or udp, case-insensitive) -# # protocol_tag = "proto" -# -# ## Field containing the protocol (tcp or udp, case-insensitive) -# # protocol_field = "proto" - - -# # Print all metrics that pass through this filter. -# [[processors.printer]] - - -# # Transforms tag and field values as well as measurement, tag and field names with regex pattern -# [[processors.regex]] -# namepass = ["nginx_requests"] -# -# # Tag and field conversions defined in a separate sub-tables -# [[processors.regex.tags]] -# ## Tag to change, "*" will change every tag -# key = "resp_code" -# ## Regular expression to match on a tag value -# pattern = "^(\\d)\\d\\d$" -# ## Matches of the pattern will be replaced with this string. Use ${1} -# ## notation to use the text of the first submatch. -# replacement = "${1}xx" -# -# [[processors.regex.fields]] -# ## Field to change -# key = "request" -# ## All the power of the Go regular expressions available here -# ## For example, named subgroups -# pattern = "^/api(?P/[\\w/]+)\\S*" -# replacement = "${method}" -# ## If result_key is present, a new field will be created -# ## instead of changing existing field -# result_key = "method" -# -# # Multiple conversions may be applied for one field sequentially -# # Let's extract one more value -# [[processors.regex.fields]] -# key = "request" -# pattern = ".*category=(\\w+).*" -# replacement = "${1}" -# result_key = "search_category" -# -# # Rename metric fields -# [[processors.regex.field_rename]] -# ## Regular expression to match on a field name -# pattern = "^search_(\\w+)d$" -# ## Matches of the pattern will be replaced with this string. Use ${1} -# ## notation to use the text of the first submatch. -# replacement = "${1}" -# ## If the new field name already exists, you can either "overwrite" the -# ## existing one with the value of the renamed field OR you can "keep" -# ## both the existing and source field. -# # result_key = "keep" -# -# # Rename metric tags -# # [[processors.regex.tag_rename]] -# # ## Regular expression to match on a tag name -# # pattern = "^search_(\\w+)d$" -# # ## Matches of the pattern will be replaced with this string. Use ${1} -# # ## notation to use the text of the first submatch. -# # replacement = "${1}" -# # ## If the new tag name already exists, you can either "overwrite" the -# # ## existing one with the value of the renamed tag OR you can "keep" -# # ## both the existing and source tag. -# # # result_key = "keep" -# -# # Rename metrics -# # [[processors.regex.metric_rename]] -# # ## Regular expression to match on an metric name -# # pattern = "^search_(\\w+)d$" -# # ## Matches of the pattern will be replaced with this string. Use ${1} -# # ## notation to use the text of the first submatch. -# # replacement = "${1}" - - -# # Rename measurements, tags, and fields that pass through this filter. -# [[processors.rename]] -# ## Specify one sub-table per rename operation. -# [[processors.rename.replace]] -# measurement = "network_interface_throughput" -# dest = "throughput" -# -# [[processors.rename.replace]] -# tag = "hostname" -# dest = "host" -# -# [[processors.rename.replace]] -# field = "lower" -# dest = "min" -# -# [[processors.rename.replace]] -# field = "upper" -# dest = "max" - - -# # ReverseDNS does a reverse lookup on IP addresses to retrieve the DNS name -# [[processors.reverse_dns]] -# ## For optimal performance, you may want to limit which metrics are passed to this -# ## processor. eg: -# ## namepass = ["my_metric_*"] -# -# ## cache_ttl is how long the dns entries should stay cached for. -# ## generally longer is better, but if you expect a large number of diverse lookups -# ## you'll want to consider memory use. -# cache_ttl = "24h" -# -# ## lookup_timeout is how long should you wait for a single dns request to repsond. -# ## this is also the maximum acceptable latency for a metric travelling through -# ## the reverse_dns processor. After lookup_timeout is exceeded, a metric will -# ## be passed on unaltered. -# ## multiple simultaneous resolution requests for the same IP will only make a -# ## single rDNS request, and they will all wait for the answer for this long. -# lookup_timeout = "3s" -# -# ## max_parallel_lookups is the maximum number of dns requests to be in flight -# ## at the same time. Requesting hitting cached values do not count against this -# ## total, and neither do mulptiple requests for the same IP. -# ## It's probably best to keep this number fairly low. -# max_parallel_lookups = 10 -# -# ## ordered controls whether or not the metrics need to stay in the same order -# ## this plugin received them in. If false, this plugin will change the order -# ## with requests hitting cached results moving through immediately and not -# ## waiting on slower lookups. This may cause issues for you if you are -# ## depending on the order of metrics staying the same. If so, set this to true. -# ## keeping the metrics ordered may be slightly slower. -# ordered = false -# -# [[processors.reverse_dns.lookup]] -# ## get the ip from the field "source_ip", and put the result in the field "source_name" -# field = "source_ip" -# dest = "source_name" -# -# [[processors.reverse_dns.lookup]] -# ## get the ip from the tag "destination_ip", and put the result in the tag -# ## "destination_name". -# tag = "destination_ip" -# dest = "destination_name" -# -# ## If you would prefer destination_name to be a field instead, you can use a -# ## processors.converter after this one, specifying the order attribute. - - -# # Add the S2 Cell ID as a tag based on latitude and longitude fields -# [[processors.s2geo]] -# ## The name of the lat and lon fields containing WGS-84 latitude and -# ## longitude in decimal degrees. -# # lat_field = "lat" -# # lon_field = "lon" -# -# ## New tag to create -# # tag_key = "s2_cell_id" -# -# ## Cell level (see https://s2geometry.io/resources/s2cell_statistics.html) -# # cell_level = 9 - - -# # Process metrics using a Starlark script -# [[processors.starlark]] -# ## The Starlark source can be set as a string in this configuration file, or -# ## by referencing a file containing the script. Only one source or script -# ## should be set at once. -# -# ## Source of the Starlark script. -# source = ''' -# def apply(metric): -# return metric -# ''' -# -# ## File containing a Starlark script. -# # script = "/usr/local/bin/myscript.star" -# -# ## The constants of the Starlark script. -# # [processors.starlark.constants] -# # max_size = 10 -# # threshold = 0.75 -# # default_name = "Julia" -# # debug_mode = true - - -# # Perform string processing on tags, fields, and measurements -# [[processors.strings]] -# ## Convert a field value to lowercase and store in a new field -# # [[processors.strings.lowercase]] -# # field = "uri_stem" -# # dest = "uri_stem_normalised" -# -# ## Convert a tag value to uppercase -# # [[processors.strings.uppercase]] -# # tag = "method" -# -# ## Convert a field value to titlecase -# # [[processors.strings.titlecase]] -# # field = "status" -# -# ## Trim leading and trailing whitespace using the default cutset -# # [[processors.strings.trim]] -# # field = "message" -# -# ## Trim leading characters in cutset -# # [[processors.strings.trim_left]] -# # field = "message" -# # cutset = "\t" -# -# ## Trim trailing characters in cutset -# # [[processors.strings.trim_right]] -# # field = "message" -# # cutset = "\r\n" -# -# ## Trim the given prefix from the field -# # [[processors.strings.trim_prefix]] -# # field = "my_value" -# # prefix = "my_" -# -# ## Trim the given suffix from the field -# # [[processors.strings.trim_suffix]] -# # field = "read_count" -# # suffix = "_count" -# -# ## Replace all non-overlapping instances of old with new -# # [[processors.strings.replace]] -# # measurement = "*" -# # old = ":" -# # new = "_" -# -# ## Trims strings based on width -# # [[processors.strings.left]] -# # field = "message" -# # width = 10 -# -# ## Decode a base64 encoded utf-8 string -# # [[processors.strings.base64decode]] -# # field = "message" -# -# ## Sanitize a string to ensure it is a valid utf-8 string -# ## Each run of invalid UTF-8 byte sequences is replaced by the replacement string, which may be empty -# # [[processors.strings.valid_utf8]] -# # field = "message" -# # replacement = "" - - -# # Restricts the number of tags that can pass through this filter and chooses which tags to preserve when over the limit. -# [[processors.tag_limit]] -# ## Maximum number of tags to preserve -# limit = 3 -# -# ## List of tags to preferentially preserve -# keep = ["environment", "region"] - - -# # Uses a Go template to create a new tag -# [[processors.template]] -# ## Tag to set with the output of the template. -# tag = "topic" -# -# ## Go template used to create the tag value. In order to ease TOML -# ## escaping requirements, you may wish to use single quotes around the -# ## template string. -# template = '{{ .Tag "hostname" }}.{{ .Tag "level" }}' - - -# # Print all metrics that pass through this filter. -# [[processors.topk]] -# ## How many seconds between aggregations -# # period = 10 -# -# ## How many top buckets to return per field -# ## Every field specified to aggregate over will return k number of results. -# ## For example, 1 field with k of 10 will return 10 buckets. While 2 fields -# ## with k of 3 will return 6 buckets. -# # k = 10 -# -# ## Over which tags should the aggregation be done. Globs can be specified, in -# ## which case any tag matching the glob will aggregated over. If set to an -# ## empty list is no aggregation over tags is done -# # group_by = ['*'] -# -# ## The field(s) to aggregate -# ## Each field defined is used to create an independent aggregation. Each -# ## aggregation will return k buckets. If a metric does not have a defined -# ## field the metric will be dropped from the aggregation. Considering using -# ## the defaults processor plugin to ensure fields are set if required. -# # fields = ["value"] -# -# ## What aggregation function to use. Options: sum, mean, min, max -# # aggregation = "mean" -# -# ## Instead of the top k largest metrics, return the bottom k lowest metrics -# # bottomk = false -# -# ## The plugin assigns each metric a GroupBy tag generated from its name and -# ## tags. If this setting is different than "" the plugin will add a -# ## tag (which name will be the value of this setting) to each metric with -# ## the value of the calculated GroupBy tag. Useful for debugging -# # add_groupby_tag = "" -# -# ## These settings provide a way to know the position of each metric in -# ## the top k. The 'add_rank_field' setting allows to specify for which -# ## fields the position is required. If the list is non empty, then a field -# ## will be added to each and every metric for each string present in this -# ## setting. This field will contain the ranking of the group that -# ## the metric belonged to when aggregated over that field. -# ## The name of the field will be set to the name of the aggregation field, -# ## suffixed with the string '_topk_rank' -# # add_rank_fields = [] -# -# ## These settings provide a way to know what values the plugin is generating -# ## when aggregating metrics. The 'add_aggregate_field' setting allows to -# ## specify for which fields the final aggregation value is required. If the -# ## list is non empty, then a field will be added to each every metric for -# ## each field present in this setting. This field will contain -# ## the computed aggregation for the group that the metric belonged to when -# ## aggregated over that field. -# ## The name of the field will be set to the name of the aggregation field, -# ## suffixed with the string '_topk_aggregate' -# # add_aggregate_fields = [] - - -# # Rotate multi field metric into several single field metrics -# [[processors.unpivot]] -# ## Tag to use for the name. -# tag_key = "name" -# ## Field to use for the name of the value. -# value_key = "value" - - -############################################################################### -# AGGREGATOR PLUGINS # -############################################################################### - - -# # Keep the aggregate basicstats of each metric passing through. -# [[aggregators.basicstats]] -# ## The period on which to flush & clear the aggregator. -# period = "30s" -# -# ## If true, the original metric will be dropped by the -# ## aggregator and will not get sent to the output plugins. -# drop_original = false -# -# ## Configures which basic stats to push as fields -# # stats = ["count","diff","rate","min","max","mean","non_negative_diff","non_negative_rate","stdev","s2","sum","interval"] - - -# # Calculates a derivative for every field. -# [[aggregators.derivative]] -# ## The period in which to flush the aggregator. -# period = "30s" -# ## -# ## Suffix to append for the resulting derivative field. -# # suffix = "_rate" -# ## -# ## Field to use for the quotient when computing the derivative. -# ## When using a field as the derivation parameter the name of that field will -# ## be used for the resulting derivative, e.g. *fieldname_by_parameter*. -# ## By default the timestamps of the metrics are used and the suffix is omitted. -# # variable = "" -# ## -# ## Maximum number of roll-overs in case only one measurement is found during a period. -# # max_roll_over = 10 - - -# # Report the final metric of a series -# [[aggregators.final]] -# ## The period on which to flush & clear the aggregator. -# period = "30s" -# ## If true, the original metric will be dropped by the -# ## aggregator and will not get sent to the output plugins. -# drop_original = false -# -# ## The time that a series is not updated until considering it final. -# series_timeout = "5m" - - -# # Configuration for aggregate histogram metrics -# [[aggregators.histogram]] -# ## The period in which to flush the aggregator. -# period = "30s" -# -# ## If true, the original metric will be dropped by the -# ## aggregator and will not get sent to the output plugins. -# drop_original = false -# -# ## If true, the histogram will be reset on flush instead -# ## of accumulating the results. -# reset = false -# -# ## Whether bucket values should be accumulated. If set to false, "gt" tag will be added. -# ## Defaults to true. -# cumulative = true -# -# ## Expiration interval for each histogram. The histogram will be expired if -# ## there are no changes in any buckets for this time interval. 0 == no expiration. -# # expiration_interval = "0m" -# -# ## If true, aggregated histogram are pushed to output only if it was updated since -# ## previous push. Defaults to false. -# # push_only_on_update = false -# -# ## Example config that aggregates all fields of the metric. -# # [[aggregators.histogram.config]] -# # ## Right borders of buckets (with +Inf implicitly added). -# # buckets = [0.0, 15.6, 34.5, 49.1, 71.5, 80.5, 94.5, 100.0] -# # ## The name of metric. -# # measurement_name = "cpu" -# -# ## Example config that aggregates only specific fields of the metric. -# # [[aggregators.histogram.config]] -# # ## Right borders of buckets (with +Inf implicitly added). -# # buckets = [0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0] -# # ## The name of metric. -# # measurement_name = "diskio" -# # ## The concrete fields of metric -# # fields = ["io_time", "read_time", "write_time"] - - -# # Merge metrics into multifield metrics by series key -# [[aggregators.merge]] -# ## If true, the original metric will be dropped by the -# ## aggregator and will not get sent to the output plugins. -# drop_original = true - - -# # Keep the aggregate min/max of each metric passing through. -# [[aggregators.minmax]] -# ## General Aggregator Arguments: -# ## The period on which to flush & clear the aggregator. -# period = "30s" -# ## If true, the original metric will be dropped by the -# ## aggregator and will not get sent to the output plugins. -# drop_original = false - - -# # Keep the aggregate quantiles of each metric passing through. -# [[aggregators.quantile]] -# ## General Aggregator Arguments: -# ## The period on which to flush & clear the aggregator. -# period = "30s" -# -# ## If true, the original metric will be dropped by the -# ## aggregator and will not get sent to the output plugins. -# drop_original = false -# -# ## Quantiles to output in the range [0,1] -# # quantiles = [0.25, 0.5, 0.75] -# -# ## Type of aggregation algorithm -# ## Supported are: -# ## "t-digest" -- approximation using centroids, can cope with large number of samples -# ## "exact R7" -- exact computation also used by Excel or NumPy (Hyndman & Fan 1996 R7) -# ## "exact R8" -- exact computation (Hyndman & Fan 1996 R8) -# ## NOTE: Do not use "exact" algorithms with large number of samples -# ## to not impair performance or memory consumption! -# # algorithm = "t-digest" -# -# ## Compression for approximation (t-digest). The value needs to be -# ## greater or equal to 1.0. Smaller values will result in more -# ## performance but less accuracy. -# # compression = 100.0 - - -# # Aggregate metrics using a Starlark script -# [[aggregators.starlark]] -# ## The Starlark source can be set as a string in this configuration file, or -# ## by referencing a file containing the script. Only one source or script -# ## should be set at once. -# ## -# ## Source of the Starlark script. -# source = ''' -# state = {} -# -# def add(metric): -# state["last"] = metric -# -# def push(): -# return state.get("last") -# -# def reset(): -# state.clear() -# ''' -# -# ## File containing a Starlark script. -# # script = "/usr/local/bin/myscript.star" -# -# ## The constants of the Starlark script. -# # [aggregators.starlark.constants] -# # max_size = 10 -# # threshold = 0.75 -# # default_name = "Julia" -# # debug_mode = true - - -# # Count the occurrence of values in fields. -# [[aggregators.valuecounter]] -# ## General Aggregator Arguments: -# ## The period on which to flush & clear the aggregator. -# period = "30s" -# ## If true, the original metric will be dropped by the -# ## aggregator and will not get sent to the output plugins. -# drop_original = false -# ## The fields for which the values will be counted -# fields = ["status"] - - -# Read metrics about cpu usage -[[inputs.cpu]] - ## Whether to report per-cpu stats or not - percpu = true - ## Whether to report total system cpu stats or not - totalcpu = true - ## If true, collect raw CPU time metrics - collect_cpu_time = false - ## If true, compute and report the sum of all non-idle CPU states - report_active = false - ## If true and the info is available then add core_id and physical_id tags - core_tags = false - - -# Read metrics about memory usage -[[inputs.mem]] - # no configuration - diff --git a/community_images/traefik/ironbank/README.md b/community_images/traefik/ironbank/README.md deleted file mode 100644 index a072f2609c..0000000000 --- a/community_images/traefik/ironbank/README.md +++ /dev/null @@ -1,141 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for TRAEFIK Ironbank - -RapidFort’s container optimization process hardened this TRAEFIK Ironbank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One TRAEFIK Ironbank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is TRAEFIK Ironbank? - -> Traefik is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your existing infrastructure components (Docker, Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS, ...) and configures itself automatically and dynamically. Pointing Traefik at your orchestrator should be the only configuration step you need. - - -[Overview of TRAEFIK Ironbank](https://traefik.io/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened TRAEFIK Ironbank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add traefik https://helm.traefik.io/traefik - -# install traefik, just replace repository with RapidFort image.name and the image.tag -$ helm install traefik traefik/traefik --set image.name=rapidfort/traefik-ib --set image.tag=v2.9.4 - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One TRAEFIK Ironbank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Platform One TRAEFIK Ironbank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/traefik-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=traefik-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Ftraefik%2Ftraefik?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=traefik-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Ftraefik%2Ftraefik?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=traefik-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Ftraefik%2Ftraefik?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=traefik-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Ftraefik%2Ftraefik?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=traefik-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Ftraefik%2Ftraefik?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=traefik-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/traefik-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/traefik-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/traefik/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/traefik/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Ftraefik%2Ftraefik -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/traefik-ib diff --git a/community_images/traefik/ironbank/assets/cve_reduction.webp b/community_images/traefik/ironbank/assets/cve_reduction.webp deleted file mode 100644 index f7cb305f4e3ee7a4ba6b079add13c5bc1affbb65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1632 zcmb`Hc{J2p9Kf$7J=w-`5QZVVo;|Om$TF6(^^CFa#tL zhCGy*n|{oL>U-t+z58T zv0dzG%7Nlmy0L7ibX^5?ygYp1*sB<1sH$=NQnPe**Q-F z9RTBX00gKzzTm3>Fwy~#f3@RNrvV_520-%=5gUX3rx-!V@}D>Xz=!JqhY^UO`o=(N(qNG7VD1GDGz{8!Savn{H(--QElitf#an2bsH*!^wbPK`@%LV9`&K zsH`%U?pEL*+GlR2pc-#$!b2V~HQ1ZgCL#~vT`mOaMqP2#K`LdM`HXWRJ%7nZz2m92 zO61H%zXE(x@?EX9m4fYt;?(8E-_QSg+uFc0XTd&q-*G=yRU68_rIc89_S%{3g<==y zPkMOS!=l96TIJz&)ZA>1xRR3PU_G(Y@{oVsRfpuY%RlUn$V&`Sdv}9SF?~o-HFtMJ zkcuKD)h2zWyvV!Ovg-h*BrbF8V^On6v}Ov}-l{VnpvjTbidJUPCuQ5hE6*Py5k-nF zjfl8N-!)H@yyKjP&)1YsijDUo%`YGIQ1o_j>N*IJdHyz3+(5TOuWVnvb1WY_Zsz|0`GEO^<3c zlIJ8YdP$Y!r)OwPP9H)abMy%Fe|%SqW#^zKvQfLVZ8n-9rzzO~UJET?LwQ$nacxEq z)3kitZ7^AmNs>HI5sxkUP>2g(8(A)&JUZ%;JpY?!_a)9VX)abl+cuFCVm6S+9vc)h zyX?!xoThAFr3jbZaqiBK&Qjn+nU{W zL_mzQ`@^D?cl{vk^JK)P$~^t35G--2;@S&l?)@p}Pd$svl5X&o-qsD+dp{cVh5QYe C@K-hf diff --git a/community_images/traefik/ironbank/assets/metrics.webp b/community_images/traefik/ironbank/assets/metrics.webp deleted file mode 100644 index 9e63166ad34b22aa1b098e15649d3cfdcaa14e13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26658 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 diff --git a/community_images/traefik/ironbank/dc_coverage.sh b/community_images/traefik/ironbank/dc_coverage.sh deleted file mode 100755 index 75f53801ae..0000000000 --- a/community_images/traefik/ironbank/dc_coverage.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -CONTAINER_NAME="${PROJECT_NAME}"-reverse-proxy-1 - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"443/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8082/tcp\"[0].HostPort" - -NON_TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"443/tcp\"[0].HostPort") -ADMIN_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort") -PING_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8082/tcp\"[0].HostPort") - -# Get Dashboard -wget http://localhost:"${ADMIN_PORT}"/dashboard -cat dashboard -rm dashboard -# Check Ping feature (traefik healthcheck) -curl -s http://localhost:"${PING_PORT}"/ping - -# run curl in loop for different endpoints -for i in {1..3}; -do - echo "Attempt $i" - curl https://localhost:"${TLS_PORT}" --header 'Host:whoami.docker.localhost' https://localhost:"${TLS_PORT}" -k -s - curl http://localhost:"${NON_TLS_PORT}" --header 'Host:whoami.docker.localhost' -s -done diff --git a/community_images/traefik/ironbank/docker-compose.yml b/community_images/traefik/ironbank/docker-compose.yml deleted file mode 100644 index 11ba4529a4..0000000000 --- a/community_images/traefik/ironbank/docker-compose.yml +++ /dev/null @@ -1,51 +0,0 @@ -version: '3' - -services: - reverse-proxy: - image: ${TRAEFIK_IMAGE_REPOSITORY}:${TRAEFIK_IMAGE_TAG} - cap_add: - - SYS_PTRACE - # Enables the web UI and tells Traefik to listen to docker - command: - - "--api.insecure=true" - - "--log.filePath=/traefik.log" - - "--log.format=json" - - "--log.level=DEBUG" - - "--providers.docker=true" - - "--providers.file.directory=/dockerProvider/" - - "--providers.file.watch=true" - - "--entrypoints.web.address=:80" - - "--entrypoints.web-secure.address=:443" - - "--entryPoints.ping.address=:8082" - - "--ping.entryPoint=ping" - - "--ping=true" - ports: - # The HTTP port - - '0.0.0.0::80' - # 443 for TLS - - '0.0.0.0::443' - # Expose Ping - - '0.0.0.0::8082' - # The Web UI (enabled by --api.insecure=true) - - '0.0.0.0::8080' - volumes: - # So that Traefik can listen to the Docker events - - /var/run/docker.sock:/var/run/docker.sock - # Traefik config File to point to certificates - - "./dockerProvider:/dockerProvider" - - "./certs:/certs" - labels: - - "traefik.http.routers.ping.rule=Host(`ping.docker.localhost`) && Path(`/ping`)" - - "traefik.http.routers.ping.service=ping@internal" - - whoami: - # A container that exposes an API to show its IP address - image: traefik/whoami - deploy: - replicas: 2 - labels: - - "traefik.http.routers.whoami.tls=true" - - "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)" - - "traefik.http.routers.whoami.entrypoints=web-secure" - - "traefik.http.routers.httpwhoami.rule=Host(`whoami.docker.localhost`)" - - "traefik.http.routers.httpwhoami.entrypoints=web" diff --git a/community_images/traefik/ironbank/dockerProvider/certificates.yml b/community_images/traefik/ironbank/dockerProvider/certificates.yml deleted file mode 100644 index 9cde619a34..0000000000 --- a/community_images/traefik/ironbank/dockerProvider/certificates.yml +++ /dev/null @@ -1,4 +0,0 @@ -tls: - certificates: - - certFile: /certs/server-cert.pem - keyFile: /certs/server-key.pem diff --git a/community_images/traefik/ironbank/image.yml b/community_images/traefik/ironbank/image.yml deleted file mode 100644 index f3b1d2fdfc..0000000000 --- a/community_images/traefik/ironbank/image.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: traefik-ib -official_name: TRAEFIK Ironbank -official_website: https://traefik.io/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/traefik/traefik -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Ftraefik%2Ftraefik -source_image_readme: https://repo1.dso.mil/dsop/opensource/traefik/traefik/-/blob/development/README.md -rf_docker_link: rapidfort/traefik-ib -image_workflow_name: traefik_ironbank -github_location: traefik/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Ftraefik%2Ftraefik -usage_instructions: | - $ helm repo add traefik https://helm.traefik.io/traefik - - # install traefik, just replace repository with RapidFort image.name and the image.tag - $ helm install traefik traefik/traefik --set image.name=rapidfort/traefik-ib --set image.tag=v2.9.4 -what_is_text: | - Traefik is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your existing infrastructure components (Docker, Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS, ...) and configures itself automatically and dynamically. Pointing Traefik at your orchestrator should be the only configuration step you need. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/traefik/traefik: - input_base_tag: "2.10." - output_repo: traefik-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - wait_time_sec: 10 - tls_certs: - generate: true - out_dir: certs - image_keys: - traefik-ib: - repository: "TRAEFIK_IMAGE_REPOSITORY" - tag: "TRAEFIK_IMAGE_TAG" diff --git a/community_images/traefik/traefik/README.md b/community_images/traefik/traefik/README.md deleted file mode 100644 index d4b956ffec..0000000000 --- a/community_images/traefik/traefik/README.md +++ /dev/null @@ -1,144 +0,0 @@ - -RapidFort - - -
- -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for TRAEFIK - -RapidFort’s container optimization process hardened this TRAEFIK container. This container is free to use and has no license limitations. - -It is the same as the [Traefik TRAEFIK][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
- -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

Vulnerabilities: Original vs. Hardened - -

- -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
-
- - -## What is TRAEFIK? - -> Traefik is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your existing infrastructure components (Docker, Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS, ...) and configures itself automatically and dynamically. Pointing Traefik at your orchestrator should be the only configuration step you need. - - -[Overview of TRAEFIK](https://traefik.io/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened TRAEFIK image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
-
- -```sh -$ helm repo add traefik https://helm.traefik.io/traefik - -# install traefik, just replace repository with RapidFort image.name and the image.tag -$ helm install traefik traefik/traefik --set image.name=rapidfort/traefik --set image.tag=v2.9.4 - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Traefik TRAEFIK][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
-
- -## What’s the difference between the official [Traefik TRAEFIK][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/traefik][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`v2.9.4`, `2.9.4`, `2.9`, `banon`, `latest` (902a0bf463bda84f4cc2cefbcbf9b5b6f7a2cdb9/alpine/Dockerfile)](https://github.com/traefik/traefik-library-image/blob/902a0bf463bda84f4cc2cefbcbf9b5b6f7a2cdb9/alpine/Dockerfile) -* [`1.7.34`, `1.7`, `maroilles` (4434758cf14bbd1ec9511b3f2a37b0a6ce846db6/scratch/Dockerfile)](https://github.com/traefik/traefik-library-image/blob/4434758cf14bbd1ec9511b3f2a37b0a6ce846db6/scratch/Dockerfile) -* [`1.7.34-alpine`, `1.7-alpine`, `maroilles-alpine` (4434758cf14bbd1ec9511b3f2a37b0a6ce846db6/alpine/Dockerfile)](https://github.com/traefik/traefik-library-image/blob/4434758cf14bbd1ec9511b3f2a37b0a6ce846db6/alpine/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
-
- - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=traefik&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Ftraefik?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=traefik&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Ftraefik?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=traefik&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Ftraefik?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=traefik&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Ftraefik?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=traefik&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Ftraefik?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=traefik&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/traefik?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/traefik?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/traefik/traefik/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/traefik/traefik/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/traefik -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/traefik diff --git a/community_images/traefik/traefik/assets/cve_reduction.webp b/community_images/traefik/traefik/assets/cve_reduction.webp deleted file mode 100644 index fae75b8ac58799c1e004783079521d45230d30ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1544 zcmWIYbaP{1V_*n(bqWXzu!!JdU|>)H;)RS1_6!W3&dvc6Oh7IJlLUxlF<@ZG%_}Ji za(7aQh>TJIiNQc(a&ZBSjfG}pVEA^80Z1}1T-L=RPe_O}CAByisOSR_mlOdlXJBAV z0kTEXA?ykeI|;(>0kMlhf}DYB7692A=}7D(BzAd8K?zXJ36T2af+7(64v=k=n^Ow1 z3j{ze=1I*94F=K?KrF*h%n-!j&fo-OQxzb>Gk*~SgT+?{2IdI}v80&{4BJ~77$j~X z#8ehAFz~l9Fl;+tkXV!mb_@%UWJ*h8VEDA0fq^%YfkF5J0|Qqy%%KRqh`7MvR|TLR z8K6J&fiRsRhar_gfx(j@k0F^s56CiNFkmobFaxF-g+t81NReik%c!-8(SgA(*KCIS z5@n@@YO`KiH1Kw&=G~3kv#UPsX2h2niFbA%mu#z^cq@7Lg-Ag;<2Qag%evo3et!A< z>hu1D{a5wY98pV-SA4Z<4)<*lZFh+k3@=#>9vQ@OuvQ$6kgvFNW`CB$l3?x)47Gc6 zKAk!DzQMgLFk#JZqmS=r2Ctg`|FZ9PSL^;?Z?9fl^f&jw+Dokh2ji@lY6VVto}<6} zvV(bDbMu@2H~jmeZr=*nGik=U?*=REr}+Q%lGz~J<50Ov^}#pC-k{3FniCDF22G8{ z40DaLc@lGk&zT$(dCjD}OQ&T61H-@H-$d83|F63D=;qAd?`k-rLfCAVyw;z!W@(=I zHhHzcHC(geCfL<5#fQ8)I9sRS=~K?x&pv*A$EqUvcWy@h(aw7}O#>RTxXzhwn(#qp zD%1PpyuB`uSNIFBuiVz~MnO;N_{&mR;mCU%%0(?62`1`ox3ciB7r1`ueo<{$A$NZG zzhG(U+B<(rmz+;M<|C$?|Fv|geBLZkr*Elw)9U^ReL0_Kq4{QAHpibZhA^QM^POx~ z$OOfUT@*!I0mf#YjP-S?;0b?+^FyneBh``~No{eN>@ka+#P_;>BTr792aryFLh|K>k;QuNO! zE0mwiC_enxqb6g)w`ZFt7^O?rMHR_b)i1KU;db-g;!iilPn}MGw7&g6+nyzQ|84f) z<(u`&^YFfNNf+ba%(qtA{`q8p`$>c6?Y}1cxaj!yY`Q|qIio*Yo*xLiG3Vl?Jf3+k zpX+~*>Rpoh{KYA2$H2ccc;Z-3?(2WUc*%VItbk6NY|}HLSCqaePD-RSW1@HP;{Qtp!-#6b3r@Q;CkFGzX*xJ6MBw=1vvDQB2 z+AVdNQi-AZrzDw{&FIT=<299KJ{oB^bD0j8l!`Ua;}wBrzkK#NZ4}rd_Uvik#hm&d Oe_j}H##YG!vpN81&M1}u diff --git a/community_images/traefik/traefik/assets/metrics.webp b/community_images/traefik/traefik/assets/metrics.webp deleted file mode 100644 index 57b940fcca9b71f274679f412418d9ba1ed607fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23940 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
  • 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
    5-GryOq_wbU5I&_ao) zhAnv&j}}6bnT#qTxIFrD&Z-Kin4_~zgXyAhaeSF#$=n57dZ(KDGBE4Yu}$uOa^=g} zjd7&K&Q)We;a*cluQQ8_JA$Pn8&U^Ks)jcgyR|d`Gmk4N;spH-*h}YjE@#ToMJcmM zdPzo5V8IT5RfotI&h~3if?EuB4E&lhDo6n<_nSU(S$!DvE=NwqOsV; z6L!{>@KQK*3xR6&@~+Jx;f(dju6NzgVgv)Oy%x3yJCVQ=1z$5Oz(w!DH_8u$eAOFf z2F6F|YNnq&FfTj86~S=9z=(v6#~d$lELdFb#vOWfwqzwv%L{Z|^^%cbm1Tvv+5Pca zF2-Thif!#6wwG#(z5;;kYrdK?gP$91Ls8}r7YDXLJdae~oMwt| zv2h;7b*D;!R;Th!rvZiG#j~(~UQz29Jn2ZO%A9DlLq9M1V#Lq7MII&h1J-tsKQV^A zUY&a?GEt6NMsNp!3`>3v{&-rjK5)ne_Ae{S{?9+Ss#VoFP4Y964dj4`mGAMO+$?Xv zIZ6tS0`l6QhP*VQM&9Hc&-)?dC)2FV37onu7-Wl`@5gXy-`y)MEaX7d60hoFJgEI^ zP3N8{KY9zQWqv_-E}f(Im3+G1yOXxLXirwV464= zAtX0NwEOl%+fNoDgsWs~V2qf>-Ya6OEDpR9yhK*2jQBwXTHuit1;62S=XwymLOCD@+RFv;=p!{41dVP$0045tm&u(`pD$Y0 zQObL`cGZ~v-Ho{$k-Q_(uwWH&`TgCuIh5o>7&x}>L0y0jnIHfJYh@}OuGa6GQRFAp z9DSXtKS)d&YR(ox$UDPYtMTxAcc>${WDbdel#O;fizR})XaxMWAOHmRZQRSkHFg;X zR%l%=3_ih``FJ=-*X1DO9p(V?vNaS%N|;9P$%~bJx60nw3P&0^ov>6KpguXAS9409 z-;xnEAd^9ZT^#CNcx7%DA?)r~KEm(MiY^!_&QKp5&MUd4PjATxnvdC{?tnLPCS1~Y zGi)uAMfR+|JnxmXz)Ox=U=GSU6Eio5;5R+p`d`u>R*(r7^l4E~A|$p_=?}1ZS5l>w zVKQ}NRmjWzpr%*WB)rh{O$I1DiUH9VnQB+QYUrUL83T?veA!c4?=75NLv&c5aqb(c zgrcZ)P|n!RN*M1%?nJs?|$ot)b-NUmnZetOD{Or&G0A%U_00ap7jIE}@94pe%cs%GQ?7fm<2FC&s@Ip4nCs&@>2h|ix<_6WaDldhIQ8hcu6%}9} zLXY3~(hYKvLEgC{w5m65FI?M6NbP`%Mgx|kz1`dF$D`ui%ursDVy8{Gkbuh zZ*UaJSlk8qkG&HGn_9HH6`i9XEO%TCxCY1;!W zJ78s}Yz(!Qr%y*DeS#st6VKNa6PwGfK9nJ;vGQ7(M*Co8r)&(g?SYn^urk^dIMXT> xhd2OI9g6%!c;Ns;x`}ETG&@1DC)t}BY1;!WJ78s}Yz(yRfvyrRPy;Z4003l{ymbHo diff --git a/community_images/traefik/traefik/dc_coverage.sh b/community_images/traefik/traefik/dc_coverage.sh deleted file mode 100755 index bf74ecdb77..0000000000 --- a/community_images/traefik/traefik/dc_coverage.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -NETWORK_NAME="${PROJECT_NAME}"_default -CONTAINER_NAME="${PROJECT_NAME}"-reverse-proxy-1 - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"443/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort" -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8082/tcp\"[0].HostPort" - -NON_TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") -TLS_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"443/tcp\"[0].HostPort") -ADMIN_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8080/tcp\"[0].HostPort") -PING_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"8082/tcp\"[0].HostPort") - -# Get Dashboard -wget http://localhost:"${ADMIN_PORT}"/dashboard -cat dashboard -rm dashboard -# Check Ping feature (traefik healthcheck) -curl -s http://localhost:"${PING_PORT}"/ping - -# run curl in loop for different endpoints -for i in {1..3}; -do - echo "Attempt $i" - curl https://localhost:"${TLS_PORT}" --header 'Host:whoami.docker.localhost' https://localhost:"${TLS_PORT}" -k -s - curl http://localhost:"${NON_TLS_PORT}" --header 'Host:whoami.docker.localhost' -s -done diff --git a/community_images/traefik/traefik/docker-compose.yml b/community_images/traefik/traefik/docker-compose.yml deleted file mode 100644 index 11ba4529a4..0000000000 --- a/community_images/traefik/traefik/docker-compose.yml +++ /dev/null @@ -1,51 +0,0 @@ -version: '3' - -services: - reverse-proxy: - image: ${TRAEFIK_IMAGE_REPOSITORY}:${TRAEFIK_IMAGE_TAG} - cap_add: - - SYS_PTRACE - # Enables the web UI and tells Traefik to listen to docker - command: - - "--api.insecure=true" - - "--log.filePath=/traefik.log" - - "--log.format=json" - - "--log.level=DEBUG" - - "--providers.docker=true" - - "--providers.file.directory=/dockerProvider/" - - "--providers.file.watch=true" - - "--entrypoints.web.address=:80" - - "--entrypoints.web-secure.address=:443" - - "--entryPoints.ping.address=:8082" - - "--ping.entryPoint=ping" - - "--ping=true" - ports: - # The HTTP port - - '0.0.0.0::80' - # 443 for TLS - - '0.0.0.0::443' - # Expose Ping - - '0.0.0.0::8082' - # The Web UI (enabled by --api.insecure=true) - - '0.0.0.0::8080' - volumes: - # So that Traefik can listen to the Docker events - - /var/run/docker.sock:/var/run/docker.sock - # Traefik config File to point to certificates - - "./dockerProvider:/dockerProvider" - - "./certs:/certs" - labels: - - "traefik.http.routers.ping.rule=Host(`ping.docker.localhost`) && Path(`/ping`)" - - "traefik.http.routers.ping.service=ping@internal" - - whoami: - # A container that exposes an API to show its IP address - image: traefik/whoami - deploy: - replicas: 2 - labels: - - "traefik.http.routers.whoami.tls=true" - - "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)" - - "traefik.http.routers.whoami.entrypoints=web-secure" - - "traefik.http.routers.httpwhoami.rule=Host(`whoami.docker.localhost`)" - - "traefik.http.routers.httpwhoami.entrypoints=web" diff --git a/community_images/traefik/traefik/dockerProvider/certificates.yml b/community_images/traefik/traefik/dockerProvider/certificates.yml deleted file mode 100644 index 9cde619a34..0000000000 --- a/community_images/traefik/traefik/dockerProvider/certificates.yml +++ /dev/null @@ -1,4 +0,0 @@ -tls: - certificates: - - certFile: /certs/server-cert.pem - keyFile: /certs/server-key.pem diff --git a/community_images/traefik/traefik/image.yml b/community_images/traefik/traefik/image.yml deleted file mode 100644 index 94cc94696c..0000000000 --- a/community_images/traefik/traefik/image.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: traefik -official_name: TRAEFIK -official_website: https://traefik.io/ -source_image_provider: Traefik -source_image_repo: docker.io/library/traefik -source_image_repo_link: https://hub.docker.com/_/traefik -source_image_readme: https://github.com/traefik/traefik-library-image/blob/master/README.md -rf_docker_link: rapidfort/traefik -image_workflow_name: traefik_traefik -github_location: traefik/traefik -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Ftraefik -usage_instructions: | - $ helm repo add traefik https://helm.traefik.io/traefik - - # install traefik, just replace repository with RapidFort image.name and the image.tag - $ helm install traefik traefik/traefik --set image.name=rapidfort/traefik --set image.tag=v2.9.4 -what_is_text: | - Traefik is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your existing infrastructure components (Docker, Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS, ...) and configures itself automatically and dynamically. Pointing Traefik at your orchestrator should be the only configuration step you need. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`v2.9.4`, `2.9.4`, `2.9`, `banon`, `latest` (902a0bf463bda84f4cc2cefbcbf9b5b6f7a2cdb9/alpine/Dockerfile)](https://github.com/traefik/traefik-library-image/blob/902a0bf463bda84f4cc2cefbcbf9b5b6f7a2cdb9/alpine/Dockerfile)" - - "[`1.7.34`, `1.7`, `maroilles` (4434758cf14bbd1ec9511b3f2a37b0a6ce846db6/scratch/Dockerfile)](https://github.com/traefik/traefik-library-image/blob/4434758cf14bbd1ec9511b3f2a37b0a6ce846db6/scratch/Dockerfile)" - - "[`1.7.34-alpine`, `1.7-alpine`, `maroilles-alpine` (4434758cf14bbd1ec9511b3f2a37b0a6ce846db6/alpine/Dockerfile)](https://github.com/traefik/traefik-library-image/blob/4434758cf14bbd1ec9511b3f2a37b0a6ce846db6/alpine/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - traefik: - input_base_tag: "v2.9.[0-9.]*$" -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - wait_time_sec: 10 - tls_certs: - generate: true - out_dir: certs - image_keys: - traefik: - repository: "TRAEFIK_IMAGE_REPOSITORY" - tag: "TRAEFIK_IMAGE_TAG" - diff --git a/community_images/vault/hashicorp/.rfignore b/community_images/vault/hashicorp/.rfignore deleted file mode 100644 index 6908379cd0..0000000000 --- a/community_images/vault/hashicorp/.rfignore +++ /dev/null @@ -1 +0,0 @@ -bin/vault diff --git a/community_images/vault/hashicorp/README.md b/community_images/vault/hashicorp/README.md deleted file mode 100644 index 795f7357c0..0000000000 --- a/community_images/vault/hashicorp/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
    - -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Vault - -RapidFort’s container optimization process hardened this Vault container. This container is free to use and has no license limitations. - -It is the same as the [Hashicorp Vault][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
    - -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

    Vulnerabilities: Original vs. Hardened - -

    - -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
    -
    - - -## What is Vault? - -> Secure, store and tightly control access to tokens, passwords, certificates, encryption keys for protecting secrets and other sensitive data - - -[Overview of Vault](https://www.vaultproject.io/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Vault image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
    -
    - -```sh -$ helm repo add hashicorp https://helm.releases.hashicorp.com - -# install vault, just replace repository with RapidFort registry -$ helm install vault hashicorp/vault - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Hashicorp Vault][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
    -
    - -## What’s the difference between the official [Hashicorp Vault][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/vault][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`1.12.0`, `latest` (latest/Dockerfile)](https://github.com/hashicorp/docker-vault/blob/11a5dff987176c6ab24f76cee14f6dd820f42d96/0.X/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
    -
    - - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=vault&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fvault?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=vault&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fvault?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=vault&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fvault?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=vault&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fvault?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=vault&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fvault?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=vault&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/vault?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/vault?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/vault/hashicorp/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/vault/hashicorp/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/vault -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/vault diff --git a/community_images/vault/hashicorp/assets/cve_reduction.webp b/community_images/vault/hashicorp/assets/cve_reduction.webp deleted file mode 100644 index 7ffcff03116ea49d537f52ed6c21ee4b6765f059..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1602 zcmb`Hdpy)x6u{3ILxc*IS~8)Bq?qz7ud$8yHpqJ0VHg$0UJeM zp7=G<&`lZuu!yoyU*nr(75P4jFFAttkw4R; z02ZDDVgdTKKQsSdE-C+j2r?2hjVL`FSsVc6kFa9k2aXo8-v>?+ariMOOC+Wc;oX6s zu-_+qicX^=F&(0KGA&%hFA+W*5*#U7OC+L-Wdf)!&PeZus4_%=6IcNr;r~@u&olHo zfZ;p<`qHY;?pEus!yX3VBI-@nqHc3xbHv3h$B{vLIIe)1t9AVpuho;_WW4r zYVPV?{L5akNRBeH&rqZVLNEjX7HohDWY~ug4s<{l^pO{XT|xs8RUi+w=Q_$9OhfcD ztcujtw(k}u6~@al$yA=tz>eXhftrco%P%hB!WOGIO{^x({hI6C_#`vRwo)M7A_NSt?BsnKi>lmj_MeQ`7VDJ5oTk2=unz){0+7^@?!jzAaD&sdv z-YSlvTzaX0v7}6qhD+B=X5p18E5ZYFymk4H z;+fHyxde^h<>F=){6~s-DmtH!+w2Gjy#&p_Rp-h*zPBe4AdG?@Ji$eWn2C7%xO#7m=t8b98dN5^TvfPTNv(4D<-Av&8dr;2m ztS>v1aBclpmVTIe!Qqk^ZH7=Uis4^U<}rn(l(6Ss%ZjBZNx3F8 zu63FYqxI?A3X2DF*P94!Gf~y-jOnPsyUcxUWfB_87M`Y+eNhgXoixX>6kOnfl`d`0 zFi(ahRRzgl| zxJd>5cEZ+Qw&15OUR^OLQ(#VxrYUw$jJRJZrf18TV@E< zAGh9E&#|5@9XTpF#}*PFU+ievs*w_o&ENK#`Kc^_6T0F4n$f&s zr=kXV(h?qfGWmzIZELvcAqPN-PSwDjx<@=5#+3ZG8^ diff --git a/community_images/vault/hashicorp/assets/metrics.webp b/community_images/vault/hashicorp/assets/metrics.webp deleted file mode 100644 index 8989fc2a291391da3f84d3ad2a6d282d11319018..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28252 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 YhXR;zDTe}>a4ClZ+&U@/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -test_vault() { - VAULT_CONTAINER=$1 - NAMESPACE=$2 - KUBERNETES_PORT_443_TCP_ADDR=$(minikube ip) - K8S_API_PORT=8443 - # verify that the vault is installed correctly - kubectl exec -n "${NAMESPACE}" "${VAULT_CONTAINER}" -- vault version - - # generate the unseal keys and root token and store in cluster-keys.json - kubectl exec -n "${NAMESPACE}" "${VAULT_CONTAINER}" -- vault operator init \ - -key-shares=1 \ - -key-threshold=1 \ - -format=json > cluster-keys.json - - VAULT_UNSEAL_KEY=$(jq -r ".unseal_keys_b64[]" cluster-keys.json) - kubectl exec -n "${NAMESPACE}" "${VAULT_CONTAINER}" -- vault operator unseal "${VAULT_UNSEAL_KEY}" - - ROOT_TOKEN=$(jq -r ".root_token" cluster-keys.json) - kubectl exec -n "${NAMESPACE}" "${VAULT_CONTAINER}" -- vault login "${ROOT_TOKEN}" - - # Enable an instance of the kv-v2 secrets engine at the path secret - kubectl exec -n "${NAMESPACE}" "${VAULT_CONTAINER}" -- vault secrets enable -path=secret kv-v2 - - # check the help on this path - kubectl exec -n "${NAMESPACE}" "${VAULT_CONTAINER}" -- vault path-help secret - - kubectl exec -n "${NAMESPACE}" "${VAULT_CONTAINER}" -- vault kv put secret/webapp/config username="static-user" password="static-password" - kubectl exec -n "${NAMESPACE}" "${VAULT_CONTAINER}" -- vault kv get secret/webapp/config - - # enable kubernetes based authentication - kubectl exec -n "${NAMESPACE}" "${VAULT_CONTAINER}" -- vault auth enable kubernetes - kubectl exec -n "${NAMESPACE}" "${VAULT_CONTAINER}" -- vault write auth/kubernetes/config kubernetes_host="https://${KUBERNETES_PORT_443_TCP_ADDR}:${K8S_API_PORT}" - kubectl cp "${SCRIPTPATH}"/policy.hcl -n "${NAMESPACE}" "${VAULT_CONTAINER}":/tmp/ - kubectl exec -n "${NAMESPACE}" "${VAULT_CONTAINER}" -- vault policy write webapp /tmp/policy.hcl - kubectl exec -n "${NAMESPACE}" "${VAULT_CONTAINER}" -- vault write auth/kubernetes/role/webapp \ - bound_service_account_names=vault \ - bound_service_account_namespaces=default \ - policies=webapp \ - ttl=24h -} \ No newline at end of file diff --git a/community_images/vault/hashicorp/dc_coverage.sh b/community_images/vault/hashicorp/dc_coverage.sh deleted file mode 100755 index 9e539fb7a1..0000000000 --- a/community_images/vault/hashicorp/dc_coverage.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -# PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") diff --git a/community_images/vault/hashicorp/deployment-webapp.yml b/community_images/vault/hashicorp/deployment-webapp.yml deleted file mode 100644 index 228555c989..0000000000 --- a/community_images/vault/hashicorp/deployment-webapp.yml +++ /dev/null @@ -1,29 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: webapp - labels: - app: webapp -spec: - replicas: 1 - selector: - matchLabels: - app: webapp - template: - metadata: - labels: - app: webapp - spec: - serviceAccountName: rf-vault - containers: - - name: app - image: burtlo/exampleapp-ruby:k8s - imagePullPolicy: Always - env: - - name: VAULT_ADDR - value: 'http://rf-vault:8200' - - name: JWT_PATH - value: '/var/run/secrets/kubernetes.io/serviceaccount/token' - - name: SERVICE_PORT - value: '8080' \ No newline at end of file diff --git a/community_images/vault/hashicorp/docker-compose.yml b/community_images/vault/hashicorp/docker-compose.yml deleted file mode 100644 index a0d0e5b609..0000000000 --- a/community_images/vault/hashicorp/docker-compose.yml +++ /dev/null @@ -1,10 +0,0 @@ -version: '2' - -services: - template: - image: ${IMAGE}:${TAG} - user: root - cap_add: - - SYS_PTRACE - ports: - - '8080' diff --git a/community_images/vault/hashicorp/docker_coverage.sh b/community_images/vault/hashicorp/docker_coverage.sh deleted file mode 100755 index 87c7ba3798..0000000000 --- a/community_images/vault/hashicorp/docker_coverage.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -# NETWORK_NAME=$(jq -r '.network_name' < "$JSON_PARAMS") -# ENVOY_HOST=$(jq -r '.container_details.envoy.ip_address' < "$JSON_PARAMS") diff --git a/community_images/vault/hashicorp/image.yml b/community_images/vault/hashicorp/image.yml deleted file mode 100644 index ca0c08147c..0000000000 --- a/community_images/vault/hashicorp/image.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: vault -official_name: Vault -official_website: https://www.vaultproject.io/ -source_image_provider: Hashicorp -source_image_repo: docker.io/library/vault -source_image_repo_link: https://hub.docker.com/_/vault -source_image_readme: https://github.com/hashicorp/docker-vault/blob/master/README.md -rf_docker_link: rapidfort/vault -image_workflow_name: vault_hashicorp -github_location: vault/hashicorp -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fvault -usage_instructions: | - $ helm repo add hashicorp https://helm.releases.hashicorp.com - - # install vault, just replace repository with RapidFort registry - $ helm install vault hashicorp/vault -what_is_text: | - Secure, store and tightly control access to tokens, passwords, certificates, encryption keys for protecting secrets and other sensitive data -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`1.12.0`, `latest` (latest/Dockerfile)](https://github.com/hashicorp/docker-vault/blob/11a5dff987176c6ab24f76cee14f6dd820f42d96/0.X/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - vault: - input_base_tag: "1.12.0" -needs_common_commands: False -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: hashicorp - repo_url: https://helm.releases.hashicorp.com - chart: vault - readiness_check_script: vault_health_check.sh - # disabling persistence otherwise PVC creation fails for data dir - helm_additional_params: - persistence.enabled: false - # server.statefulSet.securityContext.container.allowPrivilegeEscalation: true - # server.statefulSet.securityContext.container.capabilities.add: ["SYS_PTRACE"] - image_keys: - vault: - repository: "server.image.repository" - tag: "server.image.tag" - override_file: "overrides.yml" diff --git a/community_images/vault/hashicorp/k8s_coverage.sh b/community_images/vault/hashicorp/k8s_coverage.sh deleted file mode 100755 index b0a659c1df..0000000000 --- a/community_images/vault/hashicorp/k8s_coverage.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for k8s coverage = $JSON" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -test_vault "${RELEASE_NAME}-0" "${NAMESPACE}" \ No newline at end of file diff --git a/community_images/vault/hashicorp/overrides.yml b/community_images/vault/hashicorp/overrides.yml deleted file mode 100644 index 54e2125c47..0000000000 --- a/community_images/vault/hashicorp/overrides.yml +++ /dev/null @@ -1,21 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -server: - statefulSet: - securityContext: - container: - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: - - "SYS_PTRACE" -extraEnvironmentVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/vault/hashicorp/policy.hcl b/community_images/vault/hashicorp/policy.hcl deleted file mode 100644 index ac54334372..0000000000 --- a/community_images/vault/hashicorp/policy.hcl +++ /dev/null @@ -1,3 +0,0 @@ -path "secret/data/webapp/config" { - capabilities = ["read"] -} \ No newline at end of file diff --git a/community_images/vault/hashicorp/serviceaccount.yml b/community_images/vault/hashicorp/serviceaccount.yml deleted file mode 100644 index fc2bc660ce..0000000000 --- a/community_images/vault/hashicorp/serviceaccount.yml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: vault \ No newline at end of file diff --git a/community_images/vault/hashicorp/vault_health_check.sh b/community_images/vault/hashicorp/vault_health_check.sh deleted file mode 100644 index 94c894e68d..0000000000 --- a/community_images/vault/hashicorp/vault_health_check.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -NAMESPACE=$1 - -POD_NAME="rf-vault-0" -# wait for the pod to go in th running state -while [ "$(kubectl get pods "${POD_NAME}" -n "${NAMESPACE}" -o 'jsonpath={..status.phase}')" != "Running" ]; do - echo "waiting for pod" && sleep 1; -done - -for((i=0;i<10;i++)); do - out=$(kubectl logs "${POD_NAME}" -n "${NAMESPACE}") - echo "output is $out" - sleep 5 -done - - -# wait for the pod to be initialized -until kubectl logs "${POD_NAME}" -n "${NAMESPACE}" | grep -q "seal configuration missing"; do - sleep 1 -done diff --git a/community_images/wordpress/bitnami/.rfignore b/community_images/wordpress/bitnami/.rfignore deleted file mode 100644 index ea58f39cfe..0000000000 --- a/community_images/wordpress/bitnami/.rfignore +++ /dev/null @@ -1,3 +0,0 @@ -usr/share/common-licenses -opt/bitnami/licenses -opt/bitnami/wordpress diff --git a/community_images/wordpress/bitnami/README.md b/community_images/wordpress/bitnami/README.md deleted file mode 100644 index 0932b7748d..0000000000 --- a/community_images/wordpress/bitnami/README.md +++ /dev/null @@ -1,142 +0,0 @@ - -RapidFort - - -
    - -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Wordpress - -RapidFort’s container optimization process hardened this Wordpress container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Wordpress][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
    - -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

    Vulnerabilities: Original vs. Hardened - -

    - -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
    -
    - - -## What is Wordpress? - -> WordPress gives you everything you need to start your website today. Free hosting, your own domain, a world-class support team, and so much more - - -[Overview of Wordpress](https://wordpress.com/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Wordpress image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
    -
    - -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install wordpress, just replace repository with RapidFort registry -$ helm install my-wordpress bitnami/wordpress --set image.repository=rapidfort/wordpress - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Wordpress][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
    -
    - -## What’s the difference between the official [Bitnami Wordpress][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/wordpress][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`6`, `6-debian-11`, `6.4.2`, `6.4.2-debian-11-r` (6/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/wordpress/6/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
    -
    - - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=wordpress&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fwordpress?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=wordpress&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fwordpress?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=wordpress&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fwordpress?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=wordpress&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fwordpress?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=wordpress&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fwordpress?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=wordpress&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/wordpress?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/wordpress?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/wordpress/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/wordpress/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/wordpress -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/wordpress diff --git a/community_images/wordpress/bitnami/assets/cve_reduction.webp b/community_images/wordpress/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 3d745c2d89799af724542e6bd525c25422b6a223..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1484 zcmWIYbaOkx%D@or>J$(bU=hK^z`&pY#0wc2>=_t5ot*VV2 z7YKk{%#)fI8VsZ(fLMm1m?4P4oxusnrYb;$XZ|7v28*u@49pV{Vo5U@7`C@EFi6}& zh^Z`KVBl|IVAyuPAh9SB>=+gx$&{AH!0>4~0|Rd)1B37d1_rKZm_reI5pjXTuL?jt zGC+Uk17SKt4nrz~0)r<*9z!yN9*||kV8CF=UYLoosrBbR8-9NN zH@_hNiTqWo4RvRJi*~FQlX7t{clK^Lo%h$9bwg5e!JCNc+9z*1fS~*S3hnH-y5if6 zx^zAs{U^x9s*r0fee&MMAB%VN%4BPBe@U9Rp?zj!t=wYS;Kvhrz4;LzIrn@z$M?7ScgeKCq_lhT5|UP2mnt?a)VN{!Trv8_ik8V&U02R| z&$Xn;Z0k1ZgQg0fWBpyk&#h!h*tUj);opCjXS-6m{uOGjeH7%8rE_;eh1`qkO}BQ> z{PAbI=d5>^W7h9kn(v~jn7(esdB3gRn--Sbm3<#>o^Ng1vF7dDIeeQ8%^o!{Sm$*v zF%!GDHRXKyix-z0=llPiCZ-pA%g)c1D}e{6AmH-G9`*T2h5_iWtM z?cSNN;F-!=vGCNG%kxzj{Vxklx|^1#{vrFA80$&xAK5$lB#Yk2S-WJM+P?2;M$deg z4cj9x>^PS=o!#-Y*vs?yrXUQ@#zfSKEn)*a&<{}%*bzB}F|7d;Pym#aD zZ{Pn}*Jd1!YBH4CI&U7UfX3_c{*?;p_phojAJsV{x&9BgM_k^wj5k;Q@vooX$s&`$ zIK_SIC(f^|GupTsrRDa_x&Qw~3(K)d{U^U}%XPcXC}O_8cn~jfpo) zPW)Q0t!w|Qw~+rxq0qapU6;P79~bNkTe~xqbt&)79}-S3-lsBMlK*zUNf6SR{{Wa> E0sept3jhEB diff --git a/community_images/wordpress/bitnami/assets/metrics.webp b/community_images/wordpress/bitnami/assets/metrics.webp deleted file mode 100644 index 5390ec6c1346dd10dda48e6001f0db9d434f9924..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23450 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/dev/null 2>&1 ; pwd -P )" - -JSON_PARAMS="$1" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -WORDPRESS_SERVER="${RELEASE_NAME}"."${NAMESPACE}".svc.cluster.local - -WORDPRESS_PORT='80' -"${SCRIPTPATH}"/../../common/selenium_tests/runner.sh "${WORDPRESS_SERVER}" "${WORDPRESS_PORT}" "${SCRIPTPATH}"/selenium_tests "${NAMESPACE}" 2>&1 diff --git a/community_images/wordpress/bitnami/overrides.yml b/community_images/wordpress/bitnami/overrides.yml deleted file mode 100644 index 6584d81765..0000000000 --- a/community_images/wordpress/bitnami/overrides.yml +++ /dev/null @@ -1,20 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -resourceType: deployment -replicaCount: 1 -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/wordpress/bitnami/selenium_tests/__init__.py b/community_images/wordpress/bitnami/selenium_tests/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/community_images/wordpress/bitnami/selenium_tests/conftest.py b/community_images/wordpress/bitnami/selenium_tests/conftest.py deleted file mode 100644 index ce945b43c0..0000000000 --- a/community_images/wordpress/bitnami/selenium_tests/conftest.py +++ /dev/null @@ -1,23 +0,0 @@ -"""The conftest file for running selenium test.""" -# pylint: skip-file - -# conftest.py -import pytest # pylint: disable=import-error - - -def pytest_addoption(parser): - """The function to add options""" - parser.addoption("--server", action="store", help="wordpress server") - parser.addoption("--port", action="store", - help="port for wordpress container") - - -@pytest.fixture -def params(request): - """the params""" - config_params = {} - config_params['server'] = request.config.getoption('--server') - config_params['port'] = request.config.getoption('--port') - if config_params['server'] is None or config_params['port'] is None: - pytest.skip() - return config_params diff --git a/community_images/wordpress/bitnami/selenium_tests/wordpress_selenium_test.py b/community_images/wordpress/bitnami/selenium_tests/wordpress_selenium_test.py deleted file mode 100644 index d933f1d196..0000000000 --- a/community_images/wordpress/bitnami/selenium_tests/wordpress_selenium_test.py +++ /dev/null @@ -1,136 +0,0 @@ -"""The selenium test.""" -# pylint: skip-file - -# Generated by Selenium IDE -import json # pylint: disable=import-error disable=unused-import -import time # pylint: disable=import-error disable=unused-import -import pytest # pylint: disable=import-error disable=unused-import -from selenium import webdriver # pylint: disable=import-error -from selenium.webdriver.chrome.options import Options # pylint: disable=import-error -from selenium.webdriver.common.by import By # pylint: disable=import-error -from selenium.webdriver.common.action_chains import ActionChains # pylint: disable=import-error disable=unused-import -from selenium.webdriver.support import expected_conditions # pylint: disable=import-error disable=unused-import -from selenium.webdriver.support.wait import WebDriverWait # pylint: disable=import-error disable=unused-import -from selenium.webdriver.common.keys import Keys # pylint: disable=import-error disable=unused-import -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # pylint: disable=import-error disable=unused-import - - -class TestWordpresstest1(): - """The test word press class for testing wordpress image.""" - - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_wordpresstest1(self, params): - """test wordpress.""" - # Test name: wordpress-test-1 - # Step # | name | target | value - # 1 | open | / | - self.driver.get( - "http://{}:{}/".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - # 2 | setWindowSize | 1095x688 | - self.driver.set_window_size(1095, 688) - # 3 | click | linkText=Hello world! | - self.driver.find_element(By.LINK_TEXT, "Hello world!").click() - # 4 | click | id=comment | - self.driver.find_element(By.ID, "comment").click() - # 5 | type | id=comment | hello - self.driver.find_element(By.ID, "comment").send_keys("hello") - # 6 | click | id=author | - self.driver.find_element(By.ID, "author").click() - # 7 | type | id=author | hello - self.driver.find_element(By.ID, "author").send_keys("hello") - # 8 | type | id=email | hello@abc.com - self.driver.find_element(By.ID, "email").send_keys("hello@abc.com") - # 9 | type | id=url | http://hello.com - self.driver.find_element(By.ID, "url").send_keys("http://hello.com") - # 10 | click | id=submit | - self.driver.find_element(By.ID, "submit").click() - # 11 | click | linkText=User's Blog! | - #self.driver.find_element(By.LINK_TEXT, "User\'s Blog!").click() - - def test_users(self, params): - """Test name: simplelogin.""" - # Step # | name | target | value - # 1 | open | /wp-login.php | - self.driver.get( - "http://{}:{}/users.php".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - # 2 | setWindowSize | 1200x828 | - self.driver.set_window_size(1200, 828) - - # def test_addusers(self, params): - # """Test name: simplelogin.""" - # # Step # | name | target | value - # # 1 | open | /wp-login.php | - # self.driver.get("http://{}:{}/wp-admin/user-new.php".format(params["server"], params["port"])) # pylint: disable=consider-using-f-string disable=line-too-long - # # 2 | setWindowSize | 1200x828 | - # self.driver.set_window_size(1200, 828) - # self.driver.find_element(By.ID, "user_login").send_keys("user3") - # # 10 | type | id=email | user3 - # self.driver.find_element(By.ID, "email").send_keys("user3") - # # 11 | type | id=email | user3@abc.com - # self.driver.find_element(By.ID, "email").send_keys("user3@abc.com") - # # 12 | type | id=first_name | user3 - # self.driver.find_element(By.ID, "first_name").send_keys("user3") - # # 13 | type | id=last_name | user3 - # self.driver.find_element(By.ID, "last_name").send_keys("user3") - # # 14 | type | id=url | user3 - # self.driver.find_element(By.ID, "url").send_keys("user3") - # # 15 | click | id=pass1 | - # self.driver.find_element(By.ID, "pass1").click() - # # 16 | type | id=pass1 | simplepassword - # self.driver.find_element(By.ID, "pass1").send_keys("simplepassword") - # # 17 | click | name=pw_weak | - # self.driver.find_element(By.NAME, "pw_weak").click() - # # 18 | click | id=createusersub | - # self.driver.find_element(By.ID, "createusersub").click() - - # def test_options_general(self, params): - # """Test name: simplelogin.""" - # # Step # | name | target | value - # # 1 | open | /wp-login.php | - # self.driver.get("http://{}:{}/wp-admin/options-general.php".format(params["server"], params["port"])) # pylint: disable=consider-using-f-string disable=line-too-long - # # 2 | setWindowSize | 1200x828 | - # self.driver.set_window_size(1200, 828) - # # 21 | click | id=start_of_week | - # self.driver.find_element(By.ID, "start_of_week").click() - # # 22 | select | id=start_of_week | label=Tuesday - # dropdown = self.driver.find_element(By.ID, "start_of_week") - # dropdown.find_element(By.XPATH, "//option[. = 'Tuesday']").click() - # # 23 | click | id=submit | - # self.driver.find_element(By.ID, "submit").click() - - def test_simplelogin(self, params): - """Test name: simplelogin.""" - # Step # | name | target | value - # 1 | open | /wp-login.php | - self.driver.get( - "http://{}:{}/wp-login.php".format( - params["server"], - params["port"])) # pylint: disable=consider-using-f-string - # 2 | setWindowSize | 1200x828 | - self.driver.set_window_size(1200, 828) - # 3 | type | id=user_login | user - self.driver.find_element(By.ID, "user_login").send_keys("user") - # 4 | type | id=user_pass | bitnami - self.driver.find_element(By.ID, "user_pass").send_keys("bitnami") - # 5 | click | id=wp-submit | - self.driver.find_element(By.ID, "wp-submit").click() diff --git a/community_images/wordpress/ironbank/.rfignore b/community_images/wordpress/ironbank/.rfignore deleted file mode 100644 index bd036ec246..0000000000 --- a/community_images/wordpress/ironbank/.rfignore +++ /dev/null @@ -1 +0,0 @@ -usr/share/licenses diff --git a/community_images/wordpress/ironbank/README.md b/community_images/wordpress/ironbank/README.md deleted file mode 100644 index 8f60415792..0000000000 --- a/community_images/wordpress/ironbank/README.md +++ /dev/null @@ -1,141 +0,0 @@ - -RapidFort - - -
    - -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Wordpress Ironbank - -RapidFort’s container optimization process hardened this Wordpress Ironbank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Wordpress Ironbank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
    - -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

    Vulnerabilities: Original vs. Hardened - -

    - -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
    -
    - - -## What is Wordpress Ironbank? - -> WordPress gives you everything you need to start your website today. Free hosting, your own domain, a world-class support team, and so much more - - -[Overview of Wordpress Ironbank](https://wordpress.com/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Wordpress Ironbank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
    -
    - -```sh -# Using docker run -$ docker run -d -p 8080:8080 -p 4443:8443 -e ALLOW_EMPTY_PASSWORD=yes-e WORDPRESS_DATABASE_HOST=mariadb -e WORDPRESS_DATABASE_PORT_NUMBER=3306 -e WORDPRESS_DATABASE_USER=ib_wordpress -e WORDPRESS_DATABASE_NAME=ironbank_wordpress rapidfort/wordpress-ib - -# Then, access it via http://localhost:8080/ or http://:8080/ in a browser. - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Wordpress Ironbank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
    -
    - -## What’s the difference between the official [Platform One Wordpress Ironbank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/wordpress-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
    -
    - - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=wordpress-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fwordpress%2Fwordpress?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=wordpress-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fwordpress%2Fwordpress?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=wordpress-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fwordpress%2Fwordpress?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=wordpress-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fwordpress%2Fwordpress?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=wordpress-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fwordpress%2Fwordpress?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=wordpress-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/wordpress-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/wordpress-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/wordpress/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/wordpress/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fwordpress%2Fwordpress -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/wordpress-ib diff --git a/community_images/wordpress/ironbank/assets/cve_reduction.webp b/community_images/wordpress/ironbank/assets/cve_reduction.webp deleted file mode 100644 index 53dad6d3fe2bf0fe3fe47192b6c9e1699e40d329..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1746 zcmb`HdpOf;9Khcp%w^KmVKSGMIh1l->cq;5)Wg<9?h3QYFf&IsOuEr=a>mDvReC zc@+S=DF75R7JWgv092j?K&NZbXTk+Q>jVJzTd4kAI54xT zux-F0d=uN*#MsEttZD=#X{M4Q-UblM2XGSCi9h#Z5nW>gwMken`+ypaNXuCe7slKs zyYwtY^i-1jK+;Xg6)+AM@L4=Y7Wvlj*sQ~oUVdy-oyV@v*s?q49Bl%_3)nGl?yxh5 zCsRXO37D1lGVrn*mW{BTY06`ft^rwrNV1F%@bX)cKY42cUs$& z(9;(ISePxrws4I)%=1>{7)8EX$hE&WF0?PzYwYo;nm(kT9SRHZiHYIj>#TT6N#L^4 z=gS9%=~_RpVT#T2W7hiC-w@AHu6f<6bThUt6>gs1ptbHkf94(cBKy;1{N2^0r{jgHA3E)w?5sJQw%2X- zw^e;Z%I@zme#h9-;($#CdP0Mtz1aGLFE#csd!}z?!Me%ykx6r%<#}N6s&^ zs1zK+tKBTxuqv7E51NQ@H{B)m!YS|cF>yLu@lg8<*e8DwG8e7bJw|aH->CEOn5k3) zbInaAZjh~;mujb~1o>;Q(v2O8t<*0JxOl8Q`ZiDpL3#Tw6a8${?VAtcD8m?O_V3r? z&G~QnlJ4q)%-T=qYqe(Jp)x5elGQODm1tWKVjWg@>3T3G$j@BlY9jkl{ZP3BQ_x6O z5JY(k>M|4VPIck-Pst2~NqM%Rb^X^PN6L{$swd$eo-pxjC27Cq2>%f$W#BL6<6|v% zg48uVQae>_ITHc{m?aNcb>pH(A(ay&@ogyGa`v!(XjW-4S+aUqmpCzmZDsbQSLZ$` zTtk1jTd~mQ5pDfX`b&!xi!q9N1?g7XQFFuEzw$f0uT;lsBf?08R-wC*^YrqmIfJbu zM{u1@eyT~VojvH2W@b&5dkk*&K9>EqEdQJ|_F-R{skN5yR!e(eZ&1$bA}36BSt~VO zSl*!B6cAA$-mKTx^@333N7B!qt(eVGjxg)UU7N#0YM-jwd-CjOo)o>0ka;A^0{eVN KY)_H=pZgn1(x5Z| diff --git a/community_images/wordpress/ironbank/assets/metrics.webp b/community_images/wordpress/ironbank/assets/metrics.webp deleted file mode 100644 index 82751b4e0fcc9f9d8026e3a2f1f3dcc735165b99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22378 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 diff --git a/community_images/wordpress/ironbank/dc_coverage.sh b/community_images/wordpress/ironbank/dc_coverage.sh deleted file mode 100755 index e77380f25c..0000000000 --- a/community_images/wordpress/ironbank/dc_coverage.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -WORDPRESS_PORT='8080' -"${SCRIPTPATH}"/../../common/selenium_tests/runner-dc.sh "${PROJECT_NAME}" "${WORDPRESS_PORT}" "${SCRIPTPATH}"/selenium_tests 2>&1 diff --git a/community_images/wordpress/ironbank/docker-compose.yml b/community_images/wordpress/ironbank/docker-compose.yml deleted file mode 100644 index 3870966b2d..0000000000 --- a/community_images/wordpress/ironbank/docker-compose.yml +++ /dev/null @@ -1,43 +0,0 @@ -version: '2' - -services: - mariadb: - image: docker.io/rapidfort/mariadb - volumes: - - 'mariadb_data:/ironbank/mariadb' - environment: - # ALLOW_EMPTY_PASSWORD is recommended only for development. - - ALLOW_EMPTY_PASSWORD=yes - - MARIADB_USER=ib_wordpress - - MARIADB_DATABASE=ironbank_wordpress - - wordpress-ib: - image: ${WORDPRESS_IMAGE_REPOSITORY}:${WORDPRESS_IMAGE_TAG} - - user: root - cap_add: - - SYS_PTRACE - ports: - - '8080:8080' - - '4443:8443' - volumes: - - 'wordpress_data:/ironbank/wordpress' - - ./certs/server.crt:/etc/pki/tls/certs/localhost.crt - - ./certs/server.key:/etc/pki/tls/private/localhost.key - - ./certs/server.crt:/usr/local/apache2/conf/server.crt - - ./certs/server.key:/usr/local/apache2/conf/server.key - - depends_on: - - mariadb - environment: - # ALLOW_EMPTY_PASSWORD is recommended only for development. - - ALLOW_EMPTY_PASSWORD=yes - - WORDPRESS_DATABASE_HOST=mariadb - - WORDPRESS_DATABASE_PORT_NUMBER=3306 - - WORDPRESS_DATABASE_USER=ib_wordpress - - WORDPRESS_DATABASE_NAME=ironbank_wordpress -volumes: - mariadb_data: - driver: local - wordpress_data: - driver: local diff --git a/community_images/wordpress/ironbank/image.yml b/community_images/wordpress/ironbank/image.yml deleted file mode 100644 index e48f7f6899..0000000000 --- a/community_images/wordpress/ironbank/image.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: wordpress-ib -official_name: Wordpress Ironbank -official_website: https://wordpress.com/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/wordpress/wordpress -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fwordpress%2Fwordpress -source_image_readme: https://repo1.dso.mil/dsop/opensource/wordpress/wordpress/-/blob/development/README.md -rf_docker_link: rapidfort/wordpress-ib -github_location: wordpress/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fwordpress%2Fwordpress -usage_instructions: | - # Using docker run - $ docker run -d -p 8080:8080 -p 4443:8443 -e ALLOW_EMPTY_PASSWORD=yes-e WORDPRESS_DATABASE_HOST=mariadb -e WORDPRESS_DATABASE_PORT_NUMBER=3306 -e WORDPRESS_DATABASE_USER=ib_wordpress -e WORDPRESS_DATABASE_NAME=ironbank_wordpress rapidfort/wordpress-ib - - # Then, access it via http://localhost:8080/ or http://:8080/ in a browser. -what_is_text: | - WordPress gives you everything you need to start your website today. Free hosting, your own domain, a world-class support team, and so much more -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/wordpress/wordpress: - input_base_tag: "6.2." - output_repo: wordpress-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - wordpress-ib: - repository: "WORDPRESS_IMAGE_REPOSITORY" - tag: "WORDPRESS_IMAGE_TAG" diff --git a/community_images/wordpress/ironbank/selenium_tests/__init__.py b/community_images/wordpress/ironbank/selenium_tests/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/community_images/wordpress/ironbank/selenium_tests/conftest.py b/community_images/wordpress/ironbank/selenium_tests/conftest.py deleted file mode 100644 index ce945b43c0..0000000000 --- a/community_images/wordpress/ironbank/selenium_tests/conftest.py +++ /dev/null @@ -1,23 +0,0 @@ -"""The conftest file for running selenium test.""" -# pylint: skip-file - -# conftest.py -import pytest # pylint: disable=import-error - - -def pytest_addoption(parser): - """The function to add options""" - parser.addoption("--server", action="store", help="wordpress server") - parser.addoption("--port", action="store", - help="port for wordpress container") - - -@pytest.fixture -def params(request): - """the params""" - config_params = {} - config_params['server'] = request.config.getoption('--server') - config_params['port'] = request.config.getoption('--port') - if config_params['server'] is None or config_params['port'] is None: - pytest.skip() - return config_params diff --git a/community_images/wordpress/ironbank/selenium_tests/wordpress_selenium_test.py b/community_images/wordpress/ironbank/selenium_tests/wordpress_selenium_test.py deleted file mode 100644 index 927b28ca50..0000000000 --- a/community_images/wordpress/ironbank/selenium_tests/wordpress_selenium_test.py +++ /dev/null @@ -1,129 +0,0 @@ -"""The selenium test.""" -# pylint: skip-file - -# Generated by Selenium IDE -import json # pylint: disable=import-error disable=unused-import -import time # pylint: disable=import-error disable=unused-import -import pytest # pylint: disable=import-error disable=unused-import -from selenium import webdriver # pylint: disable=import-error -from selenium.webdriver.chrome.options import Options # pylint: disable=import-error -from selenium.webdriver.common.by import By # pylint: disable=import-error -from selenium.webdriver.common.action_chains import ActionChains # pylint: disable=import-error disable=unused-import -from selenium.webdriver.support import expected_conditions # pylint: disable=import-error disable=unused-import -from selenium.webdriver.support.wait import WebDriverWait # pylint: disable=import-error disable=unused-import -from selenium.webdriver.common.keys import Keys # pylint: disable=import-error disable=unused-import -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # pylint: disable=import-error disable=unused-import - - -class TestWordpresstest1(): - """The test word press class for testing wordpress image.""" - - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_initializationdatabases(self, params): - # Test name: initialization_databases - # Step # | name | target | value | - # 1 | open | /wp-admin/setup-config.php | - self.driver.get( - "http://localhost:{}/wp-admin/setup-config.php".format( - params["port"])) # pylint: disable=consider-using-f-string - # 2 | setWindowSize | 727x785 | - self.driver.set_window_size(727, 785) - # 3 | click | id=language-continue | - self.driver.find_element(By.ID, "language-continue").click() - # 4 | click | linkText=Let’s go! | - self.driver.find_element(By.LINK_TEXT, "Let’s go!").click() - # 5 | click | id=dbname | - self.driver.find_element(By.ID, "dbname").click() - # 6 | type | id=dbname | ironbank_wordpress | - self.driver.find_element(By.ID, "dbname").send_keys("ironbank_wordpress") - # 7 | click | id=uname | - self.driver.find_element(By.ID, "uname").click() - # 8 | type | id=uname | ib_wordpress | - self.driver.find_element(By.ID, "uname").send_keys("ib_wordpress") - # 9 | click | id=dbhost | - self.driver.find_element(By.ID, "dbhost").click() - # 10 | type | id=dbhost | mariadb | - self.driver.find_element(By.ID, "dbhost").send_keys("\b\b\b\b\b\b\b\b\bmariadb") - # 11 | click | name=submit | - self.driver.find_element(By.NAME, "submit").click() - # 12 | click | linkText=Run the installation | - self.driver.find_element(By.LINK_TEXT, "Run the installation").click() - - # 13 | open | /wp-admin/install.php?language=en_US | - self.driver.get( - "http://localhost:{}/wp-admin/install.php?language=en_US".format( - params["port"])) # pylint: disable=consider-using-f-string - - # 14 | click | id=weblog_title | - self.driver.find_element(By.ID, "weblog_title").click() - # 15 | type | id=weblog_title | rf-site-wordpress-ib | - self.driver.find_element(By.ID, "weblog_title").send_keys("rf-site-wordpress-ib") - # 16 | click | id=user_login | - self.driver.find_element(By.ID, "user_login").click() - # 17 | type | id=user_login | ib_wordpress_user | - self.driver.find_element(By.ID, "user_login").send_keys("ib_wordpress_user") - # 18 | click | id=admin_email | - self.driver.find_element(By.ID, "admin_email").click() - # 19 | type | id=admin_email | my@mymail.com | - self.driver.find_element(By.ID, "admin_email").send_keys("my@mymail.com") - # 20 | click | id=submit | - self.driver.find_element(By.ID, "submit").click() - - def test_wordpresstest1(self, params): - """test wordpress.""" - # Test name: wordpress-test-1 - # Step # | name | target | value - # 1 | open | / | - self.driver.get( - "http://localhost:{}/".format( - params["port"])) # pylint: disable=consider-using-f-string - # 2 | setWindowSize | 1095x688 | - self.driver.set_window_size(1095, 688) - # 3 | click | linkText=Hello world! | - self.driver.find_element(By.LINK_TEXT, "Hello world!").click() - # 4 | click | id=comment | - self.driver.find_element(By.ID, "comment").click() - # 5 | type | id=comment | hello - self.driver.find_element(By.ID, "comment").send_keys("hello") - # 6 | click | id=author | - self.driver.find_element(By.ID, "author").click() - # 7 | type | id=author | hello - self.driver.find_element(By.ID, "author").send_keys("hello") - # 8 | type | id=email | hello@abc.com - self.driver.find_element(By.ID, "email").send_keys("hello@abc.com") - # 9 | type | id=url | http://hello.com - self.driver.find_element(By.ID, "url").send_keys("http://hello.com") - # 10 | click | id=submit | - self.driver.find_element(By.ID, "submit").click() - - def test_simplelogin(self, params): - """Test name: simplelogin.""" - # Step # | name | target | value - # 1 | open | /wp-login.php | - self.driver.get( - "http://localhost:{}/wp-login.php".format( - params["port"])) # pylint: disable=consider-using-f-string - # 2 | setWindowSize | 1200x828 | - self.driver.set_window_size(1200, 828) - # 3 | type | id=user_login | user - self.driver.find_element(By.ID, "user_login").send_keys("user") - # 4 | type | id=user_pass | bitnami - self.driver.find_element(By.ID, "user_pass").send_keys("bitnami") - # 5 | click | id=wp-submit | - self.driver.find_element(By.ID, "wp-submit").click() diff --git a/community_images/yourls/official/README.md b/community_images/yourls/official/README.md deleted file mode 100755 index f4e1b28ead..0000000000 --- a/community_images/yourls/official/README.md +++ /dev/null @@ -1,141 +0,0 @@ - -RapidFort - - -
    - -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for YOURLS - -RapidFort’s container optimization process hardened this YOURLS container. This container is free to use and has no license limitations. - -It is the same as the [YOURLS YOURLS][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
    - -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

    Vulnerabilities: Original vs. Hardened - -

    - -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
    -
    - - -## What is YOURLS? - -> YOURLS is a set of PHP scripts that will allow you to run Your Own URL Shortener. You'll have full control over your data, detailed stats, analytics, plugins, and more. It's free. - - -[Overview of YOURLS](https://yourls.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened YOURLS image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
    -
    - -```sh -# Using docker run: -$ docker run --name some-yourls --link some-mysql:mysql -p 8080:80 -d rapidfort/yourls -# Then, access it via http://localhost:8080/admin/ or http://:8080/admin/ in a browser. - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [YOURLS YOURLS][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
    -
    - -## What’s the difference between the official [YOURLS YOURLS][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/yourls][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`1.9.1-apache`, `1.9-apache`, `1-apache`, `apache`, `1.9.1`, `1.9`, `1`, `latest`](https://github.com/YOURLS/docker/blob/38f550a34a4eb96419d9d3ebabe802c439103218/apache/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
    -
    - - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=yourls&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fyourls?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=yourls&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fyourls?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=yourls&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fyourls?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=yourls&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fyourls?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=yourls&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fyourls?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=yourls&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/yourls?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/yourls?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/yourls/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/yourls/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/yourls -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/yourls diff --git a/community_images/yourls/official/assets/cve_reduction.webp b/community_images/yourls/official/assets/cve_reduction.webp deleted file mode 100644 index 21b8b7c5f3e38b8a00ee4fd80facb6323f2fbbc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1778 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 n+flXnie^F^/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -CONTAINER_NAME="${PROJECT_NAME}"-yourls-1 - -# Wait for all mysql server to set up -sleep 60 - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# find non-tls and tls port -docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort" -PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"80/tcp\"[0].HostPort") - -# Initiating Selenium tests -"${SCRIPTPATH}"/../../common/selenium_tests/runner-dc.sh "${PROJECT_NAME}" "${PORT}" "${SCRIPTPATH}"/selenium_tests 2>&1 diff --git a/community_images/yourls/official/docker-compose.yml b/community_images/yourls/official/docker-compose.yml deleted file mode 100755 index bd12188082..0000000000 --- a/community_images/yourls/official/docker-compose.yml +++ /dev/null @@ -1,43 +0,0 @@ -version: '2' - -services: - - db: - image: rapidfort/mysql - expose: - - 3306 - volumes: - - ${MYSQL_VOLUME:-mysql-volume}:/var/lib/mysql:Z - environment: - - MYSQL_ROOT_PASSWORD=coolpassword - - MYSQL_DATABASE=yourls - cap_add: - - SYS_PTRACE - - yourls: - image: ${YOURLS_IMAGE_REPOSITORY}:${YOURLS_IMAGE_TAG} - restart: always - depends_on: - - db - links: - - db:mysql - ports: - - "0.0.0.0::80" - environment: - - YOURLS_USER=rapidfortbot - - YOURLS_PASS=rapidpassword - - YOURLS_DB_USER=root - - YOURLS_DB_PASS=coolpassword - - YOURLS_DB_NAME=yourls - - YOURLS_DEBUG=false - - YOURLS_USERS=default:default - - YOURLS_SITE=http://localhost - - YOURLS_INDEX_WEBSITE=https://yourls.org - - YOURLS_ADMIN_SSL=false - - YOURLS_UNIQUE_URLS=false - cap_add: - - SYS_PTRACE - -volumes: - mysql-volume: - driver: local \ No newline at end of file diff --git a/community_images/yourls/official/image.yml b/community_images/yourls/official/image.yml deleted file mode 100755 index a6bd9e824c..0000000000 --- a/community_images/yourls/official/image.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: yourls -official_name: YOURLS -official_website: https://yourls.org/ -source_image_provider: YOURLS -source_image_repo: docker.io/library/yourls -source_image_repo_link: https://hub.docker.com/_/yourls -source_image_readme: https://github.com/docker-library/docs/blob/master/yourls/README.md -rf_docker_link: rapidfort/yourls -image_workflow_name: yourls_official -github_location: yourls/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fyourls -usage_instructions: | - # Using docker run: - $ docker run --name some-yourls --link some-mysql:mysql -p 8080:80 -d rapidfort/yourls - # Then, access it via http://localhost:8080/admin/ or http://:8080/admin/ in a browser. -what_is_text: | - YOURLS is a set of PHP scripts that will allow you to run Your Own URL Shortener. You'll have full control over your data, detailed stats, analytics, plugins, and more. It's free. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`1.9.1-apache`, `1.9-apache`, `1-apache`, `apache`, `1.9.1`, `1.9`, `1`, `latest`](https://github.com/YOURLS/docker/blob/38f550a34a4eb96419d9d3ebabe802c439103218/apache/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - yourls: - input_base_tag: "1.9.*-apache" -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - wait_time_sec: 70 - tls_certs: - generate: true - out_dir: certs - image_keys: - yourls: - repository: "YOURLS_IMAGE_REPOSITORY" - tag: "YOURLS_IMAGE_TAG" - diff --git a/community_images/yourls/official/selenium_tests/conftest.py b/community_images/yourls/official/selenium_tests/conftest.py deleted file mode 100644 index c08a336eb9..0000000000 --- a/community_images/yourls/official/selenium_tests/conftest.py +++ /dev/null @@ -1,23 +0,0 @@ -"""The conftest file for running selenium test.""" -# pylint: skip-file - -# conftest.py -import pytest # pylint: disable=import-error - - -def pytest_addoption(parser): - """The function to add options""" - parser.addoption("--server", action="store", help="wordpress server") - parser.addoption("--port", action="store", - help="port on host linked to yourls container") - - -@pytest.fixture -def params(request): - """the params""" - config_params = {} - config_params['server'] = request.config.getoption('--server') - config_params['port'] = request.config.getoption('--port') - if config_params['server'] is None or config_params['port'] is None: - pytest.skip() - return config_params diff --git a/community_images/yourls/official/selenium_tests/test_yourlsuitest.py b/community_images/yourls/official/selenium_tests/test_yourlsuitest.py deleted file mode 100644 index 937b443214..0000000000 --- a/community_images/yourls/official/selenium_tests/test_yourlsuitest.py +++ /dev/null @@ -1,69 +0,0 @@ -# Generated by Selenium IDE -# pylint: skip-file - -import pytest -import time -import json -from selenium import webdriver -from selenium.webdriver.chrome.options import Options -from selenium.webdriver.common.by import By -from selenium.webdriver.common.action_chains import ActionChains -from selenium.webdriver.support import expected_conditions -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities - - -class TestYourlsuitest(): - def setup_method(self, method): # pylint: disable=unused-argument - """setup method.""" - chrome_options = Options() - chrome_options.add_argument("--headless") - chrome_options.add_argument('--disable-dev-shm-usage') - chrome_options.add_argument("disable-infobars") - chrome_options.add_argument("--disable-extensions") - chrome_options.add_argument("--disable-gpu") - chrome_options.add_argument("--no-sandbox") - self.driver = webdriver.Chrome( - options=chrome_options) # pylint: disable=attribute-defined-outside-init - self.driver.implicitly_wait(10) - - def teardown_method(self, method): # pylint: disable=unused-argument - """teardown method.""" - self.driver.quit() - - def test_yourlsuitest(self, params): - # Navigating to Initial Installation Page - self.driver.get("http://localhost:{}/admin/install.php".format(params["port"])) - # Setting Window Size - self.driver.set_window_size(533, 876) - self.driver.find_element(By.NAME, "install").click() - # Navigating to Admin Page - self.driver.find_element(By.LINK_TEXT, "YOURLS Administration Page").click() - self.driver.get("http://localhost:{}/admin/".format(params["port"])) - # Logging in - self.driver.find_element(By.ID, "username").send_keys("rapidfortbot") - self.driver.find_element(By.ID, "password").send_keys("rapidpassword") - self.driver.find_element(By.ID, "submit").click() - # Adding test url - self.driver.find_element(By.ID, "add-url").send_keys("https://www.rapidfort.com") - self.driver.find_element(By.ID, "add-button").click() - # Enabling Plugins - self.driver.find_element(By.LINK_TEXT, "Manage Plugins").click() - self.driver.get("http://localhost:{}/admin/plugins.php".format(params["port"])) - element = self.driver.find_element(By.CSS_SELECTOR, ".plugin:nth-child(2) > .plugin_author > a") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - self.driver.find_element(By.LINK_TEXT, "Activate").click() - # Navigating to Tools page - self.driver.get("http://localhost:{}/admin/tools.php".format(params["port"])) - # Navigating to Admin Page - self.driver.get("http://localhost:{}/admin/".format(params["port"])) - element = self.driver.find_element(By.ID, "clicks-yid1") - actions = ActionChains(self.driver) - actions.move_to_element(element).perform() - # Viewing Stats - self.driver.find_element(By.ID, "statlink-yid1").click() - # Logging out - self.driver.get("http://localhost:{}/admin/tools.php".format(params["port"])) - self.driver.find_element(By.LINK_TEXT, "Logout").click() \ No newline at end of file diff --git a/community_images/yourls/official/selenium_tests/yourls.side b/community_images/yourls/official/selenium_tests/yourls.side deleted file mode 100644 index 6ea793c4cf..0000000000 --- a/community_images/yourls/official/selenium_tests/yourls.side +++ /dev/null @@ -1,239 +0,0 @@ -{ - "id": "40f624e5-ae70-4038-a2d6-6ded16d3fcf6", - "version": "2.0", - "name": "YoURLs", - "url": "http://localhost", - "tests": [{ - "id": "617109e7-f2a4-411c-baaf-682dc4a5dee3", - "name": "yourls-ui-test", - "commands": [{ - "id": "6c895219-dd4e-49de-8268-24a1c5a10602", - "comment": "", - "command": "open", - "target": "/admin/install.php", - "targets": [], - "value": "" - }, { - "id": "bab11ed8-0cf9-4493-aa6c-ac19000116ec", - "comment": "", - "command": "setWindowSize", - "target": "533x876", - "targets": [], - "value": "" - }, { - "id": "f728ffb2-a560-48f0-905a-bc4a1017b241", - "comment": "", - "command": "click", - "target": "name=install", - "targets": [ - ["name=install", "name"], - ["css=.button", "css:finder"], - ["xpath=//input[@name='install']", "xpath:attributes"], - ["xpath=//div[@id='login']/form/p[2]/input", "xpath:idRelative"], - ["xpath=//input", "xpath:position"] - ], - "value": "" - }, { - "id": "cf9f87b7-da40-400b-a3ba-dcde1b4eb7b8", - "comment": "", - "command": "click", - "target": "linkText=YOURLS Administration Page", - "targets": [ - ["linkText=YOURLS Administration Page", "linkText"], - ["css=p:nth-child(3) > a", "css:finder"], - ["xpath=//a[contains(text(),'YOURLS Administration Page')]", "xpath:link"], - ["xpath=//div[@id='login']/form/p[2]/a", "xpath:idRelative"], - ["xpath=//a[@href='http://localhost/admin/']", "xpath:href"], - ["xpath=//a", "xpath:position"], - ["xpath=//a[contains(.,'YOURLS Administration Page')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "a5c46454-6663-40a0-9db1-c4a3d84e25d4", - "comment": "", - "command": "type", - "target": "id=username", - "targets": [ - ["id=username", "id"], - ["name=username", "name"], - ["css=#username", "css:finder"], - ["xpath=//input[@id='username']", "xpath:attributes"], - ["xpath=//div[@id='login']/form/p[2]/input", "xpath:idRelative"], - ["xpath=//input", "xpath:position"] - ], - "value": "rapidfortbot" - }, { - "id": "daa9154c-fb66-4048-b00e-41eb2f0bf04f", - "comment": "", - "command": "type", - "target": "id=password", - "targets": [ - ["id=password", "id"], - ["name=password", "name"], - ["css=#password", "css:finder"], - ["xpath=//input[@id='password']", "xpath:attributes"], - ["xpath=//div[@id='login']/form/p[3]/input", "xpath:idRelative"], - ["xpath=//p[3]/input", "xpath:position"] - ], - "value": "rapidpassword" - }, { - "id": "a9f9c533-e873-49d2-ab5f-cf8367a49958", - "comment": "", - "command": "click", - "target": "id=submit", - "targets": [ - ["id=submit", "id"], - ["name=submit", "name"], - ["css=#submit", "css:finder"], - ["xpath=//input[@id='submit']", "xpath:attributes"], - ["xpath=//div[@id='login']/form/p[4]/input[2]", "xpath:idRelative"], - ["xpath=//input[2]", "xpath:position"] - ], - "value": "" - }, { - "id": "2d15cca1-02da-42aa-a159-85b6df5eb8bc", - "comment": "", - "command": "type", - "target": "id=add-url", - "targets": [ - ["id=add-url", "id"], - ["name=url", "name"], - ["css=#add-url", "css:finder"], - ["xpath=//input[@id='add-url']", "xpath:attributes"], - ["xpath=//form[@id='new_url_form']/div/input", "xpath:idRelative"], - ["xpath=//input", "xpath:position"] - ], - "value": "https://www.rapidfort.com" - }, { - "id": "2d3493aa-7149-41fe-826b-922cc6f3129b", - "comment": "", - "command": "click", - "target": "id=add-button", - "targets": [ - ["id=add-button", "id"], - ["name=add-button", "name"], - ["css=#add-button", "css:finder"], - ["xpath=//input[@id='add-button']", "xpath:attributes"], - ["xpath=//form[@id='new_url_form']/div/input[4]", "xpath:idRelative"], - ["xpath=//input[4]", "xpath:position"] - ], - "value": "" - }, { - "id": "ecacd173-08a1-4cfd-9ad5-76088b53d401", - "comment": "", - "command": "click", - "target": "linkText=Manage Plugins", - "targets": [ - ["linkText=Manage Plugins", "linkText"], - ["css=#admin_menu_plugins_link > a", "css:finder"], - ["xpath=//a[contains(text(),'Manage Plugins')]", "xpath:link"], - ["xpath=//li[@id='admin_menu_plugins_link']/a", "xpath:idRelative"], - ["xpath=//a[@href='http://localhost/admin/plugins.php']", "xpath:href"], - ["xpath=//li[4]/a", "xpath:position"], - ["xpath=//a[contains(.,'Manage Plugins')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "84f5ca71-15ea-43fe-b8dc-4dbc4fe341b3", - "comment": "", - "command": "click", - "target": "linkText=Activate", - "targets": [ - ["linkText=Activate", "linkText"], - ["css=.plugin:nth-child(2) > .plugin_actions > a", "css:finder"], - ["xpath=(//a[contains(text(),'Activate')])[2]", "xpath:link"], - ["xpath=//table[@id='main_table']/tbody/tr[2]/td[5]/a", "xpath:idRelative"], - ["xpath=//a[@href='http://localhost/admin/plugins.php?action=activate&plugin=random-bg&nonce=b6773e6af9']", "xpath:href"], - ["xpath=//tr[2]/td[5]/a", "xpath:position"] - ], - "value": "" - }, { - "id": "2325bbc1-1814-4b11-a244-a4f50b1be2f6", - "comment": "", - "command": "click", - "target": "linkText=Tools", - "targets": [ - ["linkText=Tools", "linkText"], - ["css=#admin_menu_tools_link > a", "css:finder"], - ["xpath=//a[contains(text(),'Tools')]", "xpath:link"], - ["xpath=//li[@id='admin_menu_tools_link']/a", "xpath:idRelative"], - ["xpath=//a[@href='http://localhost/admin/tools.php']", "xpath:href"], - ["xpath=//li[3]/a", "xpath:position"], - ["xpath=//a[contains(.,'Tools')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "afae400e-11a2-45e8-bf52-1212f0a5cee7", - "comment": "", - "command": "click", - "target": "linkText=Admin interface", - "targets": [ - ["linkText=Admin interface", "linkText"], - ["css=#admin_menu_admin_link > a", "css:finder"], - ["xpath=//a[contains(text(),'Admin interface')]", "xpath:link"], - ["xpath=//li[@id='admin_menu_admin_link']/a", "xpath:idRelative"], - ["xpath=(//a[@href='http://localhost/admin/index.php'])[2]", "xpath:href"], - ["xpath=//li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'Admin interface')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "f77415ea-02ea-4b43-afdf-320260ae914c", - "comment": "", - "command": "click", - "target": "id=statlink-yid1", - "targets": [ - ["id=statlink-yid1", "id"], - ["linkText=Stats", "linkText"], - ["css=#statlink-yid1", "css:finder"], - ["xpath=//a[contains(text(),'Stats')]", "xpath:link"], - ["xpath=//a[@id='statlink-yid1']", "xpath:attributes"], - ["xpath=//td[@id='actions-yid1']/a", "xpath:idRelative"], - ["xpath=//a[@href='http://localhost/1+']", "xpath:href"], - ["xpath=//td[6]/a", "xpath:position"], - ["xpath=//a[contains(.,'Stats')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "dd850ef7-5d80-4d43-84c7-79876656b438", - "comment": "", - "command": "click", - "target": "linkText=Admin interface", - "targets": [ - ["linkText=Admin interface", "linkText"], - ["css=#admin_menu_admin_link > a", "css:finder"], - ["xpath=//a[contains(text(),'Admin interface')]", "xpath:link"], - ["xpath=//li[@id='admin_menu_admin_link']/a", "xpath:idRelative"], - ["xpath=(//a[@href='http://localhost/admin/index.php'])[2]", "xpath:href"], - ["xpath=//li[2]/a", "xpath:position"], - ["xpath=//a[contains(.,'Admin interface')]", "xpath:innerText"] - ], - "value": "" - }, { - "id": "83ce2aba-276c-40aa-b163-44f9e4acca28", - "comment": "", - "command": "click", - "target": "linkText=Logout", - "targets": [ - ["linkText=Logout", "linkText"], - ["css=#admin_menu_logout_link > a", "css:finder"], - ["xpath=//a[contains(text(),'Logout')]", "xpath:link"], - ["xpath=//li[@id='admin_menu_logout_link']/a", "xpath:idRelative"], - ["xpath=//a[@href='http://localhost/admin/index.php?action=logout&nonce=ae3ed1ca03']", "xpath:href"], - ["xpath=//li/a", "xpath:position"], - ["xpath=//a[contains(.,'Logout')]", "xpath:innerText"] - ], - "value": "" - }] - }], - "suites": [{ - "id": "83e2fb36-2b0f-4b83-ba57-d3c49028ce5c", - "name": "Default Suite", - "persistSession": false, - "parallel": false, - "timeout": 300, - "tests": ["617109e7-f2a4-411c-baaf-682dc4a5dee3"] - }], - "urls": ["http://localhost/"], - "plugins": [] -} \ No newline at end of file diff --git a/community_images/yugabyte/yugabytedb/README.md b/community_images/yugabyte/yugabytedb/README.md deleted file mode 100755 index f44f41c292..0000000000 --- a/community_images/yugabyte/yugabytedb/README.md +++ /dev/null @@ -1,150 +0,0 @@ - -RapidFort - - -
    - -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Yugabyte - -RapidFort’s container optimization process hardened this Yugabyte container. This container is free to use and has no license limitations. - -It is the same as the [yugabyteDB Yugabyte][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
    - -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

    Vulnerabilities: Original vs. Hardened - -

    - -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
    -
    - - -## What is Yugabyte? - -> YugabyteDB is a high-performance, cloud-native, distributed SQL database that aims to support all PostgreSQL features. It is best suited for cloud-native OLTP (i.e., real-time, business-critical) applications that need absolute data correctness and require at least one of the following: scalability, high tolerance to failures, or globally-distributed deployments. - - -[Overview of Yugabyte](https://www.yugabyte.com/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Yugabyte image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
    -
    - -```sh -$ helm repo add yugabytedb https://charts.yugabyte.com - -# install mariadb, just replace repository with RapidFort registry -$ helm install yb-demo yugabytedb/yugabyte \ - --set image.repository=rapidfort/yugabyte - --version 2.15.3 \ - --set resource.master.requests.cpu=0.5,resource.master.requests.memory=0.5Gi,\ - resource.tserver.requests.cpu=0.5,resource.tserver.requests.memory=0.5Gi,\ - replicas.master=1,replicas.tserver=1 --namespace yb-demo - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [yugabyteDB Yugabyte][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
    -
    - -## What’s the difference between the official [yugabyteDB Yugabyte][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/yugabyte][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`2.17`, `latest` (2.17/centos/Dockerfile)](https://github.com/yugabyte/build-infra/blob/master/docker_images/centos7/Dockerfile) -* [`2.16`, (2.16/centos/Dockerfile)](https://github.com/yugabyte/build-infra/blob/master/docker_images/centos7/Dockerfile) -* [`2.15`, (2.15/centos/Dockerfile)](https://github.com/yugabyte/build-infra/blob/master/docker_images/centos7/Dockerfile) -* [`2.14`, (2.14/centos/Dockerfile)](https://github.com/yugabyte/build-infra/blob/master/docker_images/centos7/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
    -
    - - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=yugabyte&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fyugabytedb%2Fyugabyte?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=yugabyte&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fyugabytedb%2Fyugabyte?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=yugabyte&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fyugabytedb%2Fyugabyte?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=yugabyte&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fyugabytedb%2Fyugabyte?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=yugabyte&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fyugabytedb%2Fyugabyte?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=yugabyte&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/yugabyte?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/yugabyte?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/yugabyte/yugabytedb/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/yugabyte/yugabytedb/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/yugabytedb/yugabyte -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/yugabyte diff --git a/community_images/yugabyte/yugabytedb/assets/cve_reduction.webp b/community_images/yugabyte/yugabytedb/assets/cve_reduction.webp deleted file mode 100644 index 75b48050d15d2470553d0110d7d24d44a8edabc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4714 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 diff --git a/community_images/yugabyte/yugabytedb/assets/metrics.webp b/community_images/yugabyte/yugabytedb/assets/metrics.webp deleted file mode 100644 index 6227738b1a920f99a4c53f162dd1ddbc7faf4aab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16448 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

    vOxHCFls-GA{=?Bg4FDZ|Iq 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 diff --git a/community_images/yugabyte/yugabytedb/dc_coverage.sh b/community_images/yugabyte/yugabytedb/dc_coverage.sh deleted file mode 100755 index eea0c38769..0000000000 --- a/community_images/yugabyte/yugabytedb/dc_coverage.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -set -x -set -e - -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/../../common/scripts/bash_helper.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -CONTAINER_NAME="${PROJECT_NAME}"-yugabyte-1 -YB_HOST=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "${CONTAINER_NAME}") - - -# Sleep -sleep 100 - -# log for debugging -docker inspect "${CONTAINER_NAME}" - -# wait for container to be up -docker exec -i "${CONTAINER_NAME}" ./bin/yugabyted status - -# copy test.psql into container -docker cp "${SCRIPTPATH}"/../../common/tests/test.psql "${CONTAINER_NAME}":/tmp/test.psql - -# run script -docker exec -i "${CONTAINER_NAME}" ysqlsh -h "${YB_HOST}" -p 5433 -U yugabyte -d yugabyte -f /tmp/test.psql - -# ysqlsh and ycqlsh -docker exec -i "${CONTAINER_NAME}" ysqlsh --version -docker exec -i "${CONTAINER_NAME}" ycqlsh --version - -# exercise all webpages -UI_PORT=$(docker inspect "${CONTAINER_NAME}" | jq -r ".[].NetworkSettings.Ports.\"15433/tcp\"[0].HostPort") -HTML_DIR="${SCRIPTPATH}"/html_output -mkdir -p "${HTML_DIR}" -httrack http://"${YB_HOST}":"${UI_PORT}" -O "${HTML_DIR}" -rm -rf "${HTML_DIR}" diff --git a/community_images/yugabyte/yugabytedb/docker-compose.yml b/community_images/yugabyte/yugabytedb/docker-compose.yml deleted file mode 100755 index c799cbd72c..0000000000 --- a/community_images/yugabyte/yugabytedb/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: '3' - -services: - yugabyte: - image: ${YUGABYTE_IMAGE_REPOSITORY}:${YUGABYTE_IMAGE_TAG} - cap_add: - - SYS_PTRACE - ports: - - "0.0.0.0::7000" - - "0.0.0.0::9000" - - "0.0.0.0::5433" - - "0.0.0.0::15433" - - "0.0.0.0::9042" - command: - - /bin/bash - - -c - - | - ./bin/yugabyted start --daemon=false \ No newline at end of file diff --git a/community_images/yugabyte/yugabytedb/image.yml b/community_images/yugabyte/yugabytedb/image.yml deleted file mode 100755 index 80c56dbd1a..0000000000 --- a/community_images/yugabyte/yugabytedb/image.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: yugabyte -official_name: Yugabyte -official_website: https://www.yugabyte.com/ -source_image_provider: yugabyteDB -source_image_repo: docker.io/yugabytedb/yugabyte -source_image_repo_link: https://hub.docker.com/r/yugabytedb/yugabyte -source_image_readme: https://github.com/yugabyte/yugabyte-db/blob/master/README.md -rf_docker_link: rapidfort/yugabyte -image_workflow_name: yugabyte_yugabytedb -github_location: yugabyte/yugabytedb -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fyugabytedb%2Fyugabyte -usage_instructions: | - $ helm repo add yugabytedb https://charts.yugabyte.com - - # install mariadb, just replace repository with RapidFort registry - $ helm install yb-demo yugabytedb/yugabyte \ - --set image.repository=rapidfort/yugabyte - --version 2.15.3 \ - --set resource.master.requests.cpu=0.5,resource.master.requests.memory=0.5Gi,\ - resource.tserver.requests.cpu=0.5,resource.tserver.requests.memory=0.5Gi,\ - replicas.master=1,replicas.tserver=1 --namespace yb-demo -what_is_text: | - YugabyteDB is a high-performance, cloud-native, distributed SQL database that aims to support all PostgreSQL features. It is best suited for cloud-native OLTP (i.e., real-time, business-critical) applications that need absolute data correctness and require at least one of the following: scalability, high tolerance to failures, or globally-distributed deployments. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`2.17`, `latest` (2.17/centos/Dockerfile)](https://github.com/yugabyte/build-infra/blob/master/docker_images/centos7/Dockerfile)" - - "[`2.16`, (2.16/centos/Dockerfile)](https://github.com/yugabyte/build-infra/blob/master/docker_images/centos7/Dockerfile)" - - "[`2.15`, (2.15/centos/Dockerfile)](https://github.com/yugabyte/build-infra/blob/master/docker_images/centos7/Dockerfile)" - - "[`2.14`, (2.14/centos/Dockerfile)](https://github.com/yugabyte/build-infra/blob/master/docker_images/centos7/Dockerfile)" -input_registry: - registry: docker.io - account: yugabytedb -repo_sets: - - yugabyte: - input_base_tag: "2.18.*" - - yugabyte: - input_base_tag: "2.17.*" - - yugabyte: - input_base_tag: "2.16.*" - - yugabyte: - input_base_tag: "2.15.*" - - yugabyte: - input_base_tag: "2.14.*" -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - tls_certs: - generate: true - out_dir: certs - image_keys: - yugabyte: - repository: "YUGABYTE_IMAGE_REPOSITORY" - tag: "YUGABYTE_IMAGE_TAG" diff --git a/community_images/zookeeper/bitnami/.rfignore b/community_images/zookeeper/bitnami/.rfignore deleted file mode 100644 index 06fdfb567e..0000000000 --- a/community_images/zookeeper/bitnami/.rfignore +++ /dev/null @@ -1,4 +0,0 @@ -opt/bitnami/common/licenses -opt/bitnami/zookeeper/licenses -opt/bitnami/licenses -usr/share/common-licenses diff --git a/community_images/zookeeper/bitnami/README.md b/community_images/zookeeper/bitnami/README.md deleted file mode 100644 index 74bbfeeccb..0000000000 --- a/community_images/zookeeper/bitnami/README.md +++ /dev/null @@ -1,144 +0,0 @@ - -RapidFort - - -
    - -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Zookeeper - -RapidFort’s container optimization process hardened this Zookeeper container. This container is free to use and has no license limitations. - -It is the same as the [Bitnami Zookeeper][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
    - -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

    Vulnerabilities: Original vs. Hardened - -

    - -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
    -
    - - -## What is Zookeeper? - -> Apache ZooKeeper provides a reliable, centralized register of configuration data and services for distributed applications. - - -[Overview of Zookeeper](https://zookeeper.apache.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Zookeeper image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
    -
    - -```sh -$ helm repo add bitnami https://charts.bitnami.com/bitnami - -# install zookeeper, just replace repository with RapidFort registry -$ helm install my-zookeeper bitnami/zookeeper --set image.repository=rapidfort/zookeeper - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Bitnami Zookeeper][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
    -
    - -## What’s the difference between the official [Bitnami Zookeeper][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/zookeeper][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`3.9`, `3.9-debian-11`, `3.9.1`, `3.9.1-debian-11-r` (3.9/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/zookeeper/3.9/debian-11/Dockerfile) -* [`3.8`, `3.8-debian-11`, `3.8.3`, `3.8.3-debian-11-r` (3.8/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/zookeeper/3.8/debian-11/Dockerfile) -* [`3.7`, `3.7-debian-11`, `3.7.2`, `3.7.2-debian-11-r` (3.7/debian-11/Dockerfile)](https://github.com/bitnami/containers/tree/main/bitnami/zookeeper/3.7/debian-11/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
    -
    - - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=zookeeper&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/zookeeper?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/zookeeper?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/zookeeper/bitnami/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/zookeeper/bitnami/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/r/bitnami/zookeeper -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/zookeeper diff --git a/community_images/zookeeper/bitnami/assets/cve_reduction.webp b/community_images/zookeeper/bitnami/assets/cve_reduction.webp deleted file mode 100644 index 0429e7daae868eae2f58dd0a269ce475b7da40f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1810 zcmb`Hc|6ox6u{5OUJ`l|^%}H{P*S#xh{D+4lq|_MGuD}*Y08tb)Cd_Nk7Qp)Qb`-) zB~sRGr72R$QfU!tjAcCYe)IbD(I36f`{$keIp==wx#xb)xy$F`apvZdVgOFNO&#_* z=sQaS02q>;rvk&Y%)Es#tcj;|bZT=B zxU`=%Y>J*(bWe9!<|?fe*BIV<`QRN_?qj#4O|g zVy`Gptj`|H3bz(wpR;`;J#L5LQvEyGY%WLEch|mPbm1q*;`Zt6U6CJ7_lll4Q}S`3 zvRc6)S4&pK1m^jqr^m&w%qi((*R=}Qevaf5BOGeFJ@+1vma2bk%{va z)x|HPV)CzVHrB#hxchA?zw9`1C@yb8%;)f5oA>8isxDvWT^45;mQW8P5+-89Muu0e zzBXv0roPbM=`1}pXcD9AT;onn;y@&|(A=J5QJEIP)Hb3OsEyvN;d@Jc$qO2}F=$rB zai0!-D_`$8_7PjC?U78Ds&gaR=1%FF$?!arD&3|}Q!9g7{D z?5lH;e!rwLmKdEFdXMoZmi{H8lzp4v?{Pm_T-anylON^GyfK$vv*mc8vewQRHb$@J zu3TTY+p;xri*K^?JV!Y{AuDi$0b)AQsU62^w1-`;={+lkiiiZANzCJGtc-{^8KhY~*^=NRSyQB{#qrxsGLM=v z4O8A^&&c2vi(TAWeI8j60>)6bMXd8$(6w}xv5?~vKe0qNa3-Pxh diff --git a/community_images/zookeeper/bitnami/assets/metrics.webp b/community_images/zookeeper/bitnami/assets/metrics.webp deleted file mode 100644 index 1b0f4370ec8afa079e57811e9f4974b374c2eb3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26458 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/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -# Container name for consul-node1 -CONTAINER_NAME="${PROJECT_NAME}"-zookeeper1-1 - -test_zookeeper "${CONTAINER_NAME}" "${NAMESPACE}" "no" diff --git a/community_images/zookeeper/bitnami/docker-compose.yml b/community_images/zookeeper/bitnami/docker-compose.yml deleted file mode 100644 index c2f6776fa4..0000000000 --- a/community_images/zookeeper/bitnami/docker-compose.yml +++ /dev/null @@ -1,16 +0,0 @@ -version: '2' - -services: - zookeeper1: - image: ${ZOOKEEPER_IMAGE_REPOSITORY}:${ZOOKEEPER_IMAGE_TAG} - restart: always - user: root - cap_add: - - SYS_PTRACE - ports: - - 2181 - volumes: - - $ZOOKEEPER_HOME:/bitnami/zookeeper - - ./scripts/zookeeper_coverage_script.sh:/opt/bitnami/scripts/coverage_script.sh - environment: - - ALLOW_ANONYMOUS_LOGIN=yes \ No newline at end of file diff --git a/community_images/zookeeper/bitnami/docker.env b/community_images/zookeeper/bitnami/docker.env deleted file mode 100644 index c6964db7e0..0000000000 --- a/community_images/zookeeper/bitnami/docker.env +++ /dev/null @@ -1 +0,0 @@ -ZOOKEEPER_HOME=/tmp diff --git a/community_images/zookeeper/bitnami/docker_coverage.sh b/community_images/zookeeper/bitnami/docker_coverage.sh deleted file mode 100755 index 87c7ba3798..0000000000 --- a/community_images/zookeeper/bitnami/docker_coverage.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -# NETWORK_NAME=$(jq -r '.network_name' < "$JSON_PARAMS") -# ENVOY_HOST=$(jq -r '.container_details.envoy.ip_address' < "$JSON_PARAMS") diff --git a/community_images/zookeeper/bitnami/image.yml b/community_images/zookeeper/bitnami/image.yml deleted file mode 100644 index 1898328319..0000000000 --- a/community_images/zookeeper/bitnami/image.yml +++ /dev/null @@ -1,60 +0,0 @@ -name: zookeeper -official_name: Zookeeper -official_website: https://zookeeper.apache.org/ -source_image_provider: Bitnami -source_image_repo: docker.io/bitnami/zookeeper -source_image_repo_link: https://hub.docker.com/r/bitnami/zookeeper -source_image_readme: https://github.com/bitnami/containers/blob/main/bitnami/zookeeper/README.md -rf_docker_link: rapidfort/zookeeper -image_workflow_name: zookeeper_bitnami -github_location: zookeeper/bitnami -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Fbitnami%2Fzookeeper -usage_instructions: | - $ helm repo add bitnami https://charts.bitnami.com/bitnami - - # install zookeeper, just replace repository with RapidFort registry - $ helm install my-zookeeper bitnami/zookeeper --set image.repository=rapidfort/zookeeper -what_is_text: | - Apache ZooKeeper provides a reliable, centralized register of configuration data and services for distributed applications. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: docker.io - account: bitnami -repo_sets: - - zookeeper: - input_base_tag: "3.9.1-debian-11-r" - - zookeeper: - input_base_tag: "3.8.2-debian-11-r" - - zookeeper: - input_base_tag: "3.7.2-debian-11-r" -runtimes: - - type: k8s - script: k8s_coverage.sh - helm: - repo: bitnami - repo_url: https://charts.bitnami.com/bitnami - chart: zookeeper - # disabling persistence otherwise PVC creation fails for data dir - helm_additional_params: - persistence.enabled: false - replicaCount: 3 - auth.enabled: false - allowAnonymousLogin: true - image_keys: - zookeeper: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - zookeeper: - repository: "ZOOKEEPER_IMAGE_REPOSITORY" - tag: "ZOOKEEPER_IMAGE_TAG" - - type: docker - script: docker_coverage.sh - zookeeper: - environment: - ALLOW_ANONYMOUS_LOGIN: yes diff --git a/community_images/zookeeper/bitnami/k8s_coverage.sh b/community_images/zookeeper/bitnami/k8s_coverage.sh deleted file mode 100755 index 12336a01cf..0000000000 --- a/community_images/zookeeper/bitnami/k8s_coverage.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for k8s coverage = $JSON" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# wait for the zookeeper ensemble to come online -sleep 60 - -CONTAINER_NAME="${RELEASE_NAME}-0" -# copy over the script to the pod -kubectl cp "${SCRIPTPATH}"/scripts/zookeeper_coverage_script.sh "${CONTAINER_NAME}":/opt/bitnami/scripts/coverage_script.sh -n "${NAMESPACE}" - -test_zookeeper "${CONTAINER_NAME}" "${NAMESPACE}" "yes" diff --git a/community_images/zookeeper/bitnami/overrides.yml b/community_images/zookeeper/bitnami/overrides.yml deleted file mode 100644 index f201e68505..0000000000 --- a/community_images/zookeeper/bitnami/overrides.yml +++ /dev/null @@ -1,18 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/zookeeper/bitnami/scripts/zookeeper_coverage_script.sh b/community_images/zookeeper/bitnami/scripts/zookeeper_coverage_script.sh deleted file mode 100755 index 12820cfee1..0000000000 --- a/community_images/zookeeper/bitnami/scripts/zookeeper_coverage_script.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -set -e -set -x - -# get the server version number -zkServer.sh version - -# print the help message for transactin log command -zkTxnLogToolkit.sh --help || true - -# print the help message for snapshot comparison command -zkSnapshotComparer.sh --help || true - -# print the help message for cleanup command -zkCleanup.sh --help || true - -# run zookeeper specific commands for coverage -zkCli.sh < -RapidFort - - -
    - -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Zookeeper IronBank - -RapidFort’s container optimization process hardened this Zookeeper IronBank container. This container is free to use and has no license limitations. - -It is the same as the [Platform One Zookeeper IronBank][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
    - -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

    Vulnerabilities: Original vs. Hardened - -

    - -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
    -
    - - -## What is Zookeeper IronBank? - -> Apache ZooKeeper provides a reliable, centralized register of configuration data and services for distributed applications. - - -[Overview of Zookeeper IronBank](https://zookeeper.apache.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Zookeeper IronBank image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
    -
    - -```sh -$ docker run --name some-zk -d rapidfort/zookeeper-ib:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [Platform One Zookeeper IronBank][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
    -
    - -## What’s the difference between the official [Platform One Zookeeper IronBank][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/zookeeper-ib][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
    -
    - - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=zookeeper-ib&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper-ib&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper-ib&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper-ib&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper-ib&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper-ib&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/zookeeper-ib?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/zookeeper-ib?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/zookeeper/ironbank/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/zookeeper/ironbank/assets/cve_reduction.webp - -[source-image-repo-link]: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fapache%2Fzookeeper -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/zookeeper-ib diff --git a/community_images/zookeeper/ironbank/assets/cve_reduction.webp b/community_images/zookeeper/ironbank/assets/cve_reduction.webp deleted file mode 100644 index 6c061060cdeb1c994ccee290b3c891e5b69b71b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1512 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

    =7T8)$HPE43|rML=W({m!`iN$ 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�*?uakFE1vC1_?a_9tHmk(EFrU|Wx4l5 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 diff --git a/community_images/zookeeper/ironbank/coverage.sh b/community_images/zookeeper/ironbank/coverage.sh deleted file mode 100755 index d4921fd99b..0000000000 --- a/community_images/zookeeper/ironbank/coverage.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -set -e -set -x - -function test_zookeeper() { - CONTAINER_NAME=$1 - - CMD="docker exec -i ${CONTAINER_NAME} bash -c /tmp/coverage_script.sh" - $CMD -} \ No newline at end of file diff --git a/community_images/zookeeper/ironbank/dc_coverage.sh b/community_images/zookeeper/ironbank/dc_coverage.sh deleted file mode 100755 index 13c5d48f91..0000000000 --- a/community_images/zookeeper/ironbank/dc_coverage.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker compose coverage = $JSON" - -PROJECT_NAME=$(jq -r '.project_name' < "$JSON_PARAMS") -# Container name for consul-node1 -CONTAINER_NAME="${PROJECT_NAME}"-zookeeper1-1 - -test_zookeeper "${CONTAINER_NAME}" diff --git a/community_images/zookeeper/ironbank/docker-compose.yml b/community_images/zookeeper/ironbank/docker-compose.yml deleted file mode 100644 index 022f3022ec..0000000000 --- a/community_images/zookeeper/ironbank/docker-compose.yml +++ /dev/null @@ -1,16 +0,0 @@ -version: '2' - -services: - zookeeper1: - image: ${ZOOKEEPER_IMAGE_REPOSITORY}:${ZOOKEEPER_IMAGE_TAG} - restart: always - user: root - cap_add: - - SYS_PTRACE - ports: - - 2181 - volumes: - - $ZOOKEEPER_HOME:/tmp/zookeeper - - ./scripts/zookeeper_coverage_script.sh:/tmp/coverage_script.sh - environment: - - ALLOW_ANONYMOUS_LOGIN=yes \ No newline at end of file diff --git a/community_images/zookeeper/ironbank/docker.env b/community_images/zookeeper/ironbank/docker.env deleted file mode 100644 index c6964db7e0..0000000000 --- a/community_images/zookeeper/ironbank/docker.env +++ /dev/null @@ -1 +0,0 @@ -ZOOKEEPER_HOME=/tmp diff --git a/community_images/zookeeper/ironbank/docker_coverage.sh b/community_images/zookeeper/ironbank/docker_coverage.sh deleted file mode 100755 index 87c7ba3798..0000000000 --- a/community_images/zookeeper/ironbank/docker_coverage.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" - -# NETWORK_NAME=$(jq -r '.network_name' < "$JSON_PARAMS") -# ENVOY_HOST=$(jq -r '.container_details.envoy.ip_address' < "$JSON_PARAMS") diff --git a/community_images/zookeeper/ironbank/image.yml b/community_images/zookeeper/ironbank/image.yml deleted file mode 100644 index 5e23b4d803..0000000000 --- a/community_images/zookeeper/ironbank/image.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: zookeeper-ib -official_name: Zookeeper IronBank -official_website: https://zookeeper.apache.org/ -source_image_provider: Platform One -source_image_repo: registry1.dso.mil/ironbank/opensource/apache/zookeeper -source_image_repo_link: https://registry1.dso.mil/harbor/projects/3/repositories/opensource%2Fapache%2Fzookeeper -source_image_readme: https://repo1.dso.mil/dsop/opensource/apache/zookeeper/-/blob/development/README.md -rf_docker_link: rapidfort/zookeeper-ib -image_workflow_name: zookeeper_ironbank -github_location: zookeeper/ironbank -report_url: https://us01.rapidfort.com/app/community/imageinfo/registry1.dso.mil%2Fironbank%2Fopensource%2Fapache%2Fzookeeper -usage_instructions: | - $ docker run --name some-zk -d rapidfort/zookeeper-ib:latest -what_is_text: | - Apache ZooKeeper provides a reliable, centralized register of configuration data and services for distributed applications. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -input_registry: - registry: registry1.dso.mil - account: ironbank -repo_sets: - - opensource/apache/zookeeper: - input_base_tag: "3.8." - output_repo: zookeeper-ib - - opensource/apache/zookeeper: - input_base_tag: "3.7." - output_repo: zookeeper-ib -runtimes: - - type: docker_compose - script: dc_coverage.sh - compose_file: docker-compose.yml - image_keys: - zookeeper-ib: - repository: "ZOOKEEPER_IMAGE_REPOSITORY" - tag: "ZOOKEEPER_IMAGE_TAG" - diff --git a/community_images/zookeeper/ironbank/k8s_coverage.sh b/community_images/zookeeper/ironbank/k8s_coverage.sh deleted file mode 100755 index 12336a01cf..0000000000 --- a/community_images/zookeeper/ironbank/k8s_coverage.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for k8s coverage = $JSON" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# wait for the zookeeper ensemble to come online -sleep 60 - -CONTAINER_NAME="${RELEASE_NAME}-0" -# copy over the script to the pod -kubectl cp "${SCRIPTPATH}"/scripts/zookeeper_coverage_script.sh "${CONTAINER_NAME}":/opt/bitnami/scripts/coverage_script.sh -n "${NAMESPACE}" - -test_zookeeper "${CONTAINER_NAME}" "${NAMESPACE}" "yes" diff --git a/community_images/zookeeper/ironbank/overrides.yml b/community_images/zookeeper/ironbank/overrides.yml deleted file mode 100644 index f201e68505..0000000000 --- a/community_images/zookeeper/ironbank/overrides.yml +++ /dev/null @@ -1,18 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/zookeeper/ironbank/scripts/zookeeper_coverage_script.sh b/community_images/zookeeper/ironbank/scripts/zookeeper_coverage_script.sh deleted file mode 100755 index 12820cfee1..0000000000 --- a/community_images/zookeeper/ironbank/scripts/zookeeper_coverage_script.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -set -e -set -x - -# get the server version number -zkServer.sh version - -# print the help message for transactin log command -zkTxnLogToolkit.sh --help || true - -# print the help message for snapshot comparison command -zkSnapshotComparer.sh --help || true - -# print the help message for cleanup command -zkCleanup.sh --help || true - -# run zookeeper specific commands for coverage -zkCli.sh < -RapidFort - - -
    - -[![rf-h][rf-h-badge]][rf-view-report-button] -[![DH Image][dh-rf-badge]][rf-dh-image-link] -[![Slack][slack-badge]][slack-link] -[![FOSSA Status][fossa-badge]][fossa-link] - -# RapidFort hardened image for Zookeeper Official - -RapidFort’s container optimization process hardened this Zookeeper Official container. This container is free to use and has no license limitations. - -It is the same as the [The Docker Community Zookeeper Official][source-image-repo-link] image but more secure. - -Every day, we optimize and harden a variety of Docker Hub’s most famous images. Check out our [entire library](https://hub.docker.com/u/rapidfort) of secured containers. -
    - -[Get the full report here or click on the image below][rf-view-report-link] - -[![Metrics][metrics-link]][rf-image-metrics-link] - -

    Vulnerabilities: Original vs. Hardened - -

    - -[![CVE Reduction][cve-reduction-link]][rf-image-cve-reduction-link] - - -View Report - -
    -
    - - -## What is Zookeeper Official? - -> Apache ZooKeeper provides a reliable, centralized register of configuration data and services for distributed applications. - - -[Overview of Zookeeper Official](https://zookeeper.apache.org/) - -Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - - -## How do I use this hardened Zookeeper Official image? - -The runtime instructions for this container are no different from the official release. Follow the instructions in their readme, but use our hardened image. - - -View Detailed Instructions - -
    -
    - -```sh -docker pull rapidfort/zookeeper-official:latest - -``` - -## What is a hardened image? - -A hardened image is a copy of a container that has been optimized and reduced for significantly improved security. Because every container uses many open-source software components and their dependencies, there’s a lot of extra weight that can be trimmed. - -This image is a hardened version of the official [The Docker Community Zookeeper Official][source-image-repo-link] image on Docker Hub. - -RapidFort is an industry-leading container optimization solution that minimizes software attack surfaces by removing unused code. Most containers can be reduced by at least 50%, which reduces the opportunity for malicious attacks and CVE exploits. Learn more at [RapidFort.com][rf-link]. - -Our hardened images are updated daily using the latest vulnerability information available. - - -View on GitHub - -
    -
    - -## What’s the difference between the official [The Docker Community Zookeeper Official][source-image-repo-link] image and this hardened image? -RapidFort’s hardened [rapidfort/zookeeper-official][rf-dh-image-link] image has been optimized by our proprietary scanning and slimming technology. We are big fans of open-source software, containerized infrastructure, and security. - -We are making secure copies of the images we use every day and the most popular ones on Docker Hub. We want to make the world a safer place to operate. - -## Supported tags and respective `Dockerfile` links -* [`3.8.1`, `3.8`, `3.8.1-temurin`, `3.8-temurin`, `latest`](https://github.com/31z4/zookeeper-docker/blob/b078affda60681e71b71760740e795328c9d1ab5/3.8.1/Dockerfile) -* [`3.7.1-temurin`, `3.7-temurin`](https://github.com/31z4/zookeeper-docker/blob/5cf119d9c5d61024fdba66f7be707413513a8b0d/3.7.1/Dockerfile) - -## Need support - -Join our slack community for any questions. - - -RapidFort Community Slack - - -## 🌟 Support this project - -[![](https://user-images.githubusercontent.com/48997634/174794647-0c851917-e5c9-4fb9-bf88-b61d89dc2f4f.gif)](https://github.com/rapidfort/community-images/stargazers) - -### [⏫⭐️ Scroll to the star button](#start-of-content) - -If you believe this project has potential, feel free to **star this repo** just like many [amazing people](https://github.com/rapidfort/community-images/stargazers) -have. - -## Have questions? - -[![RapidFort](https://raw.githubusercontent.com/rapidfort/community-images/main/contrib/github_logo_footer.png)][rf-rapidfort-footer-logo-link] - - -If you'd like to learn more about RapidFort or our container optimization process, visit [RapidFort.com][rf-link]. - -
    -
    - - -[dh-rf-badge]: https://img.shields.io/badge/dockerhub-images-important.svg?logo=Docker - -[fossa-badge]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images.svg?type=shield -[fossa-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Frapidfort%2Fcommunity-images?ref=badge_shield - -[rf-link]: https://rapidfort.com?utm_source=github&utm_medium=ci_rf_link&utm_campaign=sep_01_sprint&utm_term=zookeeper-official&utm_content=rapidfort_have_questions - -[rf-rapidfort-footer-logo-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper-official&utm_content=rapidfort_footer_logo -[rf-view-report-button]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper-official&utm_content=view_report_button -[rf-view-report-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper-official&utm_content=view_report_link -[rf-image-metrics-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper-official&utm_content=image_metrics_link -[rf-image-cve-reduction-link]: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fzookeeper?utm_source=github&utm_medium=ci_view_report&utm_campaign=sep_01_sprint&utm_term=zookeeper-official&utm_content=image_cve_reduction_link - -[dh-img-size-badge]: https://img.shields.io/docker/image-size/rapidfort/zookeeper-official?logo=docker&logoColor=white&sort=semver -[dh-img-pulls-badge]: https://img.shields.io/docker/pulls/rapidfort/zookeeper-official?logo=docker&logoColor=white - -[slack-badge]: https://img.shields.io/static/v1?label=Join&message=slack&logo=slack&logoColor=E01E5A&color=4A154B -[slack-link]: https://join.slack.com/t/rapidfortcommunity/shared_invite/zt-1g3wy28lv-DaeGexTQ5IjfpbmYW7Rm_Q - -[rf-h-badge]: https://img.shields.io/static/v1?label=RapidFort&labelColor=333F48&message=hardened&color=50B4C4&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHvSURBVHgB7ZjvTcMwEMUvEgNkhNuAjOAR2IAyQbsB2YAyQbsBYoKwQdjA3aAjHA514Xq1Hf9r6QeeFKVJ3tkv+cWOVYCAiKg124b82gZqe0+NNlsHJbLBxthg1o+RASetIEdTJxnBRvtUMCHgM6TIBtMZwY7SiQFfrhUsN+Ao/TJYR3WC5QY88/Nge6oXLBRwO+P/GcnNMZzZteBR0zQfogM0O4Q47Uz9TtSrUIHs71+paugw16Dn+qt5xJ/TD4viEcrE25tepaXPaHxP350GXtD10WwHQWjQxKhl7YUGRg/MuPaY9vxuzPFA+RpEW9rj0yCMbcCsmG9B+Xpk7YRo4RnjQEEttBiBtAefyI23BtoYpBrmRO6ZX0EZWo60c1yfaGBMOKRzdKVocYZO/NpuMss7E9cHitcc0gFS5Qig2LUUtCGkmmJwOsJJvLlokdWtfMFzAvLGctCOooYPtg2USoRQ7HwM2hXzIzuvKQenIxzHm4oWmZ9TKF1AnAR8sI2moB093nKcjoBvtnHFzoXQ8qeMDGcLtUW/i4NYtJ3jJhRcSnRYHMSg1Q5PD5cWHT4/ih0vIpDOf9QrhZtQLsWxlILT8AjXEol/iQRaiVTBX4pO57D6U0WJBFoFtyaLtuqLfwf19G62e7hFWbQKKuoLYovGDo9dW28AAAAASUVORK5CYII= -[metrics-link]: https://github.com/rapidfort/community-images/raw/main/community_images/zookeeper/official/assets/metrics.webp -[cve-reduction-link]: https://github.com/rapidfort/community-images/raw/main/community_images/zookeeper/official/assets/cve_reduction.webp - -[source-image-repo-link]: https://hub.docker.com/_/zookeeper -[rf-dh-image-link]: https://hub.docker.com/r/rapidfort/zookeeper-official diff --git a/community_images/zookeeper/official/assets/cve_reduction.webp b/community_images/zookeeper/official/assets/cve_reduction.webp deleted file mode 100644 index 0cb029eddcc5d333866add6c307930d165817c06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1308 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 RzND!+eM-Asp=j#XkN~j){ILK4 diff --git a/community_images/zookeeper/official/coverage.sh b/community_images/zookeeper/official/coverage.sh deleted file mode 100755 index 344e3287c5..0000000000 --- a/community_images/zookeeper/official/coverage.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -set -e -set -x - -function test_zookeeper() { - CONTAINER_NAME=$1 - NAMESPACE=$2 - USE_KUBECTL=$3 - - CMD="docker exec -i ${CONTAINER_NAME} bash -c /tmp/coverage_script.sh" - - if [[ "${USE_KUBECTL}" == "yes" ]]; then - CMD="kubectl exec -i ${CONTAINER_NAME} -n ${NAMESPACE} -- bash /tmp/coverage_script.sh" - fi - - $CMD -} \ No newline at end of file diff --git a/community_images/zookeeper/official/docker.env b/community_images/zookeeper/official/docker.env deleted file mode 100644 index c6964db7e0..0000000000 --- a/community_images/zookeeper/official/docker.env +++ /dev/null @@ -1 +0,0 @@ -ZOOKEEPER_HOME=/tmp diff --git a/community_images/zookeeper/official/docker_coverage.sh b/community_images/zookeeper/official/docker_coverage.sh deleted file mode 100755 index 109008160b..0000000000 --- a/community_images/zookeeper/official/docker_coverage.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -set -x -set -e - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for docker coverage = $JSON" diff --git a/community_images/zookeeper/official/image.yml b/community_images/zookeeper/official/image.yml deleted file mode 100644 index 6ffea3c828..0000000000 --- a/community_images/zookeeper/official/image.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: zookeeper-official -official_name: Zookeeper Official -official_website: https://zookeeper.apache.org/ -source_image_provider: The Docker Community -source_image_repo: docker.io/library/zookeeper -source_image_repo_link: https://hub.docker.com/_/zookeeper -source_image_readme: https://github.com/31z4/zookeeper-docker/blob/master/README.md -rf_docker_link: rapidfort/zookeeper-official -image_workflow_name: zookeeper_official -github_location: zookeeper/official -report_url: https://us01.rapidfort.com/app/community/imageinfo/docker.io%2Flibrary%2Fzookeeper -usage_instructions: | - docker pull rapidfort/zookeeper-official:latest -what_is_text: | - Apache ZooKeeper provides a reliable, centralized register of configuration data and services for distributed applications. -disclaimer: | - Trademarks: This software listing is packaged by RapidFort. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. -docker_links: - - "[`3.8.1`, `3.8`, `3.8.1-temurin`, `3.8-temurin`, `latest`](https://github.com/31z4/zookeeper-docker/blob/b078affda60681e71b71760740e795328c9d1ab5/3.8.1/Dockerfile)" - - "[`3.7.1-temurin`, `3.7-temurin`](https://github.com/31z4/zookeeper-docker/blob/5cf119d9c5d61024fdba66f7be707413513a8b0d/3.7.1/Dockerfile)" -input_registry: - registry: docker.io - account: library -repo_sets: - - zookeeper: - input_base_tag: "3.8." - output_repo: zookeeper-official - - zookeeper: - input_base_tag: "3.7." - output_repo: zookeeper-official - - zookeeper: - input_base_tag: "3.6." - output_repo: zookeeper-official -runtimes: - - type: k8s - script: k8s_coverage.sh - use_helm: False - image_keys: - zookeeper-official: - repository: "image.repository" - tag: "image.tag" - override_file: "overrides.yml" - readiness_wait_pod_name_suffix: - - "" - - type: docker - script: docker_coverage.sh - zookeeper-official: - environment: - ALLOW_ANONYMOUS_LOGIN: yes diff --git a/community_images/zookeeper/official/k8s_coverage.sh b/community_images/zookeeper/official/k8s_coverage.sh deleted file mode 100755 index adac8a5948..0000000000 --- a/community_images/zookeeper/official/k8s_coverage.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -set -x -set -e - -# shellcheck disable=SC1091 -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - -# shellcheck disable=SC1091 -. "${SCRIPTPATH}"/coverage.sh - -JSON_PARAMS="$1" - -JSON=$(cat "$JSON_PARAMS") - -echo "Json params for k8s coverage = $JSON" - -NAMESPACE=$(jq -r '.namespace_name' < "$JSON_PARAMS") -RELEASE_NAME=$(jq -r '.release_name' < "$JSON_PARAMS") - -# wait for the zookeeper ensemble to come online -sleep 60 - -CONTAINER_NAME="${RELEASE_NAME}" -# copy over the script to the pod -kubectl cp "${SCRIPTPATH}"/scripts/zookeeper_coverage_script.sh "${CONTAINER_NAME}":/tmp/coverage_script.sh -n "${NAMESPACE}" - -test_zookeeper "${CONTAINER_NAME}" "${NAMESPACE}" "yes" diff --git a/community_images/zookeeper/official/overrides.yml b/community_images/zookeeper/official/overrides.yml deleted file mode 100644 index f201e68505..0000000000 --- a/community_images/zookeeper/official/overrides.yml +++ /dev/null @@ -1,18 +0,0 @@ -image: - pullSecrets: ["rf-regcred"] - pullPolicy: Always -containerSecurityContext: - enabled: true - runAsUser: 1001 - allowPrivilegeEscalation: true - capabilities: - add: ["SYS_PTRACE"] -extraEnvVars: - - name: "RF_VERBOSE" - value: "0" -livenessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 -readinessProbe: - initialDelaySeconds: 30 - timeoutSeconds: 30 diff --git a/community_images/zookeeper/official/scripts/zookeeper_coverage_script.sh b/community_images/zookeeper/official/scripts/zookeeper_coverage_script.sh deleted file mode 100755 index 12820cfee1..0000000000 --- a/community_images/zookeeper/official/scripts/zookeeper_coverage_script.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -set -e -set -x - -# get the server version number -zkServer.sh version - -# print the help message for transactin log command -zkTxnLogToolkit.sh --help || true - -# print the help message for snapshot comparison command -zkSnapshotComparer.sh --help || true - -# print the help message for cleanup command -zkCleanup.sh --help || true - -# run zookeeper specific commands for coverage -zkCli.sh <