Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Gemini CLIでもセキュアで堅牢な開発をしたい!
Search
Yunosuke Yamada
October 19, 2025
0
27
Gemini CLIでもセキュアで堅牢な開発をしたい!
Yunosuke Yamada
October 19, 2025
Tweet
Share
More Decks by Yunosuke Yamada
See All by Yunosuke Yamada
DevOps/MLOpsに学ぶエージェントの可観測性
yunosukey
1
470
Agent Development Kitで作るマルチエージェントアプリケーション(AIAgent勉強会)
yunosukey
4
1.2k
Agent Development Kitで作るマルチエージェントアプリケーション(GCNT2025)
yunosukey
0
36
AIエージェントのオブザーバビリティについて
yunosukey
1
760
OpenTelemetry + LLM = OpenLLMetry!?
yunosukey
2
730
クラウド開発環境Cloud Workstationsの紹介
yunosukey
0
340
フロントエンドオブザーバビリティ on Google Cloud
yunosukey
1
290
ChatGPTのアルゴリズム
yunosukey
0
390
React and XSS
yunosukey
0
330
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
697
190k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Raft: Consensus for Rubyists
vanstee
140
7.1k
The Cult of Friendly URLs
andyhume
79
6.6k
Making Projects Easy
brettharned
120
6.4k
We Have a Design System, Now What?
morganepeng
53
7.8k
Docker and Python
trallard
46
3.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
How to Think Like a Performance Engineer
csswizardry
27
2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
Six Lessons from altMBA
skipperchong
29
4k
Transcript
Gemini CLIでもセキュアで堅牢な開発をしたい! クラウドネイティブ × Gemini CLI 株式会社スリーシェイク 山田悠之介 2025/10/20 Copyright
© 3-shake, Inc. All Rights Reserved.
自己紹介 • Webアプリケーションの内製化支援、 生成AIの導入支援をしています • Gemini CLIは ◦ 普段の業務で使ってる ◦
プレビュー版を使ってる ◦ stableとpreviewのリリースノートを 追っている って感じです 2
はじめに ターゲット • Gemini CLIを個人レベルではなく企業やチームとして使いたい人 今日伝えたいこと • Gemini CLIの機能や関連ツールを使うことで、セキュアで堅牢な開発を実現できる 3
注意 • v0.9.0を前提に話させていただきます • 本発表の内容を全て対応するのが全てのケースでベストなわけではありません 4
コーディングエージェントの抱える課題 無計画に利用すると脆く不安定な開発体制に陥りかねない • 入力の学習利用 • バイブコーディング • ホストや外部環境の意図しない変更 • 無秩序なMCPサーバの利用
5
目次 1. 適切なプランを選択する 2. 設定の統制を取る 3. 安全に実行する 4. 品質を保つ 6
適切なプランを選択する 01 Copyright © 3-shake, Inc. All Rights Reserved.
3つの認証方法、7つのプラン 1. Googleログイン a. 無料:Gemini Code Assist for individuals b.
有料:Google AI Pro/Ultra、Gemini Code Assist Standard/Enterprise edition 2. Gemini APIキー a. 無料:Unpaid b. 有料:Paid 3. Vertex AI a. 無料:Express Mode b. 有料:Regular Mode 3つあること、それぞれ有料・無料があることだけ押さえてください! 8
入力の学習利用 基本的に「無料は学習利用される、有料はされない」と思えばOK (Vertex AI Express Modeは無料、かつ学習利用されないがトライアル的なものなので) 9
監査ログ Gemini CLIにおける監査ログは • Google Cloudのデータアクセス監査ログ • いつ、誰が(どのプリンシパルが)、何をしたか(どのAPIを実行したか)を記録 監査ログはGemini Code
AssistとVertex AIで利用時に出る Gemini APIキーで利用時は出ない 10
結論 以上を踏まえてどちらかを使う ① Gemini Code Assist Standard/Enterprise edition ② Vertex
AI (Regular Mode) ①は定額でおすすめ、ただしクォータ制限あり、モデル指定不可 ②は従量課金、個人のクォータ制限なし、モデル指定可能 11
テレメトリ 監査ログはGoogle CloudのAPIを叩いたときだけ出る ツール実行時には出ないので、テレメトリ設定の有効化が必要 Google Cloudに直接エクスポートの場合には以下を設定 • settings.json • Google
Cloudの権限(Cloud Trace Agent、Logs Writer、Monitoring Metric Writer) 取得できる項目はドキュメントを参照 12 { "telemetry": { "enabled": true, "target": "gcp" } }
設定の統制をとる 02 Copyright © 3-shake, Inc. All Rights Reserved.
settings.jsonの優先順位 4種類の配置場所があり、後のものほど高優先度 1. システムデフォルト 2. ユーザ設定(~/.gemini/settings.json) 3. ワークスペース設定(<project>/.gemini/settings.json) 4. システムオーバーライド(Linuxなら/etc/gemini-cli/settings.json)
システムオーバーライドの書き込み権限を一般ユーザに与えなければ、 管理者がGemini CLIの設定をコントロールできる 14
settings.jsonのマージ 重複する設定があった場合のマージ戦略は設定項目によって異なる • SHALLOW_MERGE:オブジェクトに対して浅いマージをする ◦ キー名が同じ場合は高優先度で上書き ◦ 該当する設定:mcpServers • CONCAT:単純な結合
◦ 該当する設定:context.includeDirectories • UNION:重複を排除して結合 ◦ 該当する設定:tools.exclude、advanced.excludedEnvVars、extensions.disabled、 extensions.workspacesWithMigrationNudge • REPLACE:高優先度で上書き ◦ 該当する設定:残り全て 例えば先ほど見たtelemetryはREPLACEなので一般ユーザが変更できない 15
ツールの統制 以下のどちらかをシステムオーバーライドで設定することで、 一般ユーザがGemini CLIで利用するツールを制限することができる • tools.core:記載されたツールのみを使用可能になる • tools.exclude:記載されたツールは使用不可になる tools.coreはREPLACE方式なので一般ユーザによる書き換えはできない tools.excludeは追加のみ可能
16
MCPサーバの統制 以下の両方をシステムオーバーライドに設定することで、 一般ユーザが利用するMCPサーバを制限することができる • mcpServers:MCPサーバの設定 • mcp.allowed:記載されたMCPサーバのみを使用可能になる mcpServersはSHALLOW_MERGE方式なので追加可能だが、mcp.allowedは書き換えできないため、 一般ユーザは勝手に追加したMCPサーバを利用できない 17
認証方法の統制 security.auth.enforcedTypeをシステムオーバーライドで設定することで、 一般ユーザがGemini CLIを利用する際の認証方法を強制できる 異なる認証方法を使った場合はGemini CLIを使用できない 18 { "security": {
"auth": { "enforcedType": "vertex-ai" } } }
安全に実行する 03 Copyright © 3-shake, Inc. All Rights Reserved.
サンドボックス 意図しない開発環境の変更や危険な操作の影響を減らすため、サンドボックスを利用する 以下をサポート • Docker • Podman • sandbox-exec ※ローカルでもアプリをコンテナとして動かしている場合
• アプリコンテナをサンドボックスで実行するためにはサンドボックスコンテナを 特権モードで実行する必要があり本末転倒 • サンドボックスではなくGitHub CodespacesやCloud Workstationsなどの クラウド開発環境を利用する 20
サンドボックスのカスタマイズ(Dockerの場合) Gemini CLIに実行させたいコマンドをインストールしたカスタムイメージを作成する • ベースイメージ:us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox ◦ タグはバージョンと同じ • 配置場所:.gemini/sandbox.Dockerfile •
ビルド:docker build -t gemini-cli-sandbox -f .gemini/sandbox.Dockerfile .gemini • 設定 • 起動:gemini --sandbox-image gemini-cli-sandbox 21 { "tools": { "sandbox": "docker" } }
サンドボックスのカスタマイズ(Dockerの場合) サンドボックスコンテナの起動オプションはSANDBOX_FLAGSで指定 (SANDBOX_ENVとかSANDBOX_MOUNTSとかあるけど、分ける理由がいまいち分からない) 22
安全なツールを自動承認する サンドボックスで実行するだけでは、外部環境を変更する可能性のあるコマンドには無防備 • 例えばcurl、wget、git push、docker push、kubectl apply、terraform apply 起動オプションで--approval-modeを指定するとある程度コントロール可能 •
default:読み取り専用ツールのみ自動承認される。 編集ツールは承認が必要なので非効率。 • yolo:全てのツールが承認なしで実行される。非推奨。 • auto_edit:読み取り専用ツール、編集ツール、web_fetchが自動承認される。 run_shell_commandは承認が必要なので、安全なものはtools.allowedで指定する。 バランスが良いので推奨。 23
安全なツールを自動承認する tools.allowed:設定されたツールの実行を自動承認する --approval-modeとの兼ね合いでシェルツールを指定すると良い ※uv runやbun runなど任意のコマンドを実行可能なコマンドは、制限して許可すること 24 { "tools": {
"allowec": [ "ShellTool(uv run ruff)", "ShellTool(uv run mypy)", "ShellTool(uv run pyright)", "ShellTool(uv run pytest)" ] } }
品質を保つ 04 Copyright © 3-shake, Inc. All Rights Reserved.
仕様駆動開発 1セッションで高品質なアウトプットはできない 仕様駆動開発でマネジメントしてあげる • Spec Kit ◦ GitHub製、技術選定もドキュメントに残る ◦ 英語のみ対応、カスタムコマンド打つのが面倒かも
• Spec Workflow MCP ◦ 日本語対応、コマンド不要で体験が良い ◦ 個人開発 • cc-sdd ◦ 日本語対応、Kiro互換、成果物が日本企業に合っている ◦ 個人開発、カスタムコマンド打つのが面倒かも 26
仕様駆動開発 所感 • 合うものを使えば良い ◦ 例)開発元が信頼できるのでSpec Kit ◦ 例)(カスタムコマンドを精査した上で)成果物が既存プロセスにあっているので cc-sdd
◦ 例)そういうのは良いから体験が良いSpec Workflow MCPにする • 日本語対応は重要ではないかも ◦ 日本語対応を謳っていても英語で出してくることもある ◦ 英語で出してきたら日本語でやり直させるだけ • 縛れるのは仕様、設計、計画の部分のみ ◦ コードレベルでは何も縛っていないので、 小さいステップで実装させてレビューする必要がある 27
プレコミットフック Hooks:ファイル編集後などのタイミングでコマンドを実行する機能 (Claude Code、Kiroにはある😭) Gemini CLIにはないのでGit Hooksで代用する pre-commitでフォーマット、リント、型チェック、単体テストを実行させる 28
まとめ • Gemini CLIは ◦ 適切なプラン選択、設定の統制、サンドボックスなどでセキュアに ◦ 仕様駆動開発、プレコミットフックで堅牢に • ドキュメントにない情報はソースコードを読もう(Gemini
CLIに読ませよう) 29
About Us ————— Mission インフラをシンプルにして イノベーションが起こりやすい世界を作る ————— Vision 労苦〈Toil〉を無くすサービスを 適正な価格で提供し続ける ————— Services 30
インフラのプロフェッショナルパートナー アプリケーション層の セキュリティーをフルカバー データ統合プラットフォーム エンジニア組織特化型HRパートナー テックブログやってます! エンジニア超採用中です!