Add Secret Store Support
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia con i bindings WIT in stubs/wit_world/imports/secret_store.py e confronta le API SecretStore e Secret richieste con il comportamento documentato di Fastly Secret Store. Aggiungi la coverage di Viceroy usando @on_viceroy e dati secret-store inline in test.toml. Il lavoro è completato quando sono coperti i wrapper delle risorse, l’accesso simile a un dict, i metodi per il testo in chiaro e le rappresentazioni stringa che non espongono segreti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- Python
- Stelle
- 5
- Fork
- 1
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di fastly/compute-sdk-python
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
fastly/compute-sdk-python#116 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
fastly/compute-sdk-python#98 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
fastly/compute-sdk-python#74 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
fastly/compute-sdk-python#61 ·
-
fastly/compute-sdk-python#60 · 1 assegnatario ·
Tutte le issue di fastly/compute-sdk-python
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
xinnan-tech/xiaozhi-fde-talk#263 ·
-
rules
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
huggingface/Repo2RLEnv#163 · 1 commento ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 95/100
huggingface/sentence-transformers#4074 ·
-
comp/dashboard invalid P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
NousResearch/hermes-agent#121143 ·