
프로비저닝 전 클라우드 네이티브 인프라의 위험을 완화하기 위해 코드형 인프라 전반의 규정 준수 및 보안 위반을 탐지합니다.
Terrascan은 Infrastructure as Code를 위한 정적 코드 분석기입니다. Terrascan을 사용하면 다음을 수행할 수 있습니다:
브라우저에서 Terrascan을 사용해 보려면 Terrascan 샌드박스를 참조하세요: https://www.tenable.com/terrascan
Terrascan의 기능과 역량에 대해 더 알아보려면 문서 포털을 참조하세요: https://runterrascan.io
Terrascan은 여러 설치 방법을 지원하며 Docker 이미지로도 제공됩니다. 지원되는 모든 플랫폼의 최신 빌드 버전은 Terrascan의 릴리스 페이지를 참조하세요. 플랫폼에 맞는 올바른 바이너리를 선택하세요.
curl -L "$(curl -s https://api.github.com/repos/tenable/terrascan/releases/latest | grep -o -E "https://.+?_Linux_x86_64.tar.gz")" > terrascan.tar.gz
tar -xf terrascan.tar.gz terrascan && rm terrascan.tar.gz
sudo install terrascan /usr/local/bin && rm terrascan
terrascan
AUR을 통해 설치ArchLinux 및 Manjaro 사용자는 다음 명령으로 설치할 수 있습니다:
yay -S terrascan
brew를 통해 설치Homebrew 사용자는 다음 명령으로 설치할 수 있습니다:
$ brew install terrascan
Terrascan은 Docker 이미지로도 제공되며 다음과 같이 사용할 수 있습니다:
$ docker run tenable/terrascan
자세한 내용은 문서를 참조하세요.
보안 문제를 위해 코드를 스캔하려면 다음을 실행하세요 (기본값은 Terraform 스캔):
$ terrascan scan
참고: 스캔 중 오류 또는 위반 사항이 발견되면 Terrascan은 오류 코드와 함께 종료됩니다.
| 시나리오 | 종료 코드 |
|---|---|
| 스캔 요약에 오류 및 위반 사항이 있음 | 5 |
| 스캔 요약에 오류는 있지만 위반 사항이 없음 | 4 |
| 스캔 요약에 위반 사항은 있지만 오류가 없음 | 3 |
| 스캔 요약에 위반 사항이나 오류가 없음 | 0 |
| 잘못된 입력으로 인해 스캔 명령 오류 발생 | 1 |
Terrascan은 CI/CD 파이프라인에 통합되어 보안 모범 사례를 적용할 수 있습니다. 파이프라인 통합에 대한 자세한 내용은 문서를 참조하세요.
다음 옵션과 함께 terrascan 명령을 사용할 수 있습니다:
$ terrascan
Terrascan
Usage:
terrascan [command]
Available Commands:
help Help about any command
init Initialize Terrascan
scan Detect compliance and security violations across Infrastructure as Code.
server Run Terrascan as an API server
version Terrascan version
Flags:
-c, --config-path string config file path
-h, --help help for terrascan
-l, --log-level string log level (debug, info, warn, error, panic, fatal) (default "info")
-x, --log-type string log output type (console, json) (default "console")
-o, --output string output type (human, json, yaml, xml) (default "human")
Use "terrascan [command] --help" for more information about a command.
Terrascan 정책은 Rego 정책 언어로 작성됩니다. 각 rego에는 정책의 메타데이터를 정의하는 JSON 'rule' 파일이 포함됩니다. 기본적으로 Terrascan은 첫 번째 스캔 시 Terrascan 저장소에서 정책을 다운로드합니다. 그러나 최신 정책을 다운로드하려면 초기화 프로세스를 실행해야 합니다. 초기화 프로세스에 대한 자세한 내용은 사용법을 참조하세요.
참고: 정책이 발견되지 않으면 스캔 명령이 암시적으로 초기화 프로세스를 실행합니다.
--find-vuln 플래그를 사용하여 레지스트리에서 보고된 취약점을 Terrascan 출력의 일부로 수집할 수 있습니다. 현재 Terrascan은 Elastic Container Registry (ECR), Azure Container Registry, Google Container Registry, Google Artifact Registry를 지원합니다.
--find-vuln 플래그는 IaC 파일을 스캔할 때 다음과 같이 사용할 수 있습니다:
$ terrascan scan -i <IaC provider> --find-vuln
레지스트리 API로 인증하도록 환경을 설정하는 방법에 대한 자세한 내용과 설명은 사용법 문서를 참조하세요.
기본적으로 Terrascan은 모든 정책에 대해 전체 구성을 스캔합니다. 그러나 Terrascan은 정책 및 리소스의 세부 구성도 지원합니다. 문서 사이트에서 파일 내 계측 및 구성 파일에 대해 자세히 알아보세요.
지금은 몇 가지 빠른 팁을 제공합니다:
리소스를 스캔하는 동안 특정 정책(규칙)을 건너뛰도록 Terrascan을 구성할 수 있습니다. 플랫폼에 따라 다음 단계를 따르세요:
Terraform 스크립트를 사용하여 "ts:skip=<RULE_NAME><SKIP_REASON>" 문구로 주석을 삽입하여 규칙을 건너뛰도록 Terrascan을 구성합니다. 아래 예시와 같이 주석은 리소스 내부에 포함되어야 합니다.

Kubernetes yaml에서 아래 스니펫과 같이 주석을 추가하여 Terrascan이 정책을 건너뛰도록 구성할 수 있습니다.

Terrascan 구성 파일을 사용하여 전체 스캔에서 포함되거나 제외되어야 할 정책을 수동으로 선택합니다. 이는 에지 사용 사례에 적합합니다.
"파일 내" 억제 옵션을 사용하여 선택한 정책에 대해 테스트되지 않아야 할 리소스를 지정합니다. 이렇게 하면 모든 리소스가 아닌 특정 리소스에 대해서만 정책이 건너뛰어집니다.

Terrascan의 기본 출력은 스캔된 IaC에 존재하는 위반 사항 목록입니다. 샘플 출력:

$ git clone [email protected]:tenable/terrascan.git
$ cd terrascan
$ make build
$ ./bin/terrascan
FROM golang:alpine AS build-env
RUN apk add --update git
RUN git clone https://github.com/tenable/terrascan && cd terrascan \
&& CGO_ENABLED=0 GO111MODULE=on go build -o /go/bin/terrascan cmd/terrascan/main.go
Terrascan 개발 및 기여에 대해 더 알아보려면 기여 가이드를 참조하세요.
우리는 개방적이고 포용적인 커뮤니티가 우리 모두에게 이익이 된다고 믿습니다. 이 프로젝트는 기여자 행동 강령과 함께 제공됨을 알려드립니다. 이 프로젝트에 참여함으로써 귀하는 그 조건을 준수하는 데 동의합니다.
Terrascan은 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다.