Menyebarkan validasi keamanan pengkodean real-time dengan menggunakan server MCP dengan Kiro dan asisten pengkodean lainnya - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menyebarkan validasi keamanan pengkodean real-time dengan menggunakan server MCP dengan Kiro dan asisten pengkodean lainnya

Ivan Girardi dan Iker Reina Fuente, Amazon Web Services

Ringkasan

Pola ini menjelaskan bagaimana menerapkan server Model Context Protocol (MCP) yang mengintegrasikan tiga alat pemindaian keamanan standar industri untuk menyediakan analisis keamanan kode yang komprehensif. Server memungkinkan asisten pengkodean AI (seperti Kiro, Pengembang Amazon Q, dan Cline) untuk secara otomatis memindai cuplikan kode dan infrastruktur sebagai konfigurasi kode (IAc). Dengan pemindaian ini, asisten pengkodean dapat membantu mengidentifikasi kerentanan keamanan, kesalahan konfigurasi, dan pelanggaran kepatuhan.

Generator kode AI yang dilatih pada jutaan cuplikan kode menciptakan titik buta keamanan—seberapa amankah data pelatihan itu? Pola ini memberikan validasi keamanan real-time selama pembuatan kode, membantu pengembang mengidentifikasi dan memahami potensi masalah keamanan saat mereka membuat kode. Pendekatan ini membantu pengembang mengatasi kerentanan langsung dan risiko warisan dari dependensi. Dengan menjembatani kesenjangan antara efisiensi AI dan kepatuhan keamanan, pola ini membantu memungkinkan adopsi alat pengembangan bertenaga AI yang aman.

Pola ini membantu organisasi meningkatkan praktik keamanan pengembangan mereka melalui alat pengkodean berbantuan AI, menyediakan kemampuan pemindaian keamanan berkelanjutan di berbagai bahasa pemrograman dan definisi infrastruktur. Solusinya menggabungkan kemampuan alat-alat berikut:

  • Checkov untuk memindai file IAc, termasuk Terraform,, dan manifes AWS CloudFormation Kubernetes

  • Semgrep untuk menganalisis beberapa bahasa pemrograman seperti Python,, Java JavaScript, dan lainnya

  • Bandit untuk pemindaian keamanan Python khusus

Fitur utama dari solusi ini meliputi:

  • Pemindaian delta segmen kode baru, mengurangi overhead komputasi

  • Lingkungan alat keamanan yang terisolasi, mencegah kontaminasi lintas alat

  • Integrasi tanpa batas dengan asisten pengkodean AI (Kiro, Pengembang Amazon Q, Cline, dan lainnya)

  • Umpan balik keamanan waktu nyata selama pembuatan kode

  • Aturan pemindaian yang dapat disesuaikan untuk kepatuhan organisasi

Pola ini menyediakan antarmuka terpadu untuk pemindaian keamanan dengan format respons standar, sehingga lebih mudah untuk mengintegrasikan pemeriksaan keamanan ke dalam alur kerja pengembangan. Pola ini menggunakan Python dan kerangka MCP untuk memberikan umpan balik keamanan otomatis. Pendekatan ini membantu pengembang mengidentifikasi dan mengatasi masalah keamanan di awal proses pengembangan sambil belajar tentang praktik terbaik keamanan melalui temuan terperinci.

Prasyarat dan batasan

Prasyarat

  • Aktif Akun AWS dengan akses untuk menggunakan Kiro atau Amazon Q Developer, jika Anda ingin menggunakan salah satu asisten pengkodean tersebut

  • Python versi 3.10 atau yang lebih baru diinstal

  • uvmanajer paket diinstal

  • Keakraban dengan alat dan konsep pemindaian keamanan

  • Pemahaman dasar tentang IAc dan keamanan aplikasi

