العودة إلى التحديثات
New releaseAug 20, 2026

checkov v3.3.12

أداة تحليل ثابت للبنية التحتية كرمز (IaC) تكتشف سوء التهيئة السحابية، الثغرات الأمنية، والأسرار عبر Terraform وKubernetes وCloudFormation وصور الحاويات أثناء وقت البناء.

مشاركة

checkov

تم الصيانة بواسطة Prisma Cloud حالة البناء حالة الأمان تغطية الكود الوثائق PyPI إصدار Python إصدار Terraform التنزيلات سحوبات Docker مجتمع Slack

Checkov هي أداة تحليل كود ثابت للبنية التحتية ككود (IaC) وأيضًا أداة تحليل تركيب البرامج (SCA) للصور وحزم المصادر المفتوحة.

تقوم بفحص البنية التحتية السحابية المزودة باستخدام Terraform، خطة Terraform، Cloudformation، AWS SAM، Kubernetes، مخططات Helm، Kustomize، Dockerfile، Serverless، Bicep، OpenAPI، قوالب ARM، أو OpenTofu وتكتشف التهيئات الخاطئة للأمان والامتثال باستخدام الفحص القائم على الرسم البياني.

تقوم بإجراء فحص تحليل تركيب البرامج (SCA) وهو فحص للحزم مفتوحة المصدر والصور بحثًا عن نقاط الضعف الشائعة والتعرضات (CVEs).

كما يعمل Checkov على تشغيل Prisma Cloud Application Security، وهي المنصة الأولى للمطورين التي تقوم بتدوين وتبسيط أمان السحابة طوال دورة حياة التطوير. يقوم Prisma Cloud بتحديد وإصلاح ومنع التهيئات الخاطئة في موارد السحابة وملفات البنية التحتية ككود.

جدول المحتويات

الميزات

  • أكثر من 1000 سياسة مدمجة تغطي أفضل ممارسات الأمان والامتثال لـ AWS و Azure و Google Cloud.
  • يقوم بفحص ملفات قوالب Terraform و Terraform plan و Terraform JSON و CloudFormation و AWS SAM و Kubernetes و Helm و Kustomize و Dockerfile و Serverless framework و Ansible و Bicep و ARM و OpenTofu.
  • يقوم بفحص ملفات سير عمل Argo Workflows و Azure Pipelines و BitBucket Pipelines و Circle CI Pipelines و GitHub Actions و GitLab CI.
  • يدعم سياسات الوعي بالسياق بناءً على الفحص القائم على الرسم البياني في الذاكرة.
  • يدعم تنسيق Python لسياسات السمات وتنسيق YAML لكل من سياسات السمات والسياسات المركبة.
  • يكتشف بيانات اعتماد AWS في Userdata الخاص بـ EC2 ومتغيرات بيئة Lambda وموفري Terraform.
  • يحدد الأسرار باستخدام التعبيرات العادية والكلمات الرئيسية والكشف القائم على الانتروبيا.
  • يقيم إعدادات موفر Terraform لتنظيم إنشاء وإدارة وتحديثات IaaS أو PaaS أو SaaS المُدارة عبر Terraform.
  • تدعم السياسات تقييم المتغيرات لقيمتها الافتراضية الاختيارية.
  • يدعم الإلغاء المضمن للمخاطر المقبولة أو الإيجابيات الكاذبة لتقليل حالات فشل الفحص المتكررة. يدعم أيضًا التخطي العام باستخدام CLI.
  • المخرجات متاحة حاليًا كـ CLI و CycloneDX و JSON و JUnit XML و CSV و SARIF و markdown الخاص بـ GitHub ورابط لأدلة الإصلاح.

لقطات الشاشة

نتائج الفحص في CLI

scan-screenshot

نتائج الفحص المجدول في Jenkins

jenikins-screenshot

البدء

المتطلبات

  • Python >= 3.9, <=3.12
  • Terraform >= 0.12

التثبيت

