AppSec Engineer's Local Setup
セキュリティ Issue や MR を評価する際、問題を再現したり、根本原因を掘り下げたり、さらなる影響を調べたりする手段を持っておくと役立ちます。これはオンボーディングの最初の数週間で GitLab に慣れるためのよい方法でもあります。ここでは便利なヒントとコツを紹介します。
ローカル GDK 環境のセットアップ方法
- チームメンバーライセンス 100 シートをリクエストします(これにより、インストール時に GDK にすでに追加されている約 50 ユーザーを削除せずに済みます)。
- 既存のローカル GDK インストールを置き換える、または geo のセットアップを行う予定がある場合は、まず既存の gdk フォルダで
gdk killを実行します。これにより、プロセスが停止し、さまざまなサービスが使用しているポートが解放されます。 - gdk のインストール手順に関する一般的な情報は gitlab-development-kit で確認できます。
curl "https://gitlab.com/gitlab-org/gitlab-development-kit/-/raw/main/support/install" | bashで one line install を開始します。- gdk にインストールするか、フォルダ名を選択します。
miseを使ってインストールします。- インストールが完了したら、すべてのサービスが起動したことを確認するために
gdk restartを実行します。
- インストールが完了したら、
root/5iveL!feでログインし、デフォルトのパスワードを変更します。 - ライセンスを適用します。admin/settings/addlicense 経由、または rails console を使用します。
- admin/subscription でライセンスが正しく適用されたか確認します。
GDK で GitLab Duo を有効化する
ローカルの Duo インスタンスでローカル GDK を構成するには、以下の公式 wiki に従ってください。
こちらの Additional Resources セクションには、トラブルシューティング用のドキュメントが用意されています。
VS code で Duo を有効化する
- AI 機能へのアクセス権を持つユーザーで、API アクセス権を持つ PAT を作成します。
- VS code をダウンロードしてインストールします。
- Extensions から GitLab をインストールします。
- GDK 用の VS code プロファイルを構成します。Code > Settings > Profiles > New Profile に移動します。
- VS code で Command Palette(Command + Shift + P)を開き、「GitLab: Validate GitLab Accounts」を選択して GDK アカウントに切り替えます。ここで PAT を追加する必要があります。
- GitLab Agent が左側のツールバーに追加されているはずです。
VS Code Duo 拡張機能を Language Server にリンクする
以下のシーケンスは、IDE 拡張機能が GitLab インスタンスと、その後 Duo Agent Platform に対してどのように認証を行うかを示しています。
sequenceDiagram
participant ext as Editor Extension
participant lsp as GitLab Language Server
participant sm as GitLab
participant aigw as AI Gateway (GitLab-hosted)
participant dws as Duo Agent Platform (GitLab-hosted)
ext-->>lsp: Send workspace configuration
par Fetch Personal Access Token info
lsp->>+sm: GET /api/v4/personal_access_tokens/self
sm->>-lsp: 200 OK {...}
and Fetch OAuth token info
lsp->>+sm: GET /oauth/token/info
sm->>-lsp: 200 OK {...}
Note right of lsp: Store OAuth access token until just before expiry
end
loop Every ~120 minutes
lsp->>+sm: GET /api/v4/ai/duo_workflows/direct_access
sm->>+dws: Send GenerateToken request (gRPC)
Note right of dws: duo_workflow_service/server.py generates a signed JWT through the Cloud Connector library code.
dws->>-sm: ServiceResponse.success
sm->>-lsp: 200 OK {...}
Note right of lsp: Store direct access details for Duo Agent Platform for ~120 minutes
end注: これらの手順はドキュメントの既存の手順を拡張したものです。
以下のすべての手順は GitLab ユーザープロファイルとして完了します。
- gitlab-vscode-extension プロジェクトをクローンします。
- gitlab-lsp プロジェクトを、VS Code 拡張機能プロジェクトと同じパスにクローンします。例えば、以下のようにします。
- LSP は /Users/
/Projects/gitlab-lsp にあります。 - vscode 拡張機能は /Users/
/Projects/gitlab-vscode-extension にあります。
- LSP は /Users/
- セットアップを容易にするため、2 つのプロジェクトをターミナルで並べて開いておきます。
- gitlab-vscode-extension プロジェクトについては、以下の手順に従います。
- 実行:
npm install - 拡張機能を dev モードで実行します。
- vscode でプロジェクトを開きます。
- View: Show Run and Debug コマンド(Cmd+Shift+P)を実行します。
- Run Extension コマンドが選択されていることを確認します。
- 緑色の再生アイコンを選択するか、F5 を押します。
- 実行:
- gitlab-lsp プロジェクトについては、以下の手順に従います。
- vscode でプロジェクトを開きます。
npm installを実行します。npm run buildを実行します。GITLAB_WORKFLOW_PATH=/Users/<USERNAME>/Projects/gitlab-vscode-extension code .を実行します。- Attach to VS Code Extension の起動タスクを実行します。
npm run watch -- --editor=vscode --packages agentic-duo-chat webview-duo-workflow duo-chat duo-chat-v2 webview-duo-chat webview-duo-chat-v2 webview-vuln-detailsを実行します。
- 検証: 動作することを確認するには、まず Duo Workflow 拡張機能の設定で GitLab デバッグオプションを有効にしていることを確認し、デバッグログを確認できるように拡張機能を再起動します。