Batasan

  • Pemindaian bandit terbatas pada file Python saja.

  • Pemindaian waktu nyata dapat memengaruhi kinerja untuk basis kode yang besar.

  • Keterbatasan khusus alat didasarkan pada format dan bahasa file yang didukung.

  • Tinjauan manual diperlukan untuk memvalidasi temuan keamanan.

  • Hasil pemindaian keamanan memerlukan keahlian keamanan untuk interpretasi yang tepat.

  • Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat AWS Layanan menurut Wilayah. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.

Versi produk

  • Python versi 3.10 atau yang lebih baru

  • Checkov versi 3.0.0 atau yang lebih baru

  • Semgrep versi 1.45.0 atau yang lebih baru

  • Bandit versi 1.7.5 atau yang lebih baru

  • MCP [cli] versi 1.11.0 atau yang lebih baru

  • Pydantic versi 1.10.0 atau yang lebih baru

  • Loguru versi 0.6.0 atau yang lebih baru

Arsitektur

Diagram berikut menunjukkan arsitektur untuk solusi ini.

Asisten AI mengirim kode ke server pemindai keamanan MCP untuk merutekan ke pemindai khusus; hasil pemindaian dikirim ke pengembang.

Diagram menunjukkan alur kerja berikut:

  1. Pengembang menggunakan asisten AI (misalnya, Kiro, Cline, Amazon Q Developer, atau Roo Code) untuk menghasilkan atau menganalisis kode. Asisten AI mengirimkan kode untuk pemindaian keamanan.

  2. Server pemindai keamanan MCP memproses permintaan dengan merutekan ke pemindai khusus yang sesuai: Checkov untuk file IAC, Semgrep untuk analisis beberapa bahasa pemrograman, atau Bandit untuk pemindaian keamanan khusus Python.

  3. Hasil pemindai dengan temuan keamanan, tingkat keparahan, deskripsi terperinci, dan perbaikan yang disarankan dikirim kembali ke pengembang melalui asisten AI.

  4. Loop umpan balik berkelanjutan dibuat di mana pengembang menerima validasi keamanan waktu nyata, memungkinkan perbaikan otomatis melalui asisten AI dan mempromosikan praktik terbaik keamanan selama pengembangan.

Arsitektur mengurangi risiko keamanan umum berikut:

  • Injeksi perintah

  • Injeksi cepat

  • Jalur traversal

  • Serangan ketergantungan

  • Kelelahan sumber daya

Arsitektur mengurangi risiko keamanan umum ini dengan menerapkan praktik terbaik berikut:

  • Semua input model pengguna dan AI ditulis ke file sementara.

  • Tidak ada input langsung yang disediakan untuk perintah antarmuka baris perintah (CLI).

  • Akses sistem file dibatasi untuk direktori sementara dan file saja.

  • File sementara secara otomatis dibersihkan.

  • Respons pemindaian disanitasi.

  • Isolasi proses yang membatasi kemampuan proses diberlakukan.

  • Semua aktivitas pemindaian dicatat.

Otomatisasi dan skala

Pola ini mendukung otomatisasi melalui kemampuan berikut:

  • Integrasi dengan asisten pengkodean AI untuk pemindaian kode otomatis

  • Respons API standar untuk pemrosesan otomatis

  • Konfigurasi melalui file konfigurasi MCP

  • Support untuk pemrosesan batch dari beberapa file

  • Pemindaian yang dapat diskalakan di berbagai bahasa pemrograman dan format IAC

Proses pemindaian dapat diotomatisasi melalui titik akhir API yang disediakan:

  • scan_with_checkovuntuk pemindaian IAc

  • scan_with_semgrepuntuk pemindaian kode multi-bahasa

  • scan_with_bandituntuk pemindaian khusus Python

  • get_supported_formatsuntuk validasi format

Saat memperluas alat pemindaian, ikuti prinsip desain dan praktik terbaik yang dijelaskan sebelumnya di bagian ini. Lihat juga Praktik terbaik.

Alat