لتثبيت pip، اتبع الوثائق الرسمية```sh pip3 install checkov

قد تتطلب بعض البيئات (مثل دبيان 12) تثبيت Checkov في بيئة افتراضية.```sh
# Create and activate a virtual environment
python3 -m venv /path/to/venv/checkov
cd /path/to/venv/checkov
source ./bin/activate

# Install Checkov with pip
pip install checkov

# Optional: Create a symlink for easy access
sudo ln -s /path/to/venv/checkov/bin/checkov /usr/local/bin/checkov

أو مع Homebrew (macOS أو Linux)```sh brew install checkov

### تمكين bash autocomplete```sh
source <(register-python-argcomplete checkov)

الترقية

إذا قمت بتثبيت checkov باستخدام pip3```sh pip3 install -U checkov

أو مع Homebrew```sh
brew upgrade checkov

تكوين مجلد أو ملف إدخال```sh

checkov --directory /user/path/to/iac/code

أو ملف محدد أو ملفات```sh
checkov --file /user/tf/example.tf

أو```sh checkov -f /user/cloudformation/example1.yml -f /user/cloudformation/example2.yml

أو ملف terraform plan بصيغة json```sh
terraform init
terraform plan -out tf.plan
terraform show -json tf.plan  > tf.json
checkov -f tf.json

ملاحظة: ملف الإخراج terraform show tf.json سيكون سطرًا واحدًا. لهذا السبب، سيتم الإبلاغ عن جميع النتائج في رقم السطر 0 بواسطة Checkov```sh check: CKV_AWS_21: "Ensure all data stored in the S3 bucket have versioning enabled" FAILED for resource: aws_s3_bucket.customer File: /tf/tf.json:0-0 Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-16-enable-versioning

إذا كان لديك `jq` مثبتاً، يمكنك تحويل ملف json إلى عدة أسطر باستخدام الأمر التالي:```sh
terraform show -json tf.plan | jq '.' > tf.json

ستكون نتيجة الفحص أكثر سهولة للمستخدم.```sh checkov -f tf.json Check: CKV_AWS_21: "Ensure all data stored in the S3 bucket have versioning enabled" FAILED for resource: aws_s3_bucket.customer File: /tf/tf1.json:224-268 Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-16-enable-versioning

	225 |               "values": {
	226 |                 "acceleration_status": "",
	227 |                 "acl": "private",
	228 |                 "arn": "arn:aws:s3:::mybucket",
بدلاً من ذلك، حدد جذر المستودع لملفات hcl المستخدمة لإنشاء ملف الخطة، باستخدام العلامة `--repo-root-for-plan-enrichment`، لإثراء المخرجات بمسار الملف المناسب وأسطر الأرقام وكتلة الكود للمورد(الموارد). من الفوائد الإضافية أنه سيتم التعامل مع إخفاءات الفحص وفقًا لذلك.```sh
checkov -f tf.json --repo-root-for-plan-enrichment /user/path/to/iac/code

نموذج نتيجة الفحص (CLI)```sh

Passed Checks: 1, Failed Checks: 1, Suppressed Checks: 0 Check: "Ensure all data stored in the S3 bucket is securely encrypted at rest" /main.tf: Passed for resource: aws_s3_bucket.template_bucket Check: "Ensure all data stored in the S3 bucket is securely encrypted at rest" /../regionStack/main.tf: Failed for resource: aws_s3_bucket.sls_deployment_bucket_name

ابدأ باستخدام Checkov من خلال قراءة صفحة [البدء](https://github.com/bridgecrewio/checkov/blob/main/docs/1.Welcome/Quick%20Start.md).

### استخدام Docker```sh
docker pull bridgecrew/checkov
docker run --tty --rm --volume /user/tf:/tf --workdir /tf bridgecrew/checkov --directory /tf

ملاحظة: إذا كنت تستخدم بايثون 3.6 (الإصدار الافتراضي في أوبونتو 18.04) فلن يعمل checkov، وسيفشل مع رسالة الخطأ ModuleNotFoundError: No module named 'dataclasses'. في هذه الحالة، يمكنك استخدام إصدار دوكر بدلاً من ذلك.

