Przejdź do głównej zawartości

Automatyzacja zgodności z AI

Audytor chce dowodu, że każde wdrożenie produkcyjne przechodzi przez code review, że nie trafiła do wydania żadna zależność na licencji GPL i że potrafisz przygotować diagram przepływu danych pokazujący, gdzie znajdują się dane osobowe obywateli UE. Okno na SOC 2 Type II zamyka się za trzy tygodnie, a kodu nikt nie udokumentował pod kątem zgodności. Ręczne robienie zrzutów ekranu z ustawień GitHuba nie przejdzie w tej skali.

To dokładnie ten rodzaj powtarzalnej, dowodochłonnej pracy, w której agent kodujący AI jest dobry: potrafi przeczytać repozytorium, naszkicować skrypty zbierające dowody, podłączyć bramki CI egzekwujące dany mechanizm kontrolny i zamienić kod w narrację, jakiej oczekuje audytor. Ty pozostajesz recenzentem; agent wykonuje pisanie.

  • Prompt, który audytuje repozytorium pod kątem konkretnego mechanizmu kontrolnego SOC 2 (CC6.1, CC8.1) i zwraca tabelę luk z dowodami w formacie file:line
  • Działające zadanie GitHub Actions, które wywala build na niedozwolonych licencjach zależności
  • Bramkę pre-commit skanującą sekrety, którą agent podłączy za Ciebie
  • Dokument przepływu danych GDPR, który agent naszkicuje, śledząc pola danych osobowych przez kod
  • Ten sam przepływ pracy pokazany w Cursorze, Claude Code i Codex, plus serwery MCP, które zamieniają zbieranie dowodów w jeden krok zamiast dziesięciu

Automatyzacja zgodności z agentem to cztery ruchy: zmapuj mechanizm kontrolny na swój kod, wygeneruj kolektor dowodów, wyegzekwuj mechanizm w CI, a następnie napisz narrację zrozumiałą dla człowieka. Traktuj wynik agenta jako pierwszą wersję roboczą do recenzji, nigdy jako ostatnie słowo audytora.

Zacznij wąsko. Wybierz jeden mechanizm kontrolny i poproś agenta, by znalazł, gdzie go spełniasz, a gdzie nie. Sztuczka polega na wymuszeniu cytatów file:line, żebyś mógł zweryfikować każdą tezę zamiast ufać pewnemu siebie podsumowaniu.

Klauzula „do not invent” ma znaczenie. Prompty dotyczące zgodności to miejsce, gdzie modele najbardziej kuszą się o halucynowanie schludnej, w pełni zgodnej odpowiedzi. Żądanie cytatów zamienia „zaufaj mi” w coś, co możesz wyrywkowo sprawdzić w 30 sekund.

Mechanika kierowania agenta na repozytorium różni się w zależności od narzędzia:

Otwórz repozytorium i przełącz Agenta na model klasy planistycznej (Fable 5 lub Opus 4.8 do dokładnych audytów, Sonnet 4.6 do codziennych przebiegów). Wklej prompt w trybie Agent i dodaj @Codebase, aby przeszukał cały projekt, a nie tylko otwarte pliki. Cursor renderuje tabelę luk w treści; kliknij każdy cytat file:line, aby przeskoczyć prosto do dowodu i go potwierdzić.

Audytorzy chcą powtarzalnych dowodów, a nie jednorazowej rozmowy. Niech agent napisze skrypt, który ściąga dowód na żądanie — ustawienia ochrony gałęzi, listę osób mogących mergować, zatwierdzenia wdrożeń — żebyś mógł uruchomić go ponownie rankiem w dniu audytu.

Przejrzyj to, co wyprodukuje. Potwierdź, że wywołuje prawdziwe punkty końcowe gh api / Octokit (a nie wymyślone), że czyta token ze środowiska zamiast wpisywać go na sztywno i że mapowanie mechanizmów kontrolnych w komentarzu nagłówkowym jest uczciwe. Następnie uruchom go raz i porównaj wzrokiem JSON z tym, co widzisz w interfejsie GitHuba.

Dowody potwierdzają, że mechanizm kontrolny istniał w przeszłości. Bramka CI utrzymuje go prawdziwym na przyszłość. Dwie bramki o najwyższej dźwigni: sprawdzanie licencji zależności i skan sekretów. Niech agent napisze obie.

W przypadku skanowania sekretów lepiej podłączyć sprawdzone narzędzie, niż prosić agenta o wymyślanie wyrażeń regularnych — powinien skonfigurować gitleaks, a nie pisać własny skaner:

Poproś Agenta: „Add a pre-commit hook using gitleaks that blocks commits containing secrets, plus a CI job that runs gitleaks detect on every PR.” Cursor edytuje .pre-commit-config.yaml i plik workflow. Przejrzyj diff w panelu Source Control, a następnie zastage’uj lokalnie fałszywą linię AWS_SECRET_ACCESS_KEY=..., aby potwierdzić, że hook faktycznie ją blokuje, zanim mu zaufasz.