Layanan AWS

  • Kiro adalah layanan pengkodean agen yang bekerja bersama pengembang untuk mengubah prompt menjadi spesifikasi terperinci, kemudian menjadi kode kerja, dokumen, dan pengujian. Agen Kiro membantu pengembang memecahkan masalah yang menantang dan mengotomatiskan tugas-tugas seperti menghasilkan dokumentasi dan pengujian unit.

  • Amazon Q Developer adalah asisten percakapan bertenaga AI generatif yang dapat membantu Anda memahami, membangun, memperluas, dan mengoperasikan aplikasi. AWS

Alat lainnya

  • Bandit adalah alat pemindai keamanan Python khusus. Ini mendeteksi masalah keamanan Python umum seperti fungsi tidak aman, rahasia hardcode, dan kerentanan injeksi. Bandit memberikan peringkat kepercayaan dan tingkat keparahan yang terperinci.

  • Checkov adalah alat analisis kode statis yang memeriksa IAc untuk kesalahan konfigurasi keamanan dan kepatuhan. Selain itu, Checkov mendeteksi pelanggaran kepatuhan dan praktik terbaik keamanan.

  • Cline adalah asisten pengkodean bertenaga AI yang berjalan di VS Code.

  • Loguru adalah pustaka validasi data untuk Python.

  • Model Context Protocol (MCP) adalah kerangka kerja open source untuk membangun alat pengembangan yang dibantu AI.

  • Pydantic adalah pustaka validasi data untuk Python.

  • Semgrep menganalisis kode sumber untuk kerentanan keamanan dan bug. Ini mendukung beberapa bahasa pemrograman. Semgrep menggunakan aturan yang berfokus pada keamanan untuk analisis komprehensif. Ini memberikan peringkat kepercayaan dan tingkat keparahan yang terperinci.

Repositori kode

Kode untuk pola ini tersedia di repositori GitHub MCP Security Scanner: Real-Time Protection for AI Code Assistants. Repositori mencakup implementasi server MCP, detail tentang konfigurasi MCP untuk Kiro, Pengembang Amazon Q, Cline dan lainnya, contoh konfigurasi, dan utilitas pengujian.

Struktur repositori meliputi:

  • security_scanner_mcp_server/- Implementasi server utama

  • docs/- Dokumentasi dan materi demo

  • tests/- File uji

  • mcp-config-example.json- Contoh konfigurasi MCP

  • requirements.txt- Ketergantungan proyek

Praktik terbaik

Implementasi pemindaian keamanan

  • Tinjau temuan keamanan untuk memvalidasi dan memprioritaskan masalah.

  • Tetap perbarui alat pemindaian (Checkov, Semgrep, dan Bandit) ke versi terbaru.

  • Gunakan alat keamanan MCP pola ini bersama dengan langkah-langkah dan alat keamanan lainnya.

  • Perbarui set aturan dan kebijakan keamanan secara teratur.

Manajemen konfigurasi

  • Gunakan file konfigurasi MCP di sumber kontrol versi resmi.

  • Dokumentasikan aturan dan konfigurasi kustom.

Integrasi

  • Integrasikan pemindaian keamanan di awal siklus pengembangan.

  • Siapkan pemindaian otomatis di kait pra-komit atau pipeline integrasi berkelanjutan dan penerapan berkelanjutan (CI/CD).

  • Konfigurasikan ambang batas keparahan yang sesuai untuk lingkungan Anda.

  • Menetapkan prosedur yang jelas untuk menangani temuan keamanan.

Pertimbangan operasional

  • Pantau kinerja pemindaian dan penggunaan sumber daya.

  • Menerapkan penanganan kesalahan dan logging yang tepat.

  • Pertahankan dokumentasi konfigurasi kustom.

  • Menetapkan proses untuk meninjau dan memperbarui aturan keamanan.

Juga, ingatlah praktik terbaik berikut:

  • Selalu validasi temuan keamanan dalam konteks spesifik Anda.

  • Tetap perbarui alat keamanan dan dependensi.

  • Gunakan beberapa alat keamanan untuk cakupan yang komprehensif.

  • Ikuti praktik terbaik keamanan dalam proses pengembangan Anda.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan pengaturan MCP.

