기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Kiro 및 기타 코딩 어시스턴트와 함께 MCP 서버를 사용하여 실시간 코딩 보안 검증 배포
Ivan Girardi와 Iker Reina Fuente, Amazon Web Services
요약
이 패턴은 세 가지 업계 표준 보안 스캔 도구를 통합하여 포괄적인 코드 보안 분석을 제공하는 모델 컨텍스트 프로토콜(MCP) 서버를 구현하는 방법을 설명합니다. 서버를 사용하면 AI 코딩 어시스턴트(예: Kiro, Amazon Q Developer 및 Cline)가 코드 조각 및 코드형 인프라(IaC) 구성을 자동으로 스캔할 수 있습니다. 이러한 스캔을 통해 코딩 도우미는 보안 취약성, 잘못된 구성 및 규정 준수 위반을 식별하는 데 도움이 될 수 있습니다.
수백만 개의 코드 조각에 대해 훈련된 AI 코드 생성기는 보안 사각 지대를 생성합니다. 해당 훈련 데이터는 얼마나 안전했습니까? 이 패턴은 코드 생성 중에 실시간 보안 검증을 제공하여 개발자가 코드화할 때 잠재적 보안 문제를 식별하고 이해하는 데 도움이 됩니다. 이 접근 방식은 개발자가 직접적인 취약성과 종속성으로 인한 상속된 위험을 모두 해결하는 데 도움이 됩니다. 이 패턴은 AI 효율성과 보안 규정 준수 간의 격차를 해소하여 AI 기반 개발 도구를 안전하게 채택하는 데 도움이 됩니다.
이 패턴은 조직이 AI 지원 코딩 도구를 통해 개발 보안 관행을 강화하여 여러 프로그래밍 언어 및 인프라 정의에 걸쳐 지속적인 보안 스캔 기능을 제공하는 데 도움이 됩니다. 이 솔루션은 다음 도구의 기능을 결합합니다.
Terraform AWS CloudFormation및 Kubernetes 매니페스트를 포함한 IaC 파일 스캔을 위한 Checkov
Python, JavaScript, Java 등과 같은 여러 프로그래밍 언어를 분석하기 위한 Semgrep
특수 Python 보안 스캔을 위한 Bandit
이 솔루션의 주요 기능은 다음과 같습니다.
델타의 새 코드 세그먼트 스캔으로 계산 오버헤드 감소
격리된 보안 도구 환경으로 도구 간 오염 방지
AI 코딩 어시스턴트(Kiro, Amazon Q Developer, Cline 등)와의 원활한 통합
코드 생성 중 실시간 보안 피드백
조직 규정 준수를 위한 사용자 지정 가능한 스캔 규칙
이 패턴은 표준화된 응답 형식으로 보안 스캔을 위한 통합 인터페이스를 제공하므로 보안 검사를 개발 워크플로에 더 쉽게 통합할 수 있습니다. 이 패턴은 Python 및 MCP 프레임워크를 사용하여 자동화된 보안 피드백을 제공합니다. 이 접근 방식을 사용하면 개발자가 개발 프로세스 초기에 보안 문제를 식별하고 해결하는 동시에 자세한 결과를 통해 보안 모범 사례를 학습할 수 있습니다.
사전 조건 및 제한 사항
사전 조건
제한 사항
Bandit 스캔은 Python 파일로만 제한됩니다.
실시간 스캔은 대규모 코드 베이스의 성능에 영향을 미칠 수 있습니다.
도구별 제한은 지원되는 파일 형식 및 언어를 기반으로 합니다.
보안 조사 결과를 검증하려면 수동 검토가 필요합니다.
보안 스캔 결과를 올바르게 해석하려면 보안 전문 지식이 필요합니다.
일부 AWS 서비스 는 전혀 사용할 수 없습니다 AWS 리전. 리전별 가용성은 리전별AWS 서비스
를 참조하세요. 구체적인 엔드포인트는 서비스 엔드포인트 및 할당량을 참조하고 서비스 링크를 선택합니다.
제품 버전
Python 버전 3.10 이상
Checkov 버전 3.0.0 이상
Semgrep 버전 1.45.0 이상
Bandit 버전 1.7.5 이상
MCP[cli] 버전 1.11.0 이상
Pydantic 버전 1.10.0 이상
Loguru 버전 0.6.0 이상
아키텍처
다음 다이어그램은 이 솔루션의 아키텍처를 보여 줍니다.

