n8nのワークフローを他人に渡すときに認証情報をダミーに書き換えるJS

柴田

あっぶね…このn8nのワークフロー、人にあげるつもりだったけど、よく見たらJSONに認証情報が入ってた…(←マジで危なかった)

AI

何やってるんですカ…。そんなあるあるな情報漏洩しないでくださいヨ…

柴田

いやぁ…しかし、この細かいJSONの中から認証情報だけ消して回るのか…賽の河原で石を積むが如し…

AI

オロカモノにはそれくらいの修行が必要ですネ。サッと認証情報消してくだサイ

柴田

お願いだ!手伝ってくれ!ていうか、認証情報だけ消す何かしらのプログラムを作ってくれ!

AI

ということで、n8nのワークフローJSONのお話です。

n8nは基本的にCredentialsに認証情報を持たせておけばワークフローを出力しても問題ないのですが、直書きしていたり、その他スプシのIDなど、残しておくと気持ち悪い情報がn8nのワークフローJSONの中にはあります。

今回はn8nのワークフローから認証情報や人に見せるのは嫌な情報を置き換えるJavaScriptコードを作ったので、シェアしていきます。

【この記事でわかること】

  • n8nのワークフローから個人情報をダミーに置き換えるJSコード
  • JSコードの使い方
  • ワークフローから個人情報をダミーに置き換える際の注意点
目次

さっそくコード

const fs = require('fs');

const inputFile = 'exported-workflow.json';
const outputFile = 'exported-workflow-clean.json';

let json = fs.readFileSync(inputFile, 'utf-8');

// 置換ルール: [正規表現, 置換後の文字列]
const replacements = [
  [/sk-ant-[a-zA-Z0-9_-]+/g, 'YOUR_ANTHROPIC_API_KEY'],
  [/AIza[a-zA-Z0-9_-]+/g, 'YOUR_GEMINI_API_KEY'],
  
  // スプシID用のルール
  [/("value":\s*")1[a-zA-Z0-9_-]{40,45}(")/g, '$1YOUR_SPREADSHEET_ID$2'],
  [/(\/d\/)1[a-zA-Z0-9_-]{40,45}(\/|#|")/g, '$1YOUR_SPREADSHEET_ID$2'],
  
  // GSCドメイン(ドメインプロパティ型:sc-domain:〜)
  [/(sc-domain:)[a-zA-Z0-9.-]+/g, '$1YOUR_DOMAIN'],
  
  // GSCドメイン(URLプレフィックス型・URLエンコード版:https%3A%2F%2F〜%2F)
  [/(https?%3A%2F%2F)[a-zA-Z0-9.-]+(%2F)/gi, '$1YOUR_DOMAIN$2']
];

let foundAny = false;

replacements.forEach(function([pattern, replacement]) {
  const matches = json.match(pattern);
  if (matches) {
    // キャプチャグループを使うためログの見え方は変わりますが、置換は正確に行われます
    console.log('置換マッチ:', matches, '→', replacement);
    json = json.replace(pattern, replacement);
    foundAny = true;
  }
});

fs.writeFileSync(outputFile, json, 'utf-8');

if (foundAny) {
  console.log('置換完了 →', outputFile);
} else {
  console.log('置換対象なし。そのままコピーしました →', outputFile);
}
}

使い方

基本的にターミナルで操作していきます。

JavaScriptを動かすためにNodeを入れないといけないので、事前に入れておいてください。

Nodeの入れ方【Windowsの場合】

Node.js公式サイト から「LTS(推奨版)」をダウンロードして、インストーラーの指示通りに次へ進めてインストールしてください。

Nodeの入れ方【Macの場合】

Macの場合はNodeのインストールもターミナルでやっつけた方が楽チンです。ターミナルを立ち上げて、

brew install node

と打ちます。これだけ。

これはHomebrewというパッケージ管理ソフトでNodeをインストールする、という方法です。

Nodeのアップデートがあっても「brew upgrade node」と打つだけでアップデートできます、便利。

もし「brewなんてコマンドはねぇぜ!(Homebrew自体が手元のPCにインストールされてない)」と言われたら、Homebrew公式サイトのトップページにある長めのコマンドをターミナルにコピペして、先にHomebrewをインストールしてください。

STEP
テキトーな場所にフォルダを作る

テキトーな場所にフォルダを作ります。

ターミナルを立ち上げたらそのユーザーのフォルダに降り立ちます。「ls→エンター」でどんなフォルダがあるか確認しつつ、必要であればcd でフォルダ移動しつつ…フォルダを作ってください。

フォルダ名は何でもいいですが、export-checkとでもしておきましょう。

柴田

例えば次のような感じでフォルダ確認&デスクトップに移動しつつ、mkdirでフォルダを作りましょう

ls (←ここにあるフォルダ一覧が出る)
cd Desktop(←例えばデスクトップに移動(change directory))
mkdir export-check(←これでデスクトップ下にexport-checkができる)

Windowsであれば(Macでもそうだけど)普通にデスクトップ等にフォルダを作ってもOKです。

ただし、最終的にターミナルで実行するので、「どこにフォルダ作ったっけ?」と迷子にならないようにしましょう。

STEP
フォルダ内にさっきのJSファイルを作る

Macであれば、そのままnanoというテキストエディタを開くのが手っ取り早いです。

nano check-export.js

先程のコードを貼り付けたら、ctrl+X(終了)→y(保存するか?と聞かれるのでyesのy)と入力して保存します。

Windowsであれば、notepadがいいですかね…パッと実験したらこれくらいしか立ち上がりませんでした。

notepad check-export.js

結局いつものメモ帳が開きますが、そこにコードを貼り付けて保存してください。

STEP
ダウンロードしたJSONファイルを同じフォルダに入れる

n8nのワークフローからダウンロードしたJSONファイルを同じフォルダに入れます。

で、JSで指定している名前「exported-workflow.json」に変更しておいてください。

柴田

この変更を忘れると「そんなファイルねぇよ?」っておこられます…

STEP
実行

準備ができたらJSファイルを実行します。

node check-export.js

exported-workflow-clean.jsonというJSONファイルが出力されれば成功です!

柴田

このexported-workflow-clean.jsonが、認証情報を抜いてダミーに書き換えたJSONファイルになります!

注意点.最後は自分でチェックをお願いします

今回のコードで置換できるのは

  • Claude API
  • Gemini API
  • スプシID
  • GSCのリクエスト内にある自分のドメイン

です。他の認証情報は抜けないので注意しておいてください。

柴田

さしあたって自分が使う認証情報だけ置換できるようにしただけなので…上記の認証が抜ければいいよー、という人は使ってみてください。ただし、ワークフローによっては思わぬキーとかが入ってたりするので、やっぱり最後のチェックはしてくださいね!もし「こういうのも抜けるようにしてほしい!」とかがあったら公式ラインXから連絡ください

【公式ラインQRコード】

まとめ

n8nのワークフローJSONから個人情報を抜き取るJavaScriptの紹介でした。

さすがにあのJSONファイルから手作業で抜くのは大変だし、なにより見落としがコワイです。

「プログラミングでの処理+人のチェック」のダブルチェックで大事な情報を守りましょう!

柴田

危なかったぜ…

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