لاحظ أن هناك بعض الحالات التي يؤدي فيها توجيه مخرجات docker run --tty إلى ملف - على سبيل المثال، إذا كنت تريد حفظ مخرجات Checkov بصيغة JUnit في ملف - إلى طباعة أحرف تحكم إضافية. قد يؤدي ذلك إلى تعطيل تحليل الملف. إذا واجهت ذلك، قم بإزالة العلامة --tty.

العلامة --workdir /tf اختيارية لتغيير دليل العمل إلى الحجم المثبت. إذا كنت تستخدم مخرجات SARIF -o sarif فسيتم إخراج ملف results.sarif إلى الحجم المثبت (/user/tf في المثال أعلاه). إذا لم تقم بتضمين تلك العلامة، فسيكون دليل العمل هو "/".

تشغيل أو تخطي الفحوصات

باستخدام علامات سطر الأوامر، يمكنك تحديد تشغيل الفحوصات المسماة فقط (قائمة السماح) أو تشغيل جميع الفحوصات باستثناء تلك المدرجة (قائمة الرفض). إذا كنت تستخدم تكامل المنصة عبر مفتاح API، يمكنك أيضًا تحديد حد خطورة لتخطي و/أو تضمين. علاوة على ذلك، نظرًا لأن ملفات json لا يمكنها احتواء تعليقات، يمكن تمرير نمط regex لتخطي فحص الأسرار في ملف json.

راجع الوثائق للحصول على معلومات أكثر تفصيلاً حول كيفية عمل هذه العلامات معًا.

أمثلة

السماح بتشغيل الفحصين المحددين فقط:```sh checkov --directory . --check CKV_AWS_20,CKV_AWS_57

تشغيل جميع الفحوصات باستثناء الفحص المحدد:```sh
checkov -d . --skip-check CKV_AWS_20

تشغيل جميع الفحوصات باستثناء الفحوصات ذات الأنماط المحددة:```sh checkov -d . --skip-check CKV_AWS*

تشغيل جميع الفحوصات التي تكون شدتها MEDIUM أو أعلى (يتطلب مفتاح API):```sh
checkov -d . --check MEDIUM --bc-api-key ...

تشغيل جميع الفحوصات التي تكون درجة خطورتها MEDIUM أو أعلى، بالإضافة إلى الفحص CKV_123 (افترض أن هذا فحص منخفض الخطورة LOW):```sh checkov -d . --check MEDIUM,CKV_123 --bc-api-key ...

تخطي جميع الفحوصات التي تكون شدتها MEDIUM أو أقل:```sh
checkov -d . --skip-check MEDIUM --bc-api-key ...

تخطي جميع الفحوصات التي تكون شدتها متوسطة أو أقل، بالإضافة إلى الفحص CKV_789 (افترض أن هذا فحص عالي الشدة):```sh checkov -d . --skip-check MEDIUM,CKV_789 --bc-api-key ...

تشغيل جميع الفحوصات ذات الخطورة المتوسطة أو أعلى، لكن تخطي الفحص CKV_123 (افترض أن هذا الفحص ذو خطورة متوسطة أو أعلى):```sh
checkov -d . --check MEDIUM --skip-check CKV_123 --bc-api-key ...

تشغيل الفحص CKV_789، ولكن تخطيه إذا كانت شدته متوسطة (يتم تطبيق منطق --check دائمًا قبل --skip-check)```sh checkov -d . --skip-check MEDIUM --check CKV_789 --bc-api-key ...

بالنسبة لأحمال عمل Kubernetes، يمكنك أيضًا استخدام مساحات الأسماء المسموح بها/الممنوعة.  على سبيل المثال، لا تقم بالإبلاغ عن أي نتائج لمساحة الاسم kube-system:```sh
checkov -d . --skip-check kube-system

