
اكتشاف انتهاكات الامتثال والأمن عبر Infrastructure as Code لتخفيف المخاطر قبل توفير البنية التحتية السحابية الأصلية.
- لم يعد هذا المشروع محتفظًا به. المستودع مؤرشف ولن يتم قبول أي تحديثات أو مشكلات أو طلبات سحب جديدة.
- لا تتردد في عمل fork إذا كنت ترغب في مواصلة التطوير.

Terrascan هو محلل كود ثابت للبنية التحتية ككود (Infrastructure as Code). يتيح لك Terrascan:
لتجربة Terrascan في متصفحك، راجع صندوق Terrascan الرملي https://www.tenable.com/terrascan
لمعرفة المزيد عن ميزات وإمكانيات Terrascan، راجع بوابة التوثيق: https://runterrascan.io
يدعم Terrascan طرقًا متعددة للتثبيت وهو متاح أيضًا كصورة Docker. راجع صفحة الإصدارات الخاصة بـ Terrascan للحصول على أحدث إصدار من البِنى على جميع المنصات المدعومة. حدد الملف الثنائي الصحيح لمنصتك.
curl -L "$(curl -s https://api.github.com/repos/tenable/terrascan/releases/latest | grep -o -E "https://.+?_Linux_x86_64.tar.gz")" > terrascan.tar.gz
tar -xf terrascan.tar.gz terrascan && rm terrascan.tar.gz
sudo install terrascan /usr/local/bin && rm terrascan
terrascan
AURيمكن لمستخدمي ArchLinux و Manjaro التثبيت عن طريق:
yay -S terrascan
brewيمكن لمستخدمي Homebrew التثبيت عن طريق:
$ brew install terrascan
Terrascan متاح أيضًا كصورة Docker ويمكن استخدامه كالتالي
$ docker run tenable/terrascan
ارجع إلى التوثيق للحصول على المعلومات.
لفحص الكود الخاص بك بحثًا عن مشكلات أمنية، يمكنك تشغيل الأمر التالي (الافتراضي هو فحص Terraform).
$ terrascan scan
ملاحظة: سيخرج Terrascan برمز خطأ إذا تم العثور على أي أخطاء أو انتهاكات أثناء الفحص.
| السيناريو | رمز الخروج |
|---|---|
| ملخص الفحص يحتوي على أخطاء وانتهاكات | 5 |
| ملخص الفحص يحتوي على أخطاء ولكن لا توجد انتهاكات |
يمكن دمج Terrascan في خطوط أنابيب CI/CD لفرض أفضل ممارسات الأمان. يرجى الرجوع إلى التوثيق للتكامل مع خط الأنابيب الخاص بك.
يمكنك استخدام الأمر terrascan مع الخيارات التالية:
$ terrascan
Terrascan
Usage:
terrascan [command]
Available Commands:
help Help about any command
init Initialize Terrascan
scan Detect compliance and security violations across Infrastructure as Code.
server Run Terrascan as an API server
version Terrascan version
Flags:
-c, --config-path string config file path
-h, --help help for terrascan
-l, --log-level string log level (debug, info, warn, error, panic, fatal) (default "info")
-x, --log-type string log output type (console, json) (default "console")
-o, --output string output type (human, json, yaml, xml) (default "human")
Use "terrascan [command] --help" for more information about a command.
تُكتب سياسات Terrascan باستخدام لغة سياسة Rego. يتضمن كل rego ملف "rule" بتنسيق JSON يحدد بيانات وصفية للسياسة. بشكل افتراضي، يقوم Terrascan بتنزيل السياسات من مستودعات Terrascan أثناء الفحص لأول مرة. ومع ذلك، إذا كنت ترغب في تنزيل أحدث السياسات، فستحتاج إلى تشغيل عملية التهيئة. راجع الاستخدام للحصول على معلومات حول عملية التهيئة.
ملاحظة: سيقوم أمر الفحص بتشغيل عملية التهيئة ضمنيًا إذا لم يتم العثور على سياسات.
يمكنك استخدام العلامة --find-vuln لجمع الثغرات كما وردت في سجلها كجزء من مخرجات Terrascan. يدعم Terrascan حاليًا Elastic Container Registry (ECR)، و Azure Container Registry، و Google Container Registry، و Google Artifact Registry.
يمكن استخدام العلامة --find-vuln عند فحص ملفات IaC كالتالي:
$ terrascan scan -i <IaC provider> --find-vuln
لمزيد من المعلومات وشرح حول كيفية إعداد بيئتك للمصادقة مع واجهات برمجة تطبيقات السجل، راجع توثيق الاستخدام.
بشكل افتراضي، يقوم Terrascan بفحص التكوين بالكامل مقابل جميع السياسات. ومع ذلك، يدعم Terrascan التكوين التفصيلي للسياسات والموارد.
اقرأ المزيد عن الأدوات داخل الملف و ملف التكوين على موقع التوثيق الخاص بنا.
الآن، بعض النصائح السريعة:
يمكنك تكوين Terrascan لتخطي سياسة معينة (قاعدة) أثناء فحص مورد. اتبع هذه الخطوات حسب منصتك:
استخدم نصوص Terraform لتكوين Terrascan لتخطي القواعد عن طريق إدراج تعليق يحتوي على العبارة "ts:skip=<RULENAME><SKIP_REASON>". يجب تضمين التعليق داخل المورد كما هو موضح في المثال أدناه.

في ملفات Kubernetes yaml، يمكنك تكوين Terrascan لتخطي السياسات عن طريق إضافة تعليق توضيحي كما هو موضح في المقتطف أدناه.

استخدم ملف تكوين Terrascan لتحديد السياسات التي يجب تضمينها أو استبعادها من الفحص بالكامل يدويًا. هذا مناسب لحالات الاستخدام الحدودية. استخدم خيار الكبت "داخل الملف" لتحديد الموارد التي يجب استبعادها من اختبارها مقابل سياسات محددة. هذا يضمن تخطي السياسات فقط لموارد معينة، بدلاً من جميع الموارد.

المخرجات الافتراضية لـ Terrascan هي قائمة الانتهاكات الموجودة في IaC المفحوص. نموذج للمخرجات:

يمكن بناء Terrascan محليًا. هذا مفيد إذا كنت ترغب في أن تكون على أحدث إصدار أو عند تطوير Terrascan. مطلوب gcc و Go 1.19 أو أحدث.
$ git clone [email protected]:tenable/terrascan.git
$ cd terrascan
$ make build
$ ./bin/terrascan
FROM golang:alpine AS build-env
RUN apk add --update git
RUN git clone https://github.com/tenable/terrascan && cd terrascan \
&& CGO_ENABLED=0 GO111MODULE=on go build -o /go/bin/terrascan cmd/terrascan/main.go
لمعرفة المزيد حول تطوير والمساهمة في Terrascan، راجع دليل المساهمة.
نحن نؤمن بأن وجود مجتمع مفتوح وشامل يفيدنا جميعًا. يرجى ملاحظة أن هذا المشروع يُصدر مع مدونة قواعد سلوك للمساهمين. من خلال المشاركة في هذا المشروع، فإنك توافق على الالتزام بشروطه.
Terrascan مرخص بموجب ترخيص Apache 2.0.
| 4 |
| ملخص الفحص يحتوي على انتهاكات ولكن لا توجد أخطاء | 3 |
| ملخص الفحص لا يحتوي على انتهاكات أو أخطاء | 0 |
| أمر الفحص يفشل بسبب مدخلات غير صالحة | 1 |