DAT CMS
DAT CMS सर्टिफिकेट बनाता है, उन्हें database में रखता है और उपयुक्त सर्टिफिकेट issuing तथा verifying services को देता है। Protocol behavior का वर्णन DAT CMS विनिर्देश में है।
runtime configuration बनाएँ
DAT certificate management service
Server
चलाने का command
Database
DAT certificate
Access control
Docker के साथ चलाएँ
container को non-root user के रूप में चलाएँ। SQLite का उपयोग करते समय writable data directory mount करें। tokens और database passwords को command history के बजाय secret-injection mechanism से दें।
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-cmsडेटाबेस
SQLite, PostgreSQL या MySQL connection configure करने के लिए DB_URI का उपयोग करें। MariaDB, MySQL protocol से connect होता है। CMS certificate query results को snapshot के रूप में cache करता है और storage refresh की अस्थायी विफलता पर अंतिम सफल snapshot देता रहता है।
DB_CACHE_SECS snapshot refresh interval तय करता है, जबकि DB_QUERY_TIMEOUT_SECS refresh queries को सीमित करता है। यदि कोई सफल snapshot नहीं है और storage पढ़ा नहीं जा सकता, तो सेवा DAT_STORE_UNAVAILABLE लौटाती है।
पहुँच भूमिकाएँ
| environment variable | अनुमति | उपयोगकर्ता |
|---|---|---|
TOKEN_MASTER | सर्टिफिकेट register करना और protected version प्राप्त करना | ऑपरेशंस |
TOKEN_CERT_FULL | पूर्ण सर्टिफिकेट प्राप्त करना | DAT issuing services |
TOKEN_CERT_VERIFY | verify-only सर्टिफिकेट प्राप्त करना | सत्यापन और decryption services |
हर variable comma-separated alphanumeric tokens स्वीकार करता है। किसी role की token list खाली होने पर उसके endpoints खुल जाते हैं और warning log होती है।
सर्टिफिकेट जनरेशन
master role signature algorithm, encryption algorithm, propagation delay, issuance period और TTL निर्दिष्ट करके सर्टिफिकेट register करती है। propagation delay के दौरान सेवाएँ नए सर्टिफिकेट को उसके issuable होने से पहले synchronize करती हैं।
क्लाइंट एकीकरण
- issuing services के लिए full token और full-certificate endpoint का उपयोग करें।
- verifying services के लिए verify token और verify-only option का उपयोग करें।
- पहले synchronization का परिणाम जाँचें; यदि startup विफल होना चाहिए, तो immediate synchronization API कॉल करें।
- automatic synchronization सक्रिय होने पर application shutdown में manager बंद करें।
हर भाषा के builder और shutdown behavior के लिए लाइब्रेरी गाइड देखें।
ऑपरेशनल जाँच
/healthऔर/version/apiबिना authentication के status बताते हैं।- उस role के configured होने पर
/versionको master token चाहिए। - standard output और standard error से logs एकत्र करें।
- shutdown signals forward करें और database तथा scheduler को बंद होने का समय दें।
Kubernetes
container port और probes को service port से मिलाएँ, और data directory को non-root user के write access के साथ mount करें। tokens और database connection details को Secrets के माध्यम से inject करें।
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 } }