Cycode MCP Server

chính thức

Tăng cường bảo mật trong vòng đời phát triển của bạn thông qua quét SAST, SCA, Secrets và IaC với Cycode.

Tài liệu

Hướng dẫn sử dụng Cycode CLI

Cycode Command Line Interface (CLI) là một ứng dụng bạn có thể cài đặt cục bộ để quét các kho lưu trữ của mình nhằm tìm kiếm bí mật, lỗi cấu hình cơ sở hạ tầng dưới dạng mã, lỗ hổng phân tích thành phần phần mềm và các vấn đề kiểm tra bảo mật ứng dụng tĩnh.

Hướng dẫn này sẽ hướng dẫn bạn cả việc cài đặt và sử dụng.

Mục lục

  1. Điều kiện tiên quyết
  2. Cài đặt
    1. Cài đặt Cycode CLI
      1. Sử dụng lệnh Auth
      2. Sử dụng lệnh Configure
      3. Thêm vào biến môi trường
        1. Trên Unix/Linux
        2. Trên Windows
    2. Cài đặt Pre-Commit Hook
  3. Các lệnh Cycode CLI
  4. Lệnh MCP
    1. Khởi động MCP Server
    2. Các tùy chọn khả dụng
    3. Công cụ MCP
    4. Ví dụ sử dụng
    5. Cấu hình nâng cao
  5. Lệnh Platform
    1. Khám phá lệnh
    2. Ví dụ
    3. Ghi chú & Hạn chế
  6. Lệnh Scan
    1. Chạy quét
      1. Tùy chọn
        1. Ngưỡng mức độ nghiêm trọng
        2. Giám sát
        3. Báo cáo Cycode
        4. Lỗ hổng gói
        5. Tuân thủ giấy phép
        6. Khôi phục khóa
        7. Dừng khi có lỗi
      2. Quét kho lưu trữ
        1. Tùy chọn nhánh
      3. Quét đường dẫn
        1. Quét kế hoạch Terraform
      4. Quét lịch sử commit
        1. Tùy chọn phạm vi commit (Quét khác biệt)
      5. Quét trước khi commit
      6. Quét trước khi push
    2. Kết quả quét
      1. Hiện/Ẩn bí mật
      2. Lỗi mềm
      3. Ví dụ kết quả quét
        1. Ví dụ kết quả bí mật
        2. Ví dụ kết quả IaC
        3. Ví dụ kết quả SCA
        4. Ví dụ kết quả SAST
      4. Hướng dẫn khắc phục tùy chỉnh của công ty
    3. Bỏ qua kết quả quét
      1. Bỏ qua giá trị bí mật
      2. Bỏ qua giá trị SHA bí mật
      3. Bỏ qua đường dẫn
      4. Bỏ qua quy tắc bí mật, IaC hoặc SCA
      5. Bỏ qua gói
      6. Bỏ qua qua tệp cấu hình
  7. Lệnh Report
    1. Tạo báo cáo SBOM
  8. Lệnh Import
  9. Nhật ký quét
  10. Trợ giúp cú pháp

Điều kiện tiên quyết

  • Ứng dụng Cycode CLI yêu cầu Python phiên bản 3.9 trở lên. Lệnh MCP chỉ khả dụng cho Python 3.10 trở lên. Nếu bạn đang sử dụng phiên bản Python cũ hơn, lệnh này sẽ không khả dụng.
  • Sử dụng lệnh cycode auth để xác thực với Cycode bằng CLI
    • Ngoài ra, bạn có thể lấy Cycode Client ID và Client Secret Key bằng cách làm theo các bước chi tiết trong trang Service Account TokenPersonal Access Token, chứa thông tin chi tiết về cách lấy các giá trị này.

Cài đặt

Các bước cài đặt sau đây áp dụng cho cả hệ điều hành Windows và UNIX / Linux.

[!LƯU Ý] Các bước sau giả định việc sử dụng python3pip3 cho các lệnh liên quan đến Python; tuy nhiên, một số hệ thống có thể sử dụng lệnh pythonpip thay thế, tùy thuộc vào cấu hình môi trường Python của bạn.

Cài đặt Cycode CLI

Để cài đặt ứng dụng Cycode CLI trên máy cục bộ của bạn, hãy thực hiện các bước sau:

  1. Mở dòng lệnh hoặc ứng dụng terminal của bạn.

  2. Thực thi một trong các lệnh sau:

    • Để cài đặt từ PyPI:

      pip3 install cycode
      
    • Để cài đặt từ Homebrew:

      brew install cycode
      
    • Để cài đặt từ GitHub Releases, hãy điều hướng và tải xuống tệp thực thi cho hệ điều hành và kiến trúc của bạn, sau đó chạy lệnh sau:

    cd /path/to/downloaded/cycode-cli
    chmod +x cycode
    ./cycode
    
  3. Cuối cùng, xác thực CLI. Có ba phương pháp để đặt Cycode client ID và thông tin xác thực (client secret hoặc OIDC ID token):

Sử dụng lệnh Auth

[!LƯU Ý] Đây là phương pháp được khuyến nghị để thiết lập máy cục bộ của bạn xác thực với Cycode CLI.

  1. Nhập lệnh sau vào cửa sổ terminal/dòng lệnh của bạn:

    cycode auth

  2. Một cửa sổ trình duyệt sẽ xuất hiện, yêu cầu bạn đăng nhập vào Cycode (như hình bên dưới):

    Cycode login
  3. Nhập thông tin đăng nhập của bạn trên trang này và đăng nhập.

  4. Cuối cùng, bạn sẽ được đưa đến trang bên dưới, nơi bạn sẽ được yêu cầu chọn nhóm kinh doanh mà bạn muốn ủy quyền cho Cycode (nếu có):

    authorize CLI

    [!LƯU Ý] Đây sẽ là phương pháp mặc định để xác thực với Cycode CLI.

  5. Nhấp vào nút Cho phép để ủy quyền Cycode CLI trên nhóm kinh doanh đã chọn.

    allow CLI
  6. Sau khi hoàn tất, bạn sẽ thấy màn hình sau nếu được chọn thành công:

    successfully auth
  7. Trong màn hình terminal/dòng lệnh, bạn sẽ thấy thông báo sau khi thoát cửa sổ trình duyệt:

    Successfully logged into cycode

Sử dụng lệnh Configure

