Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Add Secret Store Support

Abierto
#50 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python
Área
backend, security

Línea de trabajo

Empieza por los bindings de WIT en stubs/wit_world/imports/secret_store.py y compara las API SecretStore y Secret solicitadas con el comportamiento documentado de Fastly Secret Store. Añade cobertura de Viceroy usando @on_viceroy y datos de secret-store de test.toml inline. Se considera completado cuando estén cubiertos los wrappers de recursos, el acceso similar a un dict, los métodos de texto plano y las representaciones de cadena que no filtren secretos.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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 SecretStore resource wrapper
  • Implement Secret resource with plaintext() and plaintext_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() with get() (panics), try_get() (fallible), contains(). Secret has plaintext() returning Bytes with lazy decryption/caching. Warns against bringing secrets into memory unnecessarily.

  • Go: Open() returns *Store, Get() returns *Secret. Plaintext() decrypts to []byte. Includes SecretFromBytes() for non-store secrets and convenience Plaintext(storeName, secretName) one-liner.

  • JS: new SecretStore(name), async get() returns SecretStoreEntry | null. Entry has plaintext() (UTF-8 string) and rawBytes() (Uint8Array). Static fromBytes() 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() returning bytes, optional plaintext_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

Lenguaje dominante
Python
Estrellas
5
Forks
1
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de fastly/compute-sdk-python

Todos los issues de fastly/compute-sdk-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.