Duo 開発のためにローカル GDK の変更を LS に接続する
- GDK プロファイルをセットアップします。
- ドキュメントに概説された 2 つの手順に従います。
VSCode で、出力ペインの “GitLab Language Server” ログを確認し、エラーがないか確認します。以下のようなトークンエラーが発生した場合は、GitLab Workflow 拡張機能の設定に移動し、ignore TLS/SSL cert errors オプションにチェックが入っていることを確認してください。
2025-08-20T10:54:14:972 [warning]: Both PAT and OAuth token checks failed: PAT Token: {"valid":false,"reason":"unknown","message":"Token validation failed: Error: request to https://gdk.test:3443/api/v4/personal_access_tokens/self failed, reason: unable to verify the first certificate"}, OAuth Token: {"valid":false,"reason":"unknown","message":"Token validation failed: Error: request to https://gdk.test:3443/oauth/token/info failed, reason: unable to verify the first certificate"}
2025-08-20T10:54:14:973 [info]: [CodeSuggestionsInstanceTelemetry] Instance Telemetry: GitLab Duo Code Suggestions telemetry is always enabled in self-managed instances.
2025-08-20T10:54:14:973 [warning]: Token is invalid. Token validation failed: Error: request to https://gdk.test:3443/api/v4/personal_access_tokens/self failed, reason: unable to verify the first certificate. Reason: unknown
2025-08-20T10:54:14:973 [warning]: Token is invalid. No token provided. Reason: invalid_token

- 拡張機能を再起動し、動作するか確認するために、GDK フォルダを開き(GDK プロジェクトをローカルに git clone し、Duo が有効になっていることを確認します)、ログにエラーがないか確認します。動作している agentic ワークフローログの例:
2025-08-20T11:13:46:002 [info]: [Duo Agentic Chat Plugin] Received new event
2025-08-20T11:13:46:002 [debug]: [WebviewInstanceMessageBus:agentic-duo-chat:8327ccee-1b85-48ba-abd6-eb4cfb5e3f1f] Sending notification: workflowCheckpoint
2025-08-20T11:13:46:002 [debug]: [WebviewInstanceMessageBus:agentic-duo-chat:8327ccee-1b85-48ba-abd6-eb4cfb5e3f1f] Sending notification: workflowStatus
2025-08-20T11:13:46:503 [debug]: [WorkflowTokenService] Reusing existing valid token for workflow "3"
2025-08-20T11:13:46:503 [debug]: [DuoWorkflowNodeExecutor][3] Received new checkpoint: {"workflowStatus":"RUNNING"}
AI Gateway と Duo Agent Platform Service の異なるブランチを実行する
AI Gateway で MR をレビューする際、README.md のセットアップ手順に従う代わりに、AppSec エンジニアは多くの場合、特定のブランチでの変更をテストするために以下の手順に従うだけで済みます。
AI Catalog 開発のための GDK のセットアップ
詳細な手順については、この wiki ページの手順に従ってください。
実行チェーンをステップ実行する
Web または API リクエストの一部として実行されるコードを確認したい場合、インタラクティブデバッガが役立つツールになります。Pry & Thin を構成する方法はこちらです。
典型的なワークフローは、リクエストを開始する Controller アクション(create や update のようなメソッドが有力候補です)を見つけ、binding.pry を追加し、ファイルを保存してから、そのリクエストをブラウザで実行することです。実行が停止し、ターミナルで IRB を使って現在の状態を検査できます。メソッドの中に入るには step、次のステートメントに進むには next、次のブレークポイントおよび/または完了までリクエストを実行させるには continue を入力します。
ログを監視すると役立つことがあります: tail -f gitlab/log/development.log。
テスト用プロキシのインストール
あなたの役割では「ペネトレーションテスト」が必要ないかもしれませんが、リクエストを傍受して操作できるテスト用プロキシにアクセスできると、HackerOne の Issue を再現するのに役立ちます。
AppSec チームは Burp Suite Professional のマルチユーザーライセンスを持っています。ライセンスの取得については #security_help で AppSec チームに尋ねてください(最新の安定版はこちらからダウンロードできます)。無料でオープンソースの OWASP ZAP を使用することもできます。
これらのツールは、ウェブサイトに簡単に損害を与えたり、アクティブスキャンで CPU を消費したりする可能性があります。OWASP Zap では、悪意のある可能性のあるリクエストを防ぐために “Safe” モードを使用してください。Burp Suite では、ライブの “audit” スキャンを無効にしてください。
ブラウザプロファイル
複数のユーザーを使用するテストが必要な場合、シークレット / プライベートタブが簡単な選択肢です。「セッションサンドボックス」を提供するために、サインインしていない Chrome プロファイルや Firefox Multi-Account Containers を作成して使用することもできます。これらは(シークレットタブとは異なり)ウィンドウを閉じても保持され、視覚的な区別を助けるために色分けできます。
モックサーバー / トンネル
ローカルマシンをインターネットからアクセス可能にすることは許可されていないため、ngrok や localtunnel のようなツールは使用できません。代わりに GitLab の Sandbox Cloud を使ってモックサーバーをホストしてください。Sandbox Cloud のテスト環境を保護する方法については、セキュアなクラウドテスト環境を参照してください。
デバッグと GDK のヒント
gdk updateGit からアプリケーションの変更をプルするgdk tailすべてのサービスのログを tail するgdk tail gitlab-ai-gatewayAI サービスのログを tail するgdk doctorGDK で診断を実行する- gitlab フォルダで実行:
bundle exec rake gitlab:duo:verify_self_hosted_setupローカルセットアップを検証する gdk killサービスを強制終了する - サービスがポートをハングさせたとき、またはアップグレードするときに便利- フィーチャーフラグ は
http://127.0.0.1:3000/rails/featuresで有効化できます。
bfd74782)