DAT CMS
O DAT CMS cria certificados, armazena-os em um banco de dados e entrega os certificados adequados aos serviços emissores e verificadores. O comportamento do protocolo é descrito na especificação do DAT CMS.
Criar uma configuração de execução
Serviço de gerenciamento de certificados DAT
Servidor
Comando de execução
Banco de dados
Certificado DAT
Controle de acesso
Executar com Docker
Docker e Podman sempre usam a porta 80 no contêiner; publique a porta do host com -p 8088:80. PORT vale apenas para binários independentes (padrão 8088). Execute o container como usuário não root. Ao usar SQLite, monte um diretório de dados com permissão de escrita. Forneça tokens e senhas do banco de dados por um mecanismo de injeção de secrets, não pelo histórico de comandos.
docker run --rm --name dat-cms -p 8088:80 \
--user 10001:10001 \
-v "$PWD/dat-cms-data:/data" \
-e DB_URI='sqlite:/data/data.db' \
-e TOKEN_MASTER='replace-with-a-secret' \
-e TOKEN_CERT_FULL='replace-with-a-secret' \
-e TOKEN_CERT_VERIFY='replace-with-a-secret' \
sarolab/dat-cms:4.7.1Banco de dados
Use DB_URI para configurar uma conexão SQLite, PostgreSQL ou MySQL. O MariaDB se conecta pelo protocolo MySQL. O CMS armazena em cache os resultados das consultas de certificados como um snapshot e continua servindo o último snapshot bem-sucedido quando uma atualização do armazenamento falha temporariamente.
DB_CACHE_SECS define o intervalo de atualização do snapshot, enquanto DB_QUERY_TIMEOUT_SECS limita as consultas de atualização. Se não existir um snapshot bem-sucedido e o armazenamento não puder ser lido, o serviço retorna DAT_STORE_UNAVAILABLE.
Papéis de acesso
| Variável de ambiente | Permissão | Usado por |
|---|---|---|
TOKEN_MASTER | Registrar certificados e obter a versão protegida | Operações |
TOKEN_CERT_FULL | Obter certificados completos | Serviços emissores de DAT |
TOKEN_CERT_VERIFY | Obter certificados exclusivos para verificação | Serviços de verificação e descriptografia |
Cada variável aceita tokens alfanuméricos separados por vírgulas. Se a lista de tokens de um papel estiver vazia, os endpoints desse papel serão abertos e um aviso será registrado.
Geração de certificados
O papel master registra um certificado especificando o algoritmo de assinatura, o algoritmo de criptografia, o atraso de propagação, o período de emissão e o TTL. Durante o atraso de propagação, os serviços sincronizam o novo certificado antes que ele possa emitir.
Integração do cliente
- Use o token completo e o endpoint de certificados completos nos serviços emissores.
- Use o token de verificação e a opção verify-only nos serviços verificadores.
- Confira o resultado da primeira sincronização; se a inicialização tiver de falhar, chame a API de sincronização imediata.
- Quando a sincronização automática estiver ativa, feche o gerenciador durante o encerramento da aplicação.
Consulte os guias das bibliotecas para ver o builder e o comportamento de encerramento de cada linguagem.
Verificações operacionais
/healthe/version/apiinformam o status sem autenticação./versionexige o master token quando esse papel está configurado.- Colete os logs da saída padrão e da saída de erro padrão.
- Encaminhe os sinais de encerramento e dê tempo para o banco de dados e o scheduler fecharem.
Kubernetes
Mantenha a porta do contêiner, as probes e o targetPort do Service em 80. Altere a porta de acesso pelo port do Service. Conceda NET_BIND_SERVICE para escutar em 80 sem root. Monte um diretório de dados gravável e injete tokens e credenciais por Secrets.
securityContext:
runAsNonRoot: true
runAsUser: 10001
runAsGroup: 10001
containers:
- name: dat-cms
image: sarolab/dat-cms:4.7.1
securityContext:
capabilities:
drop: ["ALL"]
add: ["NET_BIND_SERVICE"]
ports: [{ containerPort: 80 }]
readinessProbe: { httpGet: { path: /health, port: 80 } }
livenessProbe: { httpGet: { path: /health, port: 80 } }