ಡಾಕರ್ ಭದ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳು

ಡಾಕರ್ ಭದ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳು
ಹಲೋ, ಹಬ್ರ್!

ಆಧುನಿಕ ವಾಸ್ತವದಲ್ಲಿ, ಅಭಿವೃದ್ಧಿ ಪ್ರಕ್ರಿಯೆಗಳಲ್ಲಿ ಕಂಟೈನರೈಸೇಶನ್‌ನ ಬೆಳೆಯುತ್ತಿರುವ ಪಾತ್ರದಿಂದಾಗಿ, ಕಂಟೇನರ್‌ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ವಿವಿಧ ಹಂತಗಳು ಮತ್ತು ಘಟಕಗಳ ಸುರಕ್ಷತೆಯನ್ನು ಖಾತ್ರಿಪಡಿಸುವ ವಿಷಯವು ಕಡಿಮೆ ಮುಖ್ಯವಾದ ವಿಷಯವಲ್ಲ. ಹಸ್ತಚಾಲಿತ ತಪಾಸಣೆಗಳನ್ನು ಕೈಗೊಳ್ಳುವುದು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಆದ್ದರಿಂದ ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುವ ಕಡೆಗೆ ಕನಿಷ್ಠ ಆರಂಭಿಕ ಹಂತಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುವುದು ಒಳ್ಳೆಯದು.

ಈ ಲೇಖನದಲ್ಲಿ, ನಾನು ಹಲವಾರು ಡಾಕರ್ ಭದ್ರತಾ ಉಪಯುಕ್ತತೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಿದ್ಧ-ಸಿದ್ಧ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತೇನೆ ಮತ್ತು ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪರೀಕ್ಷಿಸಲು ಸಣ್ಣ ಡೆಮೊ ಸ್ಟ್ಯಾಂಡ್ ಅನ್ನು ಹೇಗೆ ನಿಯೋಜಿಸಬೇಕು ಎಂಬುದರ ಕುರಿತು ಸೂಚನೆಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತೇನೆ. ಡಾಕರ್‌ಫೈಲ್ ಚಿತ್ರಗಳು ಮತ್ತು ಸೂಚನೆಗಳ ಸುರಕ್ಷತೆಯನ್ನು ಪರೀಕ್ಷಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಹೇಗೆ ಸಂಘಟಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ಪ್ರಯೋಗ ಮಾಡಲು ನೀವು ವಸ್ತುಗಳನ್ನು ಬಳಸಬಹುದು. ಪ್ರತಿಯೊಬ್ಬರ ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಅನುಷ್ಠಾನದ ಮೂಲಸೌಕರ್ಯವು ವಿಭಿನ್ನವಾಗಿದೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗಿದೆ, ಆದ್ದರಿಂದ ಕೆಳಗೆ ನಾನು ಹಲವಾರು ಸಂಭಾವ್ಯ ಆಯ್ಕೆಗಳನ್ನು ಒದಗಿಸುತ್ತೇನೆ.

ಭದ್ರತಾ ತಪಾಸಣೆ ಉಪಯುಕ್ತತೆಗಳು

