
تیمهای نرمافزاری امروزی دیگر نمیتوانند امنیت و کیفیت را دو هدف جدا از هم بدانند. همان رویکردی که قبولی تستها را تضمین میکند، باید ایمن بودن کد را هم تضمین کند. با یکپارچهسازی Kiuwan SAST (تست امنیت ایستای برنامه) بهصورت مستقیم در TestRail ، تیمها یافتههای امنیتی را وارد همان چرخهای میکنند که تستهای functional و regression در آن مدیریت میشوند و نمایی یکپارچه از سلامت برنامه به دست میآورند. این رویکرد که با عنوان Quality Through Security شناخته میشود، به تیمهای QA و DevSecOps کمک میکند آسیبپذیریها را در بخشی از روندهای کاری روزمره تست خود شناسایی، پیگیری و رفع کنند. بهجای مدیریت جداگانه گزارشهای امنیتی، توسعهدهندگان و testerها میتوانند ببینند کدام buildها یا test runها مشکل حیاتی دارند، روند بهبود را در طول زمان بسنجند و نشان دهند که «نرمافزار ایمن» در معیارهای کیفیت و امنیت زودتر به دست میآید.
پیشنیازها #
پیش از شروع یکپارچهسازی:
-
باید یک حساب معتبر Kiuwan داشته باشید و به API دسترسی داشته باشید تا بتوانید دادههای تحلیل را دریافت کنید
-
باید بتوانید یک scan در Kiuwan اجرا کنید و از نتایج از طریق API خروجی بگیرید یا آنها را دریافت کنید
-
instance شما در TestRail باید امکان دسترسی به API را داشته باشد
نمای کلی جریان یکپارچهسازی (با استفاده از TestRail CLI) #

