Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
iac-scan-runner — 인프라를 코드(IaC)로 스캔하여 일반적인 취약점을 찾는 서비스 | Kitploit
도구/GitHubGitHub/xlab-si/iac-scan-runner
Cloud Infrastructure SecurityVulnerability ScannersConfiguration AuditingDevSecOpsAPI Security
GitHubxlab-si/iac-scan-runner

iac-scan-runner

인프라를 코드(IaC)로 스캔하여 일반적인 취약점을 찾는 서비스

저장소 보기
49352년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

IaC Scan Runner

코드형 인프라(Infrastructure as Code)에서 일반적인 취약점을 스캔하는 서비스입니다.

GitHub Workflow Status Docker Image Version (latest by date) PyPI Test PyPI

AspectInformation
Tool nameIaC Scan Runner
Docker imagexscanner/runner
PyPI packageiac-scan-runner
Documentationdocs
Contact us[email protected]

목차

  • 설명
  • 실행
    • Docker로 실행
    • CLI로 실행
    • 소스에서 실행
  • 라이선스
  • 연락처
  • 감사의 말

목적 및 설명

IaC Scan Runner는 IaC(Infrastructure as Code) 패키지를 스캔하고 다양한 코드 검사를 수행하여 가능한 취약점과 개선 사항을 찾는 REST API 서비스입니다. 자세한 내용은 docs를 참조하세요.

실행

이 섹션에서는 REST API를 실행하는 방법을 설명합니다.

Docker로 실행

공개 xscanner/runner Docker 이미지를 사용하여 다음과 같이 REST API를 실행할 수 있습니다.

root@kitploit:~
# Docker 컨테이너에서 IaC Scan Runner REST API를 실행하고
# localhost:8080/swagger 또는 localhost:8080/redoc로 이동
$ docker run --name iac-scan-runner -p 8080:80 xscanner/runner

또는 로컬에서 이미지를 빌드하여 실행할 수도 있습니다.

root@kitploit:~
# Docker 컨테이너 빌드 (시간이 다소 소요됨)
$ docker build -t iac-scan-runner .
# Docker 컨테이너에서 IaC Scan Runner REST API를 실행하고
# localhost:8080/swagger 또는 localhost:8080/redoc로 이동
$ docker run --name iac-scan-runner -p 8080:80 iac-scan-runner

CLI로 실행

IaC Scan Runner CLI를 사용하여 실행하려면:

root@kitploit:~
# CLI 설치
$ python3 -m venv .venv && . .venv/bin/activate
(.venv) $ pip install iac-scan-runner
# OpenAPI 사양 출력
(.venv) $ iac-scan-runner openapi
# 필수 구성 요소 설치
(.venv) $ iac-scan-runner install
# IaC Scan Runner REST API 실행
(.venv) $ iac-scan-runner run

소스에서 실행

소스에서 로컬로 실행하려면:

root@kitploit:~
# 환경 변수 내보내기
export MONGODB_CONNECTION_STRING=mongodb://localhost:27017
export SCAN_PERSISTENCE=enabled
export USER_MANAGEMENT=enabled

# MongoDB 설정
$ docker run --name mongodb -p 27017:27017 mongo

# 필수 구성 요소 설치
$ python3 -m venv .venv && . .venv/bin/activate
(.venv) $ pip install -r requirements.txt
(.venv) $ ./install-checks.sh
# IaC Scan Runner REST API 실행 (코드 변경 사항을 적용하려면 --reload 플래그 추가)
(.venv) $ uvicorn src.iac_scan_runner.api:app

사용법 및 예제

이 부분에서는 가능한 배포 방법 중 하나와 API 호출 사용법에 대한 간단한 예제를 보여줍니다.

먼저 iac scan runner 저장소를 클론하고 API를 실행합니다.

root@kitploit:~
$ git clone https://github.com/xlab-si/iac-scan-runner.git
$ docker compose up

이 작업이 완료되면 localhost:8000을 호출하여 다양한 API 엔드포인트를 사용할 수 있습니다. 또한 localhost:8000/swagger 또는 localhost:8000/redoc로 이동하여 모든 API 엔드포인트를 테스트할 수 있습니다. 이 예제에서는 curl을 사용하여 API 엔드포인트를 호출합니다.

  1. test라는 프로젝트를 생성해 보겠습니다.
root@kitploit:~
curl -X 'POST' \
  'http://0.0.0.0/project?creator_id=test' \
  -H 'accept: application/json' \
  -d ''

프로젝트 ID가 반환됩니다. 이 예제에서 프로젝트 ID는 1e7b2a91-2896-40fd-8d53-83db56088026입니다.

  1. 예를 들어, ansible-lint를 제외한 모든 검사를 시작하려고 한다고 가정해 보겠습니다. 이를 비활성화해 보겠습니다.
root@kitploit:~
curl -X 'PUT' \
  'http://0.0.0.0:8000/projects/1e7b2a91-2896-40fd-8d53-83db56088026/checks/ansible-lint/disable' \
  -H 'accept: application/json'
  1. 이제 프로젝트가 구성되었으므로, 스캔하려는 파일을 선택하여 압축하기만 하면 됩니다. IaC-Scan-Runner가 작동하려면 파일이 압축 아카이브(일반적으로 zip 파일)여야 합니다. 이 경우 응답 유형은 json이지만 html로 변경할 수 있습니다. YOUR.zip을 파일 경로로 변경하세요.
