Ringkasan Utama
Pulumi Neo Security menunjukkan desain yang aman untuk agent infrastruktur: fase assessment read-only sepenuhnya, dan remediation hanya menulis usulan perubahan di repository. Setiap temuan yang terbukti menjadi diff, preview, dan pull request untuk manusia, sementara deployment tetap lewat workflow yang sudah ada dan ditinjau. Tiru pemisahannya, bukan produknya.
Kalimat yang membuat saya berhenti membaca pengumuman Neo Security dari Pulumi itu pendek: fase assessment read-only sepenuhnya. Kebanyakan demo agent yang saya lihat dimulai dari ujung sebaliknya, yaitu agent yang memegang kredensial deploy dan dipercaya untuk berhati-hati. Di sini agent yang mencari celah yang bisa dieksploitasi sama sekali tidak punya jalur tulis.
Pengungkapan dulu: Neo Security adalah research preview untuk pelanggan yang diundang dan saya belum menjalankannya. Tulisan ini adalah pembacaan teliti atas pengumuman Pulumi oleh Joe Duffy (28 Agustus 2026), post Context API, dan dokumentasi Neo tentang task mode, pull request, dan code review, ditambah dokumentasi branch protection GitHub untuk bagian yang bisa Anda bangun sendiri. Setiap klaim tentang Neo dirujuk ke halaman itu; kode pipeline adalah milik saya dan diberi label.
Polanya: dua lajur, dan hanya satu yang boleh menulis
Neo Security adalah agent yang mencari celah yang bisa dieksploitasi di infrastruktur cloud, lintas provider seperti AWS, Azure, Google Cloud, dan Kubernetes, apa pun cara infrastruktur itu dibuat. Post-nya membagi kerjanya menjadi dua lajur. Lajur assessment menyusun threat model, memetakan attack vector, dan mengujinya, dan post itu menyebut fase tersebut read-only sepenuhnya. Lajur remediation adalah satu-satunya langkah yang menulis, dan yang ditulis adalah usulan perubahan di repository.
Serah terima antar lajur itulah desainnya. Pulumi menulis bahwa temuan yang terbukti bisa menjadi diff usulan, preview perubahan, dan pull request untuk ditinjau manusia, dan deployment tetap di workflow yang sudah ada dan ditinjau. Agent tidak pernah melompat dari saya menemukannya ke saya menerapkannya. Manusia dan pipeline yang sudah Anda percaya berada di celah itu.
Apa yang sebenarnya dibaca oleh assessment read-only
Read-only bukan berarti dangkal. Pengumuman itu menyebut enam plane bukti yang disintesis Neo sebelum menyimpan sebuah temuan, dan tabel di bawah mengikuti urutan di post. Poin desainnya: setiap plane adalah pembacaan, yaitu daftar inventory, query graph, file source, log, hasil policy, dan pertanyaan ke provider cloud.
| Plane | Yang dijawabnya | Catatan yang disebut di post |
|---|---|---|
| Resource inventory | Apa yang ada di seluruh account, region, dan tipe | Termasuk resource yang dibuat di luar IaC |
| Reference graph | Workload mana membawa identity mana, identity mana menjangkau data mana, stack mana mengelola resource mana | Dibaca lewat Context API |
| Intent | Apa maksud penulisnya: kode IaC, komentar, penamaan, riwayat commit dan review | Dipakai bila tersedia |
| Runtime state | Log, metrik, uptime, boot log, dan lalu lintas jaringan | Lewat alat yang dipakai platform engineer |
| Policy dan compliance | Lebih dari 150 policy bawaan yang dipetakan ke CIS Controls, NIST SP 800-53, HITRUST CSF, dan PCI DSS, ditambah policy buatan pelanggan | Dipakai untuk mencari risiko di luar pelanggaran yang sudah diketahui |
| Jawaban provider | Pertanyaan langsung ke cloud: Access Analyzer untuk keterjangkauan eksternal, pengecekan akses publik, simulasi policy | Menyelesaikan permission efektif setelah aturan yang tumpang tindih dan SCP |
Reference graph adalah plane yang bisa Anda coba hari ini tanpa undangan, jika paket Anda sesuai. Context API Pulumi adalah API read-only yang menghubungkan resource yang dikelola Pulumi maupun yang ditemukan, stack, dan relasinya menjadi sebuah graph. Query-nya adalah dokumen JSON dengan klausa anchor, traverse, dan return. Contoh dari post Context API menanyakan resource mana yang dikelola lewat provider AWS yang lebih tua dari 7.0.0.
// Context API query, copied from Pulumi's Context API post.
// Read-only: anchor picks the starting nodes, traverse follows edges,
// return chooses what comes back. Nothing here can change a stack.
{
"anchor": {
"nodeType": "resource",
"match": {
"type": "pulumi:providers:aws",
"fields": { "provider_version": { "op": "lt", "value": "7.0.0" } }
}
},
"traverse": [
{
"edgeTypes": ["provided_by"],
"direction": "in", // from the provider back to what it manages
"alias": "managed"
}
],
"return": { "select": ["anchor", "managed"] }
}
// An agent that is not Neo can fetch the query grammar with:
// pulumi api GetGraphQuerySchemaAkses adalah prasyarat, bukan pikiran belakangan. Post itu menyebut API ini public preview untuk organisasi Enterprise dan Business Critical, butuh Pulumi CLI v3.243.0 atau lebih baru dan role dengan permission resources:search, serta membatasi respons pada apa yang boleh dibaca pemanggil. Neo menjalankan query ini dengan permission pengguna yang memanggilnya, dan vocabulary serta batasnya bisa berubah selama preview.
Temuan yang terbukti, bukan dugaan
Lajur read-only punya standar kualitas. Neo membangun model, menguji tiap attack vector, dan menyimpan yang bertahan, diurutkan menurut severity dan confidence, serta berusaha membuang temuan yang terbantah atau tidak berdampak. Setiap temuan yang disimpan membawa buktinya dan, jika source tersedia, perbaikan kode yang spesifik. Filter itulah yang membuat satu pull request per temuan masih tertangani, bukan banjir.
| Temuan (dari laporan anonim) | Severity | Confidence |
|---|---|---|
| Role federation deployment memberi admin tanpa kondisi subject-claim | critical | high |
| Build role mempercayai OIDC source-control dengan wildcard branch claim | high | confirmed |
| Instance publik dengan IMDSv1 dan dugaan secret di user data | high | medium |
| Snapshot database dibagikan ke account di luar organisasi | medium | confirmed |
| Tidak ada WAF di load balancer atau CDN yang menghadap internet | low | high |
Laporan di post memuat 14 temuan anonim; tabel menampilkan lima di antaranya. Perhatikan bahwa confidence punya kolomnya sendiri. Temuan dugaan secret berstatus severity tinggi namun confidence medium, yang memberi tahu reviewer untuk memeriksa sebelum mempercayainya. Pulumi menyebut Neo dijalankan di beberapa estate produksi nyata dan satu run merekonsiliasi ribuan resource terkelola dengan inventory yang ditemukan. Itu klaim vendor sendiri, dan post tidak memberi angka false positive.
Remediation hanya menulis satu hal: usulan perubahan
Dokumentasi Neo menjelaskan apa yang dihasilkan lajur tulis. Neo menawarkan membuka pull request setelah preview, dan tiap PR memuat judul, deskripsi masalah, daftar resource yang diubah, ringkasan output preview, dan tautan balik ke task Neo. Neo menemukan repository sebuah stack lewat git location tag yang ditambahkan ke stack saat dibuat.
Setelah pull request dibuka, tidak ada yang istimewa dari Neo. Jika dikonfigurasi, workflow yang sudah ada berjalan di atasnya, termasuk preview, security scan, policy check, dan test; check yang gagal bisa dikembalikan ke Neo, yang mendorong perbaikan ke PR yang sama; dan setiap perubahan melewati review manusia sebelum merge. Dokumentasi menyebut manfaatnya: review manusia, validasi CI/CD, kolaborasi, serta audit trail dengan rollback.
Itu sebabnya pola ini berlaku di luar Pulumi. Lajur tulis memakai ulang kontrol yang sudah Anda miliki: branch protection, required check, code owner. Agent tidak mendapat hak istimewa baru yang harus dipercaya, hanya penulis baru di tempat yang sudah terbiasa meninjau penulis.
Tombol otonomi yang disediakan Neo
Neo Security adalah ujung ketat dari rentang yang lebih luas. Dokumentasi Neo mendefinisikan tiga task mode yang bisa diubah kapan saja saat task berjalan, serta Plan Mode terpisah yang menunggu persetujuan eksplisit sebelum eksekusi apa pun dimulai. Task mode dan Plan Mode independen, jadi Anda bisa memasangkan Plan Mode dengan Auto mode untuk meninjau pendekatan dulu lalu membiarkan Neo berjalan tanpa berhenti.
| Aksi | Review (default) | Balanced | Auto |
|---|---|---|---|
| pulumi preview | Perlu persetujuan | Tidak perlu | Tidak perlu |
| pulumi up | Perlu persetujuan | Perlu persetujuan | Tidak perlu |
| Membuka pull request | Perlu persetujuan | Tidak perlu | Tidak perlu |
Dua pernyataan lain di overview lebih penting daripada tabel. Pertama, Neo tidak pernah punya akses lebih banyak dari Anda, hanya lebih sedikit. Kedua, mode read-only menghilangkan kemampuannya mengubah apa pun, dan pengiriman berbasis PR membuat branch protection rule dan reviewer Anda tetap menjadi gerbang atas apa yang dirilis. Lajur assessment di Neo Security adalah postur read-only itu yang diterapkan secara desain, bukan dipilih per task.
Baca tabel itu sebagai tangga kepercayaan. Review mode menjaga tiga aksi, Balanced satu, Auto tidak ada. Mulai setiap agent baru dari anak tangga teratas dan turun hanya untuk jenis perubahan yang sudah berkali-kali Anda lihat berhasil.
Membangun pemisahan yang sama dengan alat yang sudah ada
Anda tidak butuh Neo untuk menerapkan pola ini pada agent apa pun yang menyentuh infrastruktur. Semua di bawah adalah sketsa saya sendiri, bukan konfigurasi Pulumi. Blok pertama adalah query Context API yang disalin dari post Pulumi: pertanyaan read-only dengan anchor, satu traversal, dan klausa return, bentuk yang akan dijalankan agent assessment sepanjang hari.
Blok kedua adalah gerbang lajur tulis: workflow yang mem-preview setiap perubahan di bawah infra pada pull request, siapa pun penulisnya. Workflow ini tidak punya langkah deploy. Blok permissions memberi job akses baca ke contents dan akses tulis ke pull requests hanya agar bisa mengomentari preview. Input-nya milik action pulumi/actions, yang rilis terbarunya saat saya cek adalah v7.0.0.
# .github/workflows/iac-preview.yml (my sketch, not Pulumi's config)
# The write lane's gate: every pull request under infra/ gets a preview,
# whoever opened it. There is deliberately no "up" anywhere in this file.
name: iac-preview
on:
pull_request:
paths: ["infra/**"]
permissions:
contents: read # the job only reads the repo...
pull-requests: write # ...and comments the preview on the PR
jobs:
preview:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- run: npm ci --prefix infra # install your Pulumi program's deps
- uses: pulumi/actions@v7
with:
command: preview
stack-name: acme/prod
work-dir: infra
comment-on-pr: true
env:
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
# Cloud credentials for a preview should be read-only too.Blok ketiga membuat review mengikat. Dokumentasi GitHub menyebut branch protection bisa mewajibkan sejumlah approving review, mewajibkan persetujuan code owner untuk kode yang punya owner, dan mewajibkan status check. Secara default pembatasan itu tidak berlaku untuk admin, makanya sketsa ini memasang enforce_admins. Identitas agent sebaiknya punya akses tulis ke branch dan pull request, tidak pernah hak untuk merge atau bypass.
# .github/CODEOWNERS: the people who must approve changes to sensitive paths
/infra/iam/ @acme/security
/infra/network/ @acme/platform
# Branch protection through the REST API. enforce_admins is the line people
# forget: without it the rules do not apply to anyone with admin permission.
gh api -X PUT repos/acme/infra/branches/main/protection --input - <<'EOF'
{
"required_status_checks": { "strict": true, "contexts": ["preview"] },
"enforce_admins": true,
"required_pull_request_reviews": {
"required_approving_review_count": 1,
"require_code_owner_reviews": true,
"dismiss_stale_reviews": true
},
"restrictions": null
}
EOFDi mana pola ini gagal
Assessment read-only gagal secara diam-diam saat agent tidak bisa melihat source. Pulumi menyebut analisis intent berlaku bila tersedia dan perbaikan kode bergantung pada tersedianya source. Dokumentasi Neo menambahkan bahwa tanpa integrasi VCS Neo tidak bisa melihat IaC di balik sebuah stack dan usulannya tidak sepenuhnya kontekstual. Temuan tentang resource yang dibuat di luar IaC tidak punya file untuk ditambal, sehingga keluarannya berupa temuan, bukan diff.
Patahan kedua adalah VCS. Neo mendukung GitHub, Azure DevOps, GitLab, dan Bitbucket untuk membuka pull request, tetapi integrasi VCS kustom hanya memungkinkan clone dan push, bukan membuka pull request. Code review Neo lebih sempit lagi: hanya di GitHub.com, dan dokumentasi menyatakan Neo tidak memblokir merge. Agent yang mereview hanyalah saran, jadi gerbang yang memblokir harus berupa required check milik Anda sendiri, seperti pada sketsa di atas.
Auto mode dan bypass admin menghapus batas antar lajur. Di Auto mode Neo tidak meminta persetujuan apa pun, termasuk sebelum pulumi up, dan secara default branch protection tidak mengikat admin. Agent ditambah token admin kembali menjadi kredensial deploy. Tetap di Review mode dan terapkan aturan untuk admin.
Terakhir, batas ketersediaannya nyata dan buktinya tipis. Scan ini research preview untuk sekelompok kecil pelanggan yang diundang, dengan scan awal gratis selama preview, dan Pulumi menyebut estate multi-cloud dan multi-account sebagai yang paling cocok. Satu-satunya hasil yang dipublikasikan adalah milik vendor sendiri, tanpa pengukuran independen, jadi anggap desainnya terbukti dan produknya belum.
Yang dilakukan hari Senin
Anda bisa mengadopsi pola ini tanpa ikut preview. Kerjakan berurutan; masing-masing kecil dan masing-masing menutup satu cara bagi agent untuk menulis di tempat yang seharusnya hanya membaca.
- Daftar setiap agent atau bot yang memegang kredensial yang bisa mengubah infrastruktur, dan catat mana yang bisa menjalankan apply atau up tanpa manusia.
- Beri agent assessment identitas read-only terpisah tanpa izin tulis di mana pun, dan kirim temuannya ke tiket atau laporan.
- Arahkan setiap perbaikan yang diusulkan lewat pull request yang menjalankan preview dan policy check sebelum dilihat manusia.
- Aktifkan required review, code owner, dan required check, lalu aktifkan pengaturan yang menerapkannya ke admin.
- Jika memakai Neo, biarkan task di Review mode, pakai Plan Mode untuk pekerjaan multi-stack, dan naikkan satu jenis perubahan ke Balanced hanya setelah Anda mereview beberapa pull request-nya.
Aturan yang saya bawa pulang: agent infrastruktur boleh membaca semua yang bisa dijadikan bukti, dan hanya boleh menulis usulan ke tempat yang sudah diputuskan oleh manusia dan CI. Neo Security adalah implementasi vendor atas aturan itu, masih preview dan belum diukur siapa pun di luar Pulumi, tetapi aturannya berlaku untuk agent dan alat IaC apa pun.
Sumber