قم بتشغيل فحص لصورة حاوية. أولاً، اسحب الصورة أو قم ببنائها ثم أشر إليها باستخدام التجزئة (hash) أو المعرف (ID) أو الاسم:العلامة (name:tag):```sh checkov --framework sca_image --docker-image sha256:1234example --dockerfile-path /Users/path/to/Dockerfile --repo-id ... --bc-api-key ...

checkov --docker-image :tag --dockerfile-path /User/path/to/Dockerfile --repo-id ... --bc-api-key ...

يمكنك أيضًا استخدام العلم --image لمسح صورة الحاوية بدلاً من --docker-image للاختصار:```sh
checkov --image <image-name>:tag --dockerfile-path /User/path/to/Dockerfile --repo-id ... --bc-api-key ...

قم بتشغيل فحص SCA للحزم في مستودع:```sh checkov -d . --framework sca_package --bc-api-key ... --repo-id <repo_id(arbitrary)>

قم بتشغيل مسح لمجلد مع متغيرات البيئة لإزالة التخزين المؤقت، وإضافة سجلات مستوى التصحيح:```sh
PYTHONUNBUFFERED=1 LOG_LEVEL=DEBUG checkov -d .

أو قم بتمكين متغيرات البيئة لعمليات التشغيل المتعددة```sh export PYTHONUNBUFFERED=1 LOG_LEVEL=DEBUG checkov -d .

تشغيل فحص الأسرار على جميع الملفات في MyDirectory. تخطي فحص CKV_SECRET_6 على ملفات json التي لاحقتها هي DontScan```sh
checkov -d /MyDirectory --framework secrets --repo-id ... --bc-api-key ... --skip-check CKV_SECRET_6:.*DontScan.json$

تشغيل فحص الأسرار على جميع الملفات في MyDirectory. تخطي فحص CKV_SECRET_6 على ملفات json التي تحتوي على "skip_test" في المسار```sh checkov -d /MyDirectory --framework secrets --repo-id ... --bc-api-key ... --skip-check CKV_SECRET_6:.*skip_test.*json$

يمكن إخفاء القيم من نتائج الفحص عن طريق توفير ملف تكوين (باستخدام علامة --config-file) مع إدخال mask. يمكن تطبيق الإخفاء على resource & value (أو قيم متعددة، مفصولة بفاصلة).  
أمثلة:```sh
mask:
- aws_instance:user_data
- azurerm_key_vault_secret:admin_password,user_passwords

في المثال أعلاه، سيتم إخفاء القيم التالية:

  • user_data لـمورد aws_instance
  • كلٍ من admin_password وuser_passwords لـ azurerm_key_vault_secret

تجاهل/كبت فحص

مثل أي أداة تحليل ثابت، فهي محدودة بنطاق تحليلها. على سبيل المثال، إذا كان المورد يتم إدارته يدويًا، أو باستخدام أدوات إدارة التهيئة اللاحقة، يمكن إدراج الكبت كتعليق برمجي بسيط.

تنسيق تعليق الكبت

لتخطي فحص على كتلة تعريف Terraform معينة أو مورد CloudFormation، قم بتطبيق نمط التعليق التالي داخل نطاقها:

checkov:skip=<check_id>:<suppression_comment>

  • <check_id> هو أحد [ماسحات الفحص المتاحة](docs/5.Policy Index/all.md)
  • <suppression_comment> هو سبب اختياري للكبت ليتم تضمينه في المخرجات

مثال

يقوم التعليق التالي بتخطي فحص CKV_AWS_20 على المورد المعرّف بـ foo-bucket، حيث يتحقق الفحص مما إذا كان دلو S3 من AWS خاصًا. في المثال، تم تكوين الدلو للوصول العام للقراءة؛ إضافة تعليق الكبت من شأنه أن يتخطى الفحص المناسب بدلاً من فشل الفحص.```hcl-terraform resource "aws_s3_bucket" "foo-bucket" { region = var.region #checkov:skip=CKV_AWS_20:The bucket is a public static content host bucket = local.bucket_name force_destroy = true acl = "public-read" }

سيحتوي الإخراج الآن على إدخال نتيجة التحقق ``SKIPPED``:```bash
...
...
Check: "S3 Bucket has an ACL defined which allows public access."
	SKIPPED for resource: aws_s3_bucket.foo-bucket
	Suppress comment: The bucket is a public static content host
	File: /example_skip_acl.tf:1-25