root@kitploit:~
curl -X 'POST' \
  'http://0.0.0.0:8000/projects/1e7b2a91-2896-40fd-8d53-83db56088026/scan?scan_response_type=json' \
  -H 'accept: application/json' \
  -H 'Content-Type: multipart/form-data' \
  -F '[email protected];type=application/zip'

끝입니다.

새 검사 도구로 스캔 워크플로 확장하기

어떤 시점에서는 IaC 표준 및 프로젝트 유형의 더 넓은 범위를 제공하기 위해 스캔 워크플로에 새 검사 도구를 포함해야 할 수 있습니다. 따라서 이 하위 섹션에서는 그 목적을 위한 필요한 단계의 순서를 식별하고 설명합니다. 그러나 단계는 설명된 대로 수동으로 수행해야 하며, 향후 API를 통해 이 절차를 자동화하고 사용자가 스캔 워크플로를 구성하는 사용 가능한 카탈로그의 일부가 될 새 도구를 가져올 때 도움을 주는 사용자 친화적인 인터페이스를 제공할 계획입니다. 그림 16은 스캔 워크플로를 새 도구로 확장하기 위해 수행해야 하는 필요한 단계를 보여줍니다.

1단계 – checks 디렉토리에 도구별 클래스 추가 먼저 IaC Scan Runner의 소스 코드 내 checks 디렉토리에 새 도구별 Python 클래스를 추가해야 합니다. iac-scan-runner/src/iac_scan_runner/checks/new_tool.py 새 도구의 클래스는 기존 Check 클래스를 상속하며, 이는 스캔 워크플로 도구의 일반화를 제공합니다. 또한 다음 메서드의 구현을 제공해야 합니다.

  1. def configure(self, config_filename: Optional[str], secret: Optional[SecretStr])
  2. def run(self, directory: str) 첫 번째 메서드는 도구를 설정하는 데 필요한 도구별 매개변수(예: 비밀번호, 클라이언트 ID, 토큰)를 제공하는 것을 목표로 하고, 두 번째 메서드는 API 또는 CLI를 통해 도구 자체가 호출되는 방식과 원시 출력이 반환되는 방식을 지정합니다.

2단계 – ScanRunner 생성자 내에 검사 도구 클래스 인스턴스 추가 Check에서 파생된 새 클래스가 IaC Scan Runner의 소스 코드에 추가되면, 메인 클래스인 ScanRunner의 소스 코드도 수정해야 합니다. 이 클래스의 수정과 관련하여, 먼저 도구별 클래스를 가져오고, 새 검사 도구별 클래스 인스턴스를 생성한 후 def init_checks(self) 내의 IaC 검사 사전에 추가해야 합니다. A. 검사 도구 클래스 가져오기 from iac_scan_runner.checks.tfsec import TfsecCheck B. init_checks 내에서 검사 도구 객체의 새 인스턴스 생성 """사전 정의된 검사 객체 초기화""" new_tool = NewToolCheck() C. init_checks 내의 self.iac_checks 사전에 추가

root@kitploit:~
    self.iac_checks = {
        new_tool.name: new_tool,
        …
    }

3단계 – Compatibility 클래스 내 호환성 매트릭스에 검사 도구 추가 반면에, src/iac_scan_runner/compatibility.py 파일 내에서 호환성 매트릭스를 나타내는 사전도 확장해야 합니다. 두 가지 가능한 경우가 있습니다: a) 새 파일 유형을 키로 추가하고 값으로 관련 도구 목록을 추가, b) 기존 파일 유형에 대한 호환성 목록에 새 도구를 추가.

root@kitploit:~
    compatibility_matrix = {
        "new_type": ["new_tool_1", "new_tool_2"],
        …
        "old_typeK": ["tool_1", …  "tool_N", "new_tool_3"]
    }

4단계 – 결과 요약 지원 제공 마지막으로, 스캔 워크플로 확장을 위한 필수 수정 순서의 마지막 단계는 ResultsSummary 클래스(src/iac_scan_runner/results_summary.py)를 수정하는 것입니다. 정확하게는, 검사 통과 여부를 식별하는 데 사용할 수 있는 도구별 문자열을 찾기 위해 summarize_outcome 메서드에 코드 일부를 추가해야 합니다. 호환되는 검사를 순회하는 루프 내에서 각 새 도구에 대해 다음과 같은 if-else 구조를 포함해야 합니다.

root@kitploit:~
        if check == "new_tool":
            if outcome.find("Check pass string") > -1:
                self.outcomes[check]["status"] = "Passed"
                return "Passed"
            else:
                self.outcomes[check]["status"] = "Problems"
                return "Problems"

라이선스

이 저작물은 Apache License 2.0에 따라 라이선스가 부여됩니다.

연락처

xOpera 팀에 문의하려면 [email protected]로 이메일을 보내주세요.

감사의 말

이 프로젝트는 유럽 연합의 Horizon 2020 연구 혁신 프로그램에 따라 Grant Agreement No. 101000162 (PIACERE)의 자금을 지원 받았습니다.

도구 다운로드