Orbit
環境ごとに環境変数を設定する
Orbit lets you decide exactly which builds see which environment variables, so production credentials never end up in a publicly reachable branch preview. This guide covers how scope and precedence…
重要な理由
ブランチプレビューは公開URLを取得します。リンクを持つ誰でもそれを読み込むことができます。変数がすべての環境にスコープされている場合、そのプレビューのビルドに注入され、プレビューがそれで何をするにせよ、本番環境の認証情報を使って行われます。
このページが存在する理由はそれです。以下のすべては1つのルールに従うためです。本番環境のシークレットは本番環境スコープに属し、その他の場所には属しません。
スコープの仕組み
すべての変数にはスコープがあり、ビルド時に注入されるかを決定します。
| スコープ | 注入先 |
|---|---|
| すべての環境(プロジェクト全体) | このプロジェクトのすべてのビルド(制限しない限り) |
| 特定の環境オーバーライド | その環境のビルドのみ |
同じキーが両方のレベルに存在する場合、より具体的なものが優先されます。環境レベルのオーバーライドは、同じキーのプロジェクト全体変数に勝ります。Env varsページでは、All environmentsセクションのサブタイトルにこれが記載されています。プロジェクト全体変数はすべてのビルドで利用可能であり、環境レベルのオーバーライドが優先されます。
プロジェクト全体変数はオーバーライドにならずに絞り込むこともできます。Available inコントロールは3つの環境タイプ(production、staging、preview)を提供し、任意のものを選択解除できます。
スコープ付きの変数を追加する
- Orbitでプロジェクトを開き、Env varsタブをクリックします。
- 下部のAdd variableフォームまでスクロールします。
- KEYとvalueに入力します。
- Scopeドロップダウンを使用します。
- **All environments (project-wide)**はすべてのビルドに注入します。
- **[Environment name] only ([type] override)**はその環境のみにスコープします。
- プロジェクト全体を選択した場合、Available inボタンを使用してこの変数が到達しないべき環境タイプを選択解除します。
- 機密情報の場合はMark as secretをチェックします。
- Addをクリックします。
コミットする前に、フォームは何をしようとしているかを教えてくれます。オーバーライドはその環境のビルドのみに適用され、プロジェクト全体変数は他の場所でも適用されることを示すお知らせを表示します。制限付きプロジェクト全体変数は、どの環境タイプに注入されるかを正確に示します。
本番環境のみの変数を追加する
2つの同等のルート:
- Scopeドロップダウンで本番環境を選択します(緑色の
productionバッジが付いています)。または - スコープをAll environmentsのままにして、Available inの下の
stagingとpreviewを選択解除します。
どちらの場合でも、プレビューやステージングのビルドが実行されるときは変数は存在しません。
「存在しない」は存在しないことを意味し、空ではありません。プレビュービルドでprocess.env.STRIPE_SECRET_KEYを読むコードはundefinedを取得し、どのように書かれているかに応じてビルド時にスローするか、さらに悪いことに、静かに間違ったブランチを取得する可能性があります。プレビューには値がないのではなく、テストモード値を与えてください。
セーフパターン
ほとんどのプロジェクトでこれをきれいに解決するパターン:
- 本番環境スコープのみにスコープされたproduction認証情報を追加します。
- テストまたはサンドボックス値を保持する同じキーを持つ変数を、プロジェクト全体スコープで追加します。
本番ビルドはより具体的なスコープが優先されるため、本番スコープの値を取得します。プレビューとステージングはテスト値を取得します。どこにも未定義のものはなく、本番認証情報はプレビューに到達することはありません。
以下に適用します。
- 本番データベースURL
- 支払いプロバイダーシークレットキー、プレビューにはプロバイダーのテストキーを使用
- メール送信キー、プレビューが実際の顧客にメールを送信できないようにするため
- 管理者トークンと署名シークレット
- 呼び出しごとにコストがかかるもの
ステージングで本番環境変数を継承する
ステージング環境が本番環境に近く、いくつかの値をオーバーライドしたいだけの場合は、すべてを複製する必要はありません。
Settingsで、Staging: environment variablesを見つけ、Inherit production env varsをオンにします。本番変数はステージング固有のオーバーライドより低い優先度でステージングビルドにマージされるため、ステージングで明示的に設定したものはすべて優先されます。
継承は本番認証情報を含む本番値をステージングビルドにコピーします。ステージング環境が保護されている場合のみオンにしてください。ステージングはパスワードとIPアローリストの両方をサポートしており、SettingsのStaging: access protectionとStaging: IP allowlistセクションにあります。保護されていないステージング環境の継承をオンにすると、このページが説明している正確な露出を再作成します。
既存の変数を表示および編集する
Env varsタブは変数を以下にグループ分けします。
- 上部のAll environments、プロジェクト全体変数を保持
- 環境ごとの折りたたみ可能なセクション、その環境のオーバーライドを保持、いくつあるかの数を表示
その上に検索ボックスとSecrets onlyフィルターがあります。
各変数名の横のバッジはそれが到達する環境タイプを示します。productionとpreviewを示しているがstagingは示していない変数は、ステージングビルドから欠落し、そのバッジ行は長いリストを監査する最速の方法です。
編集アイコンをクリックして値を変更します。シークレット変数の現在の値は明らかにできず、置き換えることのみ可能です。
環境間でのコピーと比較
Copy variables between environmentsはスコープ間で一連全体をコピーします。FromとToを選択し、必要に応じてOverwrite variables that already exist in the targetをチェックし、Previewをクリックしてコミットする前に、追加、更新、スキップされるいくつが表示されるかを確認します。
Env sync checkページは本番環境とステージングをキー単位で比較し、一方にのみ存在するもの、異なる値を持つもの、一致するものを報告します。「ステージングは機能しているが本番環境ではない」、またはその逆の場合、正しい最初のストップです。
本番環境とステージング間で異なる値は、ほとんどのシークレットでは正常で予想されています。同期ページがそう言っています。探しているのは1つの環境に存在し、もう1つに存在しないキーです。
プロジェクト間で変数を共有する
複数のプロジェクトが同じ認証情報を必要とする場合、各プロジェクトに貼り付けるのではなく、envグループを使用します。Orbitに移動し、Env groupsを選択し、グループを作成し、変数を追加し、それが必要なプロジェクトをリンクします。
グループ変数はビルド時に注入され、優先度順の下部に位置します。プロジェクトレベルおよび環境レベルの変数の両方がグループ変数よりも優先されます。アカウント上に最大20個のグループを持つことができます。
グループを削除すると、リンクされたすべてのプロジェクトの将来のビルドからそれらの変数が削除されます。既に完了したビルドは影響を受けません。
一括インポート
Import .envボタンは貼り付けボックスを開きます。.envファイルを貼り付け、スコープを選択すると、Orbitは見つかった変数の数と、それが機密としてマークする数を報告します。SECRET、TOKEN、KEY、PASSWORDおよび同様の用語を含むキーは自動的にフラグが立てられます。Overwrite existing variables with the same keyオプションがあり、デフォルトではオフです。
Download .envは変数名のみのテンプレートを作成し、値はなく、独自の値を提供するチームメイトと共有するために使用します。
インポートダイアログでスコープを選択してからインポートをクリックしてください、その後ではなく。プロジェクト全体スコープで本番.env全体をインポートすると、すべての本番認証情報をプレビュービルドに1つのアクションで押し込み、修正は設定を変更することではなく、削除して再度追加することです。
ビルドが実際に受け取ったものを確認する
すべてのデプロイメントの詳細ページには、ビルド時に注入された環境変数キーがリストされ、現在の設定と比較されます。追加、変更、削除、変更なし。ティール色のキーは環境固有のオーバーライドから、灰色のキーはプロジェクトレベルからのものです。
値は保存または表示されることはありません。キーをホバーするとSHA-256フィンガープリントが表示され、値を明かさずに2つの環境が同じ値を保持していることを確認するのに十分です。
そのデプロイメントがビルドされた後に設定が変更された場合、ページはEnvironment variables updated since this deploymentのお知らせで言及し、変更は再デプロイするまで有効にならないことを思い出させます。
変数の変更は既にライブにあるデプロイメントには適用されません。これらはビルドが実行されるときに注入されます。アプリが依存するものを変更した後、再デプロイしてください。
関連資料
- 環境変数の基本、シークレット、フレームワークプレフィックスルール
- Orbitのブランチプレビューデプロイメントパブリックプレビューの仕組み
- ビルドログの表示ビルド時の変数diffについて