ウェブサイト
サイト用のアプリシークレットの保存
The Secrets tab is an encrypted store for the sensitive configuration values a Node.js app needs, such as API keys, signing secrets and third-party tokens, kept per environment so your production…
アプリシークレットの保存
The Secrets タブは、Node.js アプリが必要とする API キー、署名シークレット、サードパーティトークンなど、機密構成値の暗号化されたストアです。環境ごとに保持されるため、本番環境の認証情報とプレビュー環境の認証情報が混在することはありません。
シークレットの保存場所
Websites を開き、サイトをクリックして、サイトタブストリップの Advanced メニューを開き、Secrets を選択します。タブは Secrets というタイトルです。
このタブは Node.js サイトにのみ表示されます。WordPress、PHP、静的サイトでは表示されません。これらのサイトでは設定がディスク上のファイルに保存されるためです: WordPress の場合は wp-config.php、単純な PHP アプリの場合はフレームワークが読み込むファイルです。

値がどのように保護されるか
すべての値は、データベースに保存される前に暗号化されます。読み取り可能なテキストとして保存されるものはなく、リスト表示には完全な値は表示されません。最後の 4 文字のみを示すマスクが表示されるため、2 つの同様のキーを区別できます。
各行には Encrypted ピルが付いており、これを思い出させるためのものです。値を読み戻すことは、ページを開くことによって自動的に発生するのではなく、別の意図的なアクションです。
シークレットの設定、表示、削除にはすべて sites:write 権限が必要です。読み取り専用チームメンバーは、どのキーが存在し、そのマスクが何かを確認できますが、その値は確認できません。
2 つの環境
ページの上部のセグメント化されたコントロールで、production と preview を切り替えます。これらはまったく別のキーセットです。production で STRIPE_SECRET_KEY を設定しても preview では作成されず、preview から削除しても production には影響しません。
この分離がこの機能の目的です。プレビュービルドは一時的な環境であり、リポジトリにアクセスできる誰もがトリガーできるため、ライブ認証情報ではなく、テスト認証情報を使用する必要があります。プレビュー環境がどのように作成されるかについては、Preview Deploys For Pull Requests を参照してください。
シークレットの追加または更新
- セグメント化されたコントロールで環境を選択します。
- KEY_NAME フィールドに名前を入力します。このフィールドは入力時に大文字を強制します。
- 値を 2 番目のフィールドに入力します。入力時にマスクされます。
- Set をクリックします。
既に存在するキーを設定すると、それが上書きされます。個別の編集アクションはなく、上書きの確認ステップもないため、Set をクリックする前に環境タブを確認してください。
キー名ルール
キーは大文字で始まる必要があり、その後大文字、数字、アンダースコアを含むことができ、最大 128 文字です。DATABASE_URL、API_KEY_V2 および SENTRY_DSN はすべて有効です。それ以外は Key must be UPPER_SNAKE_CASE letters/numbers/underscore というメッセージで拒否されます。
知っておく価値のある他の 2 つの制限があります:
- 値は空にすることはできません。空白の値を送信すると value required が返されます。
- 値は 16 KB を超えることはできません。これはトークンには十分ですが、たとえば完全な証明書チェーンには十分ではなく、シークレットではなくファイルに属します。
値を読み戻す
行の Copy をクリックします。KPanel はサーバー側で値を復号化し、Value copied to clipboard の確認とともにクリップボードに直接配置します。値は画面に印字されないため、画面共有またはショルダーサーフィンでは取得されません。
すべての表示は、サイトの監査証跡に記録されます。誰がどのキーを操作したかが記録され、Site Activity Log に表示されます。
値が正しいか確認する必要があるが、値を公開したくない場合は、代わりにマスクを比較してください。最後の 4 文字は正しいトークンを持っていることを確認するのに十分であり、既に画面に表示されています。
アプリケーションでシークレットを使用する
値を、アプリケーションがサーバー上の構成を読み込む場所にコピーします。Node.js アプリの場合、通常これはプロセスマネージャーによって設定される環境変数、またはコードが起動時に読み込む .env ファイルです。
このファイルをリポジトリにコミットしないでください。作成する前に .env を .gitignore に追加してください。git リモートにプッシュされたシークレットは漏洩として扱われ、ファイルを削除した後も履歴に残り続けるため、プロバイダーでローテーションする必要があります。
Secrets タブは、値が暗号化され監査される記録で、パスワードマネージャーのメモまたはメッセージスレッドではありません。それを真実のソースとして保つことが重要です。プロバイダーでキーをローテーションする場合は、同時にここも更新して、次にデプロイする人が現在の値を持つようにしてください。
シークレットの削除
行の Delete をクリックします。KPanel は Delete {KEY}? で確認を求め、アプリが次回の再起動時にこの値へのアクセスを失うことを警告します。元に戻すことはできず、コピーも保持されないため、後で値が必要になる可能性がある場合は、最初にコピーしてください。
基礎となる認証情報がプロバイダーで失効した場合、またはそれを使用していたコードが削除された場合は、シークレットを削除します。古いキーを放置しておくと、後でどのキーが実際に重要かを判断するのが難しくなります。
認証情報を安全にローテーションする
安全な順序は常に次の通りです: プロバイダーで新しい認証情報を作成し、ここで更新し、デプロイし、アプリが機能することを確認してから、プロバイダーで古い認証情報を失効させます。
反対の順序で実行すると、失効させると、実行中のアプリが無効な認証情報を保持している期間が生じ、それを必要とするすべてのリクエストが失敗します。変更がリスクの場合は、最初にバックアップを作成して、既知の良好な状態に戻すことができるようにしてください: Taking a Backup を参照してください。
トラブルシューティング
Secrets タブがメニューにない。 サイトが Node.js サイトではありません。ページの上部にあるサイト名の横にあるスタックピルを確認してください。
Set ボタンが動作しない。 両方のフィールドが必須です。どちらかが空の場合、ボタンは Key + value required を報告します。
キーが拒否された。 小文字、ハイフン、ドット、スペースは許可されていません。api-key および Api_Key は両方とも失敗します。API_KEY は成功します。
Copy がクリップボードに何も配置しなかった。 一部のブラウザーは非アクティブなタブでのクリップボード書き込みをブロックします。最初にページをクリックしてから、もう一度 Copy をクリックしてください。
次へ進む場所
- Preview Deploys For Pull Requests, production と preview の分割のもう半分です。
- Git Deploy For a Site これらの値を読み込むコードをプッシュするため。
- Site Activity Log シークレットを設定、表示、削除した人を確認するため。