Anda dapat mengedit file konfigurasi di Kiro baik dengan (Opsi 1) secara manual menemukan file konfigurasi atau (Opsi 2) dengan menggunakan IDE Kiro.

  • (Opsi 1) Cari dan edit file konfigurasi secara manual sebagai berikut:

    • Jalur: .kiro/settings/mcp.json (lokal) atau ~/.kiro/settings/mcp.json (global)

  • (Opsi 2) Ubah file konfigurasi dengan menggunakan Kiro IDE sebagai berikut:

    • Pilih simbol Kiro di menu navigasi kiri.

    • Arahkan ke bagian 'MCP SERVERS'.

    • Edit pengaturan konfigurasi. Perubahan yang dilakukan dengan IDE Kiro akan disimpan ke salah satu file konfigurasi ini: .kiro/settings/mcp.json (lokal) atau ~/.kiro/settings/mcp.json (global)

  • (Kedua opsi) Setelah Anda menyelesaikan Opsi 1 atau Opsi 2, tambahkan konfigurasi pemindai keamanan .kiro/settings/mcp.json (lokal) atau ~/.kiro/settings/mcp.json (global):

{ "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": [] } } }
Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan pengaturan MCP.

Untuk mengonfigurasi pengaturan MCP secara manual, gunakan langkah-langkah berikut:

  1. Edit file konfigurasi MCP di ~/.aws/amazonq/mcp.json (global) atau .amazonq/mcp.json (lokal).

  2. Tambahkan konfigurasi pemindai keamanan berikut ~/.aws/amazonq/mcp.json (global) atau .amazonq/mcp.json (lokal):

{ "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" } } } }
Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan pengaturan MCP.

Untuk mengonfigurasi pengaturan MCP secara manual, gunakan langkah-langkah berikut:

  1. Pilih ekstensi untuk membukanya dan kemudian pilih MCP Server.

  2. Pilih tab Terinstal dan kemudian pilih Konfigurasi Server MCP untuk membuka cline_mcp_settings.json file.

  3. Tambahkan konfigurasi pemindai keamanan berikut: 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": [] } } }
Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Lakukan analisis kode.

Untuk melakukan analisis kode dengan menggunakan Python dan Bandit, gunakan langkah-langkah berikut:

  1. Buat file Python baru bernama bandit_test.py dengan konten berikut:

    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. Buka asisten pengkodean. Minta tindakan berikut dalam obrolan: Pindai skrip saat ini dan beri tahu saya hasilnya.

Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Lakukan analisis kode.

Untuk melakukan analisis kode dengan menggunakan Terraform dan Checkov, gunakan langkah-langkah berikut:

  1. Buat file Terraform baru bernama terraform_test.tf dengan konten berikut:

    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. Buka asisten pengkodean. Minta tindakan berikut dalam obrolan: Pindai skrip saat ini dan beri tahu saya hasilnya.

Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Lakukan pemindaian yang ditargetkan.

Berikut ini adalah contoh permintaan yang dapat Anda gunakan untuk melakukan pemindaian yang ditargetkan:

  • Pindai proyek saat ini dan beri tahu saya hasilnya.

  • Pindai baris 6-10 dalam skrip saat ini.

Pengembang aplikasi

Gunakan pemindaian keamanan dengan pembuatan kode.

Untuk menyelesaikan temuan keamanan dengan menggunakan loop pembuatan kode, gunakan langkah-langkah berikut (contoh ini menggunakan Kiro sebagai asisten pengkodean):

  1. Di Kiro, tanyakan: Buat tabel DynamoDB di Terraform dan pindai kode dengan pemindai keamanan.

  2. Di Kiro, tanyakan: Tinjau kode yang dihasilkan dan hasil pemindaian keamanan dan ikuti loop pembuatan kode yang menyelesaikan temuan keamanan.

Pengembang aplikasi

Pemecahan masalah

IsuSolusi

Masalah pengaturan lingkungan

  • Verifikasi bahwa Python versi 3.10 atau yang lebih baru diinstal.

  • Pastikan bahwa manajer uv paket diinstal.