-
اجرای تحلیل Kiuwan SAST
اسکن Kiuwan را بخشی از فرآیند CI/CD خود قرار دهید. میتوانید آن را از طریق Kiuwan Local Analyzer یا API اجرا کنید تا هر build یا commit بهصورت خودکار از نظر آسیبپذیری تحلیل شود. -
خروجی گرفتن از نتایج تحلیل در قالب JUnit
پس از کامل شدن scan، از نتایج Kiuwan در قالب JUnit XML با استفاده از deliveries API خروجی بگیرید ؛ این کار خروجی را با TestRail CLI سازگار میکند. Kiuwan یک endpoint در REST API برای تولید مستقیم این قالب ارائه میدهد. -
نصب و پیکربندی TestRail CLI
TestRail CLI به شما امکان میدهد نتایج تست را بهصورت خودکار از قالبهای پشتیبانیشده مثل JUnit upload کنید. برای اطلاعات بیشتر، مستندات کامل درباره راهاندازی TestRail CLI و نحوه استفاده از آن را ببینید. -
نتایج Kiuwan را با استفاده از CLI در TestRail آپلود کنید
از دستورparse_junitدر TestRail CLI استفاده کنید تا گزارش Kiuwan JUnit را به یک test run جدید یا موجود در TestRail وارد کنید. برای مثال (GitHub Action):pip install trcli trcli -y \ -h $TESTRAIL_URL \ -u $TESTRAIL_USER \ -p $TESTRAIL_PASS \ parse_junit \ --title "Kiuwan SAST Results" \ --run-description "Automated Kiuwan scan results for build ${{ github.run_id }}" \ -f kiuwan-audit.xml -
نمونه workflow YAML برای GitHub Actions
مثال زیر نشان میدهد چگونه یکپارچهسازی کامل Kiuwan با TestRail را در یک workflow مربوط به GitHub Actions خودکار کنید. کامنتهای داخل کد هر مرحله را توضیح میدهند:name: Kiuwan SAST to TestRail Integration # Run this workflow on push, pull requests, or manual trigger on: push: branches: - main pull_request: workflow_dispatch: jobs: sast_testrail_integration: runs-on: ubuntu-latest # Shared environment variables for the integration env: APP_NAME: "Sample Application Name" SRC_PATH: "." TESTRAIL_USER: your_testrail_username@example.com TESTRAIL_URL: https://yourcompany.testrail.io/ PROJECT_NAME: Your TestRail Project Name steps: # Step 1: Checkout repository code - name: Checkout code uses: actions/checkout@v4 # Step 2: Setup Python (required for TestRail CLI) - name: Setup Python uses: actions/setup-python@v4.5.0 with: python-version: '3.10' # Step 3: Download Kiuwan Local Analyzer - name: Download Kiuwan Local Analyzer run: | echo "Downloading Kiuwan Local Analyzer..." curl -sSL "https://www.kiuwan.com/pub/analyzer/KiuwanLocalAnalyzer.zip" -o kla.zip unzip -oq kla.zip -d kla # Step 4: Run a Kiuwan SAST scan - name: Run Kiuwan SAST Scan env: KIUWAN_USER: ${{ secrets.KIUWAN_USER }} KIUWAN_PWD: ${{ secrets.KIUWAN_PWD }} run: | cd kla/KiuwanLocalAnalyzer chmod u+x bin/agent.sh echo "Running Kiuwan scan for $APP_NAME" ./bin/agent.sh \ -s "$SRC_PATH" \ -n "$APP_NAME" \ -c \ -wr \ -as completeDelivery \ --user "$KIUWAN_USER" \ --pass "$KIUWAN_PWD" echo "Kiuwan scan completed." # Step 5: Retrieve the last successful delivery code from the Kiuwan API - name: Fetch Last SAST Scan Code id: fetch_delivery env: KIUWAN_USER: ${{ secrets.KIUWAN_USER }} KIUWAN_PWD: ${{ secrets.KIUWAN_PWD }} KIUWAN_API: "https://api.kiuwan.com" run: | echo "Fetching last successful delivery code from Kiuwan API..." encoded_app=$(printf "%s" "$APP_NAME" | jq -sRr @uri) response=$(curl -sSL --user "$KIUWAN_USER:$KIUWAN_PWD" \ "$KIUWAN_API/deliveries/last_analysis?application=$encoded_app") echo "Raw API response:" echo "$response" code=$(echo "$response" | jq -r '.lastSuccessfulDelivery.code // .analysisCode // empty') if [ -z "$code" ] || [ "$code" = "null" ]; then echo "Unable to extract delivery code from response." exit 1 fi echo "Last Successful Delivery Code: $code" echo "delivery_code=$code" > $GITHUB_OUTPUT # Step 6: Download the JUnit XML report from Kiuwan for that delivery - name: Download JUnit XML Report id: fetch_junit env: KIUWAN_USER: ${{ secrets.KIUWAN_USER }} KIUWAN_PWD: ${{ secrets.KIUWAN_PWD }} KIUWAN_API: "https://api.kiuwan.com" DELIVERY_CODE: ${{ steps.fetch_delivery.outputs.delivery_code }} run: | echo "Downloading JUnit XML for delivery code: $DELIVERY_CODE" curl -sSL --user "$KIUWAN_USER:$KIUWAN_PWD" \ "$KIUWAN_API/deliveries/junit?deliveryCode=$DELIVERY_CODE" \ -o kiuwan_sast.xml if [ ! -s kiuwan_sast.xml ]; then echo "Failed to retrieve kiuwan_sast.xml" exit 1 fi echo "JUnit XML successfully saved as kiuwan_sast.xml" # Step 7: Upload the JUnit XML results to TestRail using the CLI - name: Upload Results to TestRail run: | pip install trcli trcli -y \ -h ${{ env.TESTRAIL_URL }} \ --project "${{ env.PROJECT_NAME }}" \ -u ${{ env.TESTRAIL_USER }} \ -p "${{ secrets.TESTRAIL_PASSWORD }}" \ parse_junit \ -f "kiuwan_sast.xml" \ --title "Kiuwan SAST Audit Checkpoint Tests"

منابع بیشتر #
برای اطلاعات بیشتر درباره Kiuwan ، از جمله مستندات مربوط به پیکربندی scan، استفاده از API و export کردن نتایج، به این آدرس مراجعه کنید:
https://www.kiuwan.com/documentation/
برای راهنمایی کامل درباره استفاده از TestRail CLI ، از جمله گزینههای command، parsing نتایج و نمونههای automation، ببینید:

