입력 파일 구문 분석하기

Regol 코드를 작성할 때 입력 파일의 내부 표현을 이해하는 것은 어려울 수 있습니다. 규칙을 작성하는 방법을 배우면 알 수 있겠지만, 입력 값은 JSON과 유사한 객체이지만 입력 파일은 YAML, Terraform 또는 테라폼 계획 JSON 출력일 수도 있습니다. 이러한 것들이 JSON으로 어떻게 변환되는지 이해하는 데 도움이 되도록 Snyk은 parse 명령을 제공합니다.

Regol 코드를 작성하는 데 도움이 될 JSON으로 파싱된 파일을 얻으려면 IaC 파일이 필요합니다. 규칙 테스트할 때도 사용할 수 있는 이 입력 파일은 기본적으로 파일을 JSON으로 파싱합니다.

Terraform 파일 파싱

예를 들어 다음과 같은 Terraform 파일이 있습니다:

example.tf
resource "aws_redshift_cluster" "example" {
  cluster_identifier = "tf-redshift-cluster"
  database_name      = "mydb"
  master_username    = "foo"
  master_password    = "Mustbe8characters"
  node_type          = "dc1.large"
  cluster_type       = "single-node"
}

동등한 JSON 형식을 얻으려면 다음과 같이 파싱 명령을 실행하십시오:

snyk-iac-rules parse example.tf --format hcl2

이렇게 하면 JSON이 출력되고, 규칙을 작성할 때 참고할 수 있습니다:

{
	"resource": {
		"aws_redshift_cluster": {
			"example": {
				"cluster_identifier": "tf-redshift-cluster",
				"cluster_type": "single-node",
				"database_name": "mydb",
				"master_password": "Mustbe8characters",
				"master_username": "foo",
				"node_type": "dc1.large"
			}
		}
	}
}

Regol에서 node_type 필드에 액세스하는 것은 다음과 같이 보일 것입니다:

YAML 파일 파싱

다른 예로는 Kubernetes 리소스를 정의하는 다음 YAML 파일이 있습니다:

동등한 JSON 형식을 얻으려면 다음과 같이 파싱 명령을 실행하십시오:

이렇게 하면 JSON이 출력되고, 규칙을 작성할 때 참고할 수 있습니다:

Regol에서 privileged 필드에 액세스하는 것은 다음과 같이 보일 것입니다:

Terraform 계획 JSON 출력 파일 파싱

다른 예로는 terraform show -json ./plan/example.json.tfplan 명령으로 반환된 다음 Terraform 계획 JSON 출력 파일이 있습니다:

동등한 JSON 형식을 얻으려면 다음과 같이 파싱 명령을 실행하십시오:

이렇게 하면 JSON이 출력되고, 규칙을 작성할 때 참고할 수 있습니다:

Regol에서 tags 필드에 액세스하는 것은 다음과 같이 보일 것입니다:

Last updated