이 다이어그램은 다음 워크플로를 보여줍니다.
개발자는 AI 어시스턴트(예: Kiro, Cline, Amazon Q Developer 또는 Roo Code)를 사용하여 코드를 생성하거나 분석합니다. AI 어시스턴트는 보안 스캔을 위해 코드를 전송합니다.
MCP 보안 스캐너 서버는 요청을 적절한 특수 스캐너인 IaC 파일용 Checkov, 여러 프로그래밍 언어 분석용 Semgrep 또는 Python별 보안 스캔용 Bandit으로 라우팅하여 처리합니다.
보안 조사 결과, 심각도 수준, 자세한 설명 및 제안된 수정 사항이 포함된 스캐너 결과는 AI 어시스턴트를 통해 개발자에게 다시 전송됩니다.
개발자가 실시간 보안 검증을 수신하여 AI 어시스턴트를 통해 자동화된 수정을 가능하게 하고 개발 중에 보안 모범 사례를 촉진하는 지속적인 피드백 루프가 설정됩니다.
아키텍처는 다음과 같은 일반적인 보안 위험을 완화합니다.
명령 주입
프롬프트 주입
경로 순회
종속성 공격
리소스 소진
아키텍처는 다음 모범 사례를 구현하여 이러한 일반적인 보안 위험을 완화합니다.
모든 사용자 및 AI 모델 입력은 임시 파일에 기록됩니다.
명령줄 인터페이스(CLI) 명령에는 직접 입력이 제공되지 않습니다.
파일 시스템 액세스는 임시 디렉터리 및 파일로만 제한됩니다.
임시 파일은 자동으로 정리됩니다.
스캔 응답이 삭제되었습니다.
프로세스 기능을 제한하는 프로세스 격리가 적용됩니다.
모든 스캔 활동이 기록됩니다.
자동화 및 규모 조정
이 패턴은 다음 기능을 통해 자동화를 지원합니다.
자동 코드 스캔을 위해 AI 코딩 어시스턴트와 통합
자동 처리를 위한 표준화된 API 응답
MCP 구성 파일을 통한 구성
여러 파일의 배치 처리 지원
여러 프로그래밍 언어 및 IaC 형식에서 확장 가능한 스캔
제공된 API 엔드포인트를 통해 스캔 프로세스를 자동화할 수 있습니다.
scan_with_checkovIaC 스캔용scan_with_semgrep다국어 코드 스캔을 위한scan_with_banditPython별 스캔용get_supported_formats형식 검증용
스캔 도구를 확장할 때는이 단원 앞부분에서 설명한 설계 원칙과 모범 사례를 따르십시오. 모범 사례도 참조하세요.
도구
AWS 서비스
Kiro
는 개발자와 협력하여 프롬프트를 세부 사양으로 변환한 다음 작동 코드, 문서 및 테스트로 변환하는 에이전트 코딩 서비스입니다. Kiro 에이전트는 개발자가 어려운 문제를 해결하고 설명서 생성 및 단위 테스트와 같은 작업을 자동화하는 데 도움이 됩니다. Amazon Q Developer는 AWS 애플리케이션을 이해, 구축, 확장 및 운영하는 데 도움이 되는 생성형 AI 기반 대화형 어시스턴트입니다.
기타 도구
Bandit
은 특수 Python 보안 스캐너 도구입니다. 안전하지 않은 함수, 하드코딩된 보안 암호 및 주입 취약성과 같은 일반적인 Python 보안 문제를 감지합니다. Bandit은 자세한 신뢰도 및 심각도 등급을 제공합니다. Checkov
는 IaC의 보안 및 규정 준수 구성 오류를 확인하는 정적 코드 분석 도구입니다. 또한 Checkov는 규정 준수 위반 및 보안 모범 사례를 탐지합니다. Cline
은 VS Code에서 실행되는 AI 기반 코딩 어시스턴트입니다. Loguru
는 Python용 데이터 검증 라이브러리입니다. 모델 컨텍스트 프로토콜(MCP)
은 AI 지원 개발 도구를 구축하기 위한 오픈 소스 프레임워크입니다. Pydantic
은 Python용 데이터 검증 라이브러리입니다. Semgrep
은 소스 코드의 보안 취약성 및 버그를 분석합니다. 여러 프로그래밍 언어를 지원합니다. Semgrep은 포괄적인 분석을 위해 보안 중심 규칙 세트를 사용합니다. 자세한 신뢰도 및 심각도 등급을 제공합니다.
코드 리포지토리
이 패턴의 코드는 GitHub MCP 보안 스캐너: AI Code Assistants용 실시간 보호
리포지토리 구조에는 다음이 포함됩니다.
security_scanner_mcp_server/- 기본 서버 구현docs/- 설명서 및 데모 자료tests/- 테스트 파일mcp-config-example.json- MCP 구성 예requirements.txt- 프로젝트 종속성
모범 사례
보안 스캔 구현
보안 조사 결과를 검토하여 문제를 검증하고 우선순위를 지정합니다.
스캔 도구(Checkov, Semgrep 및 Bandit)를 최신 버전으로 업데이트합니다.
이 패턴의 MCP 보안 도구를 다른 보안 조치 및 도구와 함께 사용합니다.
보안 규칙 세트 및 정책을 정기적으로 업데이트합니다.
구성 관리
공식 버전 관리 소스에서 MCP 구성 파일을 사용합니다.
사용자 지정 규칙 및 구성을 문서화합니다.
통합
개발 주기 초기에 보안 스캔을 통합합니다.
커밋 전 후크 또는 지속적 통합 및 지속적 배포(CI/CD) 파이프라인에서 자동 스캔을 설정합니다.
환경에 적합한 심각도 임계값을 구성합니다.
보안 조사 결과를 처리하기 위한 명확한 절차를 수립합니다.
운영 고려 사항
스캔 성능 및 리소스 사용량을 모니터링합니다.
적절한 오류 처리 및 로깅을 구현합니다.
사용자 지정 구성에 대한 설명서를 유지 관리합니다.
보안 규칙을 검토하고 업데이트하는 프로세스를 수립합니다.
또한 다음 모범 사례에 유의하세요.
항상 특정 컨텍스트에서 보안 조사 결과를 검증합니다.
보안 도구 및 종속성을 최신 상태로 유지합니다.
포괄적인 적용 범위를 위해 여러 보안 도구를 사용합니다.
개발 프로세스의 보안 모범 사례를 따릅니다.
에픽
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
MCP 설정을 구성합니다. | (옵션 1) 구성 파일을 수동으로 찾거나 (옵션 2) Kiro IDE를 사용하여 Kiro에서 구성 파일을 편집할 수 있습니다.
| 앱 개발자 |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
MCP 설정을 구성합니다. | MCP 설정을 수동으로 구성하려면 다음 단계를 사용합니다.
| 앱 개발자 |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
MCP 설정을 구성합니다. | MCP 설정을 수동으로 구성하려면 다음 단계를 사용합니다.
| 앱 개발자 |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
분석을 수행합니다. | Python 및 Bandit을 사용하여 코드 분석을 수행하려면 다음 단계를 사용합니다.
| 앱 개발자 |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
분석을 수행합니다. | Terraform 및 Checkov를 사용하여 코드 분석을 수행하려면 다음 단계를 사용합니다.
| 앱 개발자 |
| 작업 | 설명 | 필요한 기술 |
|---|---|---|
대상 스캔을 수행합니다. | 다음은 대상 스캔을 수행하는 데 사용할 수 있는 요청의 예입니다.
| 앱 개발자 |
코드 생성과 함께 보안 스캔을 사용합니다. | 코드 생성 루프를 사용하여 보안 조사 결과를 해결하려면 다음 단계를 사용합니다(이 예제에서는 Kiro를 코딩 어시스턴트로 사용).
| 앱 개발자 |
문제 해결
| 문제 | Solution |
|---|---|
환경 설정 문제 |
|
스캐너 문제 |
|
통합 문제 |
|
추가 지원 |
|
관련 리소스
AWS 설명서
코드형 인프라(AWS 의 DevOps 백서 소개 AWS)
기타 AWS 리소스
기타 리소스
OWASP 보안 코딩 관행
(OWASP 파운데이션 웹 사이트)
추가 정보
자동 승인 기능이 활성화된 MCP 구성의 예
autoApprove 구성하지 않으면 사용자는 스캔을 위해 MCP 보안 서버로 코드를 전송할 수 있는 승인을 부여해야 합니다. autoApprove가 구성되면 코드 어시스턴트는 사용자 승인 없이 도구를 호출할 수 있습니다. 이러한 도구는 시스템에서 로컬로 실행되고, 데이터가 전송되지 않으며, 코드 스캔만 수행됩니다.
다음 구성을 사용하면 모든 보안 스캔 함수를 자동으로 실행할 수 있습니다.
{ "mcpServers": { "security-scanner": { "command": "uvx", "args": [ "--from", "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main", "security_scanner_mcp_server" ], "env": { "FASTMCP_LOG_LEVEL": "ERROR" }, "disabled": false, "autoApprove": [ "scan_with_checkov", "scan_with_semgrep", "scan_with_bandit", "get_supported_formats" ] } } }
디버그 로깅을 활성화하려면를 "FASTMCP_LOG_LEVEL"로 설정합니다"DEBUG".
보안 스캔 도구에서 지원하는 파일 형식
이 솔루션의 각 보안 스캔 도구는 다음 파일 형식을 지원합니다.
Checkov(IaC)
Terraform – .tf, .tfvars, .tfstate
CloudFormation – .yaml, .yml, .json, .template
Kubernetes – .yaml, .yml
Dockerfile – Dockerfile
ARM – .json(Azure Resource Manager)
Bicep – .bicep
서버리스 – .yml, .yaml
Helm – .yaml, .yml, .tpl
GitHub 작업 – .yml, .yaml
GitLab_ci – .yml, .yaml
Ansible – .yml, .yaml
Semgrep(소스 코드)
Python – .py
JavaScript – .js
TypeScript – .ts
Java – .java
이동 - .go
C – .c
C++ – .cpp
C# – .cs
Ruby – .rb
PHP – .php
Scala – .scala
Kotlin – .kt
Rust – .rs
Bandit(Python만 해당)
Python – .py
데모
코드 스캔의 경우 AI 어시스턴트를 사용하여 다음 샘플 프롬프트를 시도해 보세요.
“현재 스크립트를 스캔하고 결과를 알려주세요.”
“20~60행을 스캔하고 결과를 알려주세요.”
“이 Amazon DynamoDB 테이블 리소스를 스캔하고 결과를 알려주세요.”
자세한 내용은이 패턴의 GitHub 리포지토리에서이 코드 스캔 데모
보안 코드를 생성하려면 다음 샘플 프롬프트를 시도해 보세요.
“Terraform 구성을 생성하여 암호화가 활성화된 DynamoDB 테이블을 생성하고 보안 문제가 있는지 스캔합니다.”
“DynamoDB에 쓰고 취약성을 검사하는 Python Lambda 함수를 생성합니다.”
“적절한 보안 설정을 사용하여 S3 버킷에 대한 CloudFormation 템플릿을 생성하고 보안 검사를 통과했는지 확인합니다.”
“Python 스크립트를 작성하여 페이지 매김으로 DynamoDB를 쿼리하고 보안 모범 사례를 스캔합니다.”
“보안 강화 기능이 있는 마이크로서비스에 대한 Kubernetes 배포 매니페스트를 생성하고 검증합니다.”
자세한 내용은이 패턴의 GitHub 리포지토리에서 보안 스캔 데모를 사용한이 코드 생성을