Kiro 및 기타 코딩 어시스턴트와 함께 MCP 서버를 사용하여 실시간 코딩 보안 검증 배포 - 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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 프레임워크를 사용하여 자동화된 보안 피드백을 제공합니다. 이 접근 방식을 사용하면 개발자가 개발 프로세스 초기에 보안 문제를 식별하고 해결하는 동시에 자세한 결과를 통해 보안 모범 사례를 학습할 수 있습니다.

사전 조건 및 제한 사항

사전 조건 

  • Kiro 또는 Amazon Q Developer를 사용할 수 있는 액세스 권한이 AWS 계정 있는 활성 - 이러한 코딩 어시스턴트 중 하나를 사용하려는 경우

  • Python 버전 3.10 이상이 설치

  • uv 패키지 관리자 설치

  • 보안 스캔 도구 및 개념에 대한 지식

  • IaC 및 애플리케이션 보안에 대한 기본 이해

제한 사항

  • 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 어시스턴트는 코드를 MCP 보안 스캐너 서버로 전송하여 특수 스캐너로 라우팅하고, 스캔 결과는 개발자에게 전송합니다.

이 다이어그램은 다음 워크플로를 보여줍니다.

  1. 개발자는 AI 어시스턴트(예: Kiro, Cline, Amazon Q Developer 또는 Roo Code)를 사용하여 코드를 생성하거나 분석합니다. AI 어시스턴트는 보안 스캔을 위해 코드를 전송합니다.

  2. MCP 보안 스캐너 서버는 요청을 적절한 특수 스캐너인 IaC 파일용 Checkov, 여러 프로그래밍 언어 분석용 Semgrep 또는 Python별 보안 스캔용 Bandit으로 라우팅하여 처리합니다.

  3. 보안 조사 결과, 심각도 수준, 자세한 설명 및 제안된 수정 사항이 포함된 스캐너 결과는 AI 어시스턴트를 통해 개발자에게 다시 전송됩니다.

  4. 개발자가 실시간 보안 검증을 수신하여 AI 어시스턴트를 통해 자동화된 수정을 가능하게 하고 개발 중에 보안 모범 사례를 촉진하는 지속적인 피드백 루프가 설정됩니다.

아키텍처는 다음과 같은 일반적인 보안 위험을 완화합니다.

  • 명령 주입

  • 프롬프트 주입

  • 경로 순회

  • 종속성 공격

  • 리소스 소진

아키텍처는 다음 모범 사례를 구현하여 이러한 일반적인 보안 위험을 완화합니다.

  • 모든 사용자 및 AI 모델 입력은 임시 파일에 기록됩니다.

  • 명령줄 인터페이스(CLI) 명령에는 직접 입력이 제공되지 않습니다.

  • 파일 시스템 액세스는 임시 디렉터리 및 파일로만 제한됩니다.

  • 임시 파일은 자동으로 정리됩니다.

  • 스캔 응답이 삭제되었습니다.

  • 프로세스 기능을 제한하는 프로세스 격리가 적용됩니다.

  • 모든 스캔 활동이 기록됩니다.

자동화 및 규모 조정

이 패턴은 다음 기능을 통해 자동화를 지원합니다.

  • 자동 코드 스캔을 위해 AI 코딩 어시스턴트와 통합

  • 자동 처리를 위한 표준화된 API 응답

  • MCP 구성 파일을 통한 구성

  • 여러 파일의 배치 처리 지원

  • 여러 프로그래밍 언어 및 IaC 형식에서 확장 가능한 스캔

제공된 API 엔드포인트를 통해 스캔 프로세스를 자동화할 수 있습니다.

  • scan_with_checkov IaC 스캔용

  • scan_with_semgrep 다국어 코드 스캔을 위한

  • scan_with_bandit Python별 스캔용

  • 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용 실시간 보호 리포지토리에서 사용할 수 있습니다. 리포지토리에는 MCP 서버 구현, Kiro, Amazon Q Developer, Cline 등의 MCP 구성에 대한 세부 정보, 구성 예제 및 테스트 유틸리티가 포함됩니다.

리포지토리 구조에는 다음이 포함됩니다.

  • 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에서 구성 파일을 편집할 수 있습니다.

  • (옵션 1) 다음과 같이 구성 파일을 수동으로 찾아 편집합니다.

    • 경로: .kiro/settings/mcp.json (로컬) 또는 ~/.kiro/settings/mcp.json (글로벌)

  • (옵션 2) 다음과 같이 Kiro IDE를 사용하여 구성 파일을 수정합니다.

    • 왼쪽 탐색 메뉴에서 Kiro 기호를 선택합니다.

    • 'MCP 서버' 섹션으로 이동합니다.

    • 구성 설정을 편집합니다. Kiro IDE로 변경한 내용은 .kiro/settings/mcp.json (로컬) 또는 ~/.kiro/settings/mcp.json (글로벌) 구성 파일 중 하나에 저장됩니다.

  • (두 옵션 모두) 옵션 1 또는 옵션 2를 완료한 후 보안 스캔 구성.kiro/settings/mcp.json(로컬) 또는 ~/.kiro/settings/mcp.json (글로벌)을 추가합니다.