Ostatni odcinek większości audytów to proza: opis przepływu danych, który audytor lub inspektor ochrony danych (DPO) może przeczytać. Agent potrafi prześledzić pola danych osobowych przez kod znacznie szybciej, niż ty zdołasz je wyszukać przez grep — o ile zmusisz go do cytowania źródeł i sygnalizowania niepewności.

Diagram Mermaid renderuje się bezpośrednio w większości narzędzi do dokumentacji i daje Twojemu DPO obraz zamiast ściany tekstu. Znacznik „NEEDS REVIEW” to zawór bezpieczeństwa — wyłapuje pola, których agent nie zdołał w pełni prześledzić, aby człowiek domknął lukę.

Zbieranie dowodów staje się dramatycznie krótsze, gdy agent może odpytywać Twoje systemy bezpośrednio, zamiast wywoływać CLI. Istotne połączenia są tu wyłącznie prawdziwymi, firmowymi serwerami MCP:

  • GitHub MCP — agent czyta ochronę gałęzi, recenzje PR i przebiegi Actions natywnie. Użyj hostowanego serwera pod https://api.githubcopilot.com/mcp/ (starszy lokalny serwer @modelcontextprotocol/server-github jest przestarzały, ale wciąż instalowalny). Dodaj go do Claude Code za pomocą:

    Okno terminala
    claude mcp add --transport http github https://api.githubcopilot.com/mcp/
  • Sentry MCP (https://mcp.sentry.dev/mcp) — pobieraj historię incydentów i błędów jako dowód dla mechanizmów kontrolnych dostępności i reagowania na incydenty.

  • Filesystem MCP — do zawężenia agenta do konkretnego katalogu z dowodami podczas generowania raportów.

Jeśli naprawdę potrzebujesz skryptowo obsłużyć klienta MCP (zamiast pozwolić agentowi go prowadzić), konstrukcja SDK jest specyficzna — pakiet eksportuje Client, a nie nadrzędny MCPClient, i łączy się przez transport, nigdy przez goły ciąg z nazwą serwera:

// Connect a programmatic MCP client to the GitHub server
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const client = new Client({ name: 'compliance-evidence', version: '1.0.0' });
await client.connect(
new StreamableHTTPClientTransport(new URL('https://api.githubcopilot.com/mcp/'))
);

Po stronie Skilli jednozadaniowy skill do code review z otwartego marketplace’u skilli (przeglądaj skills.sh i instaluj przez npx skills add <owner/repo>) jest lżejszą alternatywą dla pełnego serwera MCP, gdy potrzebujesz jedynie spójnej, ukierunkowanej na zgodność recenzji przy każdym PR. Sięgnij po skill, gdy potrzebujesz powtarzalnego zachowania; sięgnij po serwer MCP, gdy agent potrzebuje żywego połączenia z systemem źródłowym.

  • Agent oznacza mechanizm kontrolny jako „Met” bez prawdziwego dowodu. To tryb awarii, który zafunduje Ci finding. Zawsze wymagaj cytatów file:line, a potem wyrywkowo sprawdź trzy z nich. Jeśli cytat wskazuje na plik, który nie zawiera deklarowanego mechanizmu, odrzuć całą tabelę i uruchom ponownie ze ściślejszym promptem.
  • Wymyśla serwer MCP lub pakiet npm. Nie wklejaj regulatory-mcp-server, @compliance/* ani podobnych — żaden nie istnieje. Zweryfikuj każdy proponowany pakiet poleceniem npm view <pkg> version, zanim go podłączysz, i trzymaj się serwerów MCP GitHub/Sentry/Filesystem wymienionych powyżej.
  • Wygenerowane wyrażenia regularne przepuszczają prawdziwe sekrety. Nie pozwól agentowi ręcznie składać skanera sekretów. Użyj gitleaks lub gh secret-scanning; ich zestawy reguł są utrzymywane i testowane. Agentem podłącz narzędzie, nie zastępuj go nim.
  • Dane licencyjne są błędne dla zależności tranzytywnych. license-checker czyta zadeklarowane licencje, które bywają błędnie oznaczone u źródła. W przypadku czegokolwiek, co masz zamiar wydać pod audytem, ręcznie potwierdź oznaczone pakiety copyleft, zanim wywalisz lub odblokujesz build.
  • Dokument przepływu danych ujawnia prawdziwy sekret lub próbkę danych osobowych. Powiedz agentowi, by zredagował wartości i odwoływał się wyłącznie do nazw pól. Przejrzyj diff przed zacommitowaniem czegokolwiek do evidence/.