mcpField
E
encore-secret

encore-secret

github.com/encoredevセキュリティ30432 回インストール2 日前に更新
リポジトリ

encore-secret について

Encore アプリケーションでシークレットを宣言、読み取り、管理する方法を紹介します。機密設定を扱う開発者向けに、環境ごとの値とローカルでの上書きを説明します。

主な機能

  1. 01パッケージレベルでのシークレット宣言
  2. 02関数呼び出しによる値の取得
  3. 03環境タイプごとのシークレット設定
  4. 04ローカルファイルによる値の上書き

活用シーン

  1. 01API リクエスト用トークンの設定
  2. 02Webhook 署名シークレットの保存
  3. 03開発環境と本番環境で異なるシークレットを使用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/encoredev/skills --skill encore-secret

インストール後、Claude Code で/encore-secretを入力して読み込まれたか確認します。

詳細

Encore Secrets

手順

シークレットは、Encore によって管理される暗号化された環境スコープの値です。パッケージレベルで secret(name) を呼び出して宣言し、返された関数を呼び出して読み取ります。

import { secret } from "encore.dev/config";

// Package-level declaration
const stripeKey = secret("StripeSecretKey");

// Read inside a handler
async function chargeCustomer() {
  const key = stripeKey();        // <-- function call returns the value
  const stripe = new Stripe(key);
  // ...
}

シークレット名はアプリケーション全体でグローバルに一意です(同じ名前はどこでも同じ値に解決されます)。

値の設定

# Set per environment type
encore secret set --type prod StripeSecretKey
encore secret set --type dev StripeSecretKey
encore secret set --type local StripeSecretKey

環境タイプ: production(エイリアス prod)、development(エイリアス dev)、preview(エイリアス pr)、local。

ローカル上書き

encore secret set を経由せずにローカル開発を行うには、リポジトリのルートに .secrets.local.cue ファイルを作成します(gitignore に追加してください):

StripeSecretKey: "sk_test_local_..."
GitHubAPIToken:  "ghp_local_..."

一般的な使用パターン

// HTTP headers
const githubToken = secret("GitHubAPIToken");
const resp = await fetch("https://api.github.com/user", {
  headers: { Authorization: `token ${githubToken()}` },
});

// Webhook signature verification
const stripeWebhookSecret = secret("StripeWebhookSecret");
stripe.webhooks.constructEvent(rawBody, sig, stripeWebhookSecret());

// Connecting to a third-party SDK
const openaiKey = secret("OpenAIKey");
const openai = new OpenAI({ apiKey: openaiKey() });

ガイドライン

  • secret(...) は常にパッケージレベルで宣言し、関数の内部では決して宣言しないでください。
  • 読み取りは関数呼び出しで行います: stripeKey() であり、stripeKey ではありません。
  • encore secret set --type <env> を使用して、環境ごとに異なる値を設定してください。
  • シークレットの値を決してコミットしないでください。ローカル上書きには .secrets.local.cue を使用し、gitignore に追加してください。
  • 特に webhook 署名シークレットについては、encore-webhook スキルも参照してください。

コメント