Add Secret Store Support
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
調査の方向性
stubs/wit_world/imports/secret_store.py の WIT bindings から始め、要求されている SecretStore API と Secret API を、文書化されている Fastly Secret Store の動作と比較します。@on_viceroy と inline の test.toml secret-store データを使って Viceroy のカバレッジを追加します。リソースラッパー、dict のようなアクセス、プレーンテキストのメソッド、そして秘密情報を漏らさない文字列表現がカバーされていれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Overview
Add support for Fastly's Secret Store, providing secure access to sensitive credentials and secrets at the edge.
WIT Interface
interface secret-store {
resource secret {
from-bytes: static func(bytes: list<u8>) -> result<secret, error>;
plaintext: func(max-len: u64) -> result<list<u8>, error>;
}
resource store {
open: static func(name: string) -> result<store, open-error>;
get: func(key: string) -> result<option<secret>, error>;
}
}
WIT bindings: stubs/wit_world/imports/secret_store.py
API Design
- Implement
SecretStoreresource wrapper - Implement
Secretresource withplaintext()andplaintext_str()methods - Override
__str__and__repr__to return"<Secret>"to prevent accidental exposure in logs - Provide dict-like interface:
__getitem__,__contains__ from_bytes()available but discouraged (for API compatibility when secrets come from non-store sources)
Cross-SDK Comparison:
-
Rust:
SecretStore::open()withget()(panics),try_get()(fallible),contains().Secrethasplaintext()returningByteswith lazy decryption/caching. Warns against bringing secrets into memory unnecessarily. -
Go:
Open()returns*Store,Get()returns*Secret.Plaintext()decrypts to[]byte. IncludesSecretFromBytes()for non-store secrets and conveniencePlaintext(storeName, secretName)one-liner. -
JS:
new SecretStore(name), asyncget()returnsSecretStoreEntry | null. Entry hasplaintext()(UTF-8 string) andrawBytes()(Uint8Array). StaticfromBytes()for creating entry from raw data.
Recommended Python approach:
- Dict-like access:
store[key]raises if not found,store.get(key, default=None)returns None if missing - Secret object with lazy
plaintext()returningbytes, optionalplaintext_str()for UTF-8 text - Consider context manager for secrets to encourage memory cleanup
- Security warnings in docstrings about keeping secrets in memory
Viceroy Testing
Viceroy supports Secret Store with inline or file-based test data via test.toml:
[local_server]
# Inline secrets
secret_stores.my_secrets = [
{key = "api_key", data = "secret-value-123"},
{key = "cert", file = "path/to/cert.pem"},
{key = "from_env", env = "MY_ENV_VAR"}
]
# Or JSON file format
secret_stores.json_secrets = { file = "data/secrets.json", format = "json" }
Secrets can be provided inline, from files, or from environment variables. Tests can use @on_viceroy with inline TOML configuration.
Reference
- 主要言語
- Python
- スター
- 5
- フォーク
- 1
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
fastly/compute-sdk-python のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
fastly/compute-sdk-python#116 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
fastly/compute-sdk-python#98 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
fastly/compute-sdk-python#74 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
fastly/compute-sdk-python#61 ·
-
fastly/compute-sdk-python#60 · 担当者 1 名 ·
fastly/compute-sdk-python の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
xinnan-tech/xiaozhi-fde-talk#263 ·
-
rules
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
huggingface/Repo2RLEnv#163 · コメント 1 件 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 95/100
huggingface/sentence-transformers#4074 ·
-
comp/dashboard invalid P3
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
NousResearch/hermes-agent#121143 ·