
Terrier هي أداة تحليل للصور والحاويات يمكن استخدامها لمسح الصور والحاويات لتحديد والتحقق من وجود ملفات محددة وفقاً لهاشاتها.
تيرير هي أداة لتحليل الصور والحاويات يمكن استخدامها لمسح صور OCI والحاويات لتحديد والتحقق من وجود ملفات معينة وفقًا لقيم الهاش الخاصة بها. يمكن العثور على شرح مفصل لتيرير في مدونة هيروكو، https://blog.heroku.com/terrier-open-source-identifying-analyzing-containers.
لتعليمات التثبيت من الملفات الثنائية، يرجى زيارة صفحة الإصدارات.
$ go get github.com/heroku/terrier
عبر go
$ go build
أو
$ make all
$ ./terrier -h
استخدام ./terrier:
-cfg string
تحميل الإعدادات من ملف yaml المقدم (الافتراضي "cfg.yml")
مطلوب ملف TAR بصيغة OCI للصورة المراد مسحها، ويتم توفيره لتيرير عبر قيمة "Image" في cfg.yml.
يمكن استخدام أمر Docker التالي لتحويل صورة Docker إلى ملف TAR يمكن لتيرير مسحه.
# docker save imageid -o image.tar
$ ./terrier
[+] جارٍ تحميل الإعدادات: cfg.yml
[+] جارٍ تحليل الصورة
[+] مصدر صورة Docker: image.tar
[*] فحص الطبقة: 05c3c2c60920f68b506d3c66e0f6148b81a8b0831388c2d61be5ef02190bcd1f
[!] تم التعرف على جميع المكونات والتحقق منها: (493/493)
يقوم تيرير بتحليل YAML، فيما يلي مثال على إعدادات.
#هذا مثال على إعدادات، قم بتعديله حسب احتياجاتك
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'
#أزل التعليق لتحليل الهاشات
# hashes:
# - hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
# - hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aa'
# - hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41aa'
تيرير هي أداة سطر أوامر تتيح لك:
يمكن استخدام تيرير للتحقق مما إذا كانت صورة 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'
تيرير هي أداة سطر أوامر تستخدم 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'
في المثال أدناه، تم توجيه تيرير عبر YAML أعلاه للتحقق من ملفات متعددة.
$./terrier
[+] جارٍ تحميل الإعدادات: cfg.yml
[+] جارٍ تحليل الصورة
[+] مصدر صورة Docker: alpinetest.tar
[*] فحص الطبقة: 05c3c2c60920f68b506d3c66e0f6148b81a8b0831388c2d61be5ef02190bcd1f
[*] فحص الطبقة: 09c25a178d8a6f8b984f3e72ca5ec966215b24a700ed135dc062ad925aa5eb23
[*] فحص الطبقة: 36351e8e1da92268d40245cfbcd499a1173eeacc23be428386c8fc0a16f0b10a
[*] فحص الطبقة: 7224ca1e886eeb7e63a9e978b1a811ed52f4a53ccb65f7c510fa04a0d1103fdf
[*] فحص الطبقة: 7a2e464d80c7a1d89dab4321145491fb94865099c59975cfc840c2b8e7065014
[*] فحص الطبقة: 88a583fe02f250344f89242f88309c666671042b032411630de870a111bea971
[*] فحص الطبقة: 8db14b6fdd2cf8b4c122824531a4d85e07f1fecd6f7f43eab7f2d0a90d8c4bf2
[*] فحص الطبقة: 9196e3376d1ed69a647e728a444662c10ed21feed4ef7aaca0d10f452240a09a
[*] فحص الطبقة: 92db9b9e59a64cdf486203189d02acff79c3360788b62214a49d2263874ee811
[*] فحص الطبقة: bc4bb4a45da628724c9f93400a9149b2dd8a5d437272cb4e572cfaec64512d98
[*] فحص الطبقة: be7d600e4e8ed3000e342ef6482211350069d935a14aeff4d9fc3289e1426ed3
[*] فحص الطبقة: c4cec85dfa44f0a8856064922cff1c39b872b506dd002e33664d11a80f75a149
[*] فحص الطبقة: c998d6f023b7b9e3c186af19bcd1c2574f0d01b943077281ac5bd32e02dc57a5
[!] تم التعرف على جميع المكونات والتحقق منها: (493/493)