Post on 04-Oct-2020
Distribúcia SSL certifikátov
@RobertVojcik
Ahoj !
● Systems Engineer & Teamleader
● Praca pre Livesport od 2009
● in-house od 2012
● Livesport
○ 400+ projektov / domén / certifikátov
○ 85 M užívaťeľov
@RobertVojcik2
Čo nás čaká ?
● Úvod do problematiky● Architektúra riešenia● Best Practice● Server Deployment● Kubernetes Deployment
3
Prečo ?
● Kupované certifikáty● Let’s Encrypt - Wildcard certifikáty
○ DNS-01 Challenge○ Cloud/CDN/Anycast
● Vlastné CA● Jednotný spôsob distribúcie pre DEV i OPS
4
Požiadavky ?
API
SECU
RITY AUTH
5
Security & TLS
● SSL/TLS● Autorizácia klienta● Access Roles● Secure Backend● Sec. & Production Concepts● CA Management
6
Hľadanie a kombinacie (NIH Syndrome)
Web + Encrypted Storage
Custom API + Encfs
Encrypted DatabasegRPC
Certificate Vault
Secrets Manager
Envoy ManagerAWS Secrets Manager
7
HashiCorp
www.hashicorp.com8
HashiCorp - Vault
9
Východzí stav po štarte
● Spustený API server○ Základna komunikácia○ Stav Vaultu
● Sealed barrier alebo ?...● Čaká na zadanie Key shares
○ Sučasť security konceptu○ Vieme čo su key shares ?
10
Seal / Unseal
11
Key Shares ?
Key Shares Master Key Encryption keyShamir’s secret
sharing algorithm
12
Shamir’s Secret share algorithm
● Secret “123”● Key Shares “5”● Key Share limit “2”
123 -
13
Autentifikácia
14
Možnosti
● AppRole● AWS● Azure● GoogleCloud● JWT/OIDC● Kubernetes (ServiceAccount)● LDAP● Radius
https://www.vaultproject.io/docs/auth
15
AppRole
● Nieco ako Username & Password○ Role-ID (eg. adf93b20-6e8c-3b19-c3ce-c76f841054af )○ Secret-ID (eg. f3928c22-b30e-b1bf-091a-2cfe3df72172 )
● Vytvarame Role s priradenou Policy ● Jedna role môže mať viac Secret ID
16
Best Practices
● Role-ID a Secret-ID distribuovať samostatne● Do Configuration Managementu - Secret-ID
○ jednoducha rotacia
● Používať tokeny s krátkou životnosťou● Využívať Token Renew behom deploymentu
○ Neautentifikovať sa pomocou AppRole zbytočne často
Tokeny majú široké možnosti nastavení, idealne je ich využiť a neísť najjednoduchšou cestou.
17
Best Practices
18
Secrets Engine
19
Typy secret enginov
● KV / KV2● PKI● Databases● SSH
○ Signed Certs○ OTP
https://www.vaultproject.io/docs/secrets/
20
Deployment certifikátov
21
Server Deployment
● Puppet CM● Deploy Environment
○ Scripty○ Configy○ Systemd Unit○ Systemd Timer
● Deploy Script○ Python - HVAC
22
23
/ rvojcik / vault-certificate-deploy
Kubernetes Deployment
● Tuenti Secrets Manager, https://github.com/tuenti/secrets-manager
● Gitlab CI/CD Deployment,
https://gitlab.com/ls-tech-templates/automation/k8s-secrets-manager
○ Zaobali Tuenti Manager○ Zjednodusi config pre vyvoj○ Deployne Secrets Manager do Kubernetesu
24
Kubernetes Deployment
25
Production
● Non root process● No swap / MLock● Off Coredump
○ ulimit -c 0○ RLIMIT_CORE=0
● Root tokeny - len disaster recovery● https://learn.hashicorp.com/vault/op
erations/production-hardening
26
Let’s Encrypt Support
27
END OF TIME
● Hashicorp - Zaujímavé tooly
● Máme rok 2019, pozor na NIH syndrome
○ niekedy je potreba hlavne zmeniť zabehnutý spôsob myslenia
● Vault Server
○ uložisko citlivých dát○ Široké možnosti použitia○ Vlastné CA○ LinuxDays WorkShop: 16:00, 345
● Let’s Encrypt - dobré podporiť
● github.com/rvojcik
28
Otázky ? Pár odkazov na záver
WorkShop https://github.com/ rvojcik / vault-workshop-beginner
Deploy Certs https://github.com/ rvojcik / vault-certificate-deploy
Kubernetes
http://bit.ly/ vault-agent-k8s
http://bit.ly/ vault-k8s-present
http://bit.ly/ vault-dynamic-secrets
29