Table of contents
1 Snyk 簡介
Snyk 係一間英國既資訊安全公司,而家喺 Forbes Cloud 100 排頭 20 名內。
佢最有用既一個資訊安全產品係佢既 Snyk Vulnerability Database。
我地可以用 Snyk CLI 黎掃瞄一個 project,例如 Java Maven project,佢會將個 project 裡面既 Maven dependencies 拎去 check 下佢既 online 資料庫,睇下有冇 CVE,而如果有既話,佢會建議我地升級某個新版本既 dependency 去解決到個 CVE。
個人自用既話,Snyk 係免費既,亦唔需要信用卡去註冊新帳號。
2 使用步驟
2.1 準備 Java Maven 項目
先準備一個 Java Maven project,我地可以用任何一個現成既 Spring Boot project。
pom.xml
:
1<?xml version="1.0" encoding="UTF-8"?>
2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3 <modelVersion>4.0.0</modelVersion>
4
5 <groupId>com.michael</groupId>
6 <artifactId>Spring-Boot-3-Snyk-Test</artifactId>
7 <version>1.0.0</version>
8 <packaging>jar</packaging>
9
10 <name>Spring-Boot-3-Snyk-Test</name>
11 <description>Spring-Boot-3-Snyk-Test</description>
12
13 <properties>
14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
16 <java.version>17</java.version>
17 <javac.source>17</javac.source>
18 <javac.target>17</javac.target>
19 <maven.compiler.target>17</maven.compiler.target>
20 <maven.compiler.source>17</maven.compiler.source>
21
22 <start-class>code.MainApplication</start-class>
23 </properties>
24
25 <parent>
26 <groupId>org.springframework.boot</groupId>
27 <artifactId>spring-boot-starter-parent</artifactId>
28 <version>3.2.4</version>
29 </parent>
30
31 <dependencies>
32 <dependency>
33 <groupId>org.springframework.boot</groupId>
34 <artifactId>spring-boot-starter-web</artifactId>
35 </dependency>
36 <dependency>
37 <groupId>org.springframework.boot</groupId>
38 <artifactId>spring-boot-starter-actuator</artifactId>
39 </dependency>
40 </dependencies>
41
42 <build>
43 <plugins>
44 <plugin>
45 <groupId>org.springframework.boot</groupId>
46 <artifactId>spring-boot-maven-plugin</artifactId>
47 <executions>
48 <execution>
49 <goals>
50 <goal>repackage</goal>
51 </goals>
52 </execution>
53 </executions>
54 </plugin>
55 </plugins>
56 </build>
57</project>
2.2 註冊 Snyk 帳號
Snyk 只係畀用以下既第三方帳號既 OAuth 註冊方式:
- GitHub
- Google
- Docker ID
- 等等
我地可以用 GitHub,之後喺 GitHub OAuth 版頁上面 authorize Snyk app。
如果想 revoke 返呢個 OAuth authorization,可以登入 GitHub > Settings > Integrations 下面既 Applications > Authorized OAuth Apps > Snyk Login > Revoke。
2.3 取得 Snyk token
登入
https://app.snyk.io > 左下角 email > Account settings > General > Auth Token > KEY 下面撳 click to show。
2.4 用 Snyk Docker image
有齊 Maven project 以及 Snyk token,就可以用 Snyk 既 Docker image 黎掃瞄我地既 project。
喺執行任何 command 之前,都要先設定好 Snyk token:
set SNYK_TOKEN=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
2.4.1 snyk test
docker container run --rm --env SNYK_TOKEN -v "%CD%:/app" snyk/snyk:maven-3-jdk-17
亦可以指定埋 snyk test
command:
docker container run --rm --env SNYK_TOKEN -v "%CD%:/app" snyk/snyk:maven-3-jdk-17 snyk test
我地可以喺 CLI console output 度睇到 Snyk 幫我地搵到既所有 CVE。
2.4.2 snyk monitor
如果想將 Maven project 既數據上載到 Snyk 網站,然後喺 Snyk 網站度睇詳細既 CVE 測試結果,就可以用 snyk monitor
command:
docker container run --rm --env SNYK_TOKEN -v "%CD%:/app" snyk/snyk:maven-3-jdk-17 snyk monitor
我地可以喺 CLI console output 度搵到 Snyk 幫我地上載左既 snapshot report 既 URL。
喺瀏覽器打開佢就會見到詳細既 report(需要登入):
3 參考資料