Cycode
resmiCycode ile SAST, SCA, Sırlar ve IaC taraması yaparak geliştirme yaşam döngünüzde güvenliği artırın.
Cycode MCP ile neler yapabilirsiniz?
- Gizli bilgileri tara —
cycode_secret_scankullanarak asistandan dosyalarda veya dizinlerde sabit kodlanmış gizli bilgileri taramasını isteyin. - SCA sorunlarını tara —
cycode_sca_scanaracılığıyla güvenlik açıkları ve lisans sorunları için bir Yazılım Bileşimi Analizi taraması isteyin. - IaC yanlış yapılandırmalarını tara — Asistandan
cycode_iac_scanile kod olarak altyapıyı yanlış yapılandırmalara karşı denetlemesini isteyin. - SAST sorunlarını tara — Kod kalitesi sorunlarını ve güvenlik açıklarını bulmak için
cycode_sast_scankullanarak Statik Uygulama Güvenliği Testi taraması çalıştırın. - CLI durumunu kontrol et —
cycode_statusaracılığıyla Cycode CLI sürümünü, kimlik doğrulama durumunu ve yapılandırma ayrıntılarını isteyin.
Dokümantasyon
Cycode CLI Kullanım Kılavuzu
Cycode Komut Satırı Arayüzü (CLI), depolarınızı gizli bilgiler, kod olarak altyapı yanlış yapılandırmaları, yazılım bileşimi analizi güvenlik açıkları ve statik uygulama güvenliği testi sorunları açısından taramak için yerel olarak yükleyebileceğiniz bir uygulamadır.
Bu kılavuzda hem kurulum hem de kullanım adımları açıklanmaktadır.
İçindekiler
- Ön koşullar
- Kurulum
- Cycode CLI komutları
- Sertifikalar ve proxy'ler
- MCP komutu
- Platform komutu
- AI Guardrails
- Scan komutu
- Report komutu
- Import komutu
- Tarama günlükleri
- Sözdizimi yardımı
Ön koşullar
- Cycode CLI uygulaması için Python 3.10 veya üzeri gerekir.
- CLI ile Cycode'da kimlik doğrulaması yapmak için
cycode authkomutunu kullanın- Alternatif olarak, bu değerleri edinme ayrıntılarını içeren Service Account Token ve Personal Access Token sayfalarında açıklanan adımları izleyerek bir Cycode Client ID ve Client Secret Key edinebilirsiniz.
Kurulum
Aşağıdaki kurulum adımları hem Windows hem de UNIX / Linux işletim sistemleri için geçerlidir.
[!NOTE] Aşağıdaki adımlarda Python ile ilgili komutlar için
python3vepip3kullanıldığı varsayılır; ancak Python ortamınızın yapılandırmasına bağlı olarak bazı sistemlerde bunun yerinepythonvepipkomutları kullanılabilir.
Cycode CLI'yi yükleme
Cycode CLI uygulamasını yerel makinenize yüklemek için aşağıdaki adımları uygulayın:
-
Komut satırı veya terminal uygulamanızı açın.
-
Aşağıdaki komutlardan birini çalıştırın:
-
PyPI üzerinden yüklemek için:
pip3 install cycode -
Homebrew üzerinden yüklemek için:
brew install cycode -
GitHub Releases sayfasına gidip işletim sisteminiz ve mimariniz için yürütülebilir dosyayı indirin, ardından aşağıdaki komutu çalıştırın:
cd /path/to/downloaded/cycode-cli chmod +x cycode ./cycode -
-
Son olarak CLI'de kimlik doğrulaması yapın. Cycode istemci kimliğini ve kimlik bilgilerini (istemci gizli anahtarı veya OIDC ID token) ayarlamak için üç yöntem vardır:
- cycode auth (Önerilen)
- cycode configure
- Bunları ortam değişkenlerinize ekleyin
Auth komutunu kullanma
[!NOTE] Bu, yerel makinenizi Cycode CLI ile kimlik doğrulaması yapacak şekilde ayarlamak için önerilen yöntemdir.
-
Terminal/komut satırı penceresine aşağıdaki komutu yazın:
cycode auth -
Cycode'da oturum açmanızı isteyen bir tarayıcı penceresi açılır (aşağıda gösterildiği gibi):
-
Bu sayfada oturum açma bilgilerinizi girip oturum açın.
-
Sonunda, Cycode'u yetkilendirmek istediğiniz iş grubunu seçmeniz istenen aşağıdaki sayfaya yönlendirilirsiniz (varsa):
[!NOTE] Bu, Cycode CLI ile kimlik doğrulaması için varsayılan yöntem olacaktır.
-
Seçilen iş grubunda Cycode CLI'yi yetkilendirmek için Allow düğmesine tıklayın.
-
İşlem başarıyla tamamlandığında aşağıdaki ekranı görürsünüz:
-
Tarayıcı penceresini kapattığınızda terminal/komut satırı ekranında aşağıdakini görürsünüz:
Successfully logged into cycode
Configure komutunu kullanma
[!NOTE] Cycode Client ID ve Client Secret bilgilerinizi Linux veya Windows ortam değişkenleri aracılığıyla zaten ayarladıysanız, bu kimlik bilgileri bu yönteme göre öncelikli olur.
-
Terminal/komut satırı penceresine aşağıdaki komutu yazın:
cycode configure -
Cycode API URL değerini girin (varsayılan değeri kullanmak için boş bırakabilirsiniz).
Cycode API URL [https://api.cycode.com]: https://api.onpremise.com -
Cycode APP URL değerini girin (varsayılan değeri kullanmak için boş bırakabilirsiniz).
Cycode APP URL [https://app.cycode.com]: https://app.onpremise.com -
Cycode Client ID değerini girin.
Cycode Client ID []: 7fe5346b-xxxx-xxxx-xxxx-55157625c72d -
Cycode Client Secret değerini girin (OIDC ID token kullanmayı planlıyorsanız bu adımı atlayın).
Cycode Client Secret []: c1e24929-xxxx-xxxx-xxxx-8b08c1839a2e -
Cycode OIDC ID Token değerini girin (isteğe bağlı).
Cycode ID Token []: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9... -
Değerler başarıyla girildiyse aşağıdaki mesajı görürsünüz:
Successfully configured CLI credentials!veya/ve
Successfully configured Cycode URLs!
Kullanıcı klasörünüzün altındaki .cycode klasörüne giderseniz, bu kimlik bilgilerinin oluşturulup o klasördeki credentials.yaml dosyasına yerleştirildiğini görürsünüz.
URL'ler, o klasördeki config.yaml dosyasına yerleştirilir.
Ortam değişkenlerine ekleme
Unix/Linux'ta:
export CYCODE_CLIENT_ID={your Cycode ID}
ve
export CYCODE_CLIENT_SECRET={your Cycode Secret Key}
Kuruluşunuz OIDC kimlik doğrulaması kullanıyorsa bunun yerine (veya buna ek olarak) ID token sağlayabilirsiniz:
export CYCODE_ID_TOKEN={your Cycode OIDC ID token}
Windows'ta
-
Denetim Masası'ndan Sistem menüsüne gidin:
-
Ardından Gelişmiş sistem ayarları'na tıklayın:
-
Açılan Sistem Özellikleri penceresinde Ortam Değişkenleri düğmesine tıklayın:
-
ID ve Secret Key değerlerinizle eşleşen değerleri kullanarak
CYCODE_CLIENT_IDveCYCODE_CLIENT_SECRETdeğişkenlerini oluşturun. OIDC ile kimlik doğrulaması yapıyorsanız, OIDC ID token değerinizle birlikteCYCODE_ID_TOKENdeğişkenini de ekleyin:
-
Kurulumu tamamlamak için
cycode.exeöğesini yola ekleyin.
Pre-Commit Hook'u yükleme
Cycode'un pre-commit ve pre-push hook'ları yerel deponuzda ayarlanabilir. Böylece Cycode CLI uygulaması, kodunuzu commit etmeden veya kod tabanınıza push etmeden önce sorunları otomatik olarak belirler.
[!NOTE] IaC taramaları için pre-commit ve pre-push hook'ları kullanılamaz.
Pre-commit hook'unu yüklemek için aşağıdaki adımları uygulayın:
Pre-Commit Hook'u yükleme
-
pre-commit çerçevesini yükleyin (Python 3.10 veya üzeri yüklü olmalıdır):
pip3 install pre-commit -
Yapılandırmak istediğiniz yerel Git deposunun en üst dizinine gidin.
-
Deponun en üst dizininde
.pre-commit-config.yamladlı yeni bir YAML dosyası oluşturun (başındaki.dahil) ve aşağıdakileri ekleyin:repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.25.0 hooks: - id: cycode stages: [pre-commit] -
Oluşturduğunuz dosyayı ihtiyaçlarınıza göre düzenleyin. Gizli bilgiler taramasını etkinleştirmek için
cycodehook ID'sini kullanın. SCA taramasını etkinleştirmek içincycode-scahook ID'sini kullanın. SAST taramasını etkinleştirmek içincycode-sasthook ID'sini kullanın. Tüm tarama türlerini etkinleştirmek istiyorsanız şu yapılandırmayı kullanın:repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.25.0 hooks: - id: cycode stages: [pre-commit] - id: cycode-sca stages: [pre-commit] - id: cycode-sast stages: [pre-commit] -
Cycode hook'unu yükleyin:
pre-commit installHook başarıyla yüklendiğinde şu mesaj görüntülenir:
Pre-commit installed at .git/hooks/pre-commit. -
Pre-commit hook'unu güncel tutun:
pre-commit autoupdateBu işlem,
.pre-commit-config.yamliçindekirevdeğerini otomatik olarak Cycode CLI'nin kullanılabilir en son sürümüne yükseltir.
[!NOTE] Tetikleme,
git commitkomutunda gerçekleşir. Hook yalnızca commit için hazırlanan dosyalarda tetiklenir.
Pre-Push Hook'u yükleme
Pre-commit hook'una ek olarak veya onun yerine pre-push hook'unu yüklemek için:
-
Pre-push hook'larını
.pre-commit-config.yamldosyanıza ekleyin:repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.25.0 hooks: - id: cycode-pre-push stages: [pre-push] -
Pre-push hook'unu yükleyin:
pre-commit install --hook-type pre-push -
Hem pre-commit hem de pre-push hook'ları için şunu kullanın:
pre-commit install pre-commit install --hook-type pre-push
[!NOTE] Pre-push hook'ları
git pushkomutunda tetiklenir ve yalnızca push edilmek üzere olan commit'leri tarar.
Cycode CLI komutları
Cycode CLI uygulamasında kullanılabilen seçenekler ve komutlar şunlardır:
| Seçenek | Açıklama |
|---|---|
-v, --verbose | Ayrıntılı günlükleri gösterir. |
--no-progress-meter | İlerleme göstergesini göstermez. |
--no-update-notifier | CLI güncellemelerini denetlemez. |
-o, --output [rich|text|json|table] | Çıktı türünü belirtir. Varsayılan değer rich şeklindedir. |
--client-id TEXT | Bu tarama yürütmesi için bir Cycode istemci kimliği belirtir. |
--client-secret TEXT | Bu tarama yürütmesi için bir Cycode istemci gizli anahtarı belirtir. |
--id-token TEXT | Bu tarama yürütmesi için bir Cycode OIDC ID token belirtir. |
--install-completion | Geçerli kabuk için tamamlama özelliğini yükler. |
--show-completion [bash|zsh|fish|powershell|pwsh] | Kopyalamak veya yüklemeyi özelleştirmek üzere belirtilen kabuğun tamamlama ayarlarını gösterir. |
-h, --help | Belirtilen komutun seçeneklerini gösterir. |
| Komut | Açıklama |
| ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| auth | CLI'yi Cycode hesabınızla ilişkilendirmek için makinenizin kimliğini doğrulayın. |
| configure | CLI istemcisi kimlik doğrulamasını yapılandırmak için kullanılan ilk komut. |
| ignore | Belirli bir değeri, yolu veya kural kimliğini yoksayın. |
| mcp | Cycode tarama özelliklerinin yapay zekâ entegrasyonunu etkinleştirmek için Model Context Protocol (MCP) sunucusunu başlatın. |
| scan | İçeriği Secrets/IaC/SCA/SAST ihlallerine karşı tarayın. Hangi tarama türünün gerçekleştirileceğini belirtmeniz gerekir: commit-history/path/repository/etc. |
| report | Rapor oluşturun. SBOM gibi hangi rapor türünün oluşturulacağını belirtmeniz gerekir. |
| status | CLI durumunu gösterin ve çıkın. |
Sertifikalar ve Proxy'ler
Varsayılan olarak Cycode CLI, HTTPS bağlantılarını CLI ile birlikte gelen CA paketiyle doğrular.
Kuruluşunuz HTTPS trafiğini inceleyen bir proxy kullanıyorsa veya kendi CA'sına sahip şirket içi bir kurulumunuz varsa iki seçeneğiniz vardır.
Seçenek 1 — makinede zaten yüklü olan sertifikaları kullanın. CA'nız makinenin sertifika deposundaysa (yönetilen bir cihazda genellikle böyledir), bu seçeneği etkinleştirin:
export CYCODE_CLI_ENABLE_TRUSTSTORE=1
CLI daha sonra Windows sertifika deposuna, macOS Keychain'e veya Linux'taki sistem CA dizinine göre doğrulama yapar ve sertifika yollarının yapılandırılması gerekmez.
[!IMPORTANT] Bu seçenek bilerek varsayılan olarak kapalıdır. Makine deposuna güvenmek, o makinede bulunan tüm kök sertifikalara, yönetici veya kötü amaçlı yazılım tarafından yüklenenler de dahil olmak üzere, güvenmek anlamına gelir. Bu seçeneği yalnızca makinenizin sertifika deposuna güvendiğinizden emin olduğunuzda etkinleştirin.
Seçenek 2 — CLI'yi bir CA paketi dosyasına yönlendirin. Bu seçenek, ilk seçeneği etkinleştirmeden çalışır:
| Ortam Değişkeni | Açıklama |
|---|---|
REQUESTS_CA_BUNDLE | Güvenilecek bir CA paketi dosyasının yolu (.pem veya .crt). |
CURL_CA_BUNDLE | REQUESTS_CA_BUNDLE için diğer ad; ikincisi ayarlanmamışsa kullanılır. |
İki seçenek birlikte kullanılabilir: CYCODE_CLI_ENABLE_TRUSTSTORE=1 ile
REQUESTS_CA_BUNDLE sertifikalarına makine deposuna ek olarak güvenilir; onun yerine değil.
[!TIP] Hangi güven kaynağının kullanıldığını görmek için herhangi bir komutu
-vile çalıştırın; örneğincycode -v status.
Notlar:
- Windows'ta CLI,
REQUESTS_CA_BUNDLEveyaCURL_CA_BUNDLEayarlanmamışsa her zaman sistem sertifika deposuna geri döner. Bu davranış değişmemiştir. - Proxy'ler standart
HTTP_PROXY,HTTPS_PROXYveNO_PROXYortam değişkenleriyle yapılandırılır.
MCP Komutu [EXPERIMENT]
Model Context Protocol (MCP) komutu, Cycode'un tarama özelliklerini yapay zekâ sistemlerine ve uygulamalarına sunan bir MCP sunucusu başlatmanızı sağlar. Böylece yapay zekâ modelleri, standartlaştırılmış bir protokol aracılığıyla Cycode CLI araçlarıyla etkileşim kurabilir.
[!TIP] En iyi deneyim için Cycode CLI'yi
pip install cycodeveyabrew install cycodekullanarak sisteminize genel olarak yükleyin, ardındancycode authile bir kez kimlik doğrulaması yapın. Genel yükleme ve kimlik doğrulamasından sonra MCP yapılandırma dosyalarınızdaCYCODE_CLIENT_IDveCYCODE_CLIENT_SECRETortam değişkenlerini yapılandırmanız gerekmez.
MCP Sunucusunu Başlatma
MCP sunucusunu başlatmak için aşağıdaki komutu kullanın:
cycode mcp
Varsayılan olarak sunucu, yerel entegrasyonlar ve alt süreçleri başlatabilen yapay zekâ uygulamaları için uygun olan stdio aktarımını kullanarak başlatılır.
Kullanılabilir Seçenekler
| Seçenek | Açıklama |
|---|---|
-t, --transport | MCP sunucusu için aktarım türü: stdio, sse veya streamable-http (varsayılan: stdio) |
-H, --host | Sunucunun bağlanacağı ana bilgisayar adresi (yalnızca stdio dışı aktarımda kullanılır) (varsayılan: 127.0.0.1) |
-p, --port | Sunucunun bağlanacağı bağlantı noktası numarası (yalnızca stdio dışı aktarımda kullanılır) (varsayılan: 8000) |
--help | Yardım iletisini ve kullanılabilir seçenekleri göster |
MCP Araçları
MCP sunucusu, yapay zekâ sistemlerinin kullanabileceği aşağıdaki araçları sağlar:
| Araç Adı | Açıklama |
|---|---|
cycode_secret_scan | Sabit kodlanmış gizli bilgileri tarar |
cycode_sca_scan | Yazılım Bileşimi Analizi (SCA) taraması yapar - güvenlik açıkları ve lisans sorunları |
cycode_iac_scan | Kod Olarak Altyapı (IaC) yanlış yapılandırmalarını tarar |
cycode_sast_scan | Statik Uygulama Güvenliği Testi (SAST) taraması yapar - kod kalitesi ve güvenlik kusurları |
cycode_status | Cycode CLI sürümünü, kimlik doğrulama durumunu ve yapılandırma bilgilerini alır |
Her tarama aracı, birbirini dışlayan iki giriş modunu kabul eder:
paths(tercih edilen) — diskte bulunan bir veya daha fazla dosya ya da dizin yolu. Dizinler özyinelemeli olarak taranır. Cycode altyapısı, CLI'dekicycode scan -t <type> path ./srcgibi dosyaları bulup filtreler.files(yedek seçenek) — dosya yollarını tam içeriklerini dizeler olarak eşleyen bir sözlük. Bunu yalnızca dosyalar diskte bulunmadığında kullanın (ör. henüz kaydedilmemiş bellek içi düzenlemeler).
[!TIP] Mümkün olduğunda
pathskullanın. Büyük dosyaları (ör.package-lock.json) satır içi içerik olarak geçirmek belirteç sınırlarını aşabilir ve yapay zekâ istemcisini yavaşlatabilir.pathsile Cycode altyapısı dosyaları doğrudan diskten okur.
Tüm tarama araçları, tam "detections" dizisine ek olarak, insan tarafından okunabilir ihlal sayısını (ör. "Cycode found 3 violations: 1 CRITICAL, 2 HIGH.") içeren bir "summary" alanına sahip bir JSON nesnesi döndürür.
Kullanım Örnekleri
Temel Komut Örnekleri
MCP sunucusunu varsayılan ayarlarla başlatın (stdio aktarımı):
cycode mcp
MCP sunucusunu açıkça belirtilmiş stdio aktarımıyla başlatın:
cycode mcp -t stdio
MCP sunucusunu Server-Sent Events (SSE) aktarımıyla başlatın:
cycode mcp -t sse -p 8080
MCP sunucusunu özel ana bilgisayar ve bağlantı noktasıyla akış özellikli HTTP aktarımında başlatın:
cycode mcp -t streamable-http -H 0.0.0.0 -p 9000
MCP aktarım türleri hakkında daha fazla bilgi için MCP Protocol Specification – Transports sayfasına bakın.
Yapılandırma Örnekleri
Cursor/VS Code/Claude Desktop vb. ile MCP kullanımı (mcp.json)
[!NOTE] AB Cycode ortamlarında, ortam değişkenlerinde uygun
CYCODE_API_URLveCYCODE_APP_URLdeğerlerini ayarladığınızdan emin olun (ör.https://api.eu.cycode.comvehttps://app.eu.cycode.com).
MCP sunucusunu VS Code/GitHub Copilot içinde yapılandırmak için bu kılavuzu izleyin. settings.json içinde bağımsız bir mcpServers nesnesi yerine iç içe bir servers alt nesnesi içeren bir mcp nesnesi bulunduğunu unutmayın.
stdio aktarımı için (doğrudan çalıştırma):
{
"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"
}
}
}
}
pipx yüklemesiyle stdio aktarımı için:
{
"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"
}
}
}
}
uvx yüklemesiyle stdio aktarımı için:
{
"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"
}
}
}
}
SSE aktarımı için (Server-Sent Events):
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.1:8000/sse"
}
}
}
Özel bağlantı noktasıyla SSE aktarımı için:
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.1:8080/sse"
}
}
}
Akış özellikli HTTP aktarımı için:
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.1:8000/mcp"
}
}
}
MCP Sunucusunu Arka Planda Çalıştırma
SSE aktarımı için (önce sunucuyu başlatın, ardından istemciyi yapılandırın):
# 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"
}
}
}
Akış özellikli HTTP aktarımı için:
# 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"
}
}
}
Gelişmiş Yapılandırma
Zaman Aşımları ve Özel Sertifikalar (Proxy Ortamları)
Uzun süren taramalar MCP istemciniz tarafından erken sonlandırılıyorsa araç çağrısı zaman aşımını artırın.
| Ortam Değişkeni | Açıklama |
|---|---|
MCP_TOOL_TIMEOUT | Claude ve GitHub Copilot gibi MCP istemcilerinin bir araç çağrısının tamamlanmasını bekleyeceği süre (saniye). Uzun süren taramalar tamamlanmadan kesiliyorsa bu değeri artırın. |
Kurumsal bir proxy arkasındaysanız sertifika değişkenlerini MCP sunucusunun env bloğunda ayarlayın. Seçenekler için
Sertifikalar ve Proxy'ler bölümüne bakın: makinede zaten bulunan sertifikaları kullanmak için
CYCODE_CLI_ENABLE_TRUSTSTORE=1 veya bir CA paketi dosyasını belirtmek için
REQUESTS_CA_BUNDLE.
Özel CA paketi ve daha uzun zaman aşımı içeren örnek mcp.json yapılandırması:
{
"mcpServers": {
"cycode": {
"command": "cycode",
"args": ["mcp"],
"env": {
"REQUESTS_CA_BUNDLE": "/path/to/your/corporate-ca-bundle.pem",
"MCP_TOOL_TIMEOUT": "1800"
}
}
}
}
[!NOTE] MCP sunucusunun çalışması için Cycode CLI kimlik doğrulamasının doğru şekilde yapılmış olması gerekir. MCP sunucusunu başlatmadan önce
cycode authkullanarak kimlik doğrulaması yaptığınızdan veya kimlik bilgilerinizi yapılandırdığınızdan emin olun.
Alt Ajanlar için Araçları Önceden Yetkilendirme (Claude Code)
Claude Code işleri arka plan alt ajanlarına devrettiğinde (ör. taramaları paralel çalıştırmak için), bu alt ajanlar etkileşimli izin istemlerini görüntüleyemez. Cycode araçları önceden onaylanmamışsa alt ajan bağlamlarında taramalar sessizce başarısız olur.
Cycode MCP araçlarını alt ajanlar dahil tüm bağlamlarda çalışacak şekilde önceden yetkilendirmek için bunları Claude Code ayarlarındaki (~/.claude/settings.json) allowedTools listesine ekleyin:
{
"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"
]
}
Eklendikten sonra Claude Code, bu araçlar çağrıldığında onay istemez ve araçlar alt ajanlarda doğru şekilde çalışır.
MCP Sorunlarını Giderme
MCP sunucusuyla ilgili sorunlarla karşılaşırsanız neler olduğunu daha ayrıntılı görmek için hata ayıklama günlüklerini etkinleştirebilirsiniz. Hata ayıklama günlüklerini etkinleştirmenin iki yolu vardır:
-vveya--verbosebayrağını kullanarak:
cycode -v mcp
CYCODE_CLI_VERBOSEortam değişkenini kullanarak:
CYCODE_CLI_VERBOSE=1 cycode mcp
Hata ayıklama günlükleri aşağıdakiler hakkında ayrıntılı bilgi gösterir:
- Sunucunun başlatılması ve yapılandırması
- Bağlantı girişimleri ve durumu
- Araçların yürütülmesi ve sonuçları
- Oluşan hatalar veya uyarılar
Bu bilgiler şu durumlarda yardımcı olabilir:
- Bağlantı sorunlarını teşhis etme
- Belirli araçların neden çalışmadığını anlama
- Kimlik doğrulama sorunlarını belirleme
- Aktarım türüne özgü sorunları ayıklama
MCP Yapılandırması
Platform Komutu [BETA]
[!WARNING]
platformkomutu beta aşamasındadır. Komutlar, bağımsız değişkenler ve çıktı biçimleri Cycode API spesifikasyonundan dinamik olarak oluşturulur ve sürümler arasında önceden haber verilmeksizin değişebilir. Henüz üretim otomasyonlarında bunlara güvenmeyin.
cycode platform komutu, Cycode platformunun okuma API'lerini CLI komutları olarak sunar. Uç noktaları kaynağa göre gruplandırır (ör. projects, violations, workflows) ve her uç noktanın parametrelerini türü belirlenmiş CLI bağımsız değişkenlerine ve --option bayraklarına dönüştürür.
cycode platform projects list --page-size 50
cycode platform violations count
cycode platform workflows view <workflow-id>
OpenAPI spesifikasyonu ilk kullanımda Cycode API'sinden alınır ve 24 saat boyunca ~/.cycode/openapi-spec.json konumunda önbelleğe alınır. İlgisiz komutlar (cycode scan, cycode status vb.) indirme işlemini başlatmaz.
[!NOTE]
cycode platformkomutları keşfetmek ve çalıştırmak için kimlik doğrulaması yapmış olmanız gerekir (cycode authveyaCYCODE_CLIENT_ID/CYCODE_CLIENT_SECRETortam değişkenleri). Diğer Cycode CLI komutları kimlik doğrulaması olmadan çalışır.
Komutları Keşfetme
Komutlar spesifikasyondan oluşturulduğundan, kullanılabilir komutlar için tek doğruluk kaynağı --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
Platform Örnekleri
# 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üm çıktılar varsayılan olarak JSON biçimindedir — anlık filtreleme için çıktıyı jq üzerinden yönlendirin:
cycode platform projects list --page-size 100 | jq '.items[].name'
Platform Notları ve Sınırlamalar
- Şimdilik salt okunur. Bu beta sürümünde yalnızca
GETuç noktaları kullanıma sunulmuştur. - Spesifikasyon odaklı. API'ye yeni bir uç nokta eklendiğinde, önbellek bir sonraki yenilenişinde bu uç nokta otomatik olarak kullanıma sunulur.
- Birlikte gelen spesifikasyon yoktur. Kurulumdan sonra (veya 24 saatlik önbellek süresi dolduktan sonra) yapılan ilk
cycode platformçağrısı ağ üzerinden veri alır. Yavaş bağlantılarda bu ilk çağrı birkaç saniye sürebilir; önbellek süresi dolana kadar sonraki çağrılar neredeyse anında tamamlanır. - Önbellek TTL'sini
CYCODE_SPEC_CACHE_TTL=<seconds>ile geçersiz kılın.
AI Guardrails [BETA]
AI Guardrails, desteklenen AI kodlama aracılarına (Claude Code, Cursor, Copilot, Codex) kancalar yükler; böylece istemler, aracının okuduğu dosyalar ve MCP aracı bağımsız değişkenleri modele ulaşmadan önce gizli bilgiler açısından taranır.
AI Guardrails Tarafından Toplanan Veriler
Tarama sunucu tarafında gerçekleştiğinden, taranan içerik makineden dışarı çıkar: istem metni, aracının okuduğu dosyaların içeriği ve MCP aracı bağımsız değişkenleri gizli bilgiler açısından denetlenmek üzere Cycode kiracınıza gönderilir.
Her olay ayrıca geliştirici ve makine hakkındaki bağlam bilgileriyle raporlanır; böylece bir bulgu, geldiği cihaz ve kullanıcıyla ilişkilendirilebilir. Bu bilgilerin bazıları kişisel veridir:
- Cihaz tanımlayıcıları — makinenin ana bilgisayar adı ve donanım seri numarası.
- Kullanıcı tanımlayıcıları — AI kodlama aracısında oturum açmış kullanıcının e-posta adresi ve yerel işletim sistemi kullanıcı adı.
- Ortam ayrıntıları — işletim sistemi ve sürümü, AI aracısı, aracının sürümü ve kullanılan model, aracının MCP yapılandırma dosyalarının içeriği ve etkin eklentileri.
Donanım seri numarası, yalnızca komutu çalıştıran kullanıcının okuyabildiği yerel bir geçici dosyada önbelleğe alınır; böylece kanca her çalıştığında donanım yeniden sorgulanmaz.
Bu verilerin toplanması ortamınızda kabul edilebilir değilse guardrails kancalarını yüklemeyin (cycode ai-guardrails uninstall önceden yüklenmiş kancaları kaldırır).
Tarama Komutu
Tarama Çalıştırma
Cycode CLI uygulaması, durumunuza en uygun seçeneği belirleyebilmeniz için çeşitli tarama türleri sunar. Kullanılabilir seçenekler ve komutlar şunlardır:
| Seçenek | Açıklama |
|---|---|
-t, --scan-type [secret|iac|sca|sast] | Çalıştırmak istediğiniz taramayı belirtin (secret/iac/sca/sast); varsayılan secret değeridir. |
--show-secret BOOLEAN | Gizli bilgileri düz metin olarak gösterir. Daha fazla bilgi için Gizli Bilgileri Göster/Gizle bölümüne bakın. |
--soft-fail BOOLEAN | Taramayı başarısız olmadan çalıştırır ve her zaman hata olmayan bir durum kodu döndürür. Daha fazla bilgi için Yumuşak Hata bölümüne bakın. |
--severity-threshold [INFO|LOW|MEDIUM|HIGH|CRITICAL] | Yalnızca belirtilen düzeydeki veya daha yüksek düzeydeki ihlalleri gösterir. |
--sca-scan | Çalıştırmak istediğiniz SCA taramasını belirtin (package-vulnerabilities/license-compliance/unmaintained-packages/malicious-packages). Varsayılan olarak tümü seçilir. |
--monitor | Belirtildiğinde tarama sonuçları Cycode'a kaydedilir. |
--cycode-report | Konsol çıktısında Cycode platformundaki tarama raporuna bir bağlantı gösterir. |
--no-restore | Belirtildiğinde Cycode restore komutunu çalıştırmaz. Bu seçenek yalnızca doğrudan bağımlılıkları tarar! |
--stop-on-error | Başarısız dosyayı atlayıp devam etmek yerine, dosya toplama veya bağımlılık geri yükleme işlemlerinden herhangi biri başarısız olursa taramayı durdurur. |
--gradle-all-sub-projects | Tüm alt projeler için gradle restore komutunu çalıştırır. Bu komut şu dizinden çalıştırılmalıdır |
--maven-settings-file | Yalnızca Maven için, bağımlılıkları tararken özel bir settings.xml dosyası kullanılmasına olanak tanır |
--help | Verilen komutun seçeneklerini gösterir. |
| Komut | Açıklama |
|---|---|
| commit-history | İşleme geçmişini tarar veya belirli işlemeler arasında fark taraması yapar |
| path | Komutta belirtilen yoldaki dosyaları tarar |
| pre-commit | Henüz işlenmemiş içeriği tarar; ayrıca bayraklar aracılığıyla yerel fark taramasını da destekler (IDE dostu) |
| repository | Git deposunu geçmişiyle birlikte tarar |
Seçenekler
Önem Derecesi Seçeneği
Tarama sonuçlarını belirli bir önem derecesi eşiğiyle sınırlamak için tarama komutuna --severity-threshold bağımsız değişkeni eklenebilir.
Örneğin, aşağıdaki komut depoyu Orta veya daha yüksek önem derecesine sahip ilke ihlalleri açısından tarar:
cycode scan --severity-threshold MEDIUM repository ~/home/git/codebase
İzleme Seçeneği
[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.
SCA türündeki bir taramada bulunan SCA ilkeleri ile ilişkili tarama sonuçlarını Cycode'a göndermek için tarama komutuna --monitor bağımsız değişkenini ekleyin.
Örneğin, aşağıdaki komut depoyu SCA ilke ihlalleri açısından tarar ve sonuçları Cycode platformuna gönderir:
cycode scan -t sca --monitor repository ~/home/git/codebase
Cycode Raporu Seçeneği
Cycode CLI kullanılarak gerçekleştirilen her tarama için otomatik olarak bir rapor oluşturulur ve sonuçları Cycode'a gönderilir. Bu sonuçlar, Cycode platformundaki ilgili ilkelerle (ör. Depo taramaları için SCA ilkeleri) ilişkilendirilir.
Tarama tamamlandıktan sonra bu Cycode raporunun doğrudan URL'sinin CLI çıktısında gösterilmesi için tarama komutunuza --cycode-report bağımsız değişkenini ekleyin.
cycode scan --cycode-report repository ~/home/git/codebase
CLI'daki tüm tarama sonuçları Cycode'un CLI Günlükleri bölümünde görünür. Komutunuza --cycode-report bayrağını eklediyseniz, tarama sonuçlarının ardından terminalinizde ilgili rapora doğrudan bir bağlantı gösterilir.
[!WARNING] Bu sayfayı görüntülemek için Cycode'da
ownerveyaadminrolüne sahip olmanız gerekir.

Rapor sayfası aşağıdakine benzer görünür:

Paket Güvenlik Açıkları Seçeneği
[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.
Yerel deponuzdaki belirli bir paket güvenlik açığını taramak için -t sca veya --scan-type sca seçeneğinin ardından --sca-scan package-vulnerabilities bağımsız değişkenini ekleyin.
Önceki örnekte yalnızca paket güvenlik açıkları için SCA taraması çalıştırmak isteseydiniz, aşağıdaki komutu çalıştırabilirdiniz:
cycode scan -t sca --sca-scan package-vulnerabilities repository ~/home/git/codebase
Lisans Uyumluluğu Seçeneği
[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.
Yerel deponuzun belirli bir dalını taramak için --sca-scan license-compliance bağımsız değişkenini ve ardından taramak istediğiniz dalın adını ekleyin.
Önceki örnekte yalnızca dev adlı dalı taramak isteseydiniz, aşağıdaki komutu çalıştırabilirdiniz:
cycode scan -t sca --sca-scan license-compliance repository ~/home/git/codebase -b dev
Bakımı Yapılmayan Paketler Seçeneği
[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.
Yalnızca bakımı yapılmayan paketleri (düşük Maintained denetim puanına sahip OpenSSF Scorecard paketleri; yani yakın zamanda çok az işlem veya sorun etkinliği olan ya da hiç olmayan paketleri) taramak için -t sca veya --scan-type sca seçeneğinin ardından --sca-scan unmaintained-packages bağımsız değişkenini ekleyin.
[!NOTE] Bakımı yapılmayan paketlerin raporlanıp raporlanmayacağı kuruluşunuzun ilkesi tarafından belirlenir. Bu seçenek, taramanın raporladığı sonuçları daraltır; kiracınız için kapalı olan bir ilkeyi etkinleştiremez.
Önceki örnekte yalnızca bakımı yapılmayan paketler için SCA taraması çalıştırmak isteseydiniz, aşağıdaki komutu çalıştırabilirdiniz:
cycode scan -t sca --sca-scan unmaintained-packages repository ~/home/git/codebase
Kötü Amaçlı Paketler Seçeneği
[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.
Yalnızca kötü amaçlı paketleri (güvenlik duyurusunda yalnızca güvenlik açığı bulunan değil, kötü amaçlı yazılım olarak tanımlanan bağımlılıkları) taramak için -t sca veya --scan-type sca seçeneğinin ardından --sca-scan malicious-packages bağımsız değişkenini ekleyin.
Kötü amaçlı paket ihlalleri her zaman Critical olarak raporlanır; CVSS puanı veya düzeltme sürümü içermez. Tek çözüm, bağımlılığı kaldırmaktır.
[!NOTE] Kötü amaçlı paketlerin raporlanıp raporlanmayacağı kuruluşunuzun ilkesi tarafından belirlenir. Bu seçenek, taramanın raporladığı sonuçları daraltır; kiracınız için kapalı olan bir ilkeyi etkinleştiremez.
Önceki örnekte yalnızca kötü amaçlı paketler için SCA taraması çalıştırmak isteseydiniz, aşağıdaki komutu çalıştırabilirdiniz:
cycode scan -t sca --sca-scan malicious-packages repository ~/home/git/codebase
Kilit Dosyasını Geri Yükleme Seçeneği
[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.
SCA taraması çalıştırılırken Cycode CLI, bulduğu desteklenen her bildirim dosyası için otomatik olarak bir bağımlılık kilit dosyası geri yüklemeyi (oluşturmayı) dener. Böylece yalnızca bildirimde doğrudan listelenenler değil, geçişli bağımlılıklar da taranabilir. Bu adımı atlayıp yalnızca doğrudan bağımlılıkları taramak için --no-restore bayrağını kullanın.
Aşağıdaki ekosistemlerde kilit dosyası otomatik olarak geri yüklenir:
| Ekosistem | Bildirim dosyası | Oluşturulan kilit dosyası | Çağrılan araç (kilit dosyası yoksa) |
|---|---|---|---|
| npm | package.json | package-lock.json | npm install --package-lock-only --ignore-scripts --no-audit |
| Yarn | package.json | yarn.lock | yarn install --ignore-scripts |
| pnpm | package.json | pnpm-lock.yaml | pnpm install --ignore-scripts |
| Deno | deno.json / deno.jsonc | deno.lock | (yalnızca mevcut kilit dosyası okunur) |
| Go | go.mod | go.mod.graph | go list -m -json all + go mod graph |
| Maven | pom.xml | bcde.mvndeps | mvn dependency:tree |
| Gradle | build.gradle / build.gradle.kts | gradle-dependencies-generated.txt | gradle dependencies -q --console plain |
| SBT | build.sbt | build.sbt.lock | sbt dependencyLockWrite |
| NuGet | *.csproj | packages.lock.json | dotnet restore --use-lock-file |
| Ruby | Gemfile | Gemfile.lock | bundle --quiet |
| Poetry | pyproject.toml | poetry.lock | poetry lock |
| pip | pyproject.toml / requirements.txt | pylock.toml | pip lock . / pip lock -r requirements.txt -o pylock.toml |
| Pipenv | Pipfile | Pipfile.lock | pipenv lock |
| PHP Composer | composer.json | composer.lock | composer update --no-cache --no-install --no-scripts --ignore-platform-reqs |
Bildirim dosyasının yanında zaten bir kilit dosyası varsa Cycode, herhangi bir yükleme komutu çalıştırmadan bu dosyayı doğrudan okur.
SBT ön koşulu: sbt-dependency-lock eklentisi yüklenmiş olmalıdır. project/plugins.sbt dosyasına aşağıdaki satırı ekleyin:
addSbtPlugin("software.purpledragon" % "sbt-dependency-lock" % "1.5.1")
Hata Durumunda Durdur Seçeneği
Varsayılan olarak Cycode, bir dosya okunamadığında (ör. izin hatası nedeniyle) veya bir SCA taraması sırasında bağımlılık kilit dosyası oluşturulamadığında bile taramaya devam eder. Başarısız öğe bir uyarıyla atlanır ve tarama kalan dosyalarla sürdürülür.
Bu davranışı değiştirmek için --stop-on-error kullanın: tarama bu tür ilk hatada hemen durur ve hatayı bildirir.
cycode scan -t sca --stop-on-error path ~/home/git/codebase
Bu seçenek, sessiz bir hatanın eksik tarama sonucuna yol açacağı CI işlem hatlarında kullanışlıdır. --stop-on-error tetiklendiğinde, altta yatan sorunu düzeltebilir veya özellikle SCA geri yükleme hatalarında, kilit dosyası oluşturmayı atlamak ve yalnızca doğrudan bağımlılıkları taramak için --no-restore ekleyebilirsiniz.
--stop-on-error kullanıldığında CLI, tarama hataları ile ilke ihlallerini çıkış kodlarıyla birbirinden ayırır:
| Çıkış kodu | Anlamı |
|---|---|
0 | Tarama ihlal bulunmadan tamamlandı |
1 | Tarama tamamlandı ve ihlaller bulundu |
2 | Tarama bir hata nedeniyle durduruldu (yalnızca --stop-on-error ayarlandığında) |
Depo Taraması
Depo taraması, açığa çıkmış gizli bilgileri veya güvenli olmayan yanlış yapılandırmaları bulmak için yerel bir deponun tamamını inceler. Bu daha kapsamlı tarama türü her şeyi inceler: deponuzun mevcut durumunu ve commit geçmişini. Yalnızca depoda şu anda açığa çıkmış gizli bilgileri değil, daha önce silinmiş gizli bilgileri de arar.
Tam depo taraması gerçekleştirmek için aşağıdaki komutu çalıştırın:
cycode scan repository {{path}}
Örneğin, ~/home/git/codebase konumunda depolanmış bir depoyu taramak istiyorsanız aşağıdaki komutu çalıştırabilirsiniz:
cycode scan repository ~/home/git/codebase
Bu komutla kullanılabilecek seçenek:
| Seçenek | Açıklama |
|---|---|
-b, --branch TEXT | Taranacak dal; ayarlanmazsa varsayılan dal taranır |
Dal Seçeneği
Yerel deponuzun belirli bir dalını taramak için -b (alternatif olarak --branch) bağımsız değişkenini ve ardından taramak istediğiniz dalın adını ekleyin.
Önceki örnekte, yalnızca dev adlı bir dalı taramak istiyorsanız aşağıdaki komutu çalıştırabilirsiniz:
cycode scan repository ~/home/git/codebase -b dev
Yol Taraması
Yol taraması, yalnızca bir GIT deposuna odaklanmak yerine belirli bir yerel dizini ve içindeki tüm içeriği inceler.
Dizin taraması gerçekleştirmek için aşağıdaki komutu çalıştırın:
cycode scan path {{path}}
Örneğin, ~/home/git/codebase konumundaki dizini taramak istediğinizi varsayalım. Bu durumda aşağıdaki komutu çalıştırabilirsiniz:
cycode scan path ~/home/git/codebase
Terraform Planı Taraması
Cycode CLI, Terraform planı taramasını destekler (Terraform 0.12 ve sonraki sürümler desteklenir).
Terraform planı dosyası JSON biçiminde olmalıdır (.json uzantısına sahip olmalıdır).
Yalnızca bir yapılandırma dosyanız varsa aşağıdakileri yaparak bir plan oluşturabilirsiniz:
-
Terraform yapılandırma dosyasını içeren bir çalışma dizinini başlatın:
terraform init -
Terraform yürütme planı oluşturun ve ikili çıktıyı kaydedin:
terraform plan -out={tfplan_output} -
İkili çıktı dosyasını okunabilir JSON biçimine dönüştürün:
terraform show -json {tfplan_output} > {tfplan}.json -
{tfplan}.jsondosyanızı Cycode CLI ile tarayın:cycode scan -t iac path ~/PATH/TO/YOUR/{tfplan}.json
Commit Geçmişi Taraması
[!NOTE] IaC taramalarında commit geçmişi taraması kullanılamaz.
Commit geçmişi taraması komutu iki temel özellik sunar:
- Tüm Geçmişi Tarama: Depo geçmişindeki tüm commit'leri analiz eder
- Diff Taraması: Yalnızca belirli commit'ler arasındaki değişiklikleri tarar
Gizli bilgi taraması, depo geçmişindeki tüm commit'leri analiz edebilir; çünkü eklenip daha sonra kaldırılan gizli bilgiler yine de sızdırılmış veya açığa çıkmış olabilir. SCA ve SAST taramalarında commit geçmişi komutu, commit'ler arasındaki farkları/değişiklikleri taramaya odaklanır. Bu da onu çekme isteği incelemeleri ve artımlı tarama için ideal kılar.
Commit geçmişi taraması, Git deponuzun commit geçmişini inceler ve hem kapsamlı geçmiş analizinde hem de belirli değişikliklerin hedefli diff taramasında kullanılabilir.
Commit geçmişi taraması gerçekleştirmek için aşağıdaki komutu çalıştırın:
cycode scan commit-history {{path}}
Örneğin, ~/home/git/codebase konumunda depolanmış bir deponun commit geçmişini taramak istediğinizi varsayalım. Bu durumda aşağıdaki komutu çalıştırabilirsiniz:
cycode scan commit-history ~/home/git/codebase
Bu komutla kullanılabilecek seçenekler:
| Seçenek | Açıklama |
|---|---|
-r, --commit-range TEXT | Bu git deposunda bir commit aralığını tarar; varsayılan olarak cycode tüm commit geçmişini tarar (örnek: HEAD~1) |
Commit Aralığı Seçeneği (Diff Taraması)
Commit aralığı seçeneği, deponun tüm geçmişi yerine yalnızca belirli commit'ler arasındaki değişiklikleri tarayan diff taramasını etkinleştirir. Bu seçenek özellikle şunlar için kullanışlıdır:
- Çekme isteği doğrulaması: Yalnızca bir PR'da yapılan değişiklikleri tarar
- Artımlı CI/CD taraması: Tüm kod tabanı yerine son değişikliklere odaklanır
- Özellik dalı incelemesi: Değişiklikleri main/master dalıyla karşılaştırır
- Performans iyileştirmesi: Kapsamı ilgili değişikliklerle sınırlayarak taramaları hızlandırır
Commit Aralığı Sözdizimi
--commit-range (-r) seçeneği, standart Git revizyon sözdizimini destekler:
| Sözdizimi | Açıklama | Örnek |
|---|---|---|
commit1..commit2 | commit1'den commit2'ye kadar olan değişiklikler | abc123..def456 |
commit1...commit2 | commit1'de olmayan commit2 değişiklikleri | main...feature-branch |
commit | commit'ten HEAD'e kadar olan değişiklikler | HEAD~1 |
branch1..branch2 | branch1'den branch2'ye kadar olan değişiklikler | main..feature-branch |
Diff Taraması Örnekleri
Son commit'teki değişiklikleri tarayın:
cycode scan commit-history -r HEAD~1 ~/home/git/codebase
İki belirli commit arasındaki değişiklikleri tarayın:
cycode scan commit-history -r abc123..def456 ~/home/git/codebase
Özellik dalınızdaki değişiklikleri main ile karşılaştırarak tarayın:
cycode scan commit-history -r main..HEAD ~/home/git/codebase
Main ile bir özellik dalı arasındaki değişiklikleri tarayın:
cycode scan commit-history -r main..feature-branch ~/home/git/codebase
Son 3 commit'teki tüm değişiklikleri tarayın:
cycode scan commit-history -r HEAD~3..HEAD ~/home/git/codebase
[!TIP] CI/CD işlem hatlarında, yalnızca PR/MR değişikliklerini taramak için
${{ github.event.pull_request.base.sha }}..${{ github.sha }}(GitHub Actions) veya$CI_MERGE_REQUEST_TARGET_BRANCH_SHA..$CI_COMMIT_SHA(GitLab CI) gibi ortam değişkenlerini kullanabilirsiniz.
Pre-Commit Taraması
Pre-commit taraması, deponuzda değişiklikleri commit etmeden önce sorunları otomatik olarak belirler. Bu taramayı elle çalıştırmanız gerekmez; bu kılavuzun Kurulum bölümünde açıklandığı şekilde pre-commit hook'unu yapılandırın.
Pre-commit hook'unu yükledikten sonra, belirli bir commit sırasında taramayı atlamak isteyebilirsiniz. Tek bir commit için taramayı atlamak üzere git komutunuza aşağıdakini ekleyin:
SKIP=cycode git commit -m <your commit message>`
Bu komutla kullanılabilecek seçenekler:
| Seçenek | Açıklama |
|---|---|
-b, --base-ref TEXT | Diff alınacak Git referansı (commit, dal veya etiket); varsayılan değer HEAD olup pre-commit hook davranışıyla eşleşir |
--include-unstaged | Yalnızca hazırlama alanına eklenenleri değil, izlenen dosyalardaki hazırlanmamış değişiklikleri de tarar; varsayılan olarak kapalıdır |
--path PATH | Diff taramasının kapsamını belirlemek için isteğe bağlı yol(lar); yinelenebilir; varsayılan olarak tüm çalışma dizinini kapsar |
Yerel Diff Taraması (IDE Entegrasyonları)
--base-ref ve --include-unstaged, pre-commit komutunu genel amaçlı bir yerel diff taramasına dönüştürür: herhangi bir commit'i (varsayılan HEAD) henüz hazırlama alanına eklenmemiş düzenlemeler de dahil olmak üzere mevcut çalışma dizininizle karşılaştırır. Bu özellik, git hook akışı yerine çalışırken sürekli ve gerçek zamanlı geri bildirime ihtiyaç duyan IDE eklentileri ve diğer araçlar için tasarlanmıştır. --include-unstaged ile birlikte kullanıldığında --path, IDE'nin taramayı yalnızca düzenleyicide o anda açık olan dosyayla sınırlamasını sağlar.
[!NOTE] Yerel diff taraması (bu bayraklar aracılığıyla) IaC taramalarında kullanılamaz.
Şu anda değiştirilmiş her şeyi (hazırlanmış + hazırlanmamış) son commit ile karşılaştırarak tarayın:
cycode scan pre-commit --include-unstaged
Değişiklikleri belirli bir commit veya dalla karşılaştırarak tarayın:
cycode scan pre-commit --include-unstaged --base-ref main
Yalnızca belirli bir dosyayı (ör. IDE'nizde o anda açık olan dosyayı) tarayın:
cycode scan pre-commit --include-unstaged --path src/app.py
Pre-Push Taraması
Pre-push taraması, değişiklikleri uzak depoya göndermeden önce sorunları otomatik olarak belirler. Bu hook istemci tarafında çalışır ve yalnızca gönderilmek üzere olan commit'leri tarar; böylece sorunları uzak depoya ulaşmadan önce verimli bir şekilde yakalar.
[!NOTE] IaC taramalarında pre-push hook'u kullanılamaz.
Pre-push hook'u pre-commit çerçevesiyle bütünleşir ve herhangi bir git push işleminden önce çalışacak şekilde yapılandırılabilir.
Pre-Push Hook'unu Yükleme
Pre-commit çerçevesini kullanarak pre-push hook'unu ayarlamak için:
-
Pre-commit çerçevesini yükleyin (henüz yüklenmemişse):
pip3 install pre-commit -
Pre-push hook'larını eklemek için
.pre-commit-config.yamldosyanızı oluşturun veya güncelleyin:repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.25.0 hooks: - id: cycode-pre-push stages: [pre-push] -
Birden fazla tarama türü için bu yapılandırmayı kullanın:
repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.25.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] -
Pre-push hook'unu yükleyin:
pre-commit install --hook-type pre-pushYükleme başarılı olduğunda şu ileti görüntülenir:
Pre-push installed at .git/hooks/pre-push. -
Pre-push hook'unu güncel tutun:
pre-commit autoupdate
Pre-Push Taraması Nasıl Çalışır?
Hook, gönderilen her commit'i tek tek tarar; böylece bir commit'te eklenip sonraki bir commit'te kaldırılan bir gizli bilgi yine de yakalanır. Pre-commit çerçevesi üzerinden yüklendiğinde gönderilen aralık çerçeveden alınır: mevcut dallar için uzak daldan sonraki yeni commit'ler, yeni dallar içinse henüz uzak depoda bulunmayan commit'ler (boş bir uzak depoya gönderim yapıldığında tüm commit'ler). Elle yazılmış bir .git/hooks/pre-push dosyasından çalıştırıldığında aralık git'in hook girdisinden okunur ve yeni dallar varsayılan dalla birleştirme tabanından itibaren taranır (aşağıya bakın).
Etiketler, dal silme işlemleri ve güncel dallara yapılan gönderimler gibi taranacak bir şey bulunmayan gönderimler tarama yapılmadan geçer. Hook gönderilenleri belirleyemezse sessizce geçmek yerine başarısız olur ve gönderimi engeller.
Cycode pre-push hook'ları always_run: true ve pass_filenames: false değerlerini ayarlar; çünkü tarama bir dosya listesi yerine gönderilen commit'leri kapsar. always_run olmadan, gönderilen commit'lerde değişen dosya kalmadığında (örneğin bir commit'te eklenip sonraki commit'te silinen bir gizli bilgi) pre-commit çerçevesi hook'u atlar. pass_filenames: false olmadan çerçeve, taramanın kullanmadığı değişen dosya adlarını iletir ve büyük gönderimlerde bunları gruplara ayırarak her grup için tam taramayı bir kez çalıştırır. Hook'u kendiniz tanımlarsanız (örneğin bir repo: local hook'u olarak) her iki seçeneği de ayarlayın.
Akıllı Varsayılan Dal Algılama
Elle yazılmış bir hook'tan çalıştırıldığında pre-push taraması, birleştirme tabanı hesaplaması için varsayılan dalı şu öncelik sırasına göre algılar:
- Ortam Değişkeni:
CYCODE_DEFAULT_BRANCH- elle geçersiz kılmaya olanak tanır - Git Uzak HEAD'i: Gerçek uzak varsayılan dalı algılamak için
git symbolic-ref refs/remotes/origin/HEADkullanılır - Git Uzak Bilgisi: symbolic-ref başarısız olursa
git remote show originkullanılır - Sabit Kodlanmış Geri Dönüş Değerleri: Yaygın varsayılan dal adları kullanılır (origin/main, origin/master, main, master)
Özel Varsayılan Dal Ayarlama:
export CYCODE_DEFAULT_BRANCH=origin/develop
Bu akıllı algılama, deponuz main, master, develop veya başka bir varsayılan dal adı kullanıyor olsa da pre-push kancasının doğru çalışmasını sağlar.
Pre-Push Taramalarını Atlamak
Belirli bir push işlemi için pre-push taramasını atlamak üzere şunu kullanın:
SKIP=cycode-pre-push git push
Ya da tüm pre-push kancalarını atlamak için:
git push --no-verify
[!TIP] Pre-push kancası
git pushkomutunda tetiklenir ve yalnızca gönderilmek üzere olan commit'leri tarar. Bu nedenle tüm depoyu taramaktan daha verimlidir.
Taramaların Dışında Tutulacak Yollar
Cycode CLI'ye taramalardan hangi dosya ve dizinleri hariç tutacağını bildirmek için bir .cycodeignore dosyası kullanabilirsiniz.
Bu dosya, .gitignore dosyasıyla aynı şekilde çalışır. Böylece taramaları ilgili kodunuza odaklayabilir ve belirli yolların yerel ortamda ihlalleri tetiklemesini önleyebilirsiniz.
Nasıl Çalışır?
- Çalışma klasörünüzde
.cycodeignoreadlı bir dosya oluşturun. - Hariç tutmak istediğiniz dosya ve dizinleri,
.gitignoreile aynı kalıpları kullanarak listeleyin. - Bu dosyayı cycode scan komutunu çalıştırmayı planladığınız dizine yerleştirin.
[!WARNING]
- Geçersiz dosyalar:
.cycodeignoredosyasında bir sözdizimi hatası varsa CLI taraması başarısız olur ve hata döndürür.- Yolları yok sayma ve ihlalleri yok sayma: Bu dosya, yolları hariç tutmak içindir. CLI'nin belirli ihlalleri yok sayma özelliğinden (örneğin, --ignore-violation bayrağını kullanarak) farklıdır.
Desteklenen Tarayıcılar
- SAST
- IaC (yakında)
- SCA (yakında)
Tarama Sonuçları
Her tarama, herhangi bir sorun bulunup bulunmadığını belirten bir mesajla tamamlanır.
Sorun bulunmazsa tarama aşağıdaki başarı mesajıyla sona erer:
Good job! No issues were found!!! 👏👏👏
Bir sorun bulunursa bunun yerine tarama tamamlandığında bir ihlal kartı görüntülenir. Bu durumda, sonuç mesajında vurgulanan belirli satır için ilgili dosyayı inceleyin. Sorunu çözmek için gereken değişiklikleri yapın ve ardından taramayı yeniden çalıştırın.
Gizli Bilgileri Gösterme/Gizleme
Aşağıdaki örneklerde, cli alt klasöründe bulunan secret_test dosyasında bir gizli bilgi bulunmuştur. Mesajın ikinci kısmında, gizli bilginin göründüğü belirli satır gösterilir. Bu örnekte gizli bilgi, googleApiKey öğesine atanmış bir değerdir.
Örnekte gerçek gizli bilgi değerinin çoğunun yıldız işaretleriyle değiştirilerek gizlendiğine dikkat edin. Taramalar gizli bilgileri varsayılan olarak gizler; ancak tam gizli bilgiyi görüntülemek için bu özelliği isteğe bağlı olarak devre dışı bırakabilirsiniz (tarama sonucunu görüntülediğiniz makinenin meraklı gözlerden yeterince korunduğunu varsayarak).
Gizli bilgileri gizleme özelliğini devre dışı bırakmak için her tür taramaya --show-secret bağımsız değişkenini ekleyin.
Aşağıdaki örnekte, bulunan gizli bilgileri tam olarak görüntüleme seçeneği etkinleştirilerek cli alt dizininde bir Path Scan çalıştırılır:
cycode scan --show-secret path ./cli
Bu durumda sonuç gizlenmez.
Yumuşak Başarısızlık
Normal çalışma sırasında CLI, tarama sonuçlarında sorun bulunduğunda 1 çıkış kodunu döndürür. CI/CD kurulumunuza bağlı olarak bu genellikle genel bir başarısızlıkla sonuçlanır. Bunun olmasını istemiyorsanız yumuşak başarısızlık özelliğini kullanabilirsiniz.
Her tür taramaya --soft-fail seçeneğini eklediğinizde, herhangi bir sonuç bulunup bulunmadığına bakılmaksızın çıkış kodu 0 olarak ayarlanır.
Örnek Tarama Sonuçları
Gizli Bilgi Sonucu Örneği
╭─────────────────────────────────────────────────────────────── 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. │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
IaC Sonucu Örneği
╭──────────── 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. │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
SCA Sonucu Örneği
╭─────────────────────────────────────────────────────── [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. │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
SAST Sonucu Örneği
╭───────────────────────────────────────────── [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. │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Şirkete Özel Düzeltme Yönergeleri
Şirketiniz Cycode portalı üzerinden ilgili politikada özel düzeltme yönergeleri belirlediyse, eklediğiniz düzeltme yönergelerini içeren “Company Guidelines” alanını görürsünüz. Şirket yönergesi eklemediyseniz bu alanın CLI aracında görünmeyeceğini unutmayın.
Tarama Sonuçlarını Yok Sayma
Belirli gizli bilgi değerlerini, belirli SHA512 değerlerini, belirli yolları ve belirli Cycode gizli bilgi ve IaC kural kimliklerini yok saymak için yok sayma kuralları eklenebilir. Böylece tarama bu değerler için uyarı vermez. Yok sayma kuralları yerel olarak ./.cycode/config.yaml dosyasına yazılır ve kaydedilir.
[!WARNING] Yok sayılacak değerleri eklerken taramaların gerçek pozitifleri algılamasını sağlamak için değerleri, yolları ve politikaları dikkatlice değerlendirin.
cycode ignore komutu için kullanılabilen seçenekler şunlardır:
| Seçenek | Açıklama |
|---|---|
--by-value TEXT | Gizli bilgileri tararken belirli bir değeri yok sayar. Daha fazla bilgi için Gizli Bilgi Değerini Yok Sayma bölümüne bakın. |
--by-sha TEXT | Gizli bilgileri tararken bir dizenin belirli SHA512 gösterimini yok sayar. Daha fazla bilgi için Gizli Bilginin SHA Değerini Yok Sayma bölümüne bakın. |
--by-path TEXT | Belirli bir yolu taramaktan kaçınır. Tarama türü belirtilmelidir. Daha fazla bilgi için Bir Yolu Yok Sayma bölümüne bakın. |
--by-rule TEXT | Belirli bir gizli bilgi kuralı kimliğini/IaC kuralı kimliğini/SCA kuralı kimliğini taramayı yok sayar. Daha fazla bilgi için Bir Gizli Bilgi veya IaC Kuralını Yok Sayma bölümüne bakın. |
--by-package TEXT | SCA taraması sırasında belirli bir paket sürümünü taramayı yok sayar. Beklenen kalıp - name@version. Daha fazla bilgi için Bir Paketi Yok Sayma bölümüne bakın. |
--by-cve TEXT | SCA taraması sırasında belirli bir CVE'yi taramayı yok sayar. Beklenen kalıp: CVE-YYYY-NNN. |
-t, --scan-type [secret|iac|sca|sast] | Çalıştırmak istediğiniz taramayı belirtir (secret/iac/sca/sast). Varsayılan değer secret şeklindedir. |
-g, --global | Bir yok sayma kuralı ekler ve bunu genel .cycode yapılandırma dosyasında günceller. |
Gizli Bilgi Değerini Yok Sayma
Belirli bir gizli bilgi değerini yok saymak için --by-value bayrağını kullanmanız gerekir. Bu, verilen gizli bilgi değerinin gelecekteki tüm taramalarda yok sayılmasını sağlar. Yok sayılacak bir gizli bilgi değeri eklemek için aşağıdaki komutu kullanın:
cycode ignore --by-value {{secret-value}}
Bu bölümün başındaki örnekte, belirli bir gizli bilgi değerini yok sayma komutu şöyledir:
cycode ignore --by-value h3110w0r1d!@#$350
Yukarıdaki örnekte h3110w0r1d!@#$350 değerini maskelenmemiş gizli bilgi değerinizle değiştirin. Tarama sonuçlarında gizli bilgi değerlerini nasıl görebileceğiniz hakkında ayrıntılar için Cycode tarama seçeneklerine bakın.
Gizli Bilginin SHA Değerini Yok Sayma
Belirli bir gizli bilgi SHA değerini yok saymak için --by-sha bayrağını kullanmanız gerekir. Bu, verilen gizli bilgi SHA değerinin gelecekteki tüm taramalarda yok sayılmasını sağlar. Yok sayılacak bir gizli bilgi SHA değeri eklemek için aşağıdaki komutu kullanın:
cycode ignore --by-sha {{secret-sha-value}}
Bu bölümün başındaki örnekte, belirli bir gizli bilgi SHA değerini yok sayma komutu şöyledir:
cycode ignore --by-sha a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0
Yukarıdaki örnekte a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 değerini gizli bilgi SHA değerinizle değiştirin.
Bir Yolu Yok Sayma
Gizli bilgi, IaC veya SCA taramalarında belirli bir yolu yok saymak için --by-path bayrağını -t, --scan-type bayrağıyla birlikte kullanmanız gerekir (tarama türünü belirtmelisiniz). Böylece verilen yol, belirtilen tarama türü için gelecekteki tüm taramalarda yok sayılır. Yok sayılacak bir yol eklemek için aşağıdaki komutu kullanın:
cycode ignore -t {{scan-type}} --by-path {{path}}
Bu bölümün başındaki örnekte, gizli bilgi taramasında belirli bir yolu yok sayma komutu şöyledir:
cycode ignore -t secret --by-path ~/home/my-repo/config
Yukarıdaki örnekte ~/home/my-repo/config değerini yolunuzla değiştirin.
Bu bölümün başındaki örnekte, IaC taramalarında belirli bir yolu yok sayma komutu şöyledir:
cycode ignore -t iac --by-path ~/home/my-repo/config
Yukarıdaki örnekte ~/home/my-repo/config değerini yolunuzla değiştirin.
Bu bölümün başındaki örnekte, SCA taramalarında belirli bir yolu yok sayma komutu şöyledir:
cycode ignore -t sca --by-path ~/home/my-repo/config
Yukarıdaki örnekte ~/home/my-repo/config değerini yolunuzla değiştirin.
Gizli Bilgi, IaC, SCA veya SAST Kuralını Yok Sayma
Belirli bir gizli bilgi, IaC, SCA veya SAST kuralını yok saymak için --by-rule bayrağını -t, --scan-type bayrağıyla birlikte kullanmanız gerekir (tarama türünü belirtmelisiniz). Böylece verilen kural kimliği değeri gelecekteki tüm taramalarda yok sayılır. Yok sayılacak bir kural kimliği değeri eklemek için aşağıdaki komutu kullanın:
cycode ignore -t {{scan-type}} --by-rule {{rule-ID}}
Bu bölümün başındaki örnekte, belirli bir gizli bilgi kuralı kimliğini yok sayma komutu şöyledir:
cycode ignore -t secret --by-rule ce3a4de0-9dfc-448b-a004-c538cf8b4710
Yukarıdaki örnekte ce3a4de0-9dfc-448b-a004-c538cf8b4710 değerini yok saymak istediğiniz kural kimliğiyle değiştirin.
Bu bölümün başındaki örnekte, belirli bir IaC kuralı kimliğini yok sayma komutu şöyledir:
cycode ignore -t iac --by-rule bdaa88e2-5e7c-46ff-ac2a-29721418c59c
Yukarıdaki örnekte bdaa88e2-5e7c-46ff-ac2a-29721418c59c değerini yok saymak istediğiniz kural kimliğiyle değiştirin.
Bu bölümün başındaki örnekte, belirli bir SCA kuralı kimliğini yok sayma komutu şöyledir:
cycode ignore -t sca --by-rule dc21bc6b-9f4f-46fb-9f92-e4327ea03f6b
Yukarıdaki örnekte dc21bc6b-9f4f-46fb-9f92-e4327ea03f6b değerini yok saymak istediğiniz kural kimliğiyle değiştirin.
Bir Paketi Yok Sayma
[!NOTE] Bu seçenek yalnızca SCA taramalarında kullanılabilir.
SCA taramalarında belirli bir paketi yok saymak için --by-package bayrağını -t, --scan-type bayrağıyla birlikte kullanmanız gerekir (sca tarama türünü belirtmelisiniz). Böylece verilen paket, {{package_name}}@{{package_version}} biçimlendirmesi kullanılarak gelecekteki tüm taramalarda yok sayılır. Yok sayılacak bir paket ve sürüm eklemek için aşağıdaki komutu kullanın:
cycode ignore --scan-type sca --by-package {{package_name}}@{{package_version}}
VEYA
cycode ignore -t sca --by-package {{package_name}}@{{package_version}}
Aşağıdaki örnekte, belirli bir SCA paketini yok sayma komutu şöyledir:
cycode ignore --scan-type sca --by-package pyyaml@5.3.1
Yukarıdaki örnekte pyyaml yerine paket adını, 5.3.1 yerine ise yok saymak istediğiniz paket sürümünü yazın.
Yapılandırma dosyası aracılığıyla yok sayma
Uygulanan yok sayma kuralları config.yaml adlı yapılandırma dosyasında saklanır.
Bu dosya geliştiriciler arasında kolayca paylaşılabilir, hatta uzak Git deposuna commit edilebilir.
Bu dosyalar her zaman .cycode klasöründe bulunur.
Klasörün adı noktayla (.) başlar; klasörü görebilmek için gizli dosyaların görüntülenmesini etkinleştirmeniz gerekir.
Yapılandırma dosyalarının yolu
Varsayılan olarak tüm cycode ignore komutları yok sayma kuralını CLI'nin çalıştırıldığı geçerli dizine kaydeder.
Örnek: yok sayma CLI komutunu /Users/name/projects/backend konumundan çalıştırmak, /Users/name/projects/backend/.cycode içinde config.yaml oluşturur.
➜ backend pwd
/Users/name/projects/backend
➜ backend cycode ignore --by-value test-value
➜ backend tree -a
.
└── .cycode
└── config.yaml
2 directories, 1 file
İkinci seçenek, yok sayma kurallarını genel yapılandırma dosyalarına kaydetmektir.
Genel yapılandırmanın yolu ~/.cycode/config.yaml şeklindedir;
burada ~, macOS'te users home directory, for example, /Users/name` anlamına gelir.
Genel alana kaydetmek için cycode ignore komutunun -g bayrağı kullanılabilir.
Örneğin: cycode ignore -g --by-value test-value.
Doğru çalışma dizini
.cycode klasörünü doğru yere yerleştirmek ve CLI'yi aynı konumdan çalıştırmak son derece önemlidir.
CI/CD (GitHub Actions, Jenkins vb.) gibi farklı ortamlarla çalışırken bunu mutlaka kontrol edin.
.cycode klasörünü deponuzun kök dizinine commit edebilirsiniz. Bu durumda CLI taramalarını depo kök dizininden çalıştırmanız gerekir. Bu gereksinimlerinize uymuyorsa .cycode klasörünü geçici olarak istediğiniz konuma kopyalayabilir ve CLI taramasını bu klasörden çalıştırabilirsiniz.
Yapılandırmadaki yok sayma kuralları
Bu yapılandırma dosyalarını okuyabilmek, hatta CLI olmadan değiştirebilmek için CLI'ın yok sayılan kuralları nasıl sakladığını anlamak önemlidir.
Soyut YAML yapısı:
exclusions:
{scanTypeName}:
{ignoringType}:
- someIgnoringValue1
- someIgnoringValue2
scanTypeName için olası değerler: iac, sca, sast, secret.
ignoringType için olası değerler: paths, values, rules, packages, shas, cves.
[!WARNING] "Değere göre yok say" için kullanılan değerler düz metin olarak saklanmaz! CLI bunun yerine değerlerin sha256 karmalarını saklar. Yapılandırma dosyasını elle değiştirirken dizenin karmalarını kullanmalısınız.
Gerçek bir config.yaml örneği:
exclusions:
iac:
rules:
- bdaa88e2-5e7c-46ff-ac2a-29721418c59c
sca:
packages:
- pyyaml@5.3.1
secret:
paths:
- /Users/name/projects/build
rules:
- ce3a4de0-9dfc-448b-a004-c538cf8b4710
shas:
- a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0
values:
- a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
- 60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752
Report Command
SBOM Raporu Oluşturma
Yazılım malzeme listesi (SBOM), bir uygulamanın geliştirilmesi ve teslim edilmesinde yer alan tüm bileşenlerin ve yazılım bağımlılıklarının envanteridir. Bu komutu kullanarak yerel projeniz veya depo URI'niz için bir SBOM raporu oluşturabilirsiniz.
Bu komutla kullanılabilecek seçenekler şunlardır:
| Seçenek | Açıklama | Gerekli | Varsayılan |
|---|---|---|---|
-f, --format [spdx-2.2|spdx-2.3|cyclonedx-1.4] | SBOM biçimi | Evet | |
-o, --output-format [JSON] | Çıktı dosyası biçimini belirtin | Hayır | json |
--output-file PATH | Çıktı dosyası | Hayır | geçerli dizine kaydedilen otomatik oluşturulmuş dosya adı |
--include-vulnerabilities | Güvenlik açıklarını dahil et | Hayır | False |
--include-dev-dependencies | Geliştirme bağımlılıklarını dahil et | Hayır | False |
Bu komutla kullanılabilecek komutlar şunlardır:
| Komut | Açıklama |
|---|---|
path | Komutta belirtilen yol için SBOM raporu oluşturur |
repository-url | Komutta belirtilen depo URI'si için SBOM raporu oluşturur |
Depo
Bir depo URI'si için SBOM raporu oluşturmak üzere:
cycode report sbom --format <sbom format> --include-vulnerabilities --include-dev-dependencies --output-file </path/to/file> repository_url <repository url>
Örneğin:
cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies repository_url https://github.com/cycodehq/cycode-cli.git
Yerel Proje
Bir yol için SBOM raporu oluşturmak üzere:
cycode report sbom --format <sbom format> --include-vulnerabilities --include-dev-dependencies --output-file </path/to/file> path </path/to/project>
Örneğin:
cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies path /path/to/local/project
path alt komutu aşağıdaki ek seçenekleri destekler:
| Seçenek | Açıklama |
|---|---|
--no-restore | Kilit dosyasının geri yüklenmesini atlar ve yalnızca doğrudan bağımlılıkları tarar. Ayrıntılar için Lock Restore Option bölümüne bakın. |
--gradle-all-sub-projects | Tüm alt projeler için Gradle geri yükleme komutunu çalıştırır (çok projeli bir Gradle derlemesinin kök dizininden kullanın). |
--maven-settings-file | Yalnızca Maven için, bağımlılık ağacını oluştururken özel bir settings.xml dosyası kullanılmasına olanak tanır. |
Import Command
SBOM İçe Aktarma
Yazılım malzeme listesi (SBOM), bir uygulamanın geliştirilmesi ve teslim edilmesinde yer alan tüm bileşenlerin ve yazılım bağımlılıklarının envanteridir. Bu komutu kullanarak dosya sisteminizdeki bir SBOM dosyasını Cycode'a aktarabilirsiniz.
Bu komutla kullanılabilecek seçenekler şunlardır:
| Seçenek | Açıklama | Gerekli | Varsayılan |
|---|---|---|---|
-n, --name TEXT | SBOM'un görünen adı | Evet | |
-v, --vendor TEXT | SBOM'u sağlayan kuruluşun adı | Evet | |
-l, --label TEXT | SBOM'a etiket ekle | Hayır | |
-o, --owner TEXT | Bu SBOM için iletişim noktası olan Cycode kullanıcısının e-posta adresi | Hayır | |
-b, --business-impact [High | Medium | Low] | İş Etkisi | Hayır | Medium |
Örneğin:
cycode import sbom --name example-sbom --vendor cycode -label tag1 -label tag2 --owner example@cycode.com /path/to/local/project
Tarama Günlükleri
Tüm CLI taramaları Cycode'da günlüğe kaydedilir. Günlükleri Settings > CLI Logs altında bulabilirsiniz.
Sözdizimi Yardımı
Kullanılabilir seçenekleri ve bunların sözdizimini gösteren bir yardım iletisi görüntülemek için istediğiniz zaman herhangi bir komuta --help bağımsız değişkenini ekleyebilirsiniz.
Genel yardımı görmek için şu komutu girmeniz yeterlidir:
cycode --help
Tarama seçeneklerini görmek için şunu girin:
cycode scan --help
Belirli bir tarama türü için kullanılabilir seçenekleri görmek üzere şunu girin:
cycode scan {{option}} --help
Örneğin, Yol Taraması için kullanılabilir seçenekleri görmek üzere şunu girin:
cycode scan path --help
Tarama yok sayma işlevi için kullanılabilir seçenekleri görmek üzere şu komutu kullanın:
cycode ignore --help
Bir rapor için kullanılabilir seçenekleri görmek üzere şu komutu kullanın:
cycode report --help
Belirli bir rapor türü için kullanılabilir seçenekleri görmek üzere şunu girin:
cycode scan {{option}} --help