
Tfsec أصبح الآن جزءًا من Trivy
كجزء من هدفنا المتمثل في توفير حل أمني شامل ومفتوح المصدر للجميع، قمنا بتوحيد جميع جهودنا المتعلقة بالمسح في مكان واحد، وهو Trivy.
على مدار العام الماضي، وضع tfsec الأسس لقدرات Trivy في مسح البنية التحتية كرمز (IaC) والتكوينات الخاطئة، بما في ذلك مسح Terraform، المدعوم أصلاً في Trivy منذ فترة طويلة.
في المستقبل، نريد تشجيع مجتمع tfsec على الانتقال إلى Trivy. الانتقال إلى Trivy يمنحك نفس محرك مسح Terraform الممتاز، مع بعض المزايا الإضافية:
لمزيد من المعلومات حول كيفية مقارنة Trivy مع tfsec والانتقال من tfsec إلى Trivy، يُرجى إلقاء نظرة على دليل الترحيل.
يستخدم tfsec التحليل الثابت لرمز terraform الخاص بك لاكتشاف التكوينات الخاطئة المحتملة.
concat()مصنف Adopt بواسطة Thoughtworks Tech Radar:
بالنسبة لمشاريعنا التي تستخدم Terraform، أصبح tfsec بسرعة أداة تحليل ثابتة افتراضية لاكتشاف المخاطر الأمنية المحتملة. من السهل دمجها في خط أنابيب CI ولديها مكتبة متزايدة من الفحوصات ضد جميع مزودي السحابة الرئيسيين والمنصات مثل Kubernetes. نظراً لسهولة استخدامه، نعتقد أن tfsec يمكن أن يكون إضافة جيدة لأي مشروع Terraform.

التثبيت باستخدام brew/linuxbrew
brew install tfsec
التثبيت باستخدام Chocolatey
choco install tfsec
التثبيت باستخدام Scoop
scoop install tfsec
نص برمجي Bash (لينكس):
curl -s https://raw.githubusercontent.com/aquasecurity/tfsec/master/scripts/install_linux.sh | bash
يمكنك أيضاً الحصول على الثنائي المناسب لنظامك من صفحة الإصدارات.
بدلاً من ذلك، التثبيت باستخدام Go:
go install github.com/aquasecurity/tfsec/cmd/tfsec@latest
يرجى ملاحظة أن استخدام go install سيتم التثبيت مباشرة من فرع master ولن يتم الإبلاغ عن أرقام الإصدارات عبر tfsec --version.
الثنائيات الموجودة في صفحة الإصدارات موقعة بمفتاح توقيع tfsec D66B222A3EA4C25D5D1A097FC34ACEFB46EC39CE
لمزيد من المعلومات، تحقق من صفحة التوقيع للحصول على تعليمات التحقق.
سيقوم tfsec بفحص الدليل المحدد. إذا لم يتم تحديد دليل، فسيتم استخدام دليل العمل الحالي.
ستكون حالة الخروج غير صفرية إذا وجد tfsec مشاكل، وإلا ستكون حالة الخروج صفر.
tfsec .
كبديل لتثبيت وتشغيل tfsec على نظامك، يمكنك تشغيل tfsec في حاوية Docker.
هناك عدد من خيارات Docker المتاحة
للتشغيل:
docker run --rm -it -v "$(pwd):/src" aquasec/tfsec /src
يتم تطوير إضافة لـ Visual Studio Code للتكامل مع نتائج tfsec. يمكن العثور على مزيد من المعلومات على صفحة tfsec Marketplace
إذا كنت ترغب في تشغيل tfsec على مستودعك كإجراء GitHub Action، يمكنك استخدام https://github.com/aquasecurity/tfsec-pr-commenter-action.
يمكنك الآن تثبيت مهمة tfsec الرسمية. يرجى رفع أي مشكلات / طلبات ميزات على مستودع المهمة.
قد ترغب في تجاهل بعض التحذيرات. إذا كنت ترغب في ذلك، يمكنك ببساطة إضافة تعليق يحتوي على tfsec:ignore:<rule> إلى السطر المخالف في قوالبك. بدلاً من ذلك، يمكنك إضافة التعليق إلى السطر فوق الكتلة التي تحتوي على المشكلة، أو إلى كتلة الوحدة النمطية لتجاهل جميع حالات المشكلة داخل الوحدة النمطية.
على سبيل المثال، لتجاهل قاعدة مجموعة أمان مفتوحة:
resource "aws_security_group_rule" "my-rule" {
type = "ingress"
cidr_blocks = ["0.0.0.0/0"] #tfsec:ignore:aws-vpc-no-public-ingress-sgr
}
...أو...
resource "aws_security_group_rule" "my-rule" {
type = "ingress"
#tfsec:ignore:aws-vpc-no-public-ingress-sgr
cidr_blocks = ["0.0.0.0/0"]
}
إذا لم تكن متأكداً من السطر الذي يجب إضافة التعليق عليه، فما عليك سوى التحقق من إخراج tfsec لرقم السطر للمشكلة المكتشفة.
يمكنك تجاهل قواعد متعددة عن طريق ضم القواعد في سطر واحد:
#tfsec:ignore:aws-s3-enable-bucket-encryption tfsec:ignore:aws-s3-enable-bucket-logging
resource "aws_s3_bucket" "my-bucket" {
bucket = "foobar"
acl = "private"
}
يمكنك تعيين تاريخ انتهاء صلاحية لـ ignore بتنسيق yyyy-mm-dd. هذه ميزة مفيدة عندما تريد التأكد من عدم نسيان المشكلة التي تم تجاهلها وإعادة النظر فيها في المستقبل.
#tfsec:ignore:aws-s3-enable-bucket-encryption:exp:2025-01-02
سيكون هذا التجاهل نشطاً فقط حتى 2025-01-02، وبعد هذا التاريخ سيتم إلغاء تنشيطه.
قد ترغب في استبعاد بعض الفحوصات من التشغيل. إذا كنت ترغب في ذلك، يمكنك ببساطة إضافة وسيط جديد -e check1,check2,etc إلى أمر cmd الخاص بك
tfsec . -e general-secrets-sensitive-in-variable,google-compute-disk-encryption-customer-keys
يمكنك تضمين القيم من ملف tfvars في المسح، باستخدام، على سبيل المثال: --tfvars-file terraform.tfvars.
يدعم tfsec العديد من مزودي السحابة والمنصات الشائعة
تم تصميم tfsec للتشغيل في خط أنابيب CI. قد ترغب في تشغيل tfsec كجزء من بناءك دون إخراج ملون. يمكنك القيام بذلك باستخدام --no-colour (أو --no-color لأصدقائنا في أمريكا).
يمكنك إخراج نتائج tfsec بتنسيق JSON أو CSV أو Checkstyle أو Sarif أو JUnit أو مجرد تنسيق قابل للقراءة البشرية العادي. استخدم العلم --format لتحديد التنسيق المطلوب.
إذا كنت ترغب في التكامل مع تنبيهات GitHub الأمنية وتضمين إخراج فحوصات tfsec الخاصة بك، يمكنك استخدام إجراء GitHub tfsec-sarif-action لتشغيل التحليل الثابت ثم تحميل النتائج إلى علامة تبويب التنبيهات الأمنية.
تبدو التنبيهات التي تم إنشاؤها لـ tfsec-example-project هكذا.

