Variáveis de ambiente de app
OpenFactory pode armazenar valores de ambiente no escopo de app e conta, criptografá-los at rest e renderizá-los em VM candidata de app durante deploy. É store de segredos file-backed inicial, não vault gerenciado.
Escopo e precedência
- Valores de conta são defaults reutilizáveis para todo app owned pela conta.
- Valores de app sobrescrevem valores de conta com mesmo nome.
- Valores managed são escritos por token producer configurado e registram producer que possui chave.
- Valor alterado incrementa
env_version; deploy bem-sucedido registra versão aplicada. Diferença significa redeploy necessário.
Nomes devem ser identificadores de ambiente maiúsculos, limitados a 128 caracteres, e não podem usar prefixo reservado OPENFACTORY_. Valores de usuário limitam-se a 8 KiB e app limita-se a 100 chaves.
Fluxo MCP
Operações de list sempre mascaram valores. Revele um valor só quando necessário:
set_app_env(
app_id="550e8400-e29b-41d4-a716-446655440000",
set={"API_BASE_URL": "https://api.example.internal"}
)
list_app_env(app_id="550e8400-e29b-41d4-a716-446655440000")
reveal_app_env(
app_id="550e8400-e29b-41d4-a716-446655440000",
name="API_BASE_URL"
)Mesmo padrão disponível como set_account_env, list_account_env e reveal_account_env. Set/delete no nível de app retornam env_version e redeploy_hint; definir valor não muta VM em execução.
Superfície REST
| Method | Path | Purpose |
|---|---|---|
GET | /api/apps/{app_id}/env | Masked app-key list and version state |
PUT | /api/apps/{app_id}/env | Transactional set/delete for app keys |
POST | /api/apps/{app_id}/env/reveal | Audited plaintext reveal of one app key |
GET | /api/account/env | Masked account-key list |
PUT | /api/account/env | Transactional set/delete for account keys |
POST | /api/account/env/reveal | Audited plaintext reveal of one account key |
PUT | /api/apps/{app_id}/env/managed | Configured producer publishes managed keys |
DELETE | /api/apps/{app_id}/env/managed/{name} | Producer removes a managed key it owns |
Superfícies de usuário aplicam contexto de owner resolvido. Endpoints managed usam credencial bearer <kid>.<secret> do arquivo producer-token configurado pelo operador; sem esse arquivo API producer retorna unavailable.
Comportamento no deploy
Durante deploy, backend descriptografa valores de conta, sobrepõe valores de app, adiciona campos runtime da plataforma e escreve /etc/openfactory/app.env na VM com mode 0600. Processo é iniciado com esse arquivo como ambiente. Se descriptografia, entrega de arquivo ou startup falhar, candidato não é promovido.
Limite de segurança
- Valores armazenados usam criptografia Fernet. Operador deve fornecer e proteger
OPENFACTORY_ENV_MASTER_KEY; perder ou substituir torna valores existentes indescritografáveis. - Respostas de list são mascaradas. Reveals e mutações explícitas appendam evento de auditoria JSONL.
- Storage e trilha de auditoria atuais são arquivos locais. Não fornecem chaves hardware-backed, aprovação multi-party, logging tamper-evident, rotação automática nem garantia de disaster-recovery.
- Logs de aplicativo e deploy ainda não fornecem limite completo de redação de segredo. Processo que imprime ambiente, URL com credencial ou segredo em erro pode expor em logs e evidência de teste.
Por isso não use este store preview para credenciais de produção até deployment ter controles de acesso independentes, testes de backup e restore, validação de redação de logs, regras de retenção e procedimento documentado de rotação de chaves. Nunca coloque segredos em receitas, código-fonte, comandos, URLs, descrições de teste ou expectativas de asserção.
Veja App deployment para fluxo de promoção de candidato.