OpenClawのセキュリティ設定|記帳Botで絞った4か所と月1回の点検表

OpenClawのセキュリティ設定:記帳Botで絞った4か所と月1回の点検表で安全に使う方法

「動いたのはうれしいけど、このまま置いておいて大丈夫かな?」

記帳が動き出すと、次に気になるのはここですよね。

この記事では、自分のVPSで動かすOpenClawの記帳Botを4か所で最小に絞り、点検しながら使い続ける方法をまとめます。読む目安は8分ほどです。

OpenClawそのものの説明は1本目の記事にあります。レシート自動記帳の作り方は、シリーズ2本目でまとめます。

この記事で分かること

  • 絞る4か所と、それぞれの既定
  • 私が実際にやったことと、公式が勧める設定
  • 月1回を目安に回せる点検表

先に答えをまとめると

私が実際に絞ったのは、Googleの権限、鍵の置き場所、Discordの3か所です。

Googleは記帳専用のサービスアカウント1つに、シート1枚だけを共有しました。鍵とトークンはVPSの設定フォルダと ~/.openclaw/.env に置き、スキルには書いていません。

Discordは自分専用のサーバーで使っています。Gatewayは、公式が最も安全な既定とする「外に開けず、SSHかTailscale Serveで入る」形が基本です。

どれも一度で終わりではないので、鍵の入れ替えや不要な鍵の削除も含めて、定期的に点検しておくと安心です。

持ち場既定私がやったこと公式が勧めること
Googleの権限共有しなければシートに届かない記帳専用アカウント1つ、シート1枚を「編集者」で共有用途専用のアカウントに必要な分だけ
鍵とトークン鍵は有効期限なしVPSの設定フォルダと ~/.openclaw/.env に置き、スキルには書かない。組織ポリシーは戻した90日以内に入れ替え、不要な鍵は無効化→削除
Gateway「loopback」+認証必須―(公式の勧め方を紹介)外に開けず、SSHかTailscale Serveで入る
Discordサーバー内はメンション時だけ応答、DMは「pairing」自分専用サーバー。重複トークンは自動で無効になった「allowlist」を基準に、IDで指定

目次

Googleの権限と鍵:記帳専用アカウントとシート1枚に絞る

最初の持ち場は、BotがGoogleで触れる範囲です。ここを絞っておくと、もし鍵が外に出ても、届く範囲を小さく抑えられます。

渡す範囲:アカウント1つ、シート1枚

私は記帳専用のサービスアカウント(プログラム用のGoogleアカウント)を1つだけ作りました。共有したのは記入先のシート1枚で、権限は「編集者」です。

たとえば家計簿や仕事のシートが別にあっても、共有していなければ、このアカウントからは開けません。

確認すること絞った状態
サービスアカウント記帳専用の1つ。使い回さない
共有しているシート記入先の1枚だけ(「編集者」)
プロジェクト全体の権限シートの共有だけで動くなら付けない

用途専用のアカウントにして、シート単位の共有だけで動く形にしておくと、届く範囲を小さくできます。

スプレッドシートの共有設定でサービスアカウントに編集者権限を付与する画面
Googleスプレッドシートの共有設定を開き、サービスアカウントのメールアドレスを追加して編集者権限を付与します。

鍵は「期限」ではなく「入れ替え」で管理する

サービスアカウントの鍵は、既定では有効期限がありません。

Googleは、少なくとも90日ごとに鍵を入れ替えるよう勧めています(Google Cloud:サービスアカウントキーのローテーション)。

ローテーション(鍵の入れ替え)とは、新しい鍵に差し替えてから古い鍵を使えなくすることです。

流れは次の5ステップです。

  1. 入れ替える鍵を特定する
  2. 同じサービスアカウントで新しい鍵を作る
  3. VPS上の鍵ファイルを新しいものに差し替える
  4. 古い鍵を無効化し、記帳が動くか確かめる
  5. 問題なければ古い鍵を削除する

では、期限付きの鍵にすれば楽では?

Googleは入れ替えの手段として、期限付きの鍵を勧めていません。きちんと入れ替えないと、期限切れで止まる原因になるためです。

Tomoya

24時間動く記帳Botなら、期限ではなく入れ替えで管理する考え方が合います。

削除した鍵は元に戻せません。そのため、まず無効化して、不要だと確信してから削除します。

無効化はコンソール(ブラウザの管理画面)ではできず、gcloud(Google Cloudのコマンドツール)かREST APIで行います。

鍵の置き場所と組織ポリシー

私は鍵とトークンを、VPSの設定フォルダと ~/.openclaw/.env に置いています。

スキル(OpenClawへの手順書)には書いていません。

