自動化
2026年2月28日
郷将輝
n8nのCredential(認証情報)の安全な管理方法と、APIキー漏洩を防ぐベストプラクティスを解説します。
#n8n
#automation
#workflow
#API
#DX

n8nでワークフローを構築する際、私たちは様々なサービスのAPIキーやパスワードを扱います。Google、Slack、AWS、OpenAI…。これらは、あなたのビジネスの根幹に関わる重要な情報への「鍵」です。
もし、この「鍵」がワークフローのファイル内にハードコード(直接記述)され、誤ってGitHubの公開リポジトリにプッシュされてしまったら…?
悪意のある第三者にその鍵を拾われた瞬間、あなたのアカウントは乗っ取られ、顧客データは抜き取られ、APIは不正利用されて高額な請求が届くかもしれません。これは、決して大げさな話ではないのです。
自動化が強力であるほど、その権限管理はより一層重要になります。n8nには、こうした機密情報を安全に取り扱うための仕組み「Credential(クレデンシャル)」が備わっています。
この記事では、なぜCredential管理が重要なのかという基本的な考え方から、n8nでの具体的な設定方法、そしてセルフホスト環境でさらにセキュリティを高めるためのベストプラクティスまでを、徹底的に解説します。安全な運用知識は、あなたの自動化資産を守るための最強の盾となります。
ワークフローのCodeノードやHTTP Requestノードに、APIキーを直接書き込むのは非常に危険です。その理由は以下の通りです。
n8nのCredentialは、これらの問題を解決するために、機密情報を暗号化して一元管理する仕組みを提供します。
n8nで機密情報を扱う際は、必ずCredential機能を利用しましょう。
これだけで、入力した情報はn8nのデータベースに暗号化されて保存されます。Credentialには一意のIDが割り振られ、ワークフローからはこのIDを通じて間接的に情報を参照することになります。
各サービスノード(例:OpenAIノード)には、Credentialを選択するドロップダウンメニューがあります。ここで先ほど作成したCredentialを選択するだけで、ノードは安全にAPIキーを内部で利用してくれます。
ワークフローのJSONファイルには、CredentialのIDが記録されるだけで、APIキーそのものが含まれることはありません。これにより、ワークフローファイルを安全に共有・管理できます。
セルフホストでn8nを運用する場合、さらにセキュリティレベルを高めるための設定が推奨されます。
Credentialの値を、n8nの画面上ではなく、サーバーの環境変数から読み込むように設定する方法です。これにより、n8nの管理者権限を持つユーザーからも、実際のキーの値を隠蔽できます。
設定方法:
Credentialの作成: Credential作成画面で、APIキーを入力する代わりに、{{ $env.YOUR_ENV_VARIABLE_NAME }} のように記述します。例えば、OpenAIのAPIキーなら {{ $env.OPENAI_API_KEY }} とします。
環境変数の設定: n8nを起動しているサーバー(またはDockerのdocker-compose.ymlファイル)で、環境変数を設定します。
docker-compose.ymlでの例:
services:
n8n:
image: n8nio/n8n
# ... other settings
environment:
- OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
# ... other environment variablesこのように設定することで、APIキーの実体はサーバーの環境変数ファイルでのみ管理され、n8nのワークフローやデータベースからは完全に分離されます。Gitで管理すべきはdocker-compose.ymlファイルではなく、ワークフローファイルのみ、という運用が徹底しやすくなります。
encryptionKeyの固定n8nは、Credential情報を暗号化するためのマスターキー(encryptionKey)を自動生成します。しかし、このキーが失われると、全てのCredentialが復号できなくなってしまいます。セルフホスト環境では、このキーを自分で生成し、環境変数で固定しておくことが強く推奨されます。
設定方法:
openssl rand -hex 32 などのコマンドで、強力なランダム文字列を生成します。docker-compose.yml のenvironmentセクションに、N8N_ENCRYPTION_KEY として生成したキーを設定します。これにより、n8nのコンテナを再作成したり、サーバーを移行したりする際にも、同じキーを使い続けることで、Credential情報を失うことなく安全に引き継ぐことができます。
便利な自動化も、安全な運用が伴ってこそ真価を発揮します。
N8N_ENCRYPTION_KEYを自分で設定・管理することは、安定した長期運用のために不可欠。これらのベストプラクティスを実践することは、面倒な作業に思えるかもしれません。しかし、一度設定してしまえば、将来起こりうる深刻なセキュリティインシデントから、あなたとあなたのビジネスを守るための強力な保険となります。安全な土台の上で、心置きなく自動化の世界を探求してください。