[!LƯU Ý] Nếu bạn đã thiết lập Cycode Client ID và Client Secret thông qua biến môi trường Linux hoặc Windows, những thông tin xác thực đó sẽ được ưu tiên hơn phương pháp này.

  1. Nhập lệnh sau vào cửa sổ terminal/dòng lệnh của bạn:

    cycode configure
    
  2. Nhập giá trị URL API Cycode của bạn (bạn có thể để trống để sử dụng giá trị mặc định).

    Cycode API URL [https://api.cycode.com]: https://api.onpremise.com

  3. Nhập giá trị URL APP Cycode của bạn (bạn có thể để trống để sử dụng giá trị mặc định).

    Cycode APP URL [https://app.cycode.com]: https://app.onpremise.com

  4. Nhập giá trị Cycode Client ID của bạn.

    Cycode Client ID []: 7fe5346b-xxxx-xxxx-xxxx-55157625c72d

  5. Nhập giá trị Cycode Client Secret của bạn (bỏ qua nếu bạn định sử dụng OIDC ID token).

    Cycode Client Secret []: c1e24929-xxxx-xxxx-xxxx-8b08c1839a2e

  6. Nhập giá trị Cycode OIDC ID Token của bạn (tùy chọn).

    Cycode ID Token []: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...

  7. Nếu các giá trị được nhập thành công, bạn sẽ thấy thông báo sau:

    Successfully configured CLI credentials!

    hoặc/và

    Successfully configured Cycode URLs!

Nếu bạn vào thư mục .cycode trong thư mục người dùng của mình, bạn sẽ thấy những thông tin xác thực này đã được tạo và đặt trong tệp credentials.yaml trong thư mục đó. Các URL được đặt trong tệp config.yaml trong thư mục đó.

Thêm vào biến môi trường

Trên Unix/Linux:

export CYCODE_CLIENT_ID={your Cycode ID}

export CYCODE_CLIENT_SECRET={your Cycode Secret Key}

Nếu tổ chức của bạn sử dụng xác thực OIDC, bạn có thể cung cấp ID token thay thế (hoặc bổ sung):

export CYCODE_ID_TOKEN={your Cycode OIDC ID token}

Trên Windows

  1. Từ Control Panel, điều hướng đến menu System:

    system menu
  2. Tiếp theo, nhấp vào Advanced system settings:

    advanced system setting
  3. Trong cửa sổ System Properties mở ra, nhấp vào nút Environment Variables:

    environments variables button
  4. Tạo biến CYCODE_CLIENT_IDCYCODE_CLIENT_SECRET với các giá trị tương ứng với ID và Secret Key của bạn. Nếu bạn xác thực qua OIDC, hãy thêm CYCODE_ID_TOKEN với giá trị OIDC ID token của bạn:

    environment variables window
  5. Chèn cycode.exe vào đường dẫn để hoàn tất cài đặt.

Cài đặt Pre-Commit Hook

Các hook pre-commit và pre-push của Cycode có thể được thiết lập trong kho lưu trữ cục bộ của bạn để ứng dụng Cycode CLI sẽ tự động xác định bất kỳ vấn đề nào với mã của bạn trước khi bạn commit hoặc push nó lên cơ sở mã của mình.

[!LƯU Ý] Hook pre-commit và pre-push không khả dụng cho quét IaC.

Thực hiện các bước sau để cài đặt pre-commit hook:

Cài đặt Pre-Commit Hook

  1. Cài đặt pre-commit framework (phải cài đặt Python 3.9 trở lên):

    pip3 install pre-commit
    
  2. Điều hướng đến thư mục trên cùng của kho lưu trữ Git cục bộ mà bạn muốn cấu hình.

  3. Tạo một tệp YAML mới có tên .pre-commit-config.yaml (bao gồm phần đầu .) trong thư mục trên cùng của kho lưu trữ chứa nội dung sau:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.5.0
        hooks:
          - id: cycode
            stages: [pre-commit]
    
  4. Sửa đổi tệp đã tạo cho nhu cầu cụ thể của bạn. Sử dụng hook ID cycode để kích hoạt quét Bí mật. Sử dụng hook ID cycode-sca để kích hoạt quét SCA. Sử dụng hook ID cycode-sast để kích hoạt quét SAST. Nếu bạn muốn kích hoạt tất cả các loại quét, hãy sử dụng cấu hình này:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.5.0
        hooks:
          - id: cycode
            stages: [pre-commit]
          - id: cycode-sca
            stages: [pre-commit]
          - id: cycode-sast
            stages: [pre-commit]
    
  5. Cài đặt hook của Cycode:

    pre-commit install
    

    Cài đặt hook thành công sẽ dẫn đến thông báo: Pre-commit installed at .git/hooks/pre-commit.

  6. Giữ cho pre-commit hook được cập nhật:

    pre-commit autoupdate
    

    Nó sẽ tự động nâng cấp rev trong .pre-commit-config.yaml lên phiên bản mới nhất hiện có của Cycode CLI.

[!LƯU Ý] Kích hoạt xảy ra khi dùng lệnh git commit. Hook chỉ kích hoạt trên các tệp được staged để commit.

Cài đặt Pre-Push Hook

Để cài đặt pre-push hook bổ sung hoặc thay thế cho pre-commit hook:

  1. Thêm các pre-push hook vào tệp .pre-commit-config.yaml của bạn:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.5.0
        hooks:
          - id: cycode-pre-push
            stages: [pre-push]
    
  2. Cài đặt pre-push hook:

    pre-commit install --hook-type pre-push
    
  3. Đối với cả hook pre-commit và pre-push, sử dụng:

    pre-commit install
    pre-commit install --hook-type pre-push
    

[!LƯU Ý] Pre-push hook kích hoạt khi dùng lệnh git push và chỉ quét các commit sắp được push.

Các lệnh Cycode CLI

Sau đây là các tùy chọn và lệnh khả dụng với ứng dụng Cycode CLI:

Tùy chọnMô tả
-v, --verboseHiển thị nhật ký chi tiết.
--no-progress-meterKhông hiển thị đồng hồ tiến trình.
--no-update-notifierKhông kiểm tra cập nhật cho CLI.
-o, --output [rich|text|json|table]Chỉ định loại đầu ra. Mặc định là rich.
--client-id TEXTChỉ định Cycode client ID cho lần thực thi quét cụ thể này.
--client-secret TEXTChỉ định Cycode client secret cho lần thực thi quét cụ thể này.
--id-token TEXTChỉ định Cycode OIDC ID token cho lần thực thi quét cụ thể này.
--install-completionCài đặt completion cho shell hiện tại.
--show-completion [bash|zsh|fish|powershell|pwsh]Hiển thị completion cho shell được chỉ định, để sao chép hoặc tùy chỉnh cài đặt.
-h, --helpHiển thị các tùy chọn cho lệnh đã cho.
LệnhMô tả
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
authXác thực máy của bạn để liên kết CLI với tài khoản Cycode.
configureLệnh khởi tạo để cấu hình xác thực client CLI.
ignoreBỏ qua một giá trị, đường dẫn hoặc ID quy tắc cụ thể.
mcpKhởi động máy chủ Model Context Protocol (MCP) để cho phép tích hợp AI với khả năng quét của Cycode.
scanQuét nội dung để tìm các vi phạm Secrets/IaC/SCA/SAST. Bạn sẽ cần chỉ định loại quét cần thực hiện: commit-history/path/repository/v.v.
reportTạo báo cáo. Bạn sẽ cần chỉ định loại báo cáo cần thực hiện như SBOM.
statusHiển thị trạng thái CLI và thoát.

Lệnh MCP [THỬ NGHIỆM]

[!CẢNH BÁO] Lệnh MCP chỉ khả dụng cho Python 3.10 trở lên. Nếu bạn đang sử dụng phiên bản Python cũ hơn, lệnh này sẽ không khả dụng.

Lệnh Model Context Protocol (MCP) cho phép bạn khởi động một máy chủ MCP để cung cấp khả năng quét của Cycode cho các hệ thống và ứng dụng AI. Điều này cho phép các mô hình AI tương tác với các công cụ CLI của Cycode thông qua một giao thức chuẩn hóa.

[!MẸO] Để có trải nghiệm tốt nhất, hãy cài đặt Cycode CLI toàn cục trên hệ thống của bạn bằng pip install cycode hoặc brew install cycode, sau đó xác thực một lần với cycode auth. Sau khi cài đặt và xác thực toàn cục, bạn sẽ không cần cấu hình các biến môi trường CYCODE_CLIENT_IDCYCODE_CLIENT_SECRET trong các tệp cấu hình MCP của mình.

Add MCP Server to Cursor using UV

Khởi động Máy chủ MCP

Để khởi động máy chủ MCP, sử dụng lệnh sau:

cycode mcp

Theo mặc định, lệnh này khởi động máy chủ sử dụng truyền tải stdio, phù hợp cho các tích hợp cục bộ và ứng dụng AI có thể tạo tiến trình con.

Các Tùy chọn Khả dụng

Tùy chọnMô tả
-t, --transportLoại truyền tải cho máy chủ MCP: stdio, sse, hoặc streamable-http (mặc định: stdio)
-H, --hostĐịa chỉ máy chủ để liên kết máy chủ (chỉ dùng cho truyền tải không phải stdio) (mặc định: 127.0.0.1)
-p, --portSố cổng để liên kết máy chủ (chỉ dùng cho truyền tải không phải stdio) (mặc định: 8000)
--helpHiển thị thông báo trợ giúp và các tùy chọn khả dụng

Công cụ MCP

Máy chủ MCP cung cấp các công cụ sau mà hệ thống AI có thể sử dụng:

Tên Công cụMô tả
cycode_secret_scanQuét các bí mật được mã hóa cứng
cycode_sca_scanQuét Phân tích Thành phần Phần mềm (SCA) - lỗ hổng và vấn đề giấy phép
cycode_iac_scanQuét cấu hình sai Cơ sở hạ tầng dưới dạng Mã (IaC)
cycode_sast_scanQuét Kiểm thử Bảo mật Ứng dụng Tĩnh (SAST) - chất lượng mã và lỗ hổng bảo mật
cycode_statusLấy phiên bản CLI Cycode, trạng thái xác thực và thông tin cấu hình

Mỗi công cụ quét chấp nhận hai chế độ đầu vào loại trừ lẫn nhau:

  • paths (được ưu tiên) — một hoặc nhiều đường dẫn tệp hoặc thư mục tồn tại trên đĩa. Các thư mục được quét đệ quy. Công cụ Cycode xử lý việc phát hiện và lọc tệp, giống như cycode scan -t <type> path ./src thực hiện từ CLI.
  • files (dự phòng) — một từ điển ánh xạ đường dẫn tệp tới toàn bộ nội dung của chúng dưới dạng chuỗi. Chỉ sử dụng khi các tệp không có sẵn trên đĩa (ví dụ: các chỉnh sửa trong bộ nhớ chưa được lưu).

[!MẸO] Sử dụng paths bất cứ khi nào có thể. Việc truyền các tệp lớn (như package-lock.json) dưới dạng nội dung nội tuyến có thể vượt quá giới hạn token và làm chậm client AI. Với paths, công cụ Cycode đọc tệp trực tiếp từ đĩa.

Tất cả các công cụ quét trả về một đối tượng JSON bao gồm trường "summary" với số lượng vi phạm có thể đọc được (ví dụ: "Cycode found 3 violations: 1 CRITICAL, 2 HIGH.") cùng với toàn bộ mảng "detections".

Ví dụ Sử dụng

Ví dụ Lệnh Cơ bản

Khởi động máy chủ MCP với cài đặt mặc định (truyền tải stdio):

cycode mcp

Khởi động máy chủ MCP với truyền tải stdio rõ ràng:

cycode mcp -t stdio

Khởi động máy chủ MCP với truyền tải Server-Sent Events (SSE):

cycode mcp -t sse -p 8080

Khởi động máy chủ MCP với truyền tải HTTP có thể stream trên máy chủ và cổng tùy chỉnh:

cycode mcp -t streamable-http -H 0.0.0.0 -p 9000

Tìm hiểu thêm về các loại Truyền tải MCP trong Đặc tả Giao thức MCP – Truyền tải.

Ví dụ Cấu hình

Sử dụng MCP với Cursor/VS Code/Claude Desktop/v.v. (mcp.json)

[!LƯU Ý] Đối với môi trường Cycode EU, hãy đảm bảo đặt các giá trị CYCODE_API_URLCYCODE_APP_URL thích hợp trong các biến môi trường (ví dụ: https://api.eu.cycode.comhttps://app.eu.cycode.com).

Làm theo hướng dẫn này để cấu hình máy chủ MCP trong VS Code/GitHub Copilot của bạn. Lưu ý rằng trong settings.json, có một đối tượng mcp chứa đối tượng con servers lồng nhau, thay vì một đối tượng mcpServers độc lập.

Đối với truyền tải stdio (thực thi trực tiếp):

{
  "mcpServers": {
    "cycode": {
      "command": "cycode",
      "args": ["mcp"],
      "env": {
        "CYCODE_CLIENT_ID": "your-cycode-id",
        "CYCODE_CLIENT_SECRET": "your-cycode-secret-key",
        "CYCODE_API_URL": "https://api.cycode.com",
        "CYCODE_APP_URL": "https://app.cycode.com"
      }
    }
  }
}

Đối với truyền tải stdio với cài đặt pipx:

{
  "mcpServers": {
    "cycode": {
      "command": "pipx",
      "args": ["run", "cycode", "mcp"],
      "env": {
        "CYCODE_CLIENT_ID": "your-cycode-id",
        "CYCODE_CLIENT_SECRET": "your-cycode-secret-key",
        "CYCODE_API_URL": "https://api.cycode.com",
        "CYCODE_APP_URL": "https://app.cycode.com"
      }
    }
  }
}

Đối với truyền tải stdio với cài đặt uvx:

{
  "mcpServers": {
    "cycode": {
      "command": "uvx",
      "args": ["cycode", "mcp"],
      "env": {
        "CYCODE_CLIENT_ID": "your-cycode-id",
        "CYCODE_CLIENT_SECRET": "your-cycode-secret-key",
        "CYCODE_API_URL": "https://api.cycode.com",
        "CYCODE_APP_URL": "https://app.cycode.com"
      }
    }
  }
}

Đối với truyền tải SSE (Server-Sent Events):

{
  "mcpServers": {
    "cycode": {
      "url": "http://127.0.0.1:8000/sse"
    }
  }
}

Đối với truyền tải SSE trên cổng tùy chỉnh:

{
  "mcpServers": {
    "cycode": {
      "url": "http://127.0.0.1:8080/sse"
    }
  }
}

Đối với truyền tải HTTP có thể stream:

{
  "mcpServers": {
    "cycode": {
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}
Chạy Máy chủ MCP trong Nền

Đối với truyền tải SSE (khởi động máy chủ trước, sau đó cấu hình client):

# Start the MCP server in the background
cycode mcp -t sse -p 8000 &

# Configure in mcp.json
{
  "mcpServers": {
    "cycode": {
      "url": "http://127.0.0.1:8000/sse"
    }
  }
}

Đối với truyền tải HTTP có thể stream:

# Start the MCP server in the background
cycode mcp -t streamable-http -H 127.0.0.2 -p 9000 &

# Configure in mcp.json
{
  "mcpServers": {
    "cycode": {
      "url": "http://127.0.0.2:9000/mcp"
    }
  }
}

Cấu hình Nâng cao

Chứng chỉ Tùy chỉnh và Thời gian chờ (Môi trường Proxy)

Nếu tổ chức của bạn sử dụng proxy công ty hoặc gói CA tùy chỉnh để kiểm tra HTTPS, bạn cần cho Cycode CLI (và ngăn xếp TLS Python cơ bản) biết nơi tìm gói chứng chỉ đáng tin cậy. Bạn cũng có thể tăng thời gian chờ gọi công cụ MCP nếu các lần quét bị cắt ngắn.

Biến Môi trườngMô tả
REQUESTS_CA_BUNDLEĐường dẫn đến tệp gói CA tùy chỉnh (.pem hoặc .crt). Được thư viện requests sử dụng cho tất cả các cuộc gọi HTTPS do Cycode CLI thực hiện.
SSL_CERT_FILEĐường dẫn đến tệp gói CA tùy chỉnh. Được mô-đun ssl cấp thấp của Python sử dụng. Đặt cùng với REQUESTS_CA_BUNDLE để có phạm vi bao phủ đầy đủ.
MCP_TOOL_TIMEOUTThời gian chờ (tính bằng giây) mà các client MCP như Claude và GitHub Copilot chờ một lệnh gọi công cụ hoàn thành. Tăng giá trị này nếu các lần quét dài bị cắt ngang trước khi hoàn thành.

[!MẸO] Đặt cả REQUESTS_CA_BUNDLESSL_CERT_FILE vào cùng một đường dẫn gói CA. REQUESTS_CA_BUNDLE bao phủ lớp HTTP; SSL_CERT_FILE bao phủ lớp TLS cấp thấp hơn. Chỉ sử dụng một cái có thể vẫn gây ra lỗi chứng chỉ trong một số môi trường.

Ví dụ cấu hình mcp.json với chứng chỉ tùy chỉnh và thời gian chờ dài hơn:

{
  "mcpServers": {
    "cycode": {
      "command": "cycode",
      "args": ["mcp"],
      "env": {
        "REQUESTS_CA_BUNDLE": "/path/to/your/corporate-ca-bundle.pem",
        "SSL_CERT_FILE": "/path/to/your/corporate-ca-bundle.pem",
        "MCP_TOOL_TIMEOUT": "1800"
      }
    }
  }
}

[!LƯU Ý] Máy chủ MCP yêu cầu xác thực CLI Cycode hợp lệ để hoạt động. Đảm bảo bạn đã xác thực bằng cycode auth hoặc cấu hình thông tin đăng nhập của mình trước khi khởi động máy chủ MCP.

Ủy quyền trước Công cụ cho Tác nhân phụ (Claude Code)

Khi Claude Code ủy thác công việc cho các tác nhân phụ nền (ví dụ: để chạy quét song song), các tác nhân phụ đó không thể hiển thị lời nhắc cấp quyền tương tác. Nếu các công cụ Cycode chưa được phê duyệt trước, các lần quét sẽ thất bại âm thầm trong ngữ cảnh tác nhân phụ.

Để ủy quyền trước các công cụ MCP của Cycode để chúng hoạt động trong mọi ngữ cảnh bao gồm cả tác nhân phụ, hãy thêm chúng vào danh sách allowedTools trong cài đặt Claude Code của bạn (~/.claude/settings.json):

{
  "allowedTools": [
    "mcp__cycode__cycode_secret_scan",
    "mcp__cycode__cycode_sca_scan",
    "mcp__cycode__cycode_iac_scan",
    "mcp__cycode__cycode_sast_scan",
    "mcp__cycode__cycode_status"
  ]
}

Sau khi được thêm, Claude Code sẽ không nhắc phê duyệt khi các công cụ này được gọi và chúng sẽ hoạt động chính xác bên trong các tác nhân phụ.

Khắc phục sự cố MCP

Nếu bạn gặp sự cố với máy chủ MCP, bạn có thể bật ghi nhật ký gỡ lỗi để nhận thông tin chi tiết hơn về những gì đang xảy ra. Có hai cách để bật ghi nhật ký gỡ lỗi:

  1. Sử dụng cờ -v hoặc --verbose:
cycode -v mcp
  1. Sử dụng biến môi trường CYCODE_CLI_VERBOSE:
CYCODE_CLI_VERBOSE=1 cycode mcp

Nhật ký gỡ lỗi sẽ hiển thị thông tin chi tiết về:

  • Khởi động và cấu hình máy chủ
  • Các nỗ lực và trạng thái kết nối
  • Thực thi và kết quả công cụ
  • Bất kỳ lỗi hoặc cảnh báo nào xảy ra

Thông tin này có thể hữu ích khi:

  • Chẩn đoán sự cố kết nối
  • Hiểu lý do tại sao một số công cụ không hoạt động
  • Xác định vấn đề xác thực
  • Gỡ lỗi các vấn đề cụ thể về truyền tải

Cấu hình MCP

Lệnh Nền tảng [BETA]

[!CẢNH BÁO] Lệnh platform đang trong giai đoạn beta. Các lệnh, đối số và định dạng đầu ra được tạo động từ đặc tả API Cycode và có thể thay đổi giữa các bản phát hành mà không cần thông báo. Chưa nên dựa vào chúng trong tự động hóa sản xuất.

Lệnh cycode platform hiển thị các API đọc của nền tảng Cycode dưới dạng các lệnh CLI. Nó nhóm các điểm cuối theo tài nguyên (ví dụ: projects, violations, workflows) và biến các tham số của mỗi điểm cuối thành các đối số CLI có kiểu và cờ --option.

cycode platform projects list --page-size 50
cycode platform violations count
cycode platform workflows view <workflow-id>

Đặc tả OpenAPI được tải về từ API Cycode trong lần sử dụng đầu tiên và được lưu vào bộ nhớ đệm tại ~/.cycode/openapi-spec.json trong 24 giờ. Các lệnh không liên quan (cycode scan, cycode status, v.v.) không kích hoạt việc tải về.

[!LƯU Ý] Bạn phải được xác thực (cycode auth hoặc biến môi trường CYCODE_CLIENT_ID / CYCODE_CLIENT_SECRET) để cycode platform khám phá và chạy các lệnh. Các lệnh CLI Cycode khác hoạt động mà không cần xác thực.

Khám phá Lệnh

Vì các lệnh được tạo từ đặc tả, nguồn chân lý cho những gì khả dụng là --help:

cycode platform --help                  # list all resource groups
cycode platform projects --help         # list actions on a resource
cycode platform projects list --help    # list options/arguments for an action

Ví dụ Nền tảng

# List projects with pagination
cycode platform projects list --page-size 25

# View a single project by ID
cycode platform projects view <project-id>

# Count violations across the tenant
cycode platform violations count

# Filter using query parameters (see `--help` for what each endpoint supports)
cycode platform violations list --severity CRITICAL

Tất cả đầu ra đều là JSON theo mặc định — dẫn qua jq để lọc tùy chỉnh:

cycode platform projects list --page-size 100 | jq '.items[].name'

Ghi chú & Hạn chế Nền tảng

  • Chỉ đọc hiện tại. Chỉ các điểm cuối GET được hiển thị trong bản beta này.
  • Điều khiển bởi đặc tả. Việc thêm một điểm cuối mới vào API sẽ tự động hiển thị nó vào lần tiếp theo bộ nhớ đệm được làm mới.
  • Không có đặc tả đi kèm. Lần gọi cycode platform đầu tiên sau khi cài đặt (hoặc sau khi bộ nhớ đệm 24h hết hạn) thực hiện một lần tải về mạng. Trên các kết nối chậm, lần gọi đầu tiên này có thể mất vài giây; các lần gọi sau gần như ngay lập tức cho đến khi bộ nhớ đệm hết hạn.
  • Ghi đè TTL bộ nhớ đệm bằng CYCODE_SPEC_CACHE_TTL=<seconds>.

Lệnh Quét

Chạy Quét

Ứng dụng CLI Cycode cung cấp một số loại quét để bạn có thể chọn tùy chọn phù hợp nhất với trường hợp của mình. Sau đây là các tùy chọn và lệnh hiện có:

Tùy chọnMô tả
-t, --scan-type [secret|iac|sca|sast]Chỉ định loại quét bạn muốn thực hiện (secret/iac/sca/sast), mặc định là secret.
--show-secret BOOLEANHiển thị bí mật dưới dạng văn bản thuần túy. Xem phần Hiện/Ẩn Bí mật để biết thêm chi tiết.
--soft-fail BOOLEANChạy quét mà không báo lỗi, luôn trả về mã trạng thái không lỗi. Xem phần Lỗi Mềm để biết thêm chi tiết.
--severity-threshold [INFO|LOW|MEDIUM|HIGH|CRITICAL]Chỉ hiển thị các vi phạm ở mức độ được chỉ định hoặc cao hơn.
--sca-scanChỉ định loại quét SCA bạn muốn thực hiện (package-vulnerabilities/license-compliance). Mặc định là cả hai.
--monitorKhi được chỉ định, kết quả quét sẽ được ghi lại trong Cycode.
--cycode-reportHiển thị liên kết đến báo cáo quét trong nền tảng Cycode ở đầu ra console.
--no-restoreKhi được chỉ định, Cycode sẽ không chạy lệnh khôi phục. Điều này sẽ CHỈ quét các phụ thuộc trực tiếp!
--stop-on-errorHủy bỏ quét nếu xảy ra bất kỳ lỗi thu thập tệp hoặc khôi phục phụ thuộc nào, thay vì bỏ qua tệp bị lỗi và tiếp tục.
--gradle-all-sub-projectsChạy lệnh khôi phục gradle cho tất cả các dự án con. Lệnh này nên được chạy từ
--maven-settings-fileChỉ dành cho Maven, cho phép sử dụng tệp settings.xml tùy chỉnh khi quét phụ thuộc
--helpHiển thị các tùy chọn cho lệnh đã cho.
LệnhMô tả
commit-historyQuét lịch sử commit hoặc thực hiện quét khác biệt giữa các commit cụ thể
pathQuét các tệp trong đường dẫn được cung cấp trong lệnh
pre-commitSử dụng lệnh này để quét nội dung chưa được commit
repositoryQuét kho lưu trữ git bao gồm cả lịch sử của nó

Tùy chọn

Tùy chọn Mức độ Nghiêm trọng

Để giới hạn kết quả quét ở một ngưỡng mức độ nghiêm trọng cụ thể, có thể thêm đối số --severity-threshold vào lệnh quét.

Ví dụ: lệnh sau sẽ quét kho lưu trữ để tìm các vi phạm chính sách có mức độ nghiêm trọng Trung bình trở lên:

cycode scan --severity-threshold MEDIUM repository ~/home/git/codebase

Tùy chọn Giám sát

[!LƯU Ý] Tùy chọn này chỉ khả dụng cho các lần quét SCA.

Để đẩy kết quả quét gắn với chính sách SCA được tìm thấy trong một lần quét loại SCA lên Cycode, hãy thêm đối số --monitor vào lệnh quét.

Ví dụ: lệnh sau sẽ quét kho lưu trữ để tìm các vi phạm chính sách SCA và đẩy chúng lên nền tảng Cycode:

cycode scan -t sca --monitor repository ~/home/git/codebase

Tùy chọn Báo cáo Cycode

Đối với mỗi lần quét được thực hiện bằng Cycode CLI, một báo cáo sẽ tự động được tạo và kết quả của nó được gửi đến Cycode. Những kết quả này được gắn với các chính sách liên quan (ví dụ: chính sách SCA cho các lần quét Kho lưu trữ) trong nền tảng Cycode.

Để có URL trực tiếp đến báo cáo Cycode này được in trong đầu ra CLI của bạn sau khi quét hoàn tất, hãy thêm đối số --cycode-report vào lệnh quét của bạn.

cycode scan --cycode-report repository ~/home/git/codebase

Tất cả kết quả quét từ CLI sẽ xuất hiện trong phần Nhật ký CLI của Cycode. Nếu bạn đã bao gồm cờ --cycode-report trong lệnh của mình, một liên kết trực tiếp đến báo cáo cụ thể sẽ được hiển thị trong terminal của bạn sau kết quả quét.

[!CẢNH BÁO] Bạn phải có vai trò owner hoặc admin trong Cycode để xem trang này.

cli-report

Trang báo cáo sẽ trông giống như bên dưới:

Tùy chọn Lỗ hổng Gói

[!LƯU Ý] Tùy chọn này chỉ khả dụng cho các lần quét SCA.

Để quét một lỗ hổng gói cụ thể của kho lưu trữ cục bộ của bạn, hãy thêm đối số --sca-scan package-vulnerabilities sau tùy chọn -t sca hoặc --scan-type sca.

Trong ví dụ trước, nếu bạn chỉ muốn chạy quét SCA trên các lỗ hổng gói, bạn có thể thực thi lệnh sau:

cycode scan -t sca --sca-scan package-vulnerabilities repository ~/home/git/codebase

Tùy chọn Tuân thủ Giấy phép

[!LƯU Ý] Tùy chọn này chỉ khả dụng cho các lần quét SCA.

Để quét một nhánh cụ thể của kho lưu trữ cục bộ của bạn, hãy thêm đối số --sca-scan license-compliance theo sau là tên của nhánh bạn muốn quét.

Trong ví dụ trước, nếu bạn chỉ muốn quét một nhánh có tên dev, bạn có thể thực thi lệnh sau:

cycode scan -t sca --sca-scan license-compliance repository ~/home/git/codebase -b dev

Tùy chọn Khóa Khôi phục

[!LƯU Ý] Tùy chọn này chỉ khả dụng cho các lần quét SCA.

Khi chạy quét SCA, Cycode CLI tự động cố gắng khôi phục (tạo) một tệp khóa phụ thuộc cho mỗi tệp kê khai được hỗ trợ mà nó tìm thấy. Điều này cho phép quét các phụ thuộc bắc cầu, không chỉ những phụ thuộc được liệt kê trực tiếp trong tệp kê khai. Để bỏ qua bước này và chỉ quét các phụ thuộc trực tiếp, hãy sử dụng cờ --no-restore.

Các hệ sinh thái sau hỗ trợ khôi phục tệp khóa tự động:

Hệ sinh tháiTệp kê khaiTệp khóa được tạoCông cụ được gọi (khi tệp khóa vắng mặt)
npmpackage.jsonpackage-lock.jsonnpm install --package-lock-only --ignore-scripts --no-audit
Yarnpackage.jsonyarn.lockyarn install --ignore-scripts
pnpmpackage.jsonpnpm-lock.yamlpnpm install --ignore-scripts
Denodeno.json / deno.jsoncdeno.lock(chỉ đọc tệp khóa hiện có)
Gogo.modgo.mod.graphgo list -m -json all + go mod graph
Mavenpom.xmlbcde.mvndepsmvn dependency:tree
Gradlebuild.gradle / build.gradle.ktsgradle-dependencies-generated.txtgradle dependencies -q --console plain
SBTbuild.sbtbuild.sbt.locksbt dependencyLockWrite
NuGet*.csprojpackages.lock.jsondotnet restore --use-lock-file
RubyGemfileGemfile.lockbundle --quiet
Poetrypyproject.tomlpoetry.lockpoetry lock
PipenvPipfilePipfile.lockpipenv lock
PHP Composercomposer.jsoncomposer.lockcomposer update --no-cache --no-install --no-scripts --ignore-platform-reqs

Nếu một tệp khóa đã tồn tại cùng với tệp kê khai, Cycode sẽ đọc trực tiếp tệp đó mà không chạy bất kỳ lệnh cài đặt nào.

Điều kiện tiên quyết cho SBT: Phải cài đặt plugin sbt-dependency-lock. Thêm dòng sau vào project/plugins.sbt:

addSbtPlugin("software.purpledragon" % "sbt-dependency-lock" % "1.5.1")

Tùy chọn Dừng khi có Lỗi

Theo mặc định, Cycode tiếp tục quét ngay cả khi không thể đọc một tệp (ví dụ: do lỗi quyền) hoặc không thể tạo tệp khóa phụ thuộc trong quá trình quét SCA. Mục bị lỗi sẽ bị bỏ qua với một cảnh báo và quá trình quét tiếp tục với các tệp còn lại.

Sử dụng --stop-on-error để thay đổi hành vi này: quá trình quét sẽ hủy bỏ ngay lập tức khi gặp lỗi đầu tiên như vậy và báo cáo lỗi.

cycode scan -t sca --stop-on-error path ~/home/git/codebase

Điều này hữu ích trong các pipeline CI nơi một lỗi âm thầm sẽ tạo ra kết quả quét không đầy đủ. Khi --stop-on-error được kích hoạt, bạn có thể sửa lỗi cơ bản hoặc, đối với các lỗi khôi phục SCA cụ thể, thêm --no-restore để bỏ qua việc tạo tệp khóa và chỉ quét các phụ thuộc trực tiếp.

Khi --stop-on-error được sử dụng, CLI phân biệt giữa lỗi quét và vi phạm chính sách thông qua các mã thoát:

Mã thoátÝ nghĩa
0Quét hoàn tất không có vi phạm
1Quét hoàn tất và tìm thấy vi phạm
2Quét bị hủy bỏ do lỗi (chỉ khi --stop-on-error được đặt)

Quét Kho lưu trữ

Quét kho lưu trữ kiểm tra toàn bộ kho lưu trữ cục bộ để tìm bất kỳ bí mật bị lộ hoặc cấu hình sai không an toàn. Loại quét toàn diện hơn này xem xét mọi thứ: trạng thái hiện tại của kho lưu trữ và lịch sử commit của nó. Nó sẽ không chỉ tìm kiếm các bí mật hiện đang bị lộ trong kho lưu trữ mà còn cả các bí mật đã bị xóa trước đó.

Để thực hiện quét toàn bộ kho lưu trữ, hãy thực thi lệnh sau:

cycode scan repository {{path}}

Ví dụ: nếu bạn muốn quét một kho lưu trữ được lưu trữ trong ~/home/git/codebase, bạn có thể thực thi lệnh sau:

cycode scan repository ~/home/git/codebase

Tùy chọn sau có sẵn để sử dụng với lệnh này:

Tùy chọnMô tả
-b, --branch TEXTNhánh để quét, nếu không đặt sẽ quét nhánh mặc định

Tùy chọn Nhánh

Để quét một nhánh cụ thể của kho lưu trữ cục bộ của bạn, hãy thêm đối số -b (hoặc --branch) theo sau là tên của nhánh bạn muốn quét.

Với ví dụ trước, nếu bạn chỉ muốn quét một nhánh có tên dev, bạn có thể thực thi lệnh sau:

cycode scan repository ~/home/git/codebase -b dev

Quét Đường dẫn

Quét đường dẫn kiểm tra một thư mục cục bộ cụ thể và tất cả nội dung bên trong nó, thay vì chỉ tập trung vào một kho lưu trữ GIT.

Để thực hiện quét thư mục, hãy thực thi lệnh sau:

cycode scan path {{path}}

Ví dụ: hãy xem xét một tình huống mà bạn muốn quét thư mục nằm tại ~/home/git/codebase. Sau đó, bạn có thể thực thi lệnh sau:

cycode scan path ~/home/git/codebase

Quét Kế hoạch Terraform

Cycode CLI hỗ trợ quét kế hoạch Terraform (hỗ trợ Terraform 0.12 trở lên)

Tệp kế hoạch Terraform phải ở định dạng JSON (có phần mở rộng .json)

Nếu bạn chỉ có tệp cấu hình, bạn có thể tạo một kế hoạch bằng cách thực hiện các bước sau:

  1. Khởi tạo một thư mục làm việc chứa tệp cấu hình Terraform:

    terraform init

  2. Tạo kế hoạch thực thi Terraform và lưu đầu ra nhị phân:

    terraform plan -out={tfplan_output}

  3. Chuyển đổi tệp đầu ra nhị phân thành JSON có thể đọc được:

    terraform show -json {tfplan_output} > {tfplan}.json

  4. Quét {tfplan}.json của bạn bằng Cycode CLI:

    cycode scan -t iac path ~/PATH/TO/YOUR/{tfplan}.json

Quét Lịch sử Commit

[!LƯU Ý] Quét Lịch sử Commit không khả dụng cho các lần quét IaC.

Lệnh quét lịch sử commit cung cấp hai khả năng chính:

  1. Quét Toàn bộ Lịch sử: Phân tích tất cả các commit trong lịch sử kho lưu trữ
  2. Quét Khác biệt: Chỉ quét các thay đổi giữa các commit cụ thể

Quét bí mật có thể phân tích tất cả các commit trong lịch sử kho lưu trữ vì các bí mật được đưa vào và sau đó bị xóa vẫn có thể bị rò rỉ hoặc lộ ra. Đối với các lần quét SCA và SAST, lệnh lịch sử commit tập trung vào việc quét các khác biệt/thay đổi giữa các commit, làm cho nó trở nên hoàn hảo cho việc xem xét pull request và quét gia tăng.

Quét lịch sử commit kiểm tra lịch sử commit của kho lưu trữ Git của bạn và có thể được sử dụng cho cả phân tích lịch sử toàn diện và quét khác biệt có mục tiêu đối với các thay đổi cụ thể.

Để thực hiện quét lịch sử commit, hãy thực thi lệnh sau:

cycode scan commit-history {{path}}

Ví dụ: hãy xem xét một tình huống mà bạn muốn quét lịch sử commit cho một kho lưu trữ được lưu trữ trong ~/home/git/codebase. Sau đó, bạn có thể thực thi lệnh sau:

cycode scan commit-history ~/home/git/codebase

Các tùy chọn sau có sẵn để sử dụng với lệnh này:

Tùy chọnMô tả
-r, --commit-range TEXTQuét một phạm vi commit trong kho git này, theo mặc định cycode quét toàn bộ lịch sử commit (ví dụ: HEAD~1)

Tùy chọn Phạm vi Commit (Quét Khác biệt)

Tùy chọn phạm vi commit cho phép quét khác biệt – chỉ quét những thay đổi giữa các commit cụ thể thay vì toàn bộ lịch sử kho lưu trữ. Điều này đặc biệt hữu ích cho:

  • Xác thực pull request: Chỉ quét những thay đổi được đưa vào trong PR
  • Quét CI/CD tăng dần: Tập trung vào các thay đổi gần đây thay vì toàn bộ codebase
  • Xem xét nhánh tính năng: So sánh các thay đổi với nhánh main/master
  • Tối ưu hiệu năng: Quét nhanh hơn bằng cách giới hạn phạm vi vào các thay đổi liên quan

Cú pháp Phạm vi Commit

Tùy chọn --commit-range (-r) hỗ trợ cú pháp Git revision tiêu chuẩn:

Cú phápMô tảVí dụ
commit1..commit2Các thay đổi từ commit1 đến commit2abc123..def456
commit1...commit2Các thay đổi trong commit2 không có trong commit1main...feature-branch
commitCác thay đổi từ commit đến HEADHEAD~1
branch1..branch2Các thay đổi từ nhánh1 đến nhánh2main..feature-branch

Ví dụ Quét Khác biệt

Quét các thay đổi trong commit cuối cùng:

cycode scan commit-history -r HEAD~1 ~/home/git/codebase

Quét các thay đổi giữa hai commit cụ thể:

cycode scan commit-history -r abc123..def456 ~/home/git/codebase

Quét các thay đổi trong nhánh tính năng của bạn so với main:

cycode scan commit-history -r main..HEAD ~/home/git/codebase

Quét các thay đổi giữa main và một nhánh tính năng:

cycode scan commit-history -r main..feature-branch ~/home/git/codebase

Quét tất cả thay đổi trong 3 commit cuối cùng:

cycode scan commit-history -r HEAD~3..HEAD ~/home/git/codebase

[!TIP] Đối với pipeline CI/CD, bạn có thể sử dụng biến môi trường như ${{ github.event.pull_request.base.sha }}..${{ github.sha }} (GitHub Actions) hoặc $CI_MERGE_REQUEST_TARGET_BRANCH_SHA..$CI_COMMIT_SHA (GitLab CI) để chỉ quét các thay đổi PR/MR.

Quét Trước khi Commit

Quét trước khi commit tự động xác định mọi vấn đề trước khi bạn commit thay đổi vào kho lưu trữ. Không cần thực hiện quét thủ công; hãy cấu hình hook pre-commit như chi tiết trong phần Cài đặt của hướng dẫn này.

Sau khi cài đặt hook pre-commit, đôi khi bạn có thể muốn bỏ qua quét trong một commit cụ thể. Để làm điều này, hãy thêm dòng sau vào lệnh git của bạn để bỏ qua quét cho một commit duy nhất:

SKIP=cycode git commit -m <your commit message>`

Quét Trước khi Push

Quét trước khi push tự động xác định mọi vấn đề trước khi bạn push thay đổi lên kho lưu trữ từ xa. Hook này chạy ở phía máy khách và chỉ quét các commit sắp được push, giúp phát hiện vấn đề hiệu quả trước khi chúng đến kho lưu trữ từ xa.

[!NOTE] Hook pre-push không khả dụng cho quét IaC.

Hook pre-push tích hợp với pre-commit framework và có thể được cấu hình để chạy trước bất kỳ thao tác git push nào.

Cài đặt Hook Pre-Push

Để thiết lập hook pre-push sử dụng pre-commit framework:

  1. Cài đặt pre-commit framework (nếu chưa được cài đặt):

    pip3 install pre-commit
    
  2. Tạo hoặc cập nhật tệp .pre-commit-config.yaml của bạn để bao gồm các hook pre-push:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.5.0
        hooks:
          - id: cycode-pre-push
            stages: [pre-push]
    
  3. Đối với nhiều loại quét, sử dụng cấu hình này:

    repos:
      - repo: https://github.com/cycodehq/cycode-cli
        rev: v3.5.0
        hooks:
          - id: cycode-pre-push          # Secrets scan
            stages: [pre-push]
          - id: cycode-sca-pre-push      # SCA scan
            stages: [pre-push]
          - id: cycode-sast-pre-push     # SAST scan
            stages: [pre-push]
    
  4. Cài đặt hook pre-push:

    pre-commit install --hook-type pre-push
    

    Cài đặt thành công sẽ cho ra thông báo: Pre-push installed at .git/hooks/pre-push.

  5. Giữ hook pre-push được cập nhật:

    pre-commit autoupdate
    

Cách Quét Pre-Push Hoạt động

Hook pre-push:

  • Nhận thông tin về những commit nào đang được push
  • Tính toán phạm vi commit phù hợp để quét
  • Đối với nhánh mới: quét tất cả commit từ merge base với nhánh mặc định
  • Đối với nhánh hiện có: chỉ quét các commit mới kể từ lần push cuối cùng
  • Chạy cùng quá trình quét toàn diện như các chế độ quét Cycode khác

Phát hiện Nhánh Mặc định Thông minh

Hook pre-push phát hiện thông minh nhánh mặc định để tính toán merge base theo thứ tự ưu tiên sau:

  1. Biến Môi trường: CYCODE_DEFAULT_BRANCH - cho phép ghi đè thủ công
  2. Git Remote HEAD: Sử dụng git symbolic-ref refs/remotes/origin/HEAD để phát hiện nhánh mặc định thực tế của remote
  3. Git Remote Info: Dự phòng sang git remote show origin nếu symbolic-ref thất bại
  4. Dự phòng Cứng: Sử dụng các tên nhánh mặc định phổ biến (origin/main, origin/master, main, master)

Đặt Nhánh Mặc định Tùy chỉnh:

export CYCODE_DEFAULT_BRANCH=origin/develop

Phát hiện thông minh này đảm bảo hook pre-push hoạt động chính xác bất kể kho lưu trữ của bạn sử dụng main, master, develop, hay bất kỳ tên nhánh mặc định nào khác.

Bỏ qua Quét Pre-Push

Để bỏ qua quét pre-push cho một thao tác push cụ thể, sử dụng:

SKIP=cycode-pre-push git push

Hoặc để bỏ qua tất cả hook pre-push:

git push --no-verify

[!TIP] Hook pre-push được kích hoạt trên lệnh git push và chỉ quét các commit sắp được push, giúp nó hiệu quả hơn so với quét toàn bộ kho lưu trữ.

Loại trừ Đường dẫn khỏi Quét

Bạn có thể sử dụng tệp .cycodeignore để cho Cycode CLI biết những tệp và thư mục nào cần loại trừ khỏi quét. Nó hoạt động giống như tệp .gitignore. Điều này giúp bạn tập trung quét vào mã liên quan và ngăn một số đường dẫn kích hoạt vi phạm cục bộ.

Cách Hoạt động

  1. Tạo một tệp có tên .cycodeignore trong thư mục làm việc của bạn.
  2. Liệt kê các tệp và thư mục bạn muốn loại trừ, sử dụng cùng mẫu như .gitignore.
  3. Đặt tệp này trong thư mục nơi bạn dự định chạy lệnh quét cycode.

[!WARNING]

  • Tệp không hợp lệ: Nếu tệp .cycodeignore chứa lỗi cú pháp, quét CLI sẽ thất bại và trả về lỗi.
  • Bỏ qua đường dẫn so với vi phạm: Tệp này dùng để loại trừ đường dẫn. Nó khác với khả năng bỏ qua các vi phạm cụ thể của CLI (ví dụ: bằng cách sử dụng cờ --ignore-violation).

Trình quét được Hỗ trợ

  • SAST
  • IaC (sắp ra mắt)
  • SCA (sắp ra mắt)

Kết quả Quét

Mỗi lần quét sẽ hoàn thành với thông báo cho biết có tìm thấy vấn đề nào hay không.

Nếu không tìm thấy vấn đề, quét kết thúc với thông báo thành công sau:

Good job! No issues were found!!! 👏👏👏

Nếu tìm thấy vấn đề, thay vào đó một thẻ vi phạm sẽ xuất hiện khi hoàn thành. Trong trường hợp này, bạn nên xem lại tệp được đề cập tại dòng cụ thể được đánh dấu bởi thông báo kết quả. Thực hiện bất kỳ thay đổi cần thiết nào để giải quyết vấn đề, sau đó thực thi lại quét.

Hiện/Ẩn Bí mật

Trong các ví dụ bên dưới, một bí mật đã được tìm thấy trong tệp secret_test, nằm trong thư mục con cli. Phần thứ hai của thông báo hiển thị dòng cụ thể nơi bí mật xuất hiện, trong trường hợp này là một giá trị được gán cho googleApiKey.

Lưu ý cách ví dụ che khuất giá trị bí mật thực tế, thay thế phần lớn bí mật bằng dấu hoa thị. Quét che khuất bí mật theo mặc định, nhưng bạn có thể tùy chọn tắt tính năng này để xem toàn bộ bí mật (giả sử máy bạn đang xem kết quả quét đủ an toàn khỏi ánh mắt tò mò).

Để tắt che khuất bí mật, thêm đối số --show-secret vào bất kỳ loại quét nào.

Trong ví dụ sau, Quét Đường dẫn được thực thi trên thư mục con cli với tùy chọn hiển thị đầy đủ bất kỳ bí mật nào được tìm thấy:

cycode scan --show-secret path ./cli

Kết quả sau đó sẽ không bị che khuất.

Lỗi Mềm

Trong hoạt động bình thường, CLI sẽ trả về mã thoát 1 khi tìm thấy vấn đề trong kết quả quét. Tùy thuộc vào thiết lập CI/CD của bạn, điều này thường dẫn đến thất bại tổng thể. Nếu bạn không muốn điều này xảy ra, bạn có thể sử dụng tính năng lỗi mềm.

Bằng cách thêm tùy chọn --soft-fail vào bất kỳ loại quét nào, mã thoát sẽ bị ép thành 0 bất kể có tìm thấy kết quả nào hay không.

Ví dụ Kết quả Quét

Ví dụ Kết quả Bí mật

╭─────────────────────────────────────────────────────────────── Hardcoded generic-password is used ───────────────────────────────────────────────────────────────╮
│                                                                                                                                               Violation 12 of 12 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │  Severity    🟠 MEDIUM                             │ │   34 };                                                                                               │ │
│ │  In file     /Users/cycodemacuser/NodeGoat/test/s  │ │   35                                                                                                  │ │
│ │              ecurity/profile-test.js               │ │   36 var sutUserName = "user1";                                                                       │ │
│ │  Secret SHA  b4ea3116d868b7c982ee6812cce61727856b  │ │ ❱ 37 var sutUserPassword = "Us*****23";                                                               │ │
│ │              802b3063cd5aebe7d796988552e0          │ │   38                                                                                                  │ │
│ │  Rule ID     68b6a876-4890-4e62-9531-0e687223579f  │ │   39 chrome.setDefaultService(service);                                                               │ │
│ ╰────────────────────────────────────────────────────╯ │   40                                                                                                  │ │
│                                                        ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ A generic secret or password is an authentication token used to access a computer or application and is assigned to a password variable.                     │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Ví dụ Kết quả IaC

╭──────────── Enable Content Encoding through the attribute 'MinimumCompressionSize'. This value should be greater than -1 and smaller than 10485760. ─────────────╮
│                                                                                                                                              Violation 45 of 110 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │  Severity      🟠 MEDIUM                           │ │   20 BinaryMediaTypes:                                                                                │ │
│ │  In file       ...ads-copy/iac/cft/api-gateway/ap  │ │   21   - !Ref binaryMediaType1                                                                        │ │
│ │                i-gateway-rest-api/deploy.yml       │ │   22   - !Ref binaryMediaType2                                                                        │ │
│ │  IaC Provider  CloudFormation                      │ │ ❱ 23 MinimumCompressionSize: -1                                                                       │ │
│ │  Rule ID       33c4b90c-3270-4337-a075-d3109c141b  │ │   24 EndpointConfiguration:                                                                           │ │
│ │                53                                  │ │   25   Types:                                                                                         │ │
│ ╰────────────────────────────────────────────────────╯ │   26     - EDGE                                                                                       │ │
│                                                        ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ This policy validates the proper configuration of content encoding in AWS API Gateway. Specifically, the policy checks for the attribute                     │ │
│ │ 'minimum_compression_size' in API Gateway REST APIs. Correct configuration of this attribute is important for enabling content encoding of API responses for │ │
│ │ improved API performance and reduced payload sizes.                                                                                                          │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Ví dụ Kết quả SCA

╭─────────────────────────────────────────────────────── [CVE-2019-10795] Prototype Pollution in undefsafe ────────────────────────────────────────────────────────╮
│                                                                                                                                             Violation 172 of 195 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │  Severity               🟠 MEDIUM                  │ │   26758   "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",                                           │ │
│ │  In file                /Users/cycodemacuser/Node  │ │   26759   "dev": true                                                                                 │ │
│ │                         Goat/package-lock.json     │ │   26760 },                                                                                            │ │
│ │  CVEs                   CVE-2019-10795             │ │ ❱ 26761 "undefsafe": {                                                                                │ │
│ │  Package                undefsafe                  │ │   26762   "version": "2.0.2",                                                                         │ │
│ │  Version                2.0.2                      │ │   26763   "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz",                   │ │
│ │  First patched version  Not fixed                  │ │   26764   "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=",                                           │ │
│ │  Dependency path        nodemon 1.19.1 ->          │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │                         undefsafe 2.0.2            │                                                                                                           │
│ │  Rule ID                9c6a8911-e071-4616-86db-4  │                                                                                                           │
│ │                         943f2e1df81                │                                                                                                           │
│ ╰────────────────────────────────────────────────────╯                                                                                                           │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ undefsafe before 2.0.3 is vulnerable to Prototype Pollution. The 'a' function could be tricked into adding or modifying properties of Object.prototype using │ │
│ │ a __proto__ payload.                                                                                                                                         │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Ví dụ Kết quả SAST

╭───────────────────────────────────────────── [CWE-208: Observable Timing Discrepancy] Observable Timing Discrepancy ─────────────────────────────────────────────╮
│                                                                                                                                               Violation 24 of 49 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │  Severity       🟠 MEDIUM                          │ │   173         " including numbers, lowercase and uppercase letters.";                                 │ │
│ │  In file        /Users/cycodemacuser/NodeGoat/app  │ │   174     return false;                                                                               │ │
│ │                 /routes/session.js                 │ │   175 }                                                                                               │ │
│ │  CWE            CWE-208                            │ │ ❱ 176 if (password !== verify) {                                                                      │ │
│ │  Subcategory    Security                           │ │   177     errors.verifyError = "Password must match";                                                 │ │
│ │  Language       js                                 │ │   178     return false;                                                                               │ │
│ │  Security Tool  Bearer (Powered by Cycode)         │ │   179 }                                                                                               │ │
│ │  Rule ID        19fbca07-a8e7-4fa6-92ac-a36d15509  │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │                 fa9                                │                                                                                                           │
│ ╰────────────────────────────────────────────────────╯                                                                                                           │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Observable Timing Discrepancy occurs when the time it takes for certain operations to complete can be measured and observed by attackers. This vulnerability │ │
│ │ is particularly concerning when operations involve sensitive information, such as password checks or secret comparisons. If attackers can analyze how long   │ │
│ │ these operations take, they might be able to deduce confidential details, putting your data at risk.                                                         │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Hướng dẫn Khắc phục Tùy chỉnh của Công ty

Nếu công ty bạn đã đặt hướng dẫn khắc phục tùy chỉnh trong chính sách liên quan qua cổng Cycode, bạn sẽ thấy trường “Company Guidelines” chứa các hướng dẫn khắc phục bạn đã thêm. Lưu ý rằng nếu bạn chưa thêm bất kỳ hướng dẫn công ty nào, trường này sẽ không xuất hiện trong công cụ CLI.

Bỏ qua Kết quả Quét

Có thể thêm quy tắc bỏ qua để bỏ qua các giá trị bí mật cụ thể, giá trị SHA512 cụ thể, đường dẫn cụ thể, và ID quy tắc bí mật và IaC cụ thể của Cycode. Điều này sẽ khiến quét không cảnh báo các giá trị này. Các quy tắc bỏ qua được viết và lưu cục bộ trong tệp ./.cycode/config.yaml.

[!WARNING] Việc thêm giá trị để bỏ qua nên được cân nhắc cẩn thận về các giá trị, đường dẫn và chính sách để đảm bảo rằng quét sẽ phát hiện đúng các dương tính thật.

Sau đây là các tùy chọn khả dụng cho lệnh cycode ignore:

Tùy chọnMô tả
--by-value TEXTBỏ qua một giá trị cụ thể khi quét bí mật. Xem Bỏ qua Giá trị Bí mật để biết thêm chi tiết.
--by-sha TEXTBỏ qua một biểu diễn SHA512 cụ thể của một chuỗi khi quét bí mật. Xem Bỏ qua Giá trị SHA Bí mật để biết thêm chi tiết.
--by-path TEXTTránh quét một đường dẫn cụ thể. Cần chỉ định loại quét. Xem Bỏ qua Đường dẫn để biết thêm chi tiết.
--by-rule TEXTBỏ qua quét một ID quy tắc bí mật/ID quy tắc IaC/ID quy tắc SCA cụ thể. Xem Bỏ qua Quy tắc Bí mật hoặc IaC để biết thêm chi tiết.
--by-package TEXTBỏ qua quét một phiên bản gói cụ thể khi chạy quét SCA. Mẫu mong đợi - name@version. Xem Bỏ qua Gói để biết thêm chi tiết.
--by-cve TEXTBỏ qua quét một CVE cụ thể khi chạy quét SCA. Mẫu mong đợi: CVE-YYYY-NNN.
-t, --scan-type [secret|iac|sca|sast]Chỉ định quét bạn muốn thực thi (secret/iac/sca/sast). Giá trị mặc định là secret.
-g, --globalThêm quy tắc bỏ qua và cập nhật nó trong tệp cấu hình toàn cục .cycode.

Bỏ qua Giá trị Bí mật

Để bỏ qua một giá trị bí mật cụ thể, bạn sẽ cần sử dụng cờ --by-value. Điều này sẽ bỏ qua giá trị bí mật đã cho khỏi tất cả các lần quét trong tương lai. Sử dụng lệnh sau để thêm giá trị bí mật cần bỏ qua:

cycode ignore --by-value {{secret-value}}

Trong ví dụ ở đầu phần này, lệnh để bỏ qua một giá trị bí mật cụ thể như sau:

cycode ignore --by-value h3110w0r1d!@#$350

Trong ví dụ trên, thay thế giá trị h3110w0r1d!@#$350 bằng giá trị bí mật không bị che của bạn. Xem các tùy chọn quét Cycode để biết chi tiết về cách xem giá trị bí mật trong kết quả quét.

Bỏ qua Giá trị SHA Bí mật

Để bỏ qua một giá trị SHA bí mật cụ thể, bạn sẽ cần sử dụng cờ --by-sha. Điều này sẽ bỏ qua giá trị SHA bí mật đã cho khỏi tất cả các lần quét trong tương lai. Sử dụng lệnh sau để thêm giá trị SHA bí mật cần bỏ qua:

cycode ignore --by-sha {{secret-sha-value}} Trong ví dụ ở đầu phần này, lệnh để bỏ qua một giá trị SHA bí mật cụ thể như sau:

cycode ignore --by-sha a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0

Trong ví dụ trên, hãy thay thế giá trị a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 bằng giá trị SHA bí mật của bạn.

Bỏ qua một Đường dẫn

Để bỏ qua một đường dẫn cụ thể cho các lần quét bí mật, IaC hoặc SCA, bạn sẽ cần sử dụng cờ --by-path cùng với cờ -t, --scan-type (bạn phải chỉ định loại quét). Điều này sẽ bỏ qua đường dẫn đã cho khỏi tất cả các lần quét trong tương lai đối với loại quét đã chỉ định. Sử dụng lệnh sau để thêm một đường dẫn cần bỏ qua:

cycode ignore -t {{scan-type}} --by-path {{path}}

Trong ví dụ ở đầu phần này, lệnh để bỏ qua một đường dẫn cụ thể cho bí mật như sau:

cycode ignore -t secret --by-path ~/home/my-repo/config

Trong ví dụ trên, hãy thay thế giá trị ~/home/my-repo/config bằng giá trị đường dẫn của bạn.

Trong ví dụ ở đầu phần này, lệnh để bỏ qua một đường dẫn cụ thể khỏi các lần quét IaC như sau:

cycode ignore -t iac --by-path ~/home/my-repo/config

Trong ví dụ trên, hãy thay thế giá trị ~/home/my-repo/config bằng giá trị đường dẫn của bạn.

Trong ví dụ ở đầu phần này, lệnh để bỏ qua một đường dẫn cụ thể khỏi các lần quét SCA như sau:

cycode ignore -t sca --by-path ~/home/my-repo/config

Trong ví dụ trên, hãy thay thế giá trị ~/home/my-repo/config bằng giá trị đường dẫn của bạn.

Bỏ qua một Quy tắc Bí mật, IaC, SCA hoặc SAST

Để bỏ qua một quy tắc bí mật, IaC, SCA hoặc SAST cụ thể, bạn sẽ cần sử dụng cờ --by-rule cùng với cờ -t, --scan-type (bạn phải chỉ định loại quét). Điều này sẽ bỏ qua giá trị ID quy tắc đã cho khỏi tất cả các lần quét trong tương lai. Sử dụng lệnh sau để thêm một giá trị ID quy tắc cần bỏ qua:

cycode ignore -t {{scan-type}} --by-rule {{rule-ID}}

Trong ví dụ ở đầu phần này, lệnh để bỏ qua ID quy tắc bí mật cụ thể như sau:

cycode ignore -t secret --by-rule ce3a4de0-9dfc-448b-a004-c538cf8b4710

Trong ví dụ trên, hãy thay thế giá trị ce3a4de0-9dfc-448b-a004-c538cf8b4710 bằng ID quy tắc bạn muốn bỏ qua.

Trong ví dụ ở đầu phần này, lệnh để bỏ qua ID quy tắc IaC cụ thể như sau:

cycode ignore -t iac --by-rule bdaa88e2-5e7c-46ff-ac2a-29721418c59c

Trong ví dụ trên, hãy thay thế giá trị bdaa88e2-5e7c-46ff-ac2a-29721418c59c bằng ID quy tắc bạn muốn bỏ qua.

Trong ví dụ ở đầu phần này, lệnh để bỏ qua ID quy tắc SCA cụ thể như sau:

cycode ignore -t sca --by-rule dc21bc6b-9f4f-46fb-9f92-e4327ea03f6b

Trong ví dụ trên, hãy thay thế giá trị dc21bc6b-9f4f-46fb-9f92-e4327ea03f6b bằng ID quy tắc bạn muốn bỏ qua.

Bỏ qua một Gói

[!NOTE] Tùy chọn này chỉ khả dụng cho các lần quét SCA.

Để bỏ qua một gói cụ thể trong các lần quét SCA, bạn sẽ cần sử dụng cờ --by-package cùng với cờ -t, --scan-type (bạn phải chỉ định loại quét sca). Điều này sẽ bỏ qua gói đã cho, sử dụng định dạng {{package_name}}@{{package_version}}, khỏi tất cả các lần quét trong tương lai. Sử dụng lệnh sau để thêm một gói và phiên bản cần bỏ qua:

cycode ignore --scan-type sca --by-package {{package_name}}@{{package_version}}

HOẶC

cycode ignore -t sca --by-package {{package_name}}@{{package_version}}

Trong ví dụ dưới đây, lệnh để bỏ qua một gói SCA cụ thể như sau:

cycode ignore --scan-type sca --by-package [email protected]

Trong ví dụ trên, hãy thay thế pyyaml bằng tên gói và 5.3.1 bằng phiên bản gói bạn muốn bỏ qua.

Bỏ qua thông qua tệp cấu hình

Các quy tắc bỏ qua được áp dụng sẽ được lưu trữ trong tệp cấu hình có tên config.yaml. Tệp này có thể dễ dàng được chia sẻ giữa các nhà phát triển hoặc thậm chí commit lên Git từ xa. Các tệp này luôn nằm trong thư mục .cycode. Thư mục bắt đầu bằng dấu chấm (.), và bạn nên bật hiển thị các tệp ẩn để thấy nó.

Đường dẫn của các tệp cấu hình

Theo mặc định, tất cả các lệnh cycode ignore lưu quy tắc bỏ qua vào thư mục hiện tại nơi CLI được chạy.

Ví dụ: chạy lệnh CLI bỏ qua từ /Users/name/projects/backend sẽ tạo config.yaml trong /Users/name/projects/backend/.cycode

➜  backend  pwd
/Users/name/projects/backend
➜  backend  cycode ignore --by-value test-value
➜  backend  tree -a
.
└── .cycode
    └── config.yaml

2 directories, 1 file

Tùy chọn thứ hai là lưu các quy tắc bỏ qua vào các tệp cấu hình toàn cục. Đường dẫn của cấu hình toàn cục là ~/.cycode/config.yaml, trong đó ~ có nghĩa là users home directory, for example, /Users/name` trên macOS.

Việc lưu vào không gian toàn cục có thể được thực hiện với cờ -g của lệnh cycode ignore. Ví dụ: cycode ignore -g --by-value test-value.

Thư mục làm việc phù hợp

Việc đặt thư mục .cycode và chạy CLI từ cùng một vị trí là cực kỳ quan trọng. Bạn nên kiểm tra kỹ điều này khi làm việc với các môi trường khác nhau như CI/CD (GitHub Actions, Jenkins, v.v.).

Bạn có thể commit thư mục .cycode vào thư mục gốc của kho lưu trữ của mình. Trong trường hợp này, bạn phải chạy các lần quét CLI từ thư mục gốc của kho lưu trữ. Nếu điều đó không phù hợp với yêu cầu của bạn, bạn có thể tạm thời sao chép thư mục .cycode đến bất kỳ đâu bạn muốn và thực hiện quét CLI từ thư mục này.

Cấu trúc các quy tắc bỏ qua trong cấu hình

Điều quan trọng là phải hiểu cách CLI lưu trữ các quy tắc bị bỏ qua để có thể đọc các tệp cấu hình này hoặc thậm chí sửa đổi chúng mà không cần CLI.

Cấu trúc YAML trừu tượng:

exclusions:
  {scanTypeName}:
    {ignoringType}:
    - someIgnoringValue1
    - someIgnoringValue2

Các giá trị có thể có của scanTypeName: iac, sca, sast, secret.

Các giá trị có thể có của ignoringType: paths, values, rules, packages, shas, cves.

[!WARNING] Các giá trị cho "bỏ qua theo giá trị" không được lưu trữ dưới dạng văn bản thuần túy! CLI lưu trữ các hàm băm sha256 của các giá trị thay thế. Bạn nên đặt các hàm băm của chuỗi khi sửa đổi tệp cấu hình bằng tay.

Ví dụ về config.yaml thực tế:

exclusions:
  iac:
    rules:
    - bdaa88e2-5e7c-46ff-ac2a-29721418c59c
  sca:
    packages:
    - [email protected]
  secret:
    paths:
    - /Users/name/projects/build
    rules:
    - ce3a4de0-9dfc-448b-a004-c538cf8b4710
    shas:
    - a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0
    values:
    - a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
    - 60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752

Lệnh Báo cáo

Tạo Báo cáo SBOM

Danh sách vật liệu phần mềm (SBOM) là một bản kiểm kê tất cả các thành phần cấu thành và phụ thuộc phần mềm liên quan đến việc phát triển và phân phối một ứng dụng. Sử dụng lệnh này, bạn có thể tạo một báo cáo SBOM cho dự án cục bộ của mình hoặc cho URI kho lưu trữ của bạn.

Các tùy chọn sau đây có sẵn để sử dụng với lệnh này:

Tùy chọnMô tảBắt buộcMặc định
-f, --format [spdx-2.2|spdx-2.3|cyclonedx-1.4]Định dạng SBOM
-o, --output-format [JSON]Chỉ định định dạng tệp đầu raKhôngjson
--output-file PATHTệp đầu raKhôngtên tệp tự động tạo được lưu vào thư mục hiện tại
--include-vulnerabilitiesBao gồm các lỗ hổngKhôngFalse
--include-dev-dependenciesBao gồm các phụ thuộc phát triểnKhôngFalse

Các lệnh sau đây có sẵn để sử dụng với lệnh này:

LệnhMô tả
pathTạo báo cáo SBOM cho đường dẫn được cung cấp trong lệnh
repository-urlTạo báo cáo SBOM cho URI kho lưu trữ được cung cấp trong lệnh

Kho lưu trữ

Để tạo báo cáo SBOM cho một URI kho lưu trữ:
cycode report sbom --format <sbom format> --include-vulnerabilities --include-dev-dependencies --output-file </path/to/file> repository_url <repository url>

Ví dụ:
cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies repository_url https://github.com/cycodehq/cycode-cli.git

Dự án Cục bộ

Để tạo báo cáo SBOM cho một đường dẫn:
cycode report sbom --format <sbom format> --include-vulnerabilities --include-dev-dependencies --output-file </path/to/file> path </path/to/project>

Ví dụ:
cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies path /path/to/local/project

Lệnh con path hỗ trợ các tùy chọn bổ sung sau:

Tùy chọnMô tả
--no-restoreBỏ qua khôi phục lockfile và chỉ quét các phụ thuộc trực tiếp. Xem Tùy chọn Khôi phục Khóa để biết chi tiết.
--gradle-all-sub-projectsChạy lệnh khôi phục Gradle cho tất cả các dự án con (sử dụng từ thư mục gốc của bản dựng Gradle đa dự án).
--maven-settings-fileChỉ dành cho Maven, cho phép sử dụng tệp settings.xml tùy chỉnh khi xây dựng cây phụ thuộc.

Lệnh Nhập

Nhập SBOM

Danh sách vật liệu phần mềm (SBOM) là một bản kiểm kê tất cả các thành phần cấu thành và phụ thuộc phần mềm liên quan đến việc phát triển và phân phối một ứng dụng. Sử dụng lệnh này, bạn có thể nhập một tệp SBOM từ hệ thống tệp của mình vào Cycode.

Các tùy chọn sau đây có sẵn để sử dụng với lệnh này:

Tùy chọnMô tảBắt buộcMặc định
-n, --name TEXTTên hiển thị của SBOM
-v, --vendor TEXTTên của thực thể đã cung cấp SBOM
-l, --label TEXTĐính kèm nhãn cho SBOMKhông
-o, --owner TEXTĐịa chỉ email của người dùng Cycode đóng vai trò là đầu mối liên hệ cho SBOM nàyKhông
-b, --business-impact [High | Medium | Low]Tác động Kinh doanhKhôngMedium

Ví dụ:
cycode import sbom --name example-sbom --vendor cycode -label tag1 -label tag2 --owner [email protected] /path/to/local/project

Nhật ký Quét

Tất cả các lần quét CLI đều được ghi nhật ký trong Cycode. Có thể tìm thấy nhật ký trong Cài đặt > Nhật ký CLI.

Trợ giúp Cú pháp

Bạn có thể thêm đối số --help vào bất kỳ lệnh nào bất cứ lúc nào để xem thông báo trợ giúp hiển thị các tùy chọn có sẵn và cú pháp của chúng.

Để xem trợ giúp chung, chỉ cần nhập lệnh:

cycode --help

Để xem các tùy chọn quét, hãy nhập:

cycode scan --help

Để xem các tùy chọn có sẵn cho một loại quét cụ thể, hãy nhập:

cycode scan {{option}} --help

Ví dụ: để xem các tùy chọn có sẵn cho Quét Đường dẫn, bạn sẽ nhập:

cycode scan path --help

Để xem các tùy chọn có sẵn cho chức năng bỏ qua quét, hãy sử dụng lệnh này:

cycode ignore --help

Để xem các tùy chọn có sẵn cho báo cáo, hãy sử dụng lệnh này:

cycode report --help

Để xem các tùy chọn có sẵn cho một loại báo cáo cụ thể, hãy nhập:

cycode scan {{option}} --help