鍵ファイルは読めるユーザーを絞り、ディスクも暗号化しておくのがGoogleの推奨です(Google Cloud:サービスアカウントキー管理のベストプラクティス)。VPSの管理責任とバックアップは1本目で触れました。

もう1つ、組織ポリシー(Googleの組織全体のルール)の戻し忘れも確かめます。私の組織では鍵の作成が既定で禁止されていたため、プロジェクト単位で一時的に解除しました。鍵を作った直後に、「親のポリシーを継承」に戻しています。

サービスアカウントキーの作成を無効化するポリシー編集画面でポリシーのソースを設定する画面
サービスアカウントキー作成の無効化画面で、ポリシーのソースから「親のポリシーを継承する」等の適用方法を選択して保存します

ポリシーの変更は、反映まで最大15分かかることがあります。少し時間をおいて見直すと確実です。

感想:鍵を作ったあと、組織ポリシーを「親のポリシーを継承」に戻したときの気持ち

誰でも鍵を作って使える状態を制限してあるのは、GCPのセキュリティが堅牢だと感じる証拠だと思います。作業者側は少し手間に感じるかもしれないが失うものの大きさに比べれば取るに足らない事だと思うので「開けたら閉める」を意識する事を学べたなと思います。

鍵が漏れた疑いがあるときの動き方は「よく聞かれる点」へ。

Gatewayを外に開けない:loopbackのまま入る

2つ目の持ち場はGatewayです。OpenClawの受付にあたる部分で、4か所の中でも中心になります。

Gatewayの待ち受け先(bind)は、既定で「loopback」です。loopbackとは、同じ機械の中からだけ接続できる状態を指します(OpenClaw:Network exposure)。

たとえばVPSの中のコマンドからは届きますが、インターネット上のほかの機械からは直接つなげません。

わかりやすく言うと、玄関は閉めたまま、合鍵を持つ人だけが専用の通路から入る形です。その通路が、SSHトンネルやTailscale Serveです。

待ち受けの形届く範囲公式の扱い
loopback(既定)同じ機械の中だけ推奨。このまま使う
LANなど外向きの待ち受けほかの機械からも届く認証と、本物のファイアウォールが前提
0.0.0.0で認証なしどこからでも届く絶対にしない

OpenClaw Gatewayを外部公開したくなったら、まずこの表を見返してください。公式は、LANでの待ち受けよりTailscale Serveを勧めています。Gatewayはloopbackのままで、接続の管理はTailscaleが受け持つためです。

認証は既定で必須

Gatewayの認証は、既定で必須です。有効な認証がないと、Gatewayは接続を受け付けません。

トークン(合言葉にあたる文字列)は、次のコマンドで作れます。

openclaw doctor --generate-gateway-token

24文字より短いトークンは、openclaw security audit で警告が出ます。生成したものを使うと安心です。

ブラウザからGatewayへ接続するために必要なシークレットトークンの入力と取得手順を案内する画面
Gatewayへのアクセス時に要求される認証画面であり、CLIで取得した認証トークンをシークレット欄に入力して接続を行います。

外から使うときの入り方

公式のリモート接続の説明には、”Loopback + SSH/Tailscale Serve is the safest default” とあります。外に開けず、通路だけを用意する考え方です。

SSHトンネルは、手元のパソコンとVPS内のGatewayを、SSHの暗号化した通路でつなぐ方法です。

公式の例と同じ形で書くと、次のとおりです。

ssh -N -L <PORT>:127.0.0.1:<PORT> <user>@<vps>

-N は、通路だけを作ってコマンドは実行しない指定です。<PORT> にはGatewayのポート、<user> と <vps> にはVPSのユーザー名と接続先が入ります。

  1. 条件:パソコンから管理画面やコマンドを使いたい 行動:SSHトンネルで入る
  2. 条件:スマホなど複数の端末から、決まった相手だけで使いたい 行動:Tailscale Serveを検討する
  3. 条件:どうしてもLANで待ち受けたい 行動:認証を有効にし、接続元を絞る
ターミナルでopenclaw gateway statusコマンドを実行し、稼働状況や設定ログを確認した画面
openclaw gateway statusコマンドを実行し、Gatewayサービスの起動状態や接続ポート、稼働ログの保存先などを確認している様子です。

Discordの公開範囲と月1回の点検表

3つ目の持ち場は、Botに話しかけられる相手と場所です。私はDiscordを、自分専用のサーバーで使っています。

既定と、公式が勧める基準

OpenClawのDiscord連携には、最初から絞る方向の既定があります(OpenClaw:Discord access control)。

項目既定・公式の基準意味
サーバー内の応答メンション時だけ(requireMention で切り替え)@で呼ばれない限り反応しない
DMdmPolicy は「pairing」知らない相手には承認を求める。ほかに allowlist/open/disabled
サーバーの受け入れ方針channels.discord がある場合の安全な基準は「allowlist」登録したサーバーだけで動く
チャンネルの指定チャンネルを登録すると、それ以外は拒否登録した部屋でだけ応答する
相手の指定名前よりIDが安全名前やタグだと監査で警告が出る

