Armazenamento de objetosque mostra as contas.
O Lockwell é um armazenamento de objetos privado e cifrado, com API compatível com S3, API JSON nativa e SDKs oficiais para Go, Node e Java: um único binário, sem segunda base de dados, sem cola. As afirmações desta página são medições, e o repositório traz as ferramentas para as repetir.
- recuperação após crash, escritas confirmadas intactas
- 16 s
- disco usado para os mesmos bytes, vs MinIO
- 0.54x
- PUT multipart, 64 MiB com 64 clientes
- 2.2x MinIO
- suite de produção S3, 24 clientes SDK
- 0 falhas
- buckets públicos, leituras anónimas
- recusado
medido a 2026-06-11 · uma máquina, Docker Compose · metodologia · reproduzir: make bench · make prod-authority-test
Todos os pedidos passam pelo portão
Este é o modelo de segurança inteiro numa cena. Um pedido que apresenta uma chave de tenant passa, e o objeto fica selado e cifrado em repouso. Um pedido sem chave é recusado com 401. Não existe caminho anónimo para configurar com cuidado: não existe, ponto.
carries a tenant key: passes, sealed at rest sem chave: recusado no portão, 401
Partilhar continua a funcionar, pelo caminho seguro: gera-se um link assinado com prazo (um download de 7 dias para um cliente, um upload de uma hora no browser) e entrega-se. O link transporta a permissão, ninguém recebe chaves, e expira sozinho.
O argumento para substituir um MinIO que funciona
Benchmarks não movem um sistema em produção; contas mais baixas, menos peças móveis e uma saída segura, sim. Isto é o que muda no dia da troca, e a forma honesta de o confirmar sem arriscar nada.
Os mesmos bytes, cerca de metade do disco
Medido: 0,54x o disco do MinIO para um conjunto de escrita idêntico, antes ainda da deduplicação trabalhar sobre dados reais. O armazenamento é a rubrica que só cresce; isto reduz o declive para metade.
Multi-tenancy que não tem de construir
Isolamento por cliente, chaves com âmbito, quotas e registo de auditoria são trabalho do servidor, não uma camada de autenticação que a equipa escreve à volta de um bucket e mantém durante anos.
Conformidade incluída
Cifra em repouso sempre ativa, retenção e legal hold com Object Lock, auditoria, verificação e reparação, e ensaios de backup e restauro. A evidência que o auditor pede é o output normal do produto.
Um binário para operar
Sem base de dados externa, sem broker, sem cache para alimentar. Atualizar é substituir um binário; a recuperação é um ensaio que corre em CI, não uma página de wiki que ninguém testou.
A saída é padrão
Fala S3, por isso sair é um aws s3 sync. Um sistema de armazenamento de onde é fácil sair é o único tipo para onde vale a pena entrar.
Mantenha o MinIO a correr. Audite a mudança primeiro.
O planeador de migração lê o seu MinIO ou outro armazenamento compatível com S3 e recusa funcionalidades bloqueadas em vez de as deixar cair em silêncio. Corra o Lockwell ao lado da produção, copie com verificação e checkpoints, e troque apenas quando o próprio livro-razão o convencer.
O que as equipas realmente correm aqui
Três formas concretas, não personas. Cada uma é um tenant, meia dúzia de chaves com âmbito, e partes do servidor que já existem.
Entregas a clientes com links que expiram
Uma agência mantém cada cliente no seu próprio tenant. As entregas partilham-se por links assinados que morrem ao fim de sete dias: sem contas de cliente, sem bucket público, e a auditoria mostra cada download.
URLs assinados →Ficheiros de utilizadores num SaaS multi-tenant
Cada cliente é um tenant. Os browsers enviam diretamente para o armazenamento com URLs PUT assinados, os webhooks disparam o pipeline de miniaturas, e uma chave comprometida só consegue ver o mundo de um tenant.
O app kit →O arquivo que o auditor vai visitar
Faturas e registos entram sob retenção Object Lock com cifra sempre ativa. O ciclo de vida expira o que pode expirar, o legal hold congela o que não pode, e o ensaio de restauro prova que os backups são reais.
Object Lock →Veja a funcionar, depois confira a matemática
O terminal repete o ciclo de vida real contra a superfície real da CLI. As barras vêm da evidência de benchmark registada, e a ferramenta vem no repositório, por isso qualquer número pode ser repetido no seu próprio hardware.
Tudo o que a camada de armazenamento de uma app precisa
Provisionamento, uploads assinados, cifra, suporte edge e webhooks, tudo num servidor e num SDK. Não se cose um bucket, uma fila, um assinador e um cofre de segredos.
Provisionamento multi-tenant
Garanta que um tenant existe e gere uma chave nova com âmbito numa só chamada: leitura/escrita/remoção, âmbito opcional por bucket, segredo mostrado uma única vez. Cada tenant é isolado por omissão.
APIs nativa + S3 + admin
Um plano de dados JSON nativo, compatibilidade S3 SigV4 e uma API de administração JSON. Três superfícies sobre um servidor, alcançadas por um SDK. Fale com o armazenamento como a sua stack preferir.
URLs assinados para o browser
Assine um URL de upload ou download no servidor e entregue-o diretamente ao browser. A API nativa assina URLs de escrita, não só GET, por isso os bytes nunca passam pela sua app.
Pronto para o edge
Os clientes nativo e kit não importam nada de node:*, por isso correm em Cloudflare Workers, Vercel Edge, Bun e Deno através de uma entrada /edge dedicada, sem node:crypto.
Cifra sempre ativa
A cifra autenticada em repouso vem ligada por omissão: AES-256-GCM ou XChaCha20-Poly1305 sobre os dados, com chaves por tenant. Não há flag para esquecer.
Webhooks verificáveis
As notificações de bucket fazem POST para o seu endpoint com assinatura HMAC-SHA256 de tempo constante. O verifyWebhook valida a assinatura numa chamada, e corre no edge.
Três APIs sobre o mesmo armazenamento cifrado
O Lockwell expõe o mesmo armazenamento multi-tenant e cifrado através de três interfaces. Escolha a que servir, ou misture à vontade.
Encaixa onde o S3 já está
Autenticação SigV4, endereçamento path-style e virtual-host, versões, multipart, escritas condicionais, URLs pré-assinados, Object Lock, tags e ciclo de vida. O livro de paridade documenta cada operação, e o que ficar de fora falha fechado em vez de fingir.
Fale com o armazenamento em nativo
Um plano de dados JSON no listener público, sem assinatura SigV4 e sem XML. Os tokens bearer são gerados a partir das chaves de acesso e renovados por si. Os URLs assinados nativos cobrem GET e PUT.
Provisionar e gerir
Uma API de administração JSON autenticada por bearer num listener privado: tenants, chaves com âmbito, RBAC, auditoria e um documento OpenAPI. O provisionamento vive fora do plano de dados, por desenho.
Sem camada de armazenamento própria para manter
A stack habitual é um bucket, uma segunda base para metadados, um serviço de assinatura, um verificador de webhooks e a cola que os une. O Lockwell colapsa isso num servidor e num SDK: provisionar um tenant, obter um cliente com âmbito, assinar um upload de browser e verificar o webhook, de ponta a ponta, na mesma biblioteca, sobre o mesmo armazenamento cifrado.
import { LockwellKit } from '@kelphect/sdk';
const kit = new LockwellKit({
admin: { endpoint: 'https://admin.example.com', token } },
native: { endpoint: 'https://objects.example.com' },
});
// 1. provision a tenant + mint a fresh scoped key
const { key } = await kit.provisionTenant('acme', {
defaultBucket: 'inbox',
});
// 2. sign a browser upload, then hand the URL to the client
const client = kit.clientForTenant('acme', key);
const up = await kit.signedUploadUrl(client, 'inbox', 'photo.jpg', {
ttl: 300, contentType: 'image/jpeg',
});
O que ainda não existe, e o que fazer entretanto
Uma funcionalidade entra quando passa os mesmos portões de release que tudo o resto passou: ensaios, suites, comportamento documentado. Até lá o servidor diz não, e esta página di-lo em voz alta.
Replicação multi-nó
O Lockwell é deliberadamente single-node hoje; o perfil replicado fica suspenso até passar os mesmos ensaios de takeover e durabilidade. Entretanto há equipas com standby morno: uma segunda instância alimentada por sync S3 agendado, com ensaios de restauro a provar a costura.
Buses de eventos (SNS, SQS, Lambda)
As notificações entregam-se a webhooks assinados, verificáveis numa chamada. Uma fila entre o Lockwell e o seu pipeline está a um consumidor de distância, em infraestrutura em que já confia.
Tiering de armazenamento
As regras de ciclo de vida já expiram e limpam; arquivar a frio é um job agendado a copiar via API S3 para o armazenamento frio que as suas contas preferirem.