ದೊಡ್ಡ ಸಂಖ್ಯೆಯ ವಿವಿಧ ಸಹಾಯಕ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಡಾಕರ್ ಮೂಲಸೌಕರ್ಯದ ವಿವಿಧ ಅಂಶಗಳ ಮೇಲೆ ತಪಾಸಣೆ ನಡೆಸುತ್ತವೆ. ಅವುಗಳಲ್ಲಿ ಕೆಲವನ್ನು ಈಗಾಗಲೇ ಹಿಂದಿನ ಲೇಖನದಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ (https://habr.com/ru/company/swordfish_security/blog/518758/#docker-security), ಮತ್ತು ಈ ವಸ್ತುವಿನಲ್ಲಿ ನಾನು ಅವುಗಳಲ್ಲಿ ಮೂರರ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಲು ಬಯಸುತ್ತೇನೆ, ಇದು ಅಭಿವೃದ್ಧಿ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ನಿರ್ಮಿಸಲಾದ ಡಾಕರ್ ಚಿತ್ರಗಳಿಗೆ ಹೆಚ್ಚಿನ ಭದ್ರತಾ ಅವಶ್ಯಕತೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಭದ್ರತಾ ಪರಿಶೀಲನೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಈ ಮೂರು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಒಂದು ಪೈಪ್‌ಲೈನ್‌ಗೆ ಹೇಗೆ ಸಂಪರ್ಕಿಸಬಹುದು ಎಂಬುದರ ಉದಾಹರಣೆಯನ್ನು ಸಹ ನಾನು ತೋರಿಸುತ್ತೇನೆ.

ಹಡೋಲಿಂಟ್
https://github.com/hadolint/hadolint

ಮೊದಲ ಅಂದಾಜಿನಂತೆ, ಡಾಕರ್‌ಫೈಲ್ ಸೂಚನೆಗಳ ನಿಖರತೆ ಮತ್ತು ಸುರಕ್ಷತೆಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಸಹಾಯ ಮಾಡುವ ಸಾಕಷ್ಟು ಸರಳವಾದ ಕನ್ಸೋಲ್ ಉಪಯುಕ್ತತೆ (ಉದಾಹರಣೆಗೆ, ಅಧಿಕೃತ ಇಮೇಜ್ ರಿಜಿಸ್ಟ್ರಿಗಳನ್ನು ಮಾತ್ರ ಬಳಸುವುದು ಅಥವಾ ಸುಡೋವನ್ನು ಬಳಸುವುದು).

ಡಾಕರ್ ಭದ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳು

ಡಾಕಲ್
https://github.com/goodwithtech/dockle

ಚಿತ್ರದೊಂದಿಗೆ (ಅಥವಾ ಚಿತ್ರದ ಉಳಿಸಿದ ಟಾರ್ ಆರ್ಕೈವ್‌ನೊಂದಿಗೆ) ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಕನ್ಸೋಲ್ ಉಪಯುಕ್ತತೆ, ಇದು ನಿರ್ದಿಷ್ಟ ಚಿತ್ರದ ನಿಖರತೆ ಮತ್ತು ಸುರಕ್ಷತೆಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ, ಅದರ ಲೇಯರ್‌ಗಳು ಮತ್ತು ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ವಿಶ್ಲೇಷಿಸುತ್ತದೆ - ಯಾವ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲಾಗಿದೆ, ಯಾವ ಸೂಚನೆಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಅದು ಸಂಪುಟಗಳನ್ನು ಜೋಡಿಸಲಾಗಿದೆ, ಖಾಲಿ ಪಾಸ್‌ವರ್ಡ್‌ನ ಉಪಸ್ಥಿತಿ ಇತ್ಯಾದಿ CIS (ಸೆಂಟರ್ ಫಾರ್ ಇಂಟರ್‌ನೆಟ್ ಸೆಕ್ಯುರಿಟಿ) ಬೆಂಚ್‌ಮಾರ್ಕ್ ಡಾಕರ್‌ಗಾಗಿ.
ಡಾಕರ್ ಭದ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳು

ಟ್ರಿವಿ
https://github.com/aquasecurity/trivy

ಈ ಉಪಯುಕ್ತತೆಯು ಎರಡು ವಿಧದ ದುರ್ಬಲತೆಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ - OS ಬಿಲ್ಡ್‌ಗಳೊಂದಿಗಿನ ಸಮಸ್ಯೆಗಳು (ಆಲ್ಪೈನ್, ರೆಡ್‌ಹ್ಯಾಟ್ (EL), CentOS, Debian GNU, Ubuntu ನಿಂದ ಬೆಂಬಲಿತವಾಗಿದೆ) ಮತ್ತು ಅವಲಂಬನೆಗಳೊಂದಿಗಿನ ಸಮಸ್ಯೆಗಳು (Gemfile.lock, Pipfile.lock, composer.lock, ಪ್ಯಾಕೇಜ್ -lock.json , yarn.lock, cargo.lock). ಟ್ರಿವಿ ರೆಪೊಸಿಟರಿಯಲ್ಲಿನ ಚಿತ್ರ ಮತ್ತು ಸ್ಥಳೀಯ ಚಿತ್ರ ಎರಡನ್ನೂ ಸ್ಕ್ಯಾನ್ ಮಾಡಬಹುದು ಮತ್ತು ಡಾಕರ್ ಇಮೇಜ್‌ನೊಂದಿಗೆ ವರ್ಗಾಯಿಸಲಾದ .ಟಾರ್ ಫೈಲ್ ಅನ್ನು ಆಧರಿಸಿ ಸ್ಕ್ಯಾನ್ ಮಾಡಬಹುದು.

ಡಾಕರ್ ಭದ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳು

ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ಆಯ್ಕೆಗಳು

ವಿವರಿಸಿದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಪ್ರತ್ಯೇಕ ಪರಿಸರದಲ್ಲಿ ಪ್ರಯತ್ನಿಸಲು, ಸ್ವಲ್ಪ ಸರಳೀಕೃತ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಎಲ್ಲಾ ಉಪಯುಕ್ತತೆಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ನಾನು ಸೂಚನೆಗಳನ್ನು ನೀಡುತ್ತೇನೆ.

ಅಭಿವೃದ್ಧಿಯ ಸಮಯದಲ್ಲಿ ರಚಿಸಲಾದ ಡಾಕರ್‌ಫೈಲ್‌ಗಳು ಮತ್ತು ಡಾಕರ್ ಚಿತ್ರಗಳ ಸ್ವಯಂಚಾಲಿತ ವಿಷಯ ಪರಿಶೀಲನೆಯನ್ನು ನೀವು ಹೇಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು ಎಂಬುದನ್ನು ಪ್ರದರ್ಶಿಸುವುದು ಮುಖ್ಯ ಆಲೋಚನೆಯಾಗಿದೆ.

ಚೆಕ್ ಸ್ವತಃ ಈ ಕೆಳಗಿನ ಹಂತಗಳನ್ನು ಒಳಗೊಂಡಿದೆ:

  1. ಲಿಂಟರ್ ಉಪಯುಕ್ತತೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಡಾಕರ್‌ಫೈಲ್ ಸೂಚನೆಗಳ ಸರಿಯಾದತೆ ಮತ್ತು ಸುರಕ್ಷತೆಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ ಹಡೋಲಿಂಟ್
  2. ಉಪಯುಕ್ತತೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಅಂತಿಮ ಮತ್ತು ಮಧ್ಯಂತರ ಚಿತ್ರಗಳ ಸರಿಯಾದತೆ ಮತ್ತು ಸುರಕ್ಷತೆಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ ಡಾಕಲ್
  3. ಮೂಲ ಚಿತ್ರದಲ್ಲಿ ಸಾರ್ವಜನಿಕವಾಗಿ ತಿಳಿದಿರುವ ದುರ್ಬಲತೆಗಳ (CVE) ಉಪಸ್ಥಿತಿ ಮತ್ತು ಹಲವಾರು ಅವಲಂಬನೆಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ - ಉಪಯುಕ್ತತೆಯನ್ನು ಬಳಸಿ ಟ್ರಿವಿ

ನಂತರ ಲೇಖನದಲ್ಲಿ ನಾನು ಈ ಹಂತಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಮೂರು ಆಯ್ಕೆಗಳನ್ನು ನೀಡುತ್ತೇನೆ:
ಮೊದಲನೆಯದು GitLab ಅನ್ನು ಉದಾಹರಣೆಯಾಗಿ ಬಳಸಿಕೊಂಡು CI/CD ಪೈಪ್‌ಲೈನ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು (ಪರೀಕ್ಷಾ ನಿದರ್ಶನವನ್ನು ಹೆಚ್ಚಿಸುವ ಪ್ರಕ್ರಿಯೆಯ ವಿವರಣೆಯೊಂದಿಗೆ).
ಎರಡನೆಯದು ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬಳಸುತ್ತಿದೆ.
ಮೂರನೆಯದು ಡಾಕರ್ ಚಿತ್ರಗಳನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲು ಡಾಕರ್ ಚಿತ್ರವನ್ನು ನಿರ್ಮಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.
ನಿಮಗೆ ಸೂಕ್ತವಾದ ಆಯ್ಕೆಯನ್ನು ನೀವು ಆರಿಸಿಕೊಳ್ಳಬಹುದು, ಅದನ್ನು ನಿಮ್ಮ ಮೂಲಸೌಕರ್ಯಕ್ಕೆ ವರ್ಗಾಯಿಸಬಹುದು ಮತ್ತು ನಿಮ್ಮ ಅಗತ್ಯಗಳಿಗೆ ಹೊಂದಿಕೊಳ್ಳಬಹುದು.

ಎಲ್ಲಾ ಅಗತ್ಯ ಫೈಲ್‌ಗಳು ಮತ್ತು ಹೆಚ್ಚುವರಿ ಸೂಚನೆಗಳು ಸಹ ರೆಪೊಸಿಟರಿಯಲ್ಲಿವೆ: https://github.com/Swordfish-Security/docker_cicd

GitLab CI/CD ಗೆ ಏಕೀಕರಣ

ಮೊದಲ ಆಯ್ಕೆಯಲ್ಲಿ, GitLab ರೆಪೊಸಿಟರಿ ಸಿಸ್ಟಮ್ ಅನ್ನು ಉದಾಹರಣೆಯಾಗಿ ಬಳಸಿಕೊಂಡು ನೀವು ಭದ್ರತಾ ತಪಾಸಣೆಗಳನ್ನು ಹೇಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು ಎಂಬುದನ್ನು ನಾವು ನೋಡುತ್ತೇವೆ. ಇಲ್ಲಿ ನಾವು ಹಂತಗಳ ಮೂಲಕ ಹೋಗುತ್ತೇವೆ ಮತ್ತು ಮೊದಲಿನಿಂದಲೂ GitLab ನೊಂದಿಗೆ ಪರೀಕ್ಷಾ ಪರಿಸರವನ್ನು ಹೇಗೆ ಸ್ಥಾಪಿಸುವುದು, ಸ್ಕ್ಯಾನಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ರಚಿಸುವುದು ಮತ್ತು ಪರೀಕ್ಷಾ ಡಾಕರ್‌ಫೈಲ್ ಮತ್ತು ಯಾದೃಚ್ಛಿಕ ಚಿತ್ರವನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಪ್ರಾರಂಭಿಸುವುದು ಹೇಗೆ ಎಂದು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತೇವೆ - ಜ್ಯೂಸ್‌ಶಾಪ್ ಅಪ್ಲಿಕೇಶನ್.

GitLab ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ
1. ಡಾಕರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ:

sudo apt-get update && sudo apt-get install docker.io

2. ಪ್ರಸ್ತುತ ಬಳಕೆದಾರರನ್ನು ಡಾಕರ್ ಗುಂಪಿಗೆ ಸೇರಿಸಿ ಇದರಿಂದ ನೀವು ಸುಡೋವನ್ನು ಬಳಸದೆಯೇ ಡಾಕರ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಬಹುದು:

sudo addgroup <username> docker

3. ನಿಮ್ಮ IP ಅನ್ನು ಹುಡುಕಿ:

ip addr

4. ಕಂಟೇನರ್‌ನಲ್ಲಿ GitLab ಅನ್ನು ಸ್ಥಾಪಿಸಿ ಮತ್ತು ಪ್ರಾರಂಭಿಸಿ, ಹೋಸ್ಟ್‌ಹೆಸರಿನಲ್ಲಿರುವ IP ವಿಳಾಸವನ್ನು ನಿಮ್ಮದೇ ಆದ ಮೂಲಕ ಬದಲಿಸಿ:

docker run --detach 
--hostname 192.168.1.112 
--publish 443:443 --publish 80:80 
--name gitlab 
--restart always 
--volume /srv/gitlab/config:/etc/gitlab 
--volume /srv/gitlab/logs:/var/log/gitlab 
--volume /srv/gitlab/data:/var/opt/gitlab 
gitlab/gitlab-ce:latest

GitLab ಎಲ್ಲಾ ಅಗತ್ಯ ಅನುಸ್ಥಾಪನಾ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸುವವರೆಗೆ ನಾವು ಕಾಯುತ್ತೇವೆ (ನೀವು ಲಾಗ್ ಫೈಲ್ ಔಟ್‌ಪುಟ್ ಮೂಲಕ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು: ಡಾಕರ್ ಲಾಗ್‌ಗಳು -f gitlab).

5. ಬ್ರೌಸರ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಸ್ಥಳೀಯ ಐಪಿ ತೆರೆಯಿರಿ ಮತ್ತು ರೂಟ್ ಬಳಕೆದಾರರಿಗಾಗಿ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ಕೇಳುವ ಪುಟವನ್ನು ನೋಡಿ:
ಡಾಕರ್ ಭದ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳು
ಹೊಸ ಪಾಸ್‌ವರ್ಡ್ ಹೊಂದಿಸಿ ಮತ್ತು GitLab ಗೆ ಹೋಗಿ.

6. ಹೊಸ ಯೋಜನೆಯನ್ನು ರಚಿಸಿ, ಉದಾಹರಣೆಗೆ cicd-ಪರೀಕ್ಷೆ ಮತ್ತು ಪ್ರಾರಂಭ ಫೈಲ್‌ನೊಂದಿಗೆ ಅದನ್ನು ಪ್ರಾರಂಭಿಸಿ README.md:
ಡಾಕರ್ ಭದ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳು
7. ಈಗ ನಾವು GitLab ರನ್ನರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಬೇಕಾಗಿದೆ: ವಿನಂತಿಯ ಮೇರೆಗೆ ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಡೆಸುವ ಏಜೆಂಟ್.
ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಯನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ (ಈ ಸಂದರ್ಭದಲ್ಲಿ, Linux 64-ಬಿಟ್‌ಗಾಗಿ):

sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

8. ಇದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಂತೆ ಮಾಡಿ:

sudo chmod +x /usr/local/bin/gitlab-runner

9. ರನ್ನರ್‌ಗಾಗಿ OS ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿ ಮತ್ತು ಸೇವೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿ:

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

ಇದು ಈ ರೀತಿ ಕಾಣಿಸಬೇಕು:

local@osboxes:~$ sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
Runtime platform arch=amd64 os=linux pid=8438 revision=0e5417a3 version=12.0.1
local@osboxes:~$ sudo gitlab-runner start
Runtime platform arch=amd64 os=linux pid=8518 revision=0e5417a3 version=12.0.1

10. ಈಗ ನಾವು ರನ್ನರ್ ಅನ್ನು ನೋಂದಾಯಿಸುತ್ತೇವೆ ಇದರಿಂದ ಅದು ನಮ್ಮ GitLab ನಿದರ್ಶನದೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಬಹುದು.
ಇದನ್ನು ಮಾಡಲು, ಸೆಟ್ಟಿಂಗ್‌ಗಳು-CI/CD ಪುಟವನ್ನು ತೆರೆಯಿರಿ (http://OUR_IP_ADDRESS/root/cicd-test/-/settings/ci_cd) ಮತ್ತು ರನ್ನರ್ಸ್ ಟ್ಯಾಬ್‌ನಲ್ಲಿ URL ಮತ್ತು ನೋಂದಣಿ ಟೋಕನ್ ಅನ್ನು ಹುಡುಕಿ:
ಡಾಕರ್ ಭದ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳು
11. URL ಮತ್ತು ನೋಂದಣಿ ಟೋಕನ್ ಅನ್ನು ಬದಲಿಸುವ ಮೂಲಕ ರನ್ನರ್ ಅನ್ನು ನೋಂದಾಯಿಸಿ:

sudo gitlab-runner register 
--non-interactive 
--url "http://<URL>/" 
--registration-token "<Registration Token>" 
--executor "docker" 
--docker-privileged 
--docker-image alpine:latest 
--description "docker-runner" 
--tag-list "docker,privileged" 
--run-untagged="true" 
--locked="false" 
--access-level="not_protected"

ಪರಿಣಾಮವಾಗಿ, ನಾವು ಸಿದ್ಧವಾದ ಕೆಲಸ ಮಾಡುವ GitLab ಅನ್ನು ಪಡೆಯುತ್ತೇವೆ, ಅದರಲ್ಲಿ ನಮ್ಮ ಉಪಯುಕ್ತತೆಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ನಾವು ಸೂಚನೆಗಳನ್ನು ಸೇರಿಸಬೇಕಾಗಿದೆ. ಈ ಡೆಮೊದಲ್ಲಿ ನಾವು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಮತ್ತು ಅದನ್ನು ಕಂಟೈನರೈಸ್ ಮಾಡಲು ಹಂತಗಳನ್ನು ಹೊಂದಿಲ್ಲ, ಆದರೆ ನೈಜ ಪರಿಸರದಲ್ಲಿ ಇವುಗಳು ಸ್ಕ್ಯಾನಿಂಗ್ ಹಂತಗಳಿಗೆ ಮುಂಚಿತವಾಗಿರುತ್ತವೆ ಮತ್ತು ಚಿತ್ರಗಳನ್ನು ಮತ್ತು ವಿಶ್ಲೇಷಣೆಗಾಗಿ ಡಾಕರ್‌ಫೈಲ್ ಅನ್ನು ರಚಿಸುತ್ತವೆ.

ಪೈಪ್ಲೈನ್ ​​ಸಂರಚನೆ

1. ರೆಪೊಸಿಟರಿಗೆ ಫೈಲ್‌ಗಳನ್ನು ಸೇರಿಸಿ mydockerfile.df (ಇದು ನಾವು ಪರಿಶೀಲಿಸುವ ಪರೀಕ್ಷಾ ಡಾಕರ್‌ಫೈಲ್) ಮತ್ತು GitLab CI/CD ಪ್ರಕ್ರಿಯೆ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ .gitlab-cicd.yml, ಇದು ಸ್ಕ್ಯಾನರ್‌ಗಳಿಗೆ ಸೂಚನೆಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ (ಫೈಲ್ ಹೆಸರಿನಲ್ಲಿ ಡಾಟ್ ಅನ್ನು ಗಮನಿಸಿ).

YAML ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ ಮೂರು ಉಪಯುಕ್ತತೆಗಳನ್ನು (ಹ್ಯಾಡೋಲಿಂಟ್, ಡಾಕಲ್ ಮತ್ತು ಟ್ರಿವಿ) ರನ್ ಮಾಡಲು ಸೂಚನೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಅದು ಆಯ್ದ ಡಾಕರ್‌ಫೈಲ್ ಮತ್ತು ಡಾಕರ್‌ಫೈಲ್ ವೇರಿಯೇಬಲ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಚಿತ್ರವನ್ನು ವಿಶ್ಲೇಷಿಸುತ್ತದೆ. ಎಲ್ಲಾ ಅಗತ್ಯ ಫೈಲ್‌ಗಳನ್ನು ರೆಪೊಸಿಟರಿಯಿಂದ ತೆಗೆದುಕೊಳ್ಳಬಹುದು: https://github.com/Swordfish-Security/docker_cicd/

ನಿಂದ ಆಯ್ದ ಭಾಗ mydockerfile.df (ಇದು ಉಪಯುಕ್ತತೆಯ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಪ್ರದರ್ಶಿಸಲು ಮಾತ್ರ ಅನಿಯಂತ್ರಿತ ಸೂಚನೆಗಳನ್ನು ಹೊಂದಿರುವ ಅಮೂರ್ತ ಫೈಲ್ ಆಗಿದೆ). ಫೈಲ್‌ಗೆ ನೇರ ಲಿಂಕ್: mydockerfile.df

mydockerfile.df ನ ವಿಷಯಗಳು

FROM amd64/node:10.16.0-alpine@sha256:f59303fb3248e5d992586c76cc83e1d3700f641cbcd7c0067bc7ad5bb2e5b489 AS tsbuild
COPY package.json .
COPY yarn.lock .
RUN yarn install
COPY lib lib
COPY tsconfig.json tsconfig.json
COPY tsconfig.app.json tsconfig.app.json
RUN yarn build
FROM amd64/ubuntu:18.04@sha256:eb70667a801686f914408558660da753cde27192cd036148e58258819b927395
LABEL maintainer="Rhys Arkins <[email protected]>"
LABEL name="renovate"
...
COPY php.ini /usr/local/etc/php/php.ini
RUN cp -a /tmp/piik/* /var/www/html/
RUN rm -rf /tmp/piwik
RUN chown -R www-data /var/www/html
ADD piwik-cli-setup /piwik-cli-setup
ADD reset.php /var/www/html/
## ENTRYPOINT ##
ADD entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
USER root

YAML ಸಂರಚನೆಯು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ (ಫೈಲ್ ಅನ್ನು ಇಲ್ಲಿ ನೇರ ಲಿಂಕ್ ಮೂಲಕ ಕಾಣಬಹುದು: .gitlab-ci.yml):

.gitlab-ci.yml ನ ವಿಷಯಗಳು

variables:
    DOCKER_HOST: "tcp://docker:2375/"
    DOCKERFILE: "mydockerfile.df" # name of the Dockerfile to analyse   
    DOCKERIMAGE: "bkimminich/juice-shop" # name of the Docker image to analyse
    # DOCKERIMAGE: "knqyf263/cve-2018-11235" # test Docker image with several CRITICAL CVE
    SHOWSTOPPER_PRIORITY: "CRITICAL" # what level of criticality will fail Trivy job
    TRIVYCACHE: "$CI_PROJECT_DIR/.cache" # where to cache Trivy database of vulnerabilities for faster reuse
    ARTIFACT_FOLDER: "$CI_PROJECT_DIR"
 
services:
    - docker:dind # to be able to build docker images inside the Runner
 
stages:
    - scan
    - report
    - publish
 
HadoLint:
    # Basic lint analysis of Dockerfile instructions
    stage: scan
    image: docker:git
 
    after_script:
    - cat $ARTIFACT_FOLDER/hadolint_results.json
 
    script:
    - export VERSION=$(wget -q -O - https://api.github.com/repos/hadolint/hadolint/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
    - wget https://github.com/hadolint/hadolint/releases/download/v${VERSION}/hadolint-Linux-x86_64 && chmod +x hadolint-Linux-x86_64
     
    # NB: hadolint will always exit with 0 exit code
    - ./hadolint-Linux-x86_64 -f json $DOCKERFILE > $ARTIFACT_FOLDER/hadolint_results.json || exit 0
 
    artifacts:
        when: always # return artifacts even after job failure       
        paths:
        - $ARTIFACT_FOLDER/hadolint_results.json
 
Dockle:
    # Analysing best practices about docker image (users permissions, instructions followed when image was built, etc.)
    stage: scan   
    image: docker:git
 
    after_script:
    - cat $ARTIFACT_FOLDER/dockle_results.json
 
    script:
    - export VERSION=$(wget -q -O - https://api.github.com/repos/goodwithtech/dockle/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
    - wget https://github.com/goodwithtech/dockle/releases/download/v${VERSION}/dockle_${VERSION}_Linux-64bit.tar.gz && tar zxf dockle_${VERSION}_Linux-64bit.tar.gz
    - ./dockle --exit-code 1 -f json --output $ARTIFACT_FOLDER/dockle_results.json $DOCKERIMAGE   
     
    artifacts:
        when: always # return artifacts even after job failure       
        paths:
        - $ARTIFACT_FOLDER/dockle_results.json
 
Trivy:
    # Analysing docker image and package dependencies against several CVE bases
    stage: scan   
    image: docker:git
 
    script:
    # getting the latest Trivy
    - apk add rpm
    - export VERSION=$(wget -q -O - https://api.github.com/repos/knqyf263/trivy/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
    - wget https://github.com/knqyf263/trivy/releases/download/v${VERSION}/trivy_${VERSION}_Linux-64bit.tar.gz && tar zxf trivy_${VERSION}_Linux-64bit.tar.gz
     
    # displaying all vulnerabilities w/o failing the build
    - ./trivy -d --cache-dir $TRIVYCACHE -f json -o $ARTIFACT_FOLDER/trivy_results.json --exit-code 0 $DOCKERIMAGE    
    
    # write vulnerabilities info to stdout in human readable format (reading pure json is not fun, eh?). You can remove this if you don't need this.
    - ./trivy -d --cache-dir $TRIVYCACHE --exit-code 0 $DOCKERIMAGE    
 
    # failing the build if the SHOWSTOPPER priority is found
    - ./trivy -d --cache-dir $TRIVYCACHE --exit-code 1 --severity $SHOWSTOPPER_PRIORITY --quiet $DOCKERIMAGE
         
    artifacts:
        when: always # return artifacts even after job failure
        paths:
        - $ARTIFACT_FOLDER/trivy_results.json
 
    cache:
        paths:
        - .cache
 
Report:
    # combining tools outputs into one HTML
    stage: report
    when: always
    image: python:3.5
     
    script:
    - mkdir json
    - cp $ARTIFACT_FOLDER/*.json ./json/
    - pip install json2html
    - wget https://raw.githubusercontent.com/shad0wrunner/docker_cicd/master/convert_json_results.py
    - python ./convert_json_results.py
     
    artifacts:
        paths:
        - results.html

ಅಗತ್ಯವಿದ್ದರೆ, ನೀವು ಉಳಿಸಿದ ಚಿತ್ರಗಳನ್ನು .tar ಆರ್ಕೈವ್ ರೂಪದಲ್ಲಿ ಸ್ಕ್ಯಾನ್ ಮಾಡಬಹುದು (ಆದಾಗ್ಯೂ, YAML ಫೈಲ್‌ನಲ್ಲಿನ ಉಪಯುಕ್ತತೆಗಳಿಗಾಗಿ ನೀವು ಇನ್‌ಪುಟ್ ನಿಯತಾಂಕಗಳನ್ನು ಬದಲಾಯಿಸಬೇಕಾಗುತ್ತದೆ)

NB: Trivy ಅನ್ನು ಸ್ಥಾಪಿಸುವ ಅಗತ್ಯವಿದೆ ಆರ್ಪಿಎಮ್ и ಹೋಗಿ. ಇಲ್ಲದಿದ್ದರೆ, RedHat-ಆಧಾರಿತ ಚಿತ್ರಗಳನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡುವಾಗ ಮತ್ತು ದುರ್ಬಲತೆಯ ಡೇಟಾಬೇಸ್‌ಗೆ ನವೀಕರಣಗಳನ್ನು ಸ್ವೀಕರಿಸುವಾಗ ಅದು ದೋಷಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ.

2. ರೆಪೊಸಿಟರಿಗೆ ಫೈಲ್‌ಗಳನ್ನು ಸೇರಿಸಿದ ನಂತರ, ನಮ್ಮ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್‌ನಲ್ಲಿರುವ ಸೂಚನೆಗಳ ಪ್ರಕಾರ, GitLab ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಬಿಲ್ಡ್ ಮತ್ತು ಸ್ಕ್ಯಾನ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. CI/CD → ಪೈಪ್‌ಲೈನ್‌ಗಳ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ನೀವು ಸೂಚನೆಗಳ ಪ್ರಗತಿಯನ್ನು ನೋಡಬಹುದು.

ಪರಿಣಾಮವಾಗಿ, ನಾವು ನಾಲ್ಕು ಕಾರ್ಯಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ. ಅವುಗಳಲ್ಲಿ ಮೂರು ಸ್ಕ್ಯಾನಿಂಗ್‌ನೊಂದಿಗೆ ನೇರವಾಗಿ ವ್ಯವಹರಿಸುತ್ತವೆ, ಮತ್ತು ಕೊನೆಯದು (ವರದಿ) ಸ್ಕ್ಯಾನಿಂಗ್ ಫಲಿತಾಂಶಗಳೊಂದಿಗೆ ಚದುರಿದ ಫೈಲ್‌ಗಳಿಂದ ಸರಳವಾದ ವರದಿಯನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ.
ಡಾಕರ್ ಭದ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳು
ಡೀಫಾಲ್ಟ್ ಆಗಿ, ಚಿತ್ರ ಅಥವಾ ಅವಲಂಬನೆಗಳಲ್ಲಿ ನಿರ್ಣಾಯಕ ದೋಷಗಳು ಪತ್ತೆಯಾದರೆ Trivy ಚಾಲನೆಯಾಗುವುದನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಹ್ಯಾಡೋಲಿಂಟ್ ಯಾವಾಗಲೂ ಯಶಸ್ಸಿನ ಕೋಡ್ ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ ಏಕೆಂದರೆ ಅದು ಯಾವಾಗಲೂ ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿ ಫಲಿತಾಂಶವನ್ನು ನೀಡುತ್ತದೆ, ಇದು ನಿರ್ಮಾಣವನ್ನು ನಿಲ್ಲಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ.

ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಅವಶ್ಯಕತೆಗಳನ್ನು ಅವಲಂಬಿಸಿ, ನೀವು ನಿರ್ಗಮನ ಕೋಡ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದು ಆದ್ದರಿಂದ ಈ ಉಪಯುಕ್ತತೆಗಳು ನಿರ್ದಿಷ್ಟ ವಿಮರ್ಶಾತ್ಮಕತೆಯ ಸಮಸ್ಯೆಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಿದಾಗ, ಅವುಗಳು ನಿರ್ಮಾಣ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನಿಲ್ಲಿಸುತ್ತವೆ. ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, SHOWSTOPPER ವೇರಿಯೇಬಲ್‌ನಲ್ಲಿ ನಾವು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ನಿರ್ಣಾಯಕತೆಯೊಂದಿಗೆ ಟ್ರಿವಿ ದುರ್ಬಲತೆಯನ್ನು ಪತ್ತೆಹಚ್ಚಿದರೆ ಮಾತ್ರ ನಿರ್ಮಾಣವು ನಿಲ್ಲುತ್ತದೆ .gitlab-ci.yml.
ಡಾಕರ್ ಭದ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳು

ಪ್ರತಿ ಉಪಯುಕ್ತತೆಯ ಫಲಿತಾಂಶವನ್ನು ಪ್ರತಿ ಸ್ಕ್ಯಾನಿಂಗ್ ಕಾರ್ಯದ ಲಾಗ್‌ನಲ್ಲಿ, ನೇರವಾಗಿ ಕಲಾಕೃತಿಗಳ ವಿಭಾಗದಲ್ಲಿನ json ಫೈಲ್‌ಗಳಲ್ಲಿ ಅಥವಾ ಸರಳ HTML ವರದಿಯಲ್ಲಿ ವೀಕ್ಷಿಸಬಹುದು (ಕೆಳಗಿನವುಗಳಲ್ಲಿ ಹೆಚ್ಚು):
ಡಾಕರ್ ಭದ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳು

3. ಯುಟಿಲಿಟಿ ವರದಿಗಳನ್ನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಮಾನವ-ಓದಬಲ್ಲ ರೂಪದಲ್ಲಿ ಪ್ರಸ್ತುತಪಡಿಸಲು, ಮೂರು JSON ಫೈಲ್‌ಗಳನ್ನು ದೋಷಗಳ ಕೋಷ್ಟಕದೊಂದಿಗೆ ಒಂದು HTML ಫೈಲ್‌ಗೆ ಪರಿವರ್ತಿಸಲು ಸಣ್ಣ ಪೈಥಾನ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
ಈ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಪ್ರತ್ಯೇಕ ವರದಿ ಕಾರ್ಯದಿಂದ ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ ಮತ್ತು ಅದರ ಅಂತಿಮ ಕಲಾಕೃತಿಯು ವರದಿಯೊಂದಿಗೆ HTML ಫೈಲ್ ಆಗಿದೆ. ಸ್ಕ್ರಿಪ್ಟ್ ಮೂಲವು ರೆಪೊಸಿಟರಿಯಲ್ಲಿದೆ ಮತ್ತು ನಿಮ್ಮ ಅಗತ್ಯತೆಗಳು, ಬಣ್ಣಗಳು ಇತ್ಯಾದಿಗಳಿಗೆ ಸರಿಹೊಂದುವಂತೆ ಅಳವಡಿಸಿಕೊಳ್ಳಬಹುದು.
ಡಾಕರ್ ಭದ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಉಪಯುಕ್ತತೆಗಳನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸುವ ವಿಧಾನಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳು

ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್

ನೀವು CI/CD ಸಿಸ್ಟಮ್‌ನ ಹೊರಗೆ ಡಾಕರ್ ಚಿತ್ರಗಳನ್ನು ಪರಿಶೀಲಿಸಬೇಕಾದಾಗ ಅಥವಾ ಹೋಸ್ಟ್‌ನಲ್ಲಿ ನೇರವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ರೂಪದಲ್ಲಿ ಎಲ್ಲಾ ಸೂಚನೆಗಳನ್ನು ನೀವು ಹೊಂದಿರಬೇಕಾದ ಸಂದರ್ಭಗಳಲ್ಲಿ ಎರಡನೆಯ ಆಯ್ಕೆಯು ಸೂಕ್ತವಾಗಿದೆ. ಈ ಆಯ್ಕೆಯು ಸಿದ್ಧವಾದ ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್‌ನಿಂದ ಮುಚ್ಚಲ್ಪಟ್ಟಿದೆ, ಅದನ್ನು ಕ್ಲೀನ್ ವರ್ಚುವಲ್ (ಅಥವಾ ನೈಜ) ಗಣಕದಲ್ಲಿ ಚಲಾಯಿಸಬಹುದು. ಮೇಲೆ ವಿವರಿಸಿದ ಗಿಟ್‌ಲ್ಯಾಬ್-ರನ್ನರ್‌ನಂತೆಯೇ ಸ್ಕ್ರಿಪ್ಟ್ ಅದೇ ಸೂಚನೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ.

ಸ್ಕ್ರಿಪ್ಟ್ ಯಶಸ್ವಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಲು, ಡಾಕರ್ ಅನ್ನು ಸಿಸ್ಟಮ್‌ನಲ್ಲಿ ಸ್ಥಾಪಿಸಬೇಕು ಮತ್ತು ಪ್ರಸ್ತುತ ಬಳಕೆದಾರರು ಡಾಕರ್ ಗುಂಪಿನಲ್ಲಿರಬೇಕು.

ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಇಲ್ಲಿ ಕಾಣಬಹುದು: docker_sec_check.sh

ಫೈಲ್‌ನ ಪ್ರಾರಂಭದಲ್ಲಿ, ಯಾವ ಇಮೇಜ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಬೇಕೆಂದು ವೇರಿಯೇಬಲ್‌ಗಳು ಸೂಚಿಸುತ್ತವೆ ಮತ್ತು ಯಾವ ನಿರ್ಣಾಯಕ ದೋಷಗಳು ಟ್ರಿವಿ ಯುಟಿಲಿಟಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ದೋಷ ಕೋಡ್‌ನೊಂದಿಗೆ ನಿರ್ಗಮಿಸಲು ಕಾರಣವಾಗುತ್ತವೆ.

ಸ್ಕ್ರಿಪ್ಟ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಮಯದಲ್ಲಿ, ಎಲ್ಲಾ ಉಪಯುಕ್ತತೆಗಳನ್ನು ಡೈರೆಕ್ಟರಿಗೆ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ ಡಾಕರ್_ಟೂಲ್ಸ್, ಅವರ ಕೆಲಸದ ಫಲಿತಾಂಶಗಳು ಡೈರೆಕ್ಟರಿಯಲ್ಲಿವೆ ಡಾಕರ್_ಟೂಲ್ಸ್/ಜೆಸನ್, ಮತ್ತು ವರದಿಯೊಂದಿಗೆ HTML ಫೈಲ್‌ನಲ್ಲಿರುತ್ತದೆ results.html.

ಉದಾಹರಣೆ ಸ್ಕ್ರಿಪ್ಟ್ ಔಟ್ಪುಟ್

~/docker_cicd$ ./docker_sec_check.sh

[+] Setting environment variables
[+] Installing required packages
[+] Preparing necessary directories
[+] Fetching sample Dockerfile
2020-10-20 10:40:00 (45.3 MB/s) - ‘Dockerfile’ saved [8071/8071]
[+] Pulling image to scan
latest: Pulling from bkimminich/juice-shop
[+] Running Hadolint
...
Dockerfile:205 DL3015 Avoid additional packages by specifying `--no-install-recommends`
Dockerfile:248 DL3002 Last USER should not be root
...
[+] Running Dockle
...
WARN    - DKL-DI-0006: Avoid latest tag
        * Avoid 'latest' tag
INFO    - CIS-DI-0005: Enable Content trust for Docker
        * export DOCKER_CONTENT_TRUST=1 before docker pull/build
...
[+] Running Trivy
juice-shop/frontend/package-lock.json
=====================================
Total: 3 (UNKNOWN: 0, LOW: 1, MEDIUM: 0, HIGH: 2, CRITICAL: 0)

+---------------------+------------------+----------+---------+-------------------------+
|       LIBRARY       | VULNERABILITY ID | SEVERITY | VERSION |             TITLE       |
+---------------------+------------------+----------+---------+-------------------------+
| object-path         | CVE-2020-15256   | HIGH     | 0.11.4  | Prototype pollution in  |
|                     |                  |          |         | object-path             |
+---------------------+------------------+          +---------+-------------------------+
| tree-kill           | CVE-2019-15599   |          | 1.2.2   | Code Injection          |
+---------------------+------------------+----------+---------+-------------------------+
| webpack-subresource | CVE-2020-15262   | LOW      | 1.4.1   | Unprotected dynamically |
|                     |                  |          |         | loaded chunks           |
+---------------------+------------------+----------+---------+-------------------------+

juice-shop/package-lock.json
============================
Total: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)

...

juice-shop/package-lock.json
============================
Total: 5 (CRITICAL: 5)

...
[+] Removing left-overs
[+] Making the output look pretty
[+] Converting JSON results
[+] Writing results HTML
[+] Clean exit ============================================================
[+] Everything is done. Find the resulting HTML report in results.html

ಎಲ್ಲಾ ಉಪಯುಕ್ತತೆಗಳೊಂದಿಗೆ ಡಾಕರ್ ಚಿತ್ರ

ಮೂರನೇ ಪರ್ಯಾಯವಾಗಿ, ಭದ್ರತಾ ಉಪಯುಕ್ತತೆಗಳೊಂದಿಗೆ ಚಿತ್ರವನ್ನು ರಚಿಸಲು ನಾನು ಎರಡು ಸರಳ ಡಾಕರ್‌ಫೈಲ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸಿದೆ. ರೆಪೊಸಿಟರಿಯಿಂದ ಚಿತ್ರವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲು ಒಂದು ಸೆಟ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಒಂದು ಡಾಕರ್‌ಫೈಲ್ ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಎರಡನೆಯದು (ಡಾಕರ್‌ಫೈಲ್_ಟಾರ್) ಚಿತ್ರದೊಂದಿಗೆ ಟಾರ್ ಫೈಲ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲು ಸೆಟ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.

1. ರೆಪೊಸಿಟರಿಯಿಂದ ಅನುಗುಣವಾದ ಡಾಕರ್ ಫೈಲ್ ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ https://github.com/Swordfish-Security/docker_cicd/tree/master/Dockerfile.
2. ನಾವು ಅದನ್ನು ಜೋಡಣೆಗಾಗಿ ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ:

docker build -t dscan:image -f docker_security.df .

3. ಜೋಡಣೆ ಪೂರ್ಣಗೊಂಡ ನಂತರ, ನಾವು ಚಿತ್ರದಿಂದ ಧಾರಕವನ್ನು ರಚಿಸುತ್ತೇವೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ನಾವು ಆಸಕ್ತಿ ಹೊಂದಿರುವ ಚಿತ್ರದ ಹೆಸರಿನೊಂದಿಗೆ DOCKERIMAGE ಪರಿಸರ ವೇರಿಯೇಬಲ್ ಅನ್ನು ರವಾನಿಸುತ್ತೇವೆ ಮತ್ತು ನಾವು ನಮ್ಮ ಯಂತ್ರದಿಂದ ಫೈಲ್‌ಗೆ ವಿಶ್ಲೇಷಿಸಲು ಬಯಸುವ ಡಾಕರ್‌ಫೈಲ್ ಅನ್ನು ಆರೋಹಿಸುತ್ತೇವೆ. /ಡಾಕರ್‌ಫೈಲ್ (ಈ ಫೈಲ್‌ಗೆ ಸಂಪೂರ್ಣ ಮಾರ್ಗದ ಅಗತ್ಯವಿದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ):

docker run --rm -v $(pwd)/results:/results -v $(pwd)/docker_security.df:/Dockerfile -e DOCKERIMAGE="bkimminich/juice-shop" dscan:image


[+] Setting environment variables
[+] Running Hadolint
/Dockerfile:3 DL3006 Always tag the version of an image explicitly
[+] Running Dockle
WARN    - DKL-DI-0006: Avoid latest tag
        * Avoid 'latest' tag
INFO    - CIS-DI-0005: Enable Content trust for Docker
        * export DOCKER_CONTENT_TRUST=1 before docker pull/build
INFO    - CIS-DI-0006: Add HEALTHCHECK instruction to the container image
        * not found HEALTHCHECK statement
INFO    - DKL-LI-0003: Only put necessary files
        * unnecessary file : juice-shop/node_modules/sqlite3/Dockerfile
        * unnecessary file : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm64/Dockerfile
        * unnecessary file : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm/Dockerfile
[+] Running Trivy
...
juice-shop/package-lock.json
============================
Total: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)
...
[+] Making the output look pretty
[+] Starting the main module ============================================================
[+] Converting JSON results
[+] Writing results HTML
[+] Clean exit ============================================================
[+] Everything is done. Find the resulting HTML report in results.html

ರೆಸೆಲ್ಯೂಟ್ಸ್

ಡಾಕರ್ ಕಲಾಕೃತಿಗಳನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲು ನಾವು ಕೇವಲ ಒಂದು ಮೂಲಭೂತ ಉಪಯುಕ್ತತೆಗಳನ್ನು ನೋಡಿದ್ದೇವೆ, ಇದು ನನ್ನ ಅಭಿಪ್ರಾಯದಲ್ಲಿ, ಚಿತ್ರದ ಸುರಕ್ಷತೆಯ ಅಗತ್ಯತೆಗಳ ಯೋಗ್ಯ ಭಾಗವನ್ನು ಬಹಳ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಒಳಗೊಂಡಿದೆ. ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ಪಾವತಿಸಿದ ಮತ್ತು ಉಚಿತ ಪರಿಕರಗಳೂ ಸಹ ಇವೆ, ಅವುಗಳು ಒಂದೇ ರೀತಿಯ ತಪಾಸಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು, ಸುಂದರವಾದ ವರದಿಗಳನ್ನು ಬರೆಯಬಹುದು ಅಥವಾ ಸಂಪೂರ್ಣವಾಗಿ ಕನ್ಸೋಲ್ ಮೋಡ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡಬಹುದು, ಕಂಟೇನರ್ ಮ್ಯಾನೇಜ್‌ಮೆಂಟ್ ಸಿಸ್ಟಮ್‌ಗಳನ್ನು ಕವರ್ ಮಾಡಿ, ಇತ್ಯಾದಿ. ಈ ಪರಿಕರಗಳ ಅವಲೋಕನ ಮತ್ತು ಅವುಗಳನ್ನು ಹೇಗೆ ಸಂಯೋಜಿಸುವುದು ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಕಾಣಿಸಿಕೊಳ್ಳಬಹುದು .

ಈ ಲೇಖನದಲ್ಲಿ ವಿವರಿಸಿದ ಪರಿಕರಗಳ ಗುಂಪಿನ ಉತ್ತಮ ವಿಷಯವೆಂದರೆ ಅವುಗಳು ಎಲ್ಲಾ ತೆರೆದ ಮೂಲಗಳಾಗಿವೆ ಮತ್ತು ನಿಮ್ಮ ಅಗತ್ಯತೆಗಳು ಮತ್ತು ಮೂಲಸೌಕರ್ಯಕ್ಕೆ ಸೂಕ್ತವಾದುದನ್ನು ಕಂಡುಹಿಡಿಯಲು ನೀವು ಅವುಗಳನ್ನು ಮತ್ತು ಇತರ ರೀತಿಯ ಸಾಧನಗಳೊಂದಿಗೆ ಪ್ರಯೋಗಿಸಬಹುದು. ಸಹಜವಾಗಿ, ಕಂಡುಬರುವ ಎಲ್ಲಾ ದುರ್ಬಲತೆಗಳನ್ನು ನಿರ್ದಿಷ್ಟ ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ ಅನ್ವಯಿಸಲು ಅಧ್ಯಯನ ಮಾಡಬೇಕು, ಆದರೆ ಇದು ಭವಿಷ್ಯದ ದೊಡ್ಡ ಲೇಖನಕ್ಕೆ ವಿಷಯವಾಗಿದೆ.

ಈ ಮಾರ್ಗದರ್ಶಿ, ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಮತ್ತು ಉಪಯುಕ್ತತೆಗಳು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತವೆ ಮತ್ತು ಕಂಟೈನರೈಸೇಶನ್ ಪ್ರದೇಶದಲ್ಲಿ ಹೆಚ್ಚು ಸುರಕ್ಷಿತ ಮೂಲಸೌಕರ್ಯವನ್ನು ರಚಿಸಲು ಆರಂಭಿಕ ಹಂತವಾಗಿ ಪರಿಣಮಿಸುತ್ತದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