Developer Security
6分

.envファイルをチームメンバーに安全に共有する方法

SlackやLINEでデータベースのパスワードやAPIキーを送っていませんか?.envファイルを安全にチームへ共有するための実践ガイドをまとめました。

LOCK.PUB
.envファイルをチームメンバーに安全に共有する方法

.envファイルをチームメンバーに安全に共有する方法

「LINEで送っておくね」

新しいエンジニアがチームに加わりました。ローカル環境のセットアップ中に、こう聞いてきます。

「.envファイルもらえますか?」

よくある光景です。先輩エンジニアがLINEやSlackのDMで、データベースのパスワードやAPIキー、サードパーティのシークレットをそのまま貼り付けて送信。そのメッセージはトーク履歴にずっと残り続けます。

これは想像以上に危険な行為です。

.envファイルを安易に共有してはいけない理由

.envファイルには、漏洩すると致命的な情報が詰まっています。

  • データベース接続情報 — ホスト、ポート、ユーザー名、パスワード
  • APIキー — Stripe、AWS、Firebaseなど、不正利用されると課金が発生するサービスのキー
  • サードパーティシークレット — OAuthクライアントシークレット、Webhookの署名キー
  • 内部サービストークン — マイクロサービス間の認証トークン

LINEやSlackで送ったメッセージはサーバーに保存されます。ワークスペースへのアクセス権がある人なら誰でも検索で見つけられますし、退職したメンバーの端末にも残っている可能性があります。

よくある(しかし危険な)共有方法

方法 リスク
Slack / LINE DM プロバイダーのサーバーに何年も保存されることが多く、Slackでは管理者がエクスポートやeDiscoveryで参照可能
メール添付 メールサーバーに保存、転送される可能性
Google Docs リンク漏洩で誰でもアクセス可能、変更履歴に残る
Gitにコミット 削除してもgit logに履歴が残る、ボットが数秒でスキャン
Notion / Confluence ページはデフォルトでワークスペース全体に公開されることが多く、制限しない限り期限切れにならない

特にGitへの誤コミットは最も深刻です。GitHubにプッシュされたシークレットは、自動ボットが数秒以内にスキャンします。

.envファイルを安全に共有する方法

1. シークレットマネージャーの導入

Doppler、HashiCorp Vault、AWS Secrets Managerなどの専用ツールを使えば、環境変数を一元管理でき、メンバーごとのアクセス権限制御や監査ログも利用できます。チーム規模が大きい場合の理想的な選択肢です。

2. チーム向けパスワードマネージャー

1Password TeamsやBitwarden Organizationの共有ボルトに.envの内容を保存すれば、権限のあるメンバーだけが閲覧でき、エンドツーエンドで暗号化されます。

3. パスワード付きワンタイムメモ

新メンバーのオンボーディングなど、一度だけ素早く共有したい場面では、LOCK.PUBの秘密メモ機能が便利です。.envの内容をメモに貼り付け、パスワードを設定し、1回だけ開ける設定か有効期限(どちらもPro)を付けます。リンクはSlackで、パスワードはLINEで別経路で共有します。その後はリンクが開けなくなるので、Slackに残るのは開けないリンクだけで、認証情報は残りません。Proでなくても、ワンタイムシークレットなら最初のワンタイムメモを無料で送れます。

4. GPG暗号化ファイル

セキュリティ意識の高いチームなら、.envファイルをGPGで暗号化してから共有する方法もあります。ただし、全メンバーがGPGキーの管理に慣れている必要があります。

.env管理のベストプラクティス

  1. .gitignoreに即座に追加 — プロジェクト作成直後に最初にやるべきことです。
  2. .env.exampleファイルを用意 — プレースホルダー値で構造だけを共有します。
  3. 環境ごとに異なる認証情報を使用 — 開発、ステージング、本番で同じキーを使い回さないこと。
  4. 定期的なシークレットローテーション — 最低でも四半期に一度、キーを更新しましょう。
  5. 退職時に即座にアクセス権を取り消す — メンバーが離れたら、そのメンバーがアクセスしていたすべてのシークレットを速やかに更新します。

今すぐできる設定

.gitignoreに以下を追加してください。

# 環境変数
.env
.env.local
.env.*.local

そして、.env.exampleを作成してドキュメントとして機能させます。

# .env.example
DATABASE_URL=postgresql://user:password@localhost:5432/mydb
STRIPE_SECRET_KEY=sk_test_xxxxxxxxxxxx
FIREBASE_API_KEY=your_firebase_api_key_here
NEXT_PUBLIC_BASE_URL=http://localhost:3000

このファイルをリポジトリにコミットしておけば、新しいメンバーが必要な変数を一目で把握できます。

シークレットをプレーンテキストで送るのをやめよう

.envファイルの共有は些細なことに見えますが、認証情報漏洩の最も一般的な原因の一つです。本格的なシークレットマネージャーを導入するにせよ、LOCK.PUBで有効期限付きのメモとして共有するにせよ、大切なのはチャットにシークレットを平文で貼り付ける習慣を断つことです。

今すぐSlackやLINEのトーク履歴でDATABASE_URLやAPI_KEYを検索してみてください。予想以上の結果が出てくるかもしれません。

メモを作成

メモを作成

キーワード

.envファイル 安全に共有
環境変数 チーム共有
開発者 シークレット管理
.envファイルをチームメンバーに安全に共有する方法 | LOCK.PUB Blog