
Terrier एक Image और Container विश्लेषण उपकरण है जिसका उपयोग Images और Containers को स्कैन करने के लिए किया जा सकता है ताकि उनके hashes के अनुसार विशिष्ट फ़ाइलों की उपस्थिति की पहचान और सत्यापन किया जा सके।
टेरियर एक इमेज और कंटेनर विश्लेषण उपकरण है जिसका उपयोग OCI इमेज और कंटेनरों को स्कैन करने के लिए किया जा सकता है ताकि उनके हैश के अनुसार विशिष्ट फ़ाइलों की उपस्थिति की पहचान और सत्यापन किया जा सके। टेरियर का एक विस्तृत लेख Heroku ब्लॉग पर पाया जा सकता है: https://blog.heroku.com/terrier-open-source-identifying-analyzing-containers
बाइनरी से स्थापना के निर्देशों के लिए कृपया रिलीज़ पेज पर जाएँ।
$ go get github.com/heroku/terrier
गो के माध्यम से
$ go build
या
$ make all
$ ./terrier -h
Usage of ./terrier:
-cfg string
Load config from provided yaml file (default "cfg.yml")
स्कैन की जाने वाली इमेज का एक OCI TAR आवश्यक है, इसे cfg.yml में "Image" मान के माध्यम से टेरियर को प्रदान किया जाता है।
निम्नलिखित Docker कमांड का उपयोग Docker इमेज को TAR में बदलने के लिए किया जा सकता है जिसे टेरियर द्वारा स्कैन किया जा सकता है।
# docker save imageid -o image.tar
$ ./terrier
[+] Loading config: cfg.yml
[+] Analysing Image
[+] Docker Image Source: image.tar
[*] Inspecting Layer: 05c3c2c60920f68b506d3c66e0f6148b81a8b0831388c2d61be5ef02190bcd1f
[!] All components were identified and verified: (493/493)
टेरियर YAML को पार्स करता है, नीचे एक उदाहरण कॉन्फ़िग है।
#THIS IS AN EXAMPLE CONFIG, MODIFY TO YOUR NEEDS
mode: image
image: image.tar
# mode: container
# path: merged
# verbose: true
# veryverbose: true
files:
- name: '/usr/bin/curl'
hashes:
- hash: '2353cbb7b47d0782ba8cdd9c7438b053c982eaaea6fbef8620c31a58d1e276e8'
- hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aaa'
- hash: '9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96'
- hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
- name: '/usr/bin/go'
hashes:
- hash: '2353cbb7b47d0782ba8cdd9c7438b053c982eaaea6fbef8620c31a58d1e276e8'
#UNCOMMENT TO ANALYZE HASHES
# hashes:
# - hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
# - hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aa'
# - hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41aa'
टेरियर एक CLI उपकरण है जो आपको निम्नलिखित की अनुमति देता है:
टेरियर का उपयोग यह सत्यापित करने के लिए किया जा सकता है कि कोई विशिष्ट OCI इमेज किसी विशिष्ट बाइनरी का उपयोग कर रही है या नहीं, जो आपूर्ति श्रृंखला सत्यापन परिदृश्य में उपयोगी है। उदाहरण के लिए, हम जाँचना चाह सकते हैं कि कोई विशिष्ट Docker इमेज cURL के किसी विशिष्ट संस्करण या संस्करणों का उपयोग कर रही है। इस मामले में, टेरियर को उन बाइनरी के SHA256 हैश प्रदान किए जाते हैं जो विश्वसनीय हैं।
इस परिदृश्य के लिए एक उदाहरण YAML फ़ाइल इस प्रकार दिख सकती है:
mode: image
# verbose: true
# veryverbose: true
image: golang1131.tar
files:
- name: '/usr/local/bin/analysis.sh'
hashes:
- hash: '9adc0bf7362bb66b98005aebec36691a62c80d54755e361788c776367d11b105'
- name: '/usr/bin/curl'
hashes:
- hash: '23afbfab4f35ac90d9841a6e05f0d1487b6e0c3a914ea8dab3676c6dde612495'
- name: '/usr/local/bin/staticcheck'
hashes:
- hash: '73f89162bacda8dd2354021dc56dc2f3dba136e873e372312843cd895dde24a2'
टेरियर का उपयोग प्रदान किए गए हैश के एक सेट के अनुसार OCI इमेज में किसी विशेष फ़ाइल या फ़ाइलों की उपस्थिति को सत्यापित करने के लिए किया जा सकता है। यह जाँचने के लिए उपयोगी हो सकता है कि क्या किसी OCI इमेज में कोई दुर्भावनापूर्ण फ़ाइल या कोई फ़ाइल है जिसे पहचानने की आवश्यकता है।
इस परिदृश्य के लिए एक उदाहरण YAML फ़ाइल इस प्रकार दिख सकती है:
mode: image
# verbose: true
# veryverbose: true
image: alpinetest.tar
hashes:
- hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521f'
- hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2'
- hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41'
- hash: '9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96'
टेरियर का उपयोग रनटाइम पर कंटेनरों के घटकों को सत्यापित करने के लिए किया जा सकता है, जो /var/lib/docker/overlay2/.../merged की सामग्री का विश्लेषण करके किया जाता है। इस परिदृश्य के लिए एक उदाहरण YAML फ़ाइल इस प्रकार दिख सकती है:
mode: container
verbose: true
# veryverbose: true
# image: latestgo13.tar
path: merged
files:
- name: '/usr/local/bin/analysis.sh'
hashes:
- hash: '9adc0bf7362bb66b98005aebec36691a62c80d54755e361788c776367d11b105'
- name: '/usr/local/go/bin/go'
hashes:
- hash: '23afbfab4f35ac90d9841a6e05f0d1487b6e0c3a914ea8dab3676c6dde612495'
- name: '/usr/local/bin/staticcheck'
hashes:
- hash: '73f89162bacda8dd2354021dc56dc2f3dba136e873e372312843cd895dde24a2'
- name: '/usr/local/bin/gosec'
hashes:
- hash: 'e7cb8304e032ccde8e342a7f85ba0ba5cb0b8383a09a77ca282793ad7e9f8c1f'
- name: '/usr/local/bin/errcheck'
hashes:
- hash: '41f725d7a872cad4ce1f403938937822572e0a38a51e8a1b29707f5884a2f0d7'
- name: '/var/lib/dpkg/info/apt.postrm'
hashes:
- hash: '6a8f9af3abcfb8c6e35887d11d41a83782b50f5766d42bd1e32a38781cba0b1c'
टेरियर एक CLI है और YAML का उपयोग करता है। एक उदाहरण YAML कॉन्फ़िग:
mode: image
# verbose: true
# veryverbose: true
image: alpinetest.tar
files:
- name: '/usr/local/go/bin/go'
hashes:
- hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521f'
- hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aaa'
- hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41aaa'
- hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
- name: '/usr/bin/delpart'
hashes:
- hash: '9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96aaa'
- name: '/usr/bin/stdbuf'
hashes:
- hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
- hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aa'
- hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41aa'