Pular para o conteúdo

apps/security/api-key-management

148 · Segurança & Auditoria · ≈ 6 min de estudo

API Key Management

Autentica aplicações parceiras por chave de API de longa duração: a chave sai em texto plano uma única vez, o banco guarda só o hash SHA-256, cada rota exige um escopo e todo uso fica registrado. Revogação e rotação desligam uma chave sem afetar os outros parceiros. Use em integrações B2B, máquina a máquina.

passos
6
arquivos
5
testes
0
tecnologias
5
Infraestrutura realTypeScriptBunElysiaPostgreSQLDocker
Baixar cartão

Cenário

O banco expõe pagamentos e transferências para varejistas e fintechs parceiras. Cada parceiro recebe chaves com escopo mínimo: a de leitura lista pagamentos e recebe 403 ao tentar transferir. Uma chave suspeita de vazamento é rotacionada — a antiga passa a responder 401 e a nova herda os escopos. Um vazamento da tabela não entrega nenhuma chave, só hashes.

Planta

Sequência
7/7
alt[chave ausente, revogada ou expirada][sem o escopo payments:read][autorizado]GET /v1/payments (x-api-key)1SELECT ... WHERE hash = sha256(chave)2chave ativa, escopos3401440352006INSERT api_key_usage (chave, rota, IP, status)7ParceiroAPI de parceirosPostgreSQL
7

7 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Emite, rotaciona e revoga chaves.

Esconde cada passo: lembre antes de tocar para revelar.

Vocabulário compartilhado

scope+1
  1. 01

    apiKeyIssue gera bk_live_ + 32 bytes aleatórios, grava prefixo, SHA-256, escopos e validade, e devolve a chave uma vez

  2. 02

    SHA-256 e não bcryptO lookup é por igualdade no hash (WHERE hash = $1), impossível com salt aleatório

  3. 03

    A macro scope resolve a chave pelo hash; ausente, desconhecida, revogada ou expirada recebe o mesmo 401

  4. 04

    Chave válida sem o escopo da rota recebe 403

  5. 05

    onAfterResponse grava chave, rota, IP (do cabeçalho do proxy próprio) e status em api_key_usage

  6. 06

    apiKeyRotate emite a nova chave com os mesmos escopos e desativa a antiga, com replaced_by, numa transação

Trade-offs

O que se ganha, o que se paga

4 vantagenscada ganho tem um preço4 custos

Vantagens

  • Vazamento do banco não entrega nenhuma chave

  • Escopo por chave limita o estrago de um vazamento

  • Revogação e rotação por chave, sem afetar outros parceiros

  • Trilha de uso por chave, rota e IP

Custos

  • Chave perdida pelo parceiro não pode ser recuperada, só reemitida

  • Parceiro com várias integrações acumula várias chaves para gerir

  • Chave de longa duração vale até ser revogada — exige monitorar o uso

  • Uma escrita no banco por requisição autenticada

apps/security/api-key-management

5 arquivos

src/

  • key_store.tsEmissão, lookup por hash, revogação, rotação e registro de uso
  • api_partner.tsAPI de parceiros com escopo por rota, 401/403 e trilha de uso
  • config_api_key.tsConfiguração validada do ambiente
  • demo.tsdemoEmissão, escopo, chave forjada, rotação, revogação e trilha

sql/

  • 01_schema.sqlschemaParceiros, chaves (só hash) e uso

Executar · com Docker

  1. ./docker.sh up# sobe PostgreSQL
  2. cp .env.example .env# variáveis de ambiente
  3. bun install# dependências
  4. bun run demo# roda o cenário
  5. bun run test# integração contra o serviço real
Requisitos
BunDocker
Sobe junto
PostgreSQL

Por que se relacionam

Teste rápido

Qual destes combina com API Key Management?

Próximo projeto · Segurança & AuditoriaZero Trust
Esc

↑ ↓ navegarEnter abrir191 resultados