SDK 참조

이름

snyk-iac-rules - Snyk IaC를 위한 사용자 정의 규칙을 작성, 디버그, 테스트 및 번들링하는 SDK

개요

snyk-iac-rules [COMMAND] [PATH] [OPTIONS]

설명

SDK는 Rego로 작성된 사용자 정의 규칙을 작성, 디버그, 테스트, 번들링 및 배포하는 데 도움이 됩니다. 이러한 규칙은 Snyk IaC CLI에 의해 IaC 구성 파일에서 취약점을 찾는 데 사용될 수 있습니다.

Snyk에 대한 자세한 내용은 Snyk 웹사이트arrow-up-right를 참조하십시오.

어디서부터 시작해야 할지 모르겠습니까?

  1. $ snyk-iac-rules template로 새 규칙 작성 시작

  2. Rego 작성을 시작하려면 $ snyk-iac-rules parse로 픽스처를 JSON으로 파싱

  3. $ snyk-iac-rules test로 규칙 테스트

  4. $ snyk-iac-rules build로 규칙 번들링

  5. $ snyk-iac-rules push로 규칙 배포

명령

명령별 플래그 및 사용법을 확인하려면 help 명령을 실행하십시오. 예를 들어 snyk-iac-rules --help를 실행합니다.

다음 최상위 SDK 명령을 사용할 수 있습니다.

template 새 규칙 작성을 위한 스캐폴딩을 생성합니다. 전체 지침은 snyk-iac-rules template --help를 참조하십시오.

parse 제공된 픽스처 파일의 JSON 형식을 반환합니다. Rego는 JSON 입력을 요구하므로 이를 사용하여 Rego 규칙을 구축하십시오. 전체 지침은 snyk-iac-rules parse --help를 실행하십시오.

test 일치하는 파일에서 발견된 모든 테스트 케이스를 실행합니다. 전체 지침은 snyk-iac-rules test --help를 실행하십시오.

build OPA 정책 및 데이터 파일을 번들로 패키징합니다. 전체 지침은 snyk-iac-rules build --help를 실행하십시오.

push build 명령으로 생성된 번들을 지원되는 컨테이너 레지스트리 중 하나에 배포합니다. 전체 지침은 snyk-iac-rules push --help를 실행하십시오.

경로

SDK의 모든 명령은 규칙이 위치할 폴더의 선택적 경로를 가질 수 있습니다. parsepush 명령은 이 경로가 엄격하게 필요한 유일한 명령입니다.

상대 경로 또는 절대 경로를 제공할 수 있습니다.

옵션

명령별 플래그 및 사용법을 확인하려면 help 명령을 실행하십시오. 예를 들어 snyk-iac-rules template --help를 실행합니다.

템플릿 옵션

--rule=RULE

정의하려는 규칙의 필수 이름입니다. 이는 최상위 레벨에 rules/ 폴더를 생성하며, 이 폴더에는 규칙 이름으로 명명된 폴더와 Rego 규칙 및 Rego 테스트 파일이 포함됩니다. 동시에, 규칙 작성 및 테스트 라이브러리 확장을 위해 data.lib에서 액세스할 수 있는 유틸리티 함수가 포함된 lib/ 폴더를 생성하거나 테스트를 위해 data.lib.testing을 생성합니다.

스캐폴드된 폴더 구조는 다음과 같습니다:

rules └── RULE ├── fixtures ├── allowed.<extension> └── denied.<extension> ├── main.rego └── main_test.rego lib └── testing └── main.rego └── tfplan.rego └── main.rego

참고: 규칙 이름에는 공백이 포함될 수 없으며 SNYK-로 시작할 수 없습니다.

--format=hcl2|json|yaml|tf-plan

규칙을 정의하려는 필수 구성 형식입니다. 이는 rules/<RULE>/fixtures 폴더 아래에 두 개의 픽스처 파일을 생성하며, 이 파일은 Rego 규칙의 동작을 확인하기 위해 테스트에서 사용됩니다.

--severity=low|medium|high|critical

Snyk Infrastructure as Code CLI를 실행할 때 표시될 규칙의 심각도입니다.

기본값: low

--title=TITLE

Snyk Infrastructure as Code CLI를 실행할 때 표시될 규칙의 제목입니다.

파싱 옵션

--format=hcl2|yaml|tf-plan

픽스처의 형식입니다. 이 형식은 Snyk이 픽스처에서 JSON을 생성하는 데 사용하는 파서를 결정합니다.

기본값: hcl2

테스트 옵션

--verbose

추적 로그를 출력합니다.

--explain=full|notes|fails

추적 로그를 필터링합니다.

기본값: fails

--timeout=TIMEOUT

테스트 실행을 기다리는 시간(나노초)입니다. TIMEOUT보다 오래 걸리면 테스트는 실패합니다.

기본값: 5000000 (5초).

--ignore

파일 및 폴더를 무시하고 테스트를 위해 로드되지 않도록 하는 데 사용할 수 있는 정규식을 허용합니다.

기본값: ".*" (숨겨진 파일), "fixtures"

--run

테스트의 하위 집합을 실행하는 데 사용할 수 있는 정규식을 허용합니다.

빌드 옵션

--output

결과 번들의 이름과 위치입니다.

기본값: bundle.tar.gz

--entrypoint

기본적으로 템플릿 명령은 rules/<rule> 폴더 아래에 규칙에 대한 Rego를 배치합니다. Rego는 규칙 패키지에 속하며, 진입 함수는 deny라고 불리며 잘못된 구성이 발견되면 취약점을 나타내는 JSON을 반환합니다. 이 구조는 rules/deny 진입점과 함께 작동하지만, 생성된 파일 및 패키지 구조를 수정해야 하는 경우 사용자 정의 진입점을 제공할 수 있습니다.

기본값: "rules/deny"

--ignore

파일 및 폴더를 무시하고 번들링을 위해 로드되지 않도록 하는 데 사용할 수 있는 정규식을 허용합니다.

기본값: "." (숨겨진 파일), "fixtures", "testing", "_test.rego"

--target=rego|wasm

번들에 사용할 형식입니다. Snyk IaC CLI에서는 Rego 번들이 현재 지원되지 않습니다.

기본값: wasm

푸시 옵션

--registry

번들이 푸시될 레지스트리 위치입니다. 예를 들어 docker.io/example/bundle.tar.gz

모든 명령에서 사용 가능한 플래그

[COMMAND] --help, --help [COMMAND], -h

도움말 텍스트를 출력합니다. 자세한 내용을 얻으려면 COMMAND를 지정할 수 있습니다.

SDK 예시

CUSTOM_RULE이라는 새 규칙을 생성합니다:

규칙을 테스트합니다:

사용자 정의 규칙 번들을 생성합니다:

SDK 종료 코드

가능한 종료 코드 및 그 의미:

0: 성공

1: 실패, 사용자 정의 규칙이 유효하지 않을 수 있음

Last updated