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
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:8088 \
--user 10001:10001 \
-v "$PWD/dat-cms-data:/data" \
-e PORT=8088 \
-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-cmsBanco 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
Ajuste a porta do container e as probes à porta do serviço, e monte o diretório de dados com acesso de escrita para o usuário não root. Injete tokens e detalhes da conexão com o banco de dados por Secrets.
securityContext:
runAsNonRoot: true
runAsUser: 10001
runAsGroup: 10001
containers:
- name: dat-cms
image: sarolab/dat-cms
ports: [{ containerPort: 8088 }]
readinessProbe: { httpGet: { path: /health, port: 8088 } }
livenessProbe: { httpGet: { path: /health, port: 8088 } }