입력 파일 파싱

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

입력 파일로 사용할 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 형식을 얻으려면 parse 명령을 실행하십시오:

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"
			}
		}
	}
}

Rego에서 node_type 필드에 액세스하는 방법은 다음과 같습니다:

YAML 파일 파싱

또 다른 예시는 Kubernetes 리소스를 정의하는 다음 YAML 파일입니다:

해당 JSON 형식을 얻으려면 parse 명령을 실행하십시오:

이는 JSON을 출력하며, 규칙 작성에 대한 지침으로 사용할 수 있습니다:

Rego에서 privileged 필드에 액세스하는 방법은 다음과 같습니다:

Terraform Plan JSON 출력 파일 파싱

또 다른 예시는 terraform show -json ./plan/example.json.tfplan 명령에 의해 반환되는 다음 Terraform Plan JSON 출력 파일입니다:

해당 JSON 형식을 얻으려면 parse 명령을 실행하십시오:

이는 JSON을 출력하며, 규칙 작성에 대한 지침으로 사용할 수 있습니다:

Rego에서 tags 필드에 액세스하는 방법은 다음과 같습니다:

Last updated