Masalah pemindai

  • Verifikasi bahwa format file didukung.

  • Periksa apakah sintaks file valid.

  • Pastikan ekstensi file yang tepat digunakan.

  • Tinjau pengaturan batas waktu pemindaian.

Masalah integrasi

  • Verifikasi bahwa server MCP sedang berjalan.

  • Periksa apakah file konfigurasi sudah benar.

  • Validasi titik akhir API.

  • Pastikan bahwa format respons valid.

Dukungan Tambahan

  • Tinjau log untuk pesan kesalahan terperinci.

  • Periksa dokumentasi khusus alat.

  • Buat masalah di repositori.

Sumber daya terkait

AWS dokumentasi

AWS Sumber daya lainnya

Sumber daya lainnya

Informasi tambahan

Contoh konfigurasi MCP dengan auto disetujui diaktifkan

Tanpa autoApprove dikonfigurasi, pengguna harus memberikan persetujuan untuk mengirim kode ke server keamanan MCP untuk pemindaian. Ketika autoApprove dikonfigurasi, asisten kode diizinkan untuk memanggil alat tanpa persetujuan pengguna. Alat-alat ini berjalan secara lokal di mesin, tidak ada data yang dikirim, dan hanya pemindaian kode yang dilakukan.

Konfigurasi berikut memungkinkan eksekusi otomatis semua fungsi pemindaian keamanan:

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

Untuk mengaktifkan logging debug, setel "FASTMCP_LOG_LEVEL" ke"DEBUG".

Format file yang didukung oleh alat pemindaian keamanan

Setiap alat pemindaian keamanan dalam solusi ini mendukung format file berikut:

Checkov (IAc)

  • Terraform — .tf, .tfvars, .tfstate

  • CloudFormation — .yaml, .yml.json, .template

  • Kubernetes — .yaml, .yml

  • Dockerfile — Dockerfile

  • ARM — .json (Manajer Sumber Daya Azure)

  • Bisep — .bisep

  • Tanpa server — .yml.yaml

  • Kemudi — .yaml, .yml.tpl

  • GitHub Tindakan — .yl, .yaml

  • GitLab_ci — .yml, .yaml

  • Ansible — .yml, .yaml

Semgrep (Kode sumber)

  • Python — .py

  • JavaScript — .js

  • TypeScript — .ts

  • Jawa — .java

  • Pergi — .go

  • C — .c

  • C++ — .cpp

  • C # — .cs

  • Ruby — .rb

  • PHP — .php

  • Scala — .scala

  • Kotlin — .kt

  • Karat — .rs

Bandit (hanya Python)

  • Python — .py

Demo

Untuk pemindaian kode, coba contoh petunjuk berikut dengan asisten AI Anda:

  • “Pindai skrip saat ini dan beri tahu saya hasilnya.”

  • “Pindai garis 20-60 dan beri tahu saya hasilnya.”

  • “Pindai sumber daya tabel Amazon DynamoDB ini dan beri tahu saya hasilnya.”

Untuk informasi selengkapnya, lihat demo pemindaian kode ini di GitHub repositori pola ini.

Untuk menghasilkan kode aman, coba contoh petunjuk berikut:

  • “Hasilkan konfigurasi Terraform untuk membuat tabel DynamoDB dengan enkripsi diaktifkan dan pindai untuk masalah keamanan.”

  • “Buat fungsi Lambda Python yang menulis ke DynamoDB dan memindai kerentanan.”

  • “Buat CloudFormation template untuk bucket S3 dengan pengaturan keamanan yang tepat dan verifikasi itu melewati pemeriksaan keamanan.”

  • “Tulis skrip Python untuk menanyakan DynamoDB dengan pagination dan pindai praktik terbaik keamanan.”

  • “Buat manifes penerapan Kubernetes untuk layanan mikro dengan pengerasan keamanan dan validasi.”

Untuk informasi selengkapnya, lihat pembuatan kode ini dengan demo pemindaian keamanan di GitHub repositori pola ini.