...

لتخطي عدة فحوصات، أضف كل فحص في سطر جديد.``` #checkov:skip=CKV2_AWS_6 #checkov:skip=CKV_AWS_20:The bucket is a public static content host

لقمع الفحوصات في بيانات Kubernetes، تُستخدم التعليقات التوضيحية بالتنسيق التالي:
`checkov.io/skip#: <check_id>=<suppression_comment>`

مثال:```bash
apiVersion: v1
kind: Pod
metadata:
  name: mypod
  annotations:
    checkov.io/skip1: CKV_K8S_20=I don't care about Privilege Escalation :-O
    checkov.io/skip2: CKV_K8S_14
    checkov.io/skip3: CKV_K8S_11=I have not set CPU limits as I want BestEffort QoS
spec:
  containers:
...

التسجيل

للحصول على سجلات مفصلة إلى stdout، قم بتعيين متغير البيئة LOG_LEVEL إلى DEBUG.

الافتراضي هو LOG_LEVEL=WARNING.

تخطي الدلائل

لتخطي الملفات أو الدلائل، استخدم الوسيط --skip-path، والذي يمكن تحديده عدة مرات. يقبل هذا الوسيط تعبيرات منتظمة للمسارات النسبية إلى دليل العمل الحالي. يمكنك استخدامه لتخطي الدلائل بأكملها و/أو ملفات محددة.

افتراضيًا، سيتم تخطي جميع الدلائل المسماة node_modules و .terraform و .serverless، بالإضافة إلى أي ملفات أو دلائل تبدأ بـ .. لإلغاء تخطي الدلائل التي تبدأ بـ . قم بتجاوز متغير البيئة CKV_IGNORE_HIDDEN_DIRECTORIES باستخدام export CKV_IGNORE_HIDDEN_DIRECTORIES=false

يمكنك تجاوز المجموعة الافتراضية من الدلائل التي سيتم تخطيها عن طريق تعيين متغير البيئة CKV_IGNORED_DIRECTORIES. لاحظ أنه إذا كنت ترغب في الاحتفاظ بهذه القائمة وإضافة إليها، فيجب عليك تضمين هذه القيم. على سبيل المثال، CKV_IGNORED_DIRECTORIES=mynewdir سيتخطى هذا الدليل فقط، وليس الدلائل الأخرى المذكورة أعلاه. هذا المتغير هو وظيفة قديمة؛ نوصي باستخدام العلامة --skip-file.

مخرجات وحدة التحكم

مخرجات وحدة التحكم ملونة افتراضيًا، للتبديل إلى مخرجات أحادية اللون، قم بتعيين متغير البيئة: ANSI_COLORS_DISABLED

إضافة VS Code

إذا كنت ترغب في استخدام Checkov داخل VS Code، فجرّب إضافة Prisma Cloud.

التكوين باستخدام ملف إعدادات

يمكن تكوين Checkov باستخدام ملف إعدادات YAML. افتراضيًا، يبحث checkov عن ملف .checkov.yaml أو .checkov.yml في الأماكن التالية حسب الأولوية:

  • الدليل الذي يتم تشغيل checkov عليه. (--directory)
  • دليل العمل الحالي حيث يتم استدعاء checkov.
  • الدليل الرئيسي للمستخدم.

تنبيه: من أفضل الممارسات أن يتم تحميل ملف إعدادات checkov من مصدر موثوق يتكون من هوية مُحققة، بحيث تكون الملفات الممسوحة ضوئيًا ومعرفات الفحص والفحوصات المخصصة المحملة حسب الرغبة.

يمكن للمستخدمين أيضًا تمرير مسار ملف إعدادات عبر سطر الأوامر. في هذه الحالة، سيتم تجاهل ملفات الإعدادات الأخرى. على سبيل المثال:```sh checkov --config-file path/to/config.yaml

