AWS Lambda 스크립트 구성하기
제공된 예제 코드를 다양한 방법으로 구성하여 Slack에 원하는 정보를 얻을 수 있습니다.
핵심 영역은 페이로드(Slack 메시지가 구성되는 곳) 및 필터링(Snyk 정보가 처리되는 곳)입니다.
이외에도 암호화 및 비밀 검증을 구성할 수 있습니다. 이러한 구성은 이 지침의 범위를 넘어섭니다.
Snyk 페이로드 필터링
다음 코드는 Snyk 페이로드를 필터링합니다.
다음과 같이 코드를 추가하세요:
if(snykbody.indexOf("project") !== -1 && snykbody.indexOf("newIssues") !== -1){
// 새 문제를 반복함
var len = event.body['newIssues'].length;
for(let x=0;x<len;x++){
// 심각성 얻기
let severity = JSON.stringify(event.body['newIssues'][x]['issueData']['severity']);
// 필터링
if(severity.includes("high") || severity.includes("critical")){
let snykProjectName = JSON.stringify(event.body['project'].name);
let snykProjectUrl = JSON.stringify(event.body['project'].browseUrl);
let snykIssueUrl = JSON.stringify(event.body['newIssues'][x]['issueData'].url);
let snykIssueId = JSON.stringify(event.body['newIssues'][x].id);
let snykIssuePackage = JSON.stringify(event.body['newIssues'][x].pkgName);
let snykIssuePriority = JSON.stringify(event.body['newIssues'][x]['priority'].score);
let message = "New Snyk Vulnerability";
// 결과를 Slack으로 전송
const result = await messageSlack(
message,snykProjectUrl,snykProjectName,snykIssuePackage,snykIssueUrl,snykIssueId,severity,snykIssuePriority
);
}
}이 코드는 다음을 실행합니다:
유효한 프로젝트 및 문제 확인
문제를 반복하면서 심각성이 높거나 심각한지 확인
지정한 모든 정보를 Slack 메시지로 전달. 원하는 정보를 지정하세요.
필터를 수정하여 예를 들어 특정 CWE만 처리하거나 모든 취약점을 허용하도록 할 수 있습니다.
Slack 메시지 형식
Slack 페이로드는 다음과 같이 messageSlack 함수에서 형식화됩니다.
Snyk는 Slack의 내장 블록 빌더를 사용하여 페이로드를 원하는 형식으로 디자인했습니다. 블록 빌더를 사용하여 페이로드의 JSON을 구성하여 CWE와 같은 더 많은 정보를 표시하거나 상호작용을 추가하고 Snyk의 ignore API를 사용하여 무시 버튼을 생성할 수 있습니다.
블록 빌더에 대한 자세한 정보는 Slack 웹사이트의 Block Kit에서 찾을 수 있습니다.
Last updated