Introduction
Dalam dunia DevSecOps, menjaga keamanan kode sumber adalah prioritas utama. Salah satu langkah penting dalam proses ini adalah melakukan secret scanning untuk mendeteksi kredensial sensitif, token, dan kunci API yang mungkin terungkap dalam kode. TurrtleHog adalah alat yang dirancang khusus untuk mendeteksi kebocoran tersebut dengan cepat dan efisien. Artikel ini akan membahas bagaimana TurrtleHog dapat membantu mengamankan pipeline DevSecOps kita melalui secret scanning yang menyeluruh.
Tools
- Install Trufflhog on device
- Integrate to Pipeline
- Baca terlebih dahulu artikel saya sebelumnya: https://igunawan.com/build-jenkins-with-docker/
Ada 2 hal yang akan dibahas yaitu tentan cara scan di local dan juga mengintegrasikanya kedalam Pipeline Jenkins berikut ini tahapanya :
1. Install Truffelhog on Local & Test Run
Install terlebih dahulu, untuk sourcenya dari link berikut trufflehog , dan kemudian kita bisa melakukan scanning langsung ke Repository git atau ke directory Local.
- Repository scan
trufflehog git https://github.com/gunawan-d/nodejs-goof
- Scan local
trufflehog filesystem .
- Scan local with excluded path , yang dimana cara kerjanya mirip dengan gitignore karena kita tidak boleh melakukan scanning ke arah file yang sudah di exclude tersebut
trufflehog filesystem . --exclude-paths trufflehog-excluded-paths.txt

2. Pre-Commit Hook
Pre-commit kita lakukan ketika kita akan melakukan commit & push, akan tetapi yang di scan adalah code yang baru dibuat / ditambah.
- Tambahkan script bash beriut ini
nano .git/hooks/pre-commit
#!/bin/sh echo exec bash -c 'trufflehog git file://. --since-commit HEAD --fail' exit
chmod +x .git/hooks/pre-commit
3. Integration to Pipeline
Untuk tahap ini saya akan mencobanya menggunakan Jenkins dan silahkan dibaca terlebih dahulu artikel sebelumnya, disini fungsi di integrasikanya ke pipeline supaya keamananya double, sebelum commit & setelah push
- Create Jenkinsfile
pipeline {
agent any
environment {
DOCKERHUB_CREDENTIALS = credentials('DockerLogin')
SNYK_TOKEN = credentials('snyk-api-token')
SONARQUBE_CREDENTIALS_PSW = credentials('SONARQUBE_CREDENTIALS_PSW')
}
stages {
stage('Checkout Code') {
steps {
checkout scm
}
}
stage('Secret Scanning Using Trufflehog'){
agent {
docker {
image 'trufflesecurity/trufflehog:latest'
args '--entrypoint='
}
}
steps {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh 'trufflehog filesystem . --exclude-paths trufflehog-excluded-paths.txt --fail --json --no-update > trufflehog-scan-result.json'
}
// sh 'trufflehog filesystem . --exclude-paths trufflehog-excluded-paths.txt --fail --json --no-update > trufflehog-scan-result.json'
sh 'cat trufflehog-scan-result.json'
archiveArtifacts artifacts: 'trufflehog-scan-result.json'
}
}
}
- Commit & Push , kemudian setup terlebih dahulu untuk repo yang akan ditambahkan contoh sebagai berikut

- Tunggu kurang lebih 1 menit makan pipeline akan berjalan

Kita lihat bahwa hasil pipeline mengeluarkan log dalam sebuah artifacts dari hasil scanner secret menemukan bahwa adanya secret yang terbuka.

Admin website igunawan.com, System Administrator, DevOps Engineer
