mcpField
E
encore-go-secret

encore-go-secret

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

encore-go-secret について

Encore Goアプリで暗号化され環境ごとに管理されるシークレットを宣言・利用するためのスキルです。実行時の参照、環境別の値、ローカル上書き、Webhook署名用シークレットを説明します。

主な機能

  1. 01構造体フィールドでのシークレット宣言
  2. 02環境ごとの値の設定
  3. 03ローカルファイルによる上書き
  4. 04Webhook署名の検証への利用

活用シーン

  1. 01環境別のAPIキー設定
  2. 02ローカル開発時のシークレット上書き
  3. 03Webhookリクエスト署名の検証

インストール

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

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

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

詳細

Encore Go シークレット

手順

シークレットは Encore によって管理される、暗号化された環境スコープの値です。パッケージレベルの secrets 構造体として宣言します — Encore はフィールド名を読み取り、実行時にそれぞれを適切な値に解決します。

package email

var secrets struct {
    SendGridAPIKey string
    SMTPPassword   string
}

func sendEmail() error {
    apiKey := secrets.SendGridAPIKey
    // Use the secret...
    return nil
}

シークレットキーはアプリケーション全体でグローバルに一意です — SendGridAPIKey は、どのパッケージで宣言されても同じ値に解決されます。

値の設定

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

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

ローカルでの上書き

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

SendGridAPIKey: "SG.local-test-key"
GitHubAPIToken: "ghp_local_..."

一般的な使用パターン

package github

import (
    "context"
    "net/http"
)

var secrets struct {
    GitHubAPIToken string
}

func callGitHub(ctx context.Context) error {
    req, _ := http.NewRequestWithContext(ctx, "GET", "https://api.github.com/user", nil)
    req.Header.Set("Authorization", "token "+secrets.GitHubAPIToken)
    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        return err
    }
    defer resp.Body.Close()
    return nil
}
package webhooks

var secrets struct {
    StripeWebhookSecret string
}
// Verify Stripe signature using secrets.StripeWebhookSecret in a raw endpoint.

ガイドライン

  • シークレットは個別の secret(...) 呼び出しではなく、パッケージレベルの secrets 構造体として宣言してください。
  • フィールド名は encore secret set で設定したシークレット名と完全に一致させる必要があります。
  • 環境ごとに異なる値を設定するには encore secret set --type <env> を使用してください。
  • シークレットの値をコミットしないでください。ローカルでの上書きには .secrets.local.cue を使用し、gitignore に追加してください。
  • 特に Webhook 署名用のシークレットについては、encore-go-webhook スキルも参照してください。

コメント