عند النقر على التنبيهات الخاصة بالفرع، تحصل على مزيد من المعلومات حول المشكلة الفعلية.

لمزيد من المعلومات حول إضافة التنبيهات الأمنية، تحقق من وثائق GitHub
إذا كنت بحاجة إلى دعم إصدارات terraform التي تستخدم HCL v1 (terraform <0.12)، يمكنك استخدام الإصدار v0.1.3 من tfsec، على الرغم من أن الدعم محدود للغاية ويحتوي على فحوصات أقل.
نرحب دائماً بالمساهمات؛ كبيرة كانت أم صغيرة، يمكن أن تكون تحديثات للوثائق، إضافة فحوصات جديدة أو شيء أكبر. يرجى مراجعة دليل المساهمة للحصول على تفاصيل حول كيفية المساعدة.
تم إنشاؤه باستخدام contributors-img.
tfsec هو مشروع مفتوح المصدر من Aqua Security.
تعرف على أعمالنا مفتوحة المصدر ومحفظتنا هنا.
انضم إلى المجتمع، وتحدث إلينا حول أي موضوع في مناقشات GitHub أو Slack.
| اسم الصورة | القاعدة | تعليق |
|---|
| aquasec/tfsec | alpine | صورة tfsec العادية |
| aquasec/tfsec-alpine | alpine | نفس aquasec/tfsec تماماً، ولكن لمن يفضلون التوضيح |
| aquasec/tfsec-ci | alpine | tfsec بدون نقطة دخول - مفيد لبناءات CI حيث تريد تجاوز الأمر |
| aquasec/tfsec-scratch | scratch | صورة مبنية على scratch - لا شيء فاخر، فقط يشغل tfsec |
| الفحوصات |
|---|
| فحوصات AWS |
| فحوصات Azure |
| فحوصات GCP |
| فحوصات CloudStack |
| فحوصات DigitalOcean |
| فحوصات GitHub |
| فحوصات Kubernetes |
| فحوصات OpenStack |
| فحوصات Oracle |