たとえば記帳用のチャンネルを1つだけ登録すると、ほかのチャンネルでは応答しません。

Discord Botを自分だけで使うなら、「自分専用サーバー+登録チャンネル+IDで指定」が公式の基準に沿った形です。

もう1つ、Botトークンの重複です。

私は同じトークンを2か所に設定していましたが、片方は自動で無効になっていました。公式によると、監視は1つだけ起動し、重複側は無効と表示されます。

動作に害はありませんでした。とはいえ、どちらの設定が生きているか迷わないよう、1つにまとめておくのがおすすめです。

月1回の点検表(おすすめのリズム)

公式に「毎月」という決まりはありません。OpenClawは設定変更後の監査を、Googleは90日ごとの鍵の入れ替えを勧めています。

その両方に間に合うよう、月1回をおすすめのリズムとしました。

  •  openclaw security audit を実行する(くわしく見るなら --deep を付ける)
  •  Gatewayの待ち受けが「loopback」のままか
  •  使っていない鍵が、無効化または削除されているか
  •  使っている鍵が、作ってから90日以内か
  •  記入先のシートの共有が、記帳用アカウント1つだけか
  •  組織ポリシーが「親のポリシーを継承」のままか
  •  Discordの allowlist とメンションの設定が残っているか
  •  ~/.openclaw が700、openclaw.json が600になっているか

700と600は、OpenClaw公式が勧める値です。--fix を付けると、こうしたファイル権限は自動で締めてくれます。

ただし、--fix はトークンや鍵の入れ替えはしません。Gatewayの待ち受けや公開範囲も変えないため、そこは表を見ながら自分で確かめます(OpenClaw:security CLI)。


よく聞かれる点

スマホから使うのに、ポートを開けなくて大丈夫?

大丈夫です。この記帳の使い方なら、スマホからはDiscordに画像を送るだけで、BotはVPSの中からDiscordへつなぎに行きます。Gatewayのポートを開ける必要はありません。

管理画面などを外から開きたいときだけ、公式が最も安全な既定とする「loopbackのまま、SSHトンネルかTailscale Serveで入る」形を使います。

鍵が漏れたかもと思ったら?

Googleは、漏れた疑いがある鍵はすぐに入れ替えるよう勧めています。新しい鍵に差し替え、古い鍵を無効化してから削除する順番です。

  1. 条件:サービスアカウントの鍵が漏れたかもしれない 行動:Googleの節の5ステップで、新しい鍵に差し替える
  2. 条件:Gatewayのトークンが漏れたかもしれない 行動:新しいトークンを設定し、接続する側も更新して、古いトークンが使えないことを確かめる
これで完全に安全?

いいえ。ここまでの設定は、リスクを下げるためのものです。何かあっても届く範囲を小さくし、気づきやすくする位置づけです。

OpenClawもGoogleも、仕様は更新されていきます。点検表を定期的に通し、公式の案内とずれていないか確かめ続けることが大切です。


まとめ

  • Googleは、記帳専用のアカウント1つとシート1枚に絞る
  • 鍵は期限ではなく入れ替えで管理し、不要な鍵は無効化してから削除する
  • 鍵とトークンはVPS上の設定に置き、スキルには書かない
  • Gatewayはloopbackのまま、SSHかTailscale Serveで入る
  • Discordは自分専用サーバーで、allowlistとメンション、IDでの指定を基準にする

まずは点検表を1回、通してみてください。費用の内訳と抑え方は、シリーズ4本目でまとめます。

私たちは挑戦者です。安心して使い続けられる形を、一緒に整えていきましょう。

OpenClaw セキュリティ,OpenClaw 安全 設定,OpenClaw VPS セキュリティ,OpenClaw Gateway 外部公開,サービスアカウント 権限 最小,サービスアカウントキー ローテーション・不要なキー 削除,Discord Bot 自分だけ 使う,スマホから使うのにポートを開けなくて大丈夫?,鍵が漏れたかもと思ったら?,これで完全に安全?

OpenClawのセキュリティ設定:記帳Botで絞った4か所と月1回の点検表で安全に使う方法

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

始めまして。このブログを運営するTomoyaです。
未経験個人開発者。AI×個人開発(Vibe Cording)で学習して参入してくれる人が増えて広がっていくと良いなと思って始めました。

実際に作成→デプロイ(公開)→運営を行ってそれについての問題や疑問を記録していきます。
また行っていく上で内容(セキュリティ・制限など)にもこだわっていきたいなと思っています。

コメント

コメントする


目次