يمكن للمستخدمين أيضًا إنشاء ملف تكوين باستخدام الأمر `--create-config`، والذي يأخذ وسائط سطر الأوامر الحالية ويكتبها إلى مسار معين. على سبيل المثال:```sh
checkov --compact --directory test-dir --docker-image sample-image --dockerfile-path Dockerfile --download-external-modules True --external-checks-dir sample-dir --quiet --repo-id prisma-cloud/sample-repo --skip-check CKV_DOCKER_3,CKV_DOCKER_2 --skip-framework dockerfile secrets --soft-fail --branch develop --check CKV_DOCKER_1 --create-config /Users/sample/config.yml

سينشئ ملف config.yaml يبدو كالتالي:```yaml branch: develop check:

  • CKV_DOCKER_1 compact: true directory:
  • test-dir docker-image: sample-image dockerfile-path: Dockerfile download-external-modules: true evaluate-variables: true external-checks-dir:
  • sample-dir external-modules-download-path: .external_modules framework:
  • all output: cli quiet: true repo-id: prisma-cloud/sample-repo skip-check:
  • CKV_DOCKER_3
  • CKV_DOCKER_2 skip-framework:
  • dockerfile
  • secrets soft-fail: true
يمكن للمستخدمين أيضًا استخدام العلامة `--show-config` لعرض جميع الوسائط والإعدادات ومصدرها، أي من سطر الأوامر أو ملف الإعدادات أو متغير البيئة أو الإعداد الافتراضي. على سبيل المثال:```sh
checkov --show-config

سيتم عرض:```sh Command Line Args: --show-config Environment Variables: BC_API_KEY: your-api-key Config File (/Users/sample/.checkov.yml): soft-fail: False branch: master skip-check: ['CKV_DOCKER_3', 'CKV_DOCKER_2'] Defaults: --output: cli --framework: ['all'] --download-external-modules:False --external-modules-download-path:.external_modules --evaluate-variables:True

## المساهمة

المساهمات مرحب بها!

ابدأ بمراجعة [إرشادات المساهمة](https://github.com/bridgecrewio/checkov/blob/main/CONTRIBUTING.md). بعد ذلك، ألق نظرة على [أول مشكلة جيدة](https://github.com/bridgecrewio/checkov/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).

يمكنك حتى البدء في ذلك بنقرة واحدة للتطوير في متصفحك عبر Gitpod على الرابط التالي:

[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/bridgecrewio/checkov)

هل تبحث عن المساهمة بفحوصات جديدة؟ تعلم كيفية كتابة فحص جديد (المعروف أيضًا بالسياسة) [هنا](https://github.com/bridgecrewio/checkov/blob/main/docs/6.Contribution/Contribution%20Overview.md).

## إخلاء مسؤولية
`checkov` لا يحفظ أو ينشر أو يشارك مع أي شخص أي معلومات تعريفية عن العملاء.  
لا تُستخدم أي معلومات تعريفية عن العملاء للاستعلام عن أدلة Prisma Cloud المتاحة للجمهور.
يستخدم `checkov` واجهة برمجة تطبيقات Prisma Cloud لإثراء النتائج بروابط لأدلة المعالجة.
لتخطي استدعاء واجهة برمجة التطبيقات هذا، استخدم العلامة `--skip-download`.

## الدعم

[Prisma Cloud](https://www.prismacloud.io/?utm_source=github&utm_medium=organic_oss&utm_campaign=checkov) يبني ويصون Checkov لجعل السياسة كرمز بسيطة ويسيرة الوصول.

ابدأ بـ [الوثائق](https://www.checkov.io/1.Welcome/Quick%20Start.html) الخاصة بنا للحصول على دروس سريعة وأمثلة.

## دعم إصدارات Python
نتبع دورة الدعم الرسمية لـ Python، ونستخدم اختبارات آلية للإصدارات المدعومة من Python.
هذا يعني أننا ندعم حاليًا Python 3.9 إلى 3.13، شاملة.
لاحظ أن Python 3.8 وصلت نهاية الدعم (EOL) في أكتوبر 2024، وستصل Python 3.9 نهاية الدعم في أكتوبر 2025.
إذا واجهت أي مشاكل مع أي إصدار Python غير منتهي الدعم، يرجى فتح مشكلة.

الفئات