DAT CMS
DAT CMS certificates بناتا، database میں محفوظ کرتا اور issuing و verifying services کو مناسب certificates دیتا ہے۔ Protocol behavior کی تفصیل DAT CMS specification میں ہے۔
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-cmsDatabase
SQLite، PostgreSQL یا MySQL connection کے لیے DB_URI استعمال کریں۔ MariaDB، MySQL protocol سے connect ہوتا ہے۔ CMS query results کو snapshot میں cache کرتا اور storage refresh عارضی ناکام ہو تو آخری کامیاب snapshot دیتا رہتا ہے۔
DB_CACHE_SECS snapshot refresh interval اور DB_QUERY_TIMEOUT_SECS refresh queries کی limit مقرر کرتا ہے۔ کامیاب snapshot نہ ہو اور storage نہ پڑھا جا سکے تو service DAT_STORE_UNAVAILABLE دیتی ہے۔
Access roles
| Environment variable | Permission | استعمال |
|---|---|---|
TOKEN_MASTER | Certificates register اور protected version حاصل کرنا | Operations |
TOKEN_CERT_FULL | Full certificates حاصل کرنا | DAT issuing services |
TOKEN_CERT_VERIFY | Verify-only certificates حاصل کرنا | Verification اور decryption services |
ہر variable comma-separated alphanumeric tokens لیتا ہے۔ role کی token list خالی ہو تو endpoints کھل جاتے اور warning log ہوتی ہے۔
Certificate generation
Master role signature algorithm، encryption algorithm، propagation delay، issuance period اور TTL بتا کر certificate register کرتا ہے۔ propagation delay میں services certificate کے issuable ہونے سے پہلے اسے synchronize کرتی ہیں۔
Client integration
- Issuing services کے لیے full token اور full-certificate endpoint استعمال کریں۔
- Verifying services کے لیے verify token اور verify-only option استعمال کریں۔
- پہلے synchronization کا result check کریں؛ startup ناکام کرنا ہو تو immediate synchronization API call کریں۔
- Automatic synchronization فعال ہو تو shutdown پر manager بند کریں۔
ہر زبان کے builder اور shutdown behavior کے لیے library guides دیکھیں۔
Operational checks
/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 سے ملائیں، اور non-root user کے write access کے ساتھ data directory mount کریں۔ Secrets سے tokens اور database connection details 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 } }