{ "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": [] } } }
앱 개발자
작업설명필요한 기술

MCP 설정을 구성합니다.

MCP 설정을 수동으로 구성하려면 다음 단계를 사용합니다.

  1. (글로벌) 또는 ~/.aws/amazonq/mcp.json (.amazonq/mcp.json로컬)에서 MCP 구성 파일을 편집합니다.

  2. 다음 보안 스캔 구성~/.aws/amazonq/mcp.json(글로벌) 또는 .amazonq/mcp.json (로컬)을 추가합니다.

{ "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" } } } }
앱 개발자
작업설명필요한 기술

MCP 설정을 구성합니다.

MCP 설정을 수동으로 구성하려면 다음 단계를 사용합니다.

  1. 확장을 선택하여 연 다음 MCP 서버를 선택합니다.

  2. 설치 탭을 선택한 다음 MCP 서버 구성을 선택하여 cline_mcp_settings.json 파일을 엽니다.

  3. 다음 보안 스캔 구성 추가cline_mcp_settings.json:

{ "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": [] } } }
앱 개발자
작업설명필요한 기술

분석을 수행합니다.

Python 및 Bandit을 사용하여 코드 분석을 수행하려면 다음 단계를 사용합니다.

  1. 다음 콘텐츠를 bandit_test.py 사용하여 라는 새 Python 파일을 생성합니다.

    import pickle import yaml import subprocess from flask import Flask, request import hashlib app = Flask(__name__) @app.route("/unsafe_pickle", methods=["POST"]) def unsafe_pickle_usage(): data = request.get_data() return pickle.loads(data) @app.route("/command_injection", methods=["GET"]) def command_injection(): command = request.args.get("cmd") return subprocess.Popen(command, shell=True) def weak_crypto(): password = "secret_password" return hashlib.md5(password.encode()).hexdigest() PASSWORD = "super_secret_password123"
  2. 코딩 도우미를 엽니다. 채팅에서 현재 스크립트를 스캔하고 결과를 알려주는 작업을 요청합니다.

앱 개발자
작업설명필요한 기술

분석을 수행합니다.

Terraform 및 Checkov를 사용하여 코드 분석을 수행하려면 다음 단계를 사용합니다.

  1. 다음 콘텐츠를 terraform_test.tf 사용하여 라는 새 Terraform 파일을 생성합니다.

    resource "aws_s3_bucket" "insecure_bucket" { bucket = "my-insecure-bucket" acl = "public-read" } resource "aws_security_group" "wide_open" { name = "allow_all" description = "Allow all inbound traffic" ingress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } }
  2. 코딩 도우미를 엽니다. 채팅에서 현재 스크립트를 스캔하고 결과를 알려주는 작업을 요청합니다.

앱 개발자
작업설명필요한 기술

대상 스캔을 수행합니다.

다음은 대상 스캔을 수행하는 데 사용할 수 있는 요청의 예입니다.

  • 현재 프로젝트를 스캔하고 결과를 알려줍니다.

  • 현재 스크립트에서 6~10행을 스캔합니다.

앱 개발자

코드 생성과 함께 보안 스캔을 사용합니다.

코드 생성 루프를 사용하여 보안 조사 결과를 해결하려면 다음 단계를 사용합니다(이 예제에서는 Kiro를 코딩 어시스턴트로 사용).

  1. Kiro에서 질문: Terraform에서 DynamoDB 테이블을 생성하고 보안 스캐너로 코드를 스캔합니다.

  2. Kiro에서 질문: 생성된 코드 및 보안 스캔 결과를 검토하고 보안 조사 결과를 해결하는 코드 생성 루프를 따릅니다.

앱 개발자

문제 해결

문제Solution

환경 설정 문제

  • Python 버전 3.10 이상이 설치되어 있는지 확인합니다.

  • uv 패키지 관리자가 설치되어 있는지 확인합니다.

스캐너 문제

  • 파일 형식이 지원되는지 확인합니다.

  • 파일 구문이 유효한지 확인합니다.

  • 적절한 파일 확장명을 사용해야 합니다.

  • 스캔 제한 시간 설정을 검토합니다.

통합 문제

  • MCP 서버가 실행 중인지 확인합니다.

  • 구성 파일이 올바른지 확인합니다.

  • API 엔드포인트를 검증합니다.

  • 응답 형식이 유효한지 확인합니다.

추가 지원

  • 로그에서 자세한 오류 메시지를 검토합니다.

  • 도구별 설명서를 확인합니다.

  • 리포지토리에서 문제를 생성합니다.

관련 리소스

AWS 설명서

기타 AWS 리소스

기타 리소스

추가 정보

자동 승인 기능이 활성화된 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 리포지토리에서 보안 스캔 데모를 사용한이 코드 생성을 참조하세요.