🎧 Listen to this article: हिंदी · English · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · 日本語 · 中文
🌍 Read this in your language: हिंदी · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · ଓଡ଼ିଆ · 日本語 · 中文
ಇತ್ತೀಚೆಗೆ, ನನ್ನ ರಿಲೀಸ್ ಪೈಪ್ಲೈನ್ ನನ್ನ ರಿಲೀಸ್ ಅನ್ನು ರವಾನಿಸಲು ನಿರಾಕರಿಸಿದ ಪರಿಸ್ಥಿತಿಯನ್ನು ನಾನು ಎದುರಿಸಿದೆ. ಈ ಘಟನೆಯು ನನ್ನ ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ಉಳಿಸಿದ್ದಲ್ಲದೆ, ದೃಢವಾದ ರಿಲೀಸ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಹೊಂದುವುದರ ಪ್ರಾಮುಖ್ಯತೆಯನ್ನು ಎತ್ತಿ ತೋರಿಸಿತು.
ಘಟನೆ
ನನ್ನ ಪ್ರಾಜೆಕ್ಟ್ agentwatch ಗಾಗಿ ನಾನು ರಿಲೀಸ್ ಒಂದನ್ನು ಆರಂಭಿಸಿದೆ, ಇದು agentsec-ecosystem ನಲ್ಲಿರುವ agent-security ಟೂಲ್ನ ಭಾಗವಾಗಿದೆ. ರಿಲೀಸ್ ವರ್ಕ್ಫ್ಲೋ ಪ್ರಾರಂಭವಾಗಿ, ಹಲವಾರು ನಿರ್ಣಾಯಕ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಿತು:
- wheel ಅನ್ನು ಬಿಲ್ಡ್ ಮಾಡುವುದು: ಇದು ಸುಲಭವಾಗಿ ಇನ್ಸ್ಟಾಲ್ ಮಾಡಬಹುದಾದ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ರಚಿಸುವ ಪ್ರಕ್ರಿಯೆಯಾಗಿದೆ.
- Software Bill of Materials (SBOM) ಅನ್ನು ರಚಿಸುವುದು: ಈ ಡಾಕ್ಯುಮೆಂಟ್ ಸಾಫ್ಟ್ವೇರ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಘಟಕಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ, ಇದು ಭದ್ರತೆ ಮತ್ತು ಅನುಸರಣೆಗೆ ಮುಖ್ಯವಾಗಿದೆ.
- checksum ಗಳನ್ನು ಬರೆಯುವುದು: ಫೈಲ್ಗಳನ್ನು ಬದಲಾಯಿಸಲಾಗಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಇವು ಫೈಲ್ಗಳ ವಿಶಿಷ್ಟ ಗುರುತಿಸುವಿಕೆಗಳಾಗಿವೆ.
- keyless Sigstore ನೊಂದಿಗೆ ಎಲ್ಲವನ್ನೂ ಸೈನ್ ಮಾಡುವುದು: ಇದು ರಿಲೀಸ್ನ ಅಧಿಕೃತತೆಯನ್ನು ಪರಿಶೀಲಿಸುವ ಮೂಲಕ ಭದ್ರತೆಯ ಹೆಚ್ಚುವರಿ ಪದರವನ್ನು ಸೇರಿಸುತ್ತದೆ.
ಆದಾಗ್ಯೂ, ವರ್ಕ್ಫ್ಲೋ ತನ್ನ ಕೊನೆಯ ಹಂತದಲ್ಲಿ ವಿಫಲವಾಯಿತು: ಪ್ರಕಟಿಸುವ ಮೊದಲು ರಿಲೀಸ್ ಅನ್ನು ಪರಿಶೀಲಿಸುವುದು. ನನಗೆ ಬಂದ ದೋಷ ಸಂದೇಶ ಹೀಗಿತ್ತು:
ModuleNotFoundError: No module named 'cryptography'
ಈ ವೈಫಲ್ಯದ ಅರ್ಥವೇನೆಂದರೆ ನನ್ನ GitHub ರಿಲೀಸ್ ಲಭ್ಯವಿರಲಿಲ್ಲ, ಇದು ನಿರಾಶಾದಾಯಕವಾಗಿದ್ದರೂ ಅಂತಿಮವಾಗಿ ಒಳ್ಳೆಯ ವಿಷಯವಾಗಿತ್ತು. ಸಿಸ್ಟಮ್ ವಿನ್ಯಾಸಗೊಳಿಸಿದಂತೆಯೇ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂಬುದನ್ನು ಇದು ತೋರಿಸಿತು.
ಇದು ಏಕೆ ಸಂಭವಿಸಿತು?
ಪೈಪ್ಲೈನ್ನ ಒಂದು ಹಂತದಲ್ಲಿ ರಿಲೀಸ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ ಪರಿಶೀಲಿಸಬೇಕಿದ್ದಾಗ ಈ ವೈಫಲ್ಯ ಸಂಭವಿಸಿತು. ವಿಫಲವಾದ ನಿರ್ದಿಷ್ಟ ಕಮಾಂಡ್ agentwatch verify-release, ಇದು ಕ್ಲೀನ್ ಪರಿಸರದಿಂದ ಬಿಲ್ಡ್ ಮಾಡಲಾದ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ಗಳನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಪರಿಶೀಲಿಸದ ಹೊರತು ಅದನ್ನು ಪ್ರಕಟಿಸಲು ನಿರಾಕರಿಸಿದ್ದರಿಂದ ಈ ವರ್ಕ್ಫ್ಲೋನ ವಿನ್ಯಾಸವು ನಿರ್ಣಾಯಕವಾಗಿತ್ತು.
ಈ ಸಂದರ್ಭದಲ್ಲಿ, ದೋಷವು 'cryptography' ಎಂಬ ಕಾಣೆಯಾದ ಮಾಡ್ಯೂಲ್ನಿಂದ ಉಂಟಾಯಿತು. ಈ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ರಿಲೀಸ್ ಪರಿಸರದಲ್ಲಿ ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿರಲಿಲ್ಲ ಏಕೆಂದರೆ ಅದನ್ನು ಐಚ್ಛಿಕ ಹೆಚ್ಚುವರಿ ಎಂದು ಪರಿಗಣಿಸಲಾಗಿತ್ತು. ಕೋಡ್ ಇಂಪೋರ್ಟ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದ ಕಾರಣ ಈ ಸಮಸ್ಯೆ ಎದುರಾಯಿತು InvalidSignature 'cryptography' ಮಾಡ್ಯೂಲ್ನಿಂದ ಟಾಪ್-ಲೆವೆಲ್ನಲ್ಲಿ, ಇದರರ್ಥ ಅಗತ್ಯವಿಲ್ಲದಿದ್ದಾಗಲೂ ಅದನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿತ್ತು.
ರಿಲೀಸ್ ಅನ್ನು ಉಳಿಸಿದ ವಿನ್ಯಾಸ
ನನ್ನ ರಿಲೀಸ್ ವರ್ಕ್ಫ್ಲೋನ ವಿನ್ಯಾಸವು ಒಂದು ನಿರ್ಣಾಯಕ ಪೂರ್ವಷರತ್ತನ್ನು ಒಳಗೊಂಡಿತ್ತು: ಒಂದು ವೇಳೆ agentwatch verify-release ಕಮಾಂಡ್ ಚಲಾಯಿಸಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ಯಾವುದೂ ರವಾನೆಯಾಗುವುದಿಲ್ಲ. ಈ ನಿರ್ಧಾರವು ಸಮಸ್ಯೆಯಾಗಬಹುದಾಗಿದ್ದ ರಿಲೀಸ್ ಅನ್ನು ವಿಫಲ ರನ್ ಆಗಿ ಪರಿವರ್ತಿಸಿತು, ಬಳಕೆದಾರರನ್ನು ತಲುಪುವ ಮುನ್ನವೇ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಇದು ನನಗೆ ಪ್ರೇರೇಪಿಸಿತು.
ದೋಷದ ಟ್ರೇಸ್ಬ್ಯಾಕ್, ಇಂಪೋರ್ಟ್ ಚೈನ್ ಇದಕ್ಕೆ ಕಾರಣ ಎಂದು ತೋರಿಸಿತು. ಮೂಲಭೂತ ಕಾರ್ಯಕ್ಷಮತೆಗೆ ಅಗತ್ಯವಿಲ್ಲದ ಮಾಡ್ಯೂಲ್ಗಳು ಸೇರಿದಂತೆ ಎಲ್ಲವನ್ನೂ ಸ್ಟಾರ್ಟ್ಅಪ್ನಲ್ಲಿ ಲೋಡ್ ಮಾಡಲು CLI ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದ ಕಾರಣ ಈ ವೈಫಲ್ಯ ಸಂಭವಿಸಿತು. ಸಾಫ್ಟ್ವೇರ್ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ಇದು ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಯಾಗಿದ್ದು, ಡಿಪೆಂಡೆನ್ಸಿಗಳು ಅನಿರೀಕ್ಷಿತ ಸಮಸ್ಯೆಗಳನ್ನು ಉಂಟುಮಾಡಬಹುದು.
ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವುದು
ಈ ಸಮಸ್ಯೆಗೆ ಪರಿಹಾರವು ನೇರವಾಗಿತ್ತು. ನಾನು ಇಂಪೋರ್ಟ್ ಸ್ಟೇಟ್ಮೆಂಟ್ ಅನ್ನು InvalidSignature ನಿಜವಾಗಿಯೂ ಅದರ ಅಗತ್ಯವಿರುವ ಫಂಕ್ಷನ್ನ ಒಳಗೆ ಸ್ಥಳಾಂತರಿಸಿದೆ. ಈ ರೀತಿಯಾಗಿ, ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆದಾಗ ಮಾತ್ರ ಇಂಪೋರ್ಟ್ ನಡೆಯುತ್ತದೆ, ಇದು ಸ್ಟಾರ್ಟ್ಅಪ್ ಸಮಯದಲ್ಲಿ ಅನಗತ್ಯ ಲೋಡಿಂಗ್ ಅನ್ನು ತಪ್ಪಿಸುತ್ತದೆ. ಬದಲಾವಣೆಯ ಸರಳೀಕೃತ ಆವೃತ್ತಿ ಇಲ್ಲಿದೆ:
def _verify_signature(public: Any, alg: str, signing_input: bytes, signature: bytes) -> bool:
from cryptography.exceptions import InvalidSignature # lazy import
# rest of the function...
ಈ ಹೊಂದಾಣಿಕೆಯು, ಸಿಗ್ನೇಚರ್ ಪರಿಶೀಲನೆಗೆ ನಿರ್ದಿಷ್ಟವಾಗಿ ಅಗತ್ಯವಿಲ್ಲದ ಹೊರತು 'cryptography' ಮಾಡ್ಯೂಲ್ನ ಅಗತ್ಯವಿಲ್ಲದೆ ಉಳಿದ ಕೋಡ್ ರನ್ ಆಗುವುದನ್ನು ಖಚಿತಪಡಿಸಿತು.
ಉಪಸಂಹಾರ
ಈ ಅನುಭವವು ಉತ್ತಮವಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ರಿಲೀಸ್ ಪೈಪ್ಲೈನ್ನ ಮೌಲ್ಯವನ್ನು ನನಗೆ ಕಲಿಸಿತು. ಇದು ಡಿಪ್ಲಾಯ್ಮೆಂಟ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುವುದಷ್ಟೇ ಅಲ್ಲದೆ ಸುರಕ್ಷತಾ ಜಾಲವಾಗಿಯೂ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಸಾಂಪ್ರದಾಯಿಕ ಪರೀಕ್ಷಾ ವಿಧಾನಗಳಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳಬಹುದಾದ ಸಮಸ್ಯೆಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ.
ಪ್ರಯೋಜನಗಳು
- ದೋಷಪೂರಿತ ರಿಲೀಸ್ಗಳನ್ನು ತಡೆಯುತ್ತದೆ: ಸಮಸ್ಯೆಗಳು ಬಳಕೆದಾರರನ್ನು ತಲುಪುವ ಮೊದಲೇ ಅವುಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ.
- ಕೋಡ್ ಗುಣಮಟ್ಟವನ್ನು ಸುಧಾರಿಸುತ್ತದೆ: ಪರಿಶೀಲನೆಗಳನ್ನು ಕಡ್ಡಾಯಗೊಳಿಸುವ ಮೂಲಕ ಉತ್ತಮ ಕೋಡಿಂಗ್ ಅಭ್ಯಾಸಗಳನ್ನು ಪ್ರೋತ್ಸಾಹಿಸುತ್ತದೆ.
- ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ: ರಿಲೀಸ್ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ನಂಬಿಕೆಯನ್ನು ಬೆಳೆಸುತ್ತದೆ.
ಅನನುಕೂಲಗಳು
- ಆರಂಭಿಕ ಸೆಟಪ್ನ ಸಂಕೀರ್ಣತೆ: ದೃಢವಾದ ಪೈಪ್ಲೈನ್ ಅನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಲು ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಬಹುದು.
- ಫಾಲ್ಸ್ ಪಾಸಿಟಿವ್ಗಳ ಸಾಧ್ಯತೆ: ಕೆಲವೊಮ್ಮೆ, ಕಟ್ಟುನಿಟ್ಟಾದ ಪರಿಶೀಲನೆಗಳಿಂದಾಗಿ ಮಾನ್ಯವಾದ ರಿಲೀಸ್ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಬಹುದು.
ಎಚ್ಚರಿಕೆ
ಈ ಲೇಖನವು ಶೈಕ್ಷಣಿಕ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಮಾತ್ರ. ನೈಜ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ ಯಾವುದೇ ಪ್ಲೇಸ್ಹೋಲ್ಡರ್ ಮೌಲ್ಯಗಳನ್ನು ನಿಜವಾದ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಬದಲಾಯಿಸಬೇಕು. ಮಾಹಿತಿಯನ್ನು ಅವಲಂಬಿಸುವ ಮೊದಲು ಯಾವಾಗಲೂ ಮೂಲ ಆಕರಗಳೊಂದಿಗೆ ಪರಿಶೀಲಿಸಿ.
ಪದೇ ಪದೇ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು
- ರಿಲೀಸ್ ಪೈಪ್ಲೈನ್ ಎಂದರೇನು? — ರಿಲೀಸ್ ಪೈಪ್ಲೈನ್ ಎಂಬುದು ಸಾಫ್ಟ್ವೇರ್ ಅನ್ನು ಸಿದ್ಧಪಡಿಸುವ ಮತ್ತು ನಿಯೋಜಿಸುವ ಸ್ವಯಂಚಾಲಿತ ಹಂತಗಳ ಸರಣಿಯಾಗಿದೆ.
- ರಿಲೀಸ್ ಪೈಪ್ಲೈನ್ ಏಕೆ ಮುಖ್ಯ? — ಸಾಫ್ಟ್ವೇರ್ ಅನ್ನು ಬಳಕೆದಾರರಿಗೆ ಬಿಡುಗಡೆ ಮಾಡುವ ಮೊದಲು ಬಗ್ಗಳು ಮತ್ತು ದೋಷಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಇದು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಗುಣಮಟ್ಟವನ್ನು ಸುಧಾರಿಸುತ್ತದೆ.
- ModuleNotFoundError ಎಂದರೆ ಏನು? — ಪ್ರಸ್ತುತ ಪರಿಸರದಲ್ಲಿ ಅಗತ್ಯವಿರುವ ಮಾಡ್ಯೂಲ್ ಲಭ್ಯವಿಲ್ಲ ಎಂಬುದನ್ನು ಇದು ಸೂಚಿಸುತ್ತದೆ.
- ModuleNotFoundError ಅನ್ನು ನಾನು ಹೇಗೆ ಸರಿಪಡಿಸಬಹುದು? — ಕಾಣೆಯಾದ ಮಾಡ್ಯೂಲ್ ನಿಮ್ಮ ಪರಿಸರದಲ್ಲಿ ಇನ್ಸ್ಟಾಲ್ ಆಗಿದೆಯೇ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
- Software Bill of Materials (SBOM) ಎಂದರೇನು? — SBOM ಎಂಬುದು ಸಾಫ್ಟ್ವೇರ್ ಪ್ಯಾಕೇಜ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಘಟಕಗಳ ಪಟ್ಟಿಯಾಗಿದ್ದು, ಭದ್ರತೆ ಮತ್ತು ಅನುಸರಣೆಗೆ ಉಪಯುಕ್ತವಾಗಿದೆ.
- keyless Sigstore ಎಂದರೇನು? — ಕೀಗಳನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ನಿರ್ವಹಿಸುವ ಅಗತ್ಯವಿಲ್ಲದೆ ಸಾಫ್ಟ್ವೇರ್ ರಿಲೀಸ್ಗಳನ್ನು ಸೈನ್ ಮಾಡುವ ವಿಧಾನ.
ಟ್ಯಾಗ್ಗಳು
#release #pipeline #software #development #automation #quality #security #testing
API Security Testing Checklist
A practical workflow for testing authentication, authorization, input handling, business logic, and evidence without losing track of scope.
Free. No spam — unsubscribe in one click.


Responses
Sign in to leave a response.