SlideShare una empresa de Scribd logo
1 de 22
How the Dynamic Duo of
Vault and Puppet Tame SSL Certificates
Nick Maludy
@NickMaludy
github.com/nmaludy
Engineer, Husband, Dad
Self Signed Verification Flow
Server
Client
App/Browser
CA
public
Web Server
priv
pub
2. Pub Key
1. Hello
3. Verify PUB KEY
DOESN’T
MATCH
CA
NO TRUST!
Proper SSL Verification Flow
Server
Client
App/Browser
CA
public
Web Server
priv
pub
2. Pub Key
1. Hello
3. Verify PUB KEY
MATCHES
ONE OF
THE CAs
TRUSTED!
PKI Old School
Root CA
Linux Windows
Root Root
Public Private Public Private
Apache / Nginx IIS
CSR CSR
Public Public
CSR CSR
Manually
Copy
Manually
Copy
Sign Sign
Manually
Copy
Manually
Copy
Manually
Copy
Client Client
Root Root
Root
Villains
•Painful signed certs
•Oprah – self signed certs for everyone
•No trust
•Disable validation
•MITM Attacks
•Renewal and Expiration
•Security tickets
Call For Help
•Security
• Centrally signed with CA
• Validation enabled
• Strong ciphers
•DevOps
• Auto renewal
• Cross-platform
• Integrated with services
•Configuration Management
•Distribution
•encore/vault module
•vault_cert {}
•github.com/EncoreTechnologies/puppet-vault
Justice
HashiCorp Vault Puppet
•PKI Secrets Engine
•REST API
PKI with Vault + Puppet (vault_cert)
Root CA
Vault CA
Puppet Server
Root Vault
Sign Intermediate CA
Copy
Copy
Copy
Linux Windows
Root Vault Root Vault
Public Private Public Private
Apache / Nginx IIS
Client
Root Vault
Client
Root Vault
Check
Expiration
Check
Revocation
Revoke old Create New
Write to
filesystem
Bounce
service
vault_cert run
vault_cert { ‘synapse’:
cert_dir => '/etc/pki/tls/certs’
priv_key_dir => '/etc/pki/tls/private’
notify => Service[‘nginx’],
}
nginx::resource::server { ‘synapse’:
ssl_port => 443,
ssl => true,
ssl_cert => '/etc/pki/tls/certs/synapse.crt',
ssl_key => '/etc/pki/tls/private/ synapse.key’,
}
Linux
Linux
Public Private
Nginx
Vault CA
CSR
Cert & Key
Write to
Filesystem
Reload
Service
Puppet 101
Windows problem
• Certs in cert store have a path
• Cert:LocalMachineMy<UNIQUE-THUMBPRINT>
• Cert:LocalMachineMyABC1234
• Thumbprints are unique
• Thumbprints = hash of cert content
• Services bind to cert path
• relies on Thumbprint
vault_cert { ‘chocolatey’:
cert_dir => 'Cert:LocalMachineMy’
notify => Service[‘iis’],
}
iis_binding { ‘chocolatey’:
binding_info => {
certificatestore => ‘Cert:LocalMachineMy’
certificatehash => WHAT DO I PUT HERE????,
},
}
Windows Manifest
PROBLEM: Puppet can’t output data from a resource
Windows solution – Use a function!
• Functions run on the server
• Function calls Vault API
• Embed certificate in Catalog
• Path to certificate is known at compile time
$cert_output = vault::cert(...args...)
vault_cert { ‘chocolatey’:
cert => $cert_output['cert’],
priv_key => $cert_output['priv_key’],
}
iis_binding { ‘chocolatey’:
binding_info => {
certificatehash => $cert_output['thumbprint'],
},
}
Windows solution Vault CA
Windows
Public Private
IIS
2. CSR
4. Embed in Catalog
7. Write to
Cert Store
Puppet Server
1. Facts
3. Cert & Key
5. Catalog
6. Agent
8. Bind and reload IIS
Windows “machine cert”
profile
class profile::machine_cert {
$data = vault::cert(args)
vault_cert { $trusted['certname’]:
cert => $data['cert’],
priv_key => $data['priv_key’],
}
}
#########################
class { ‘winrm’:
certificate_hash => $profile::machine_cert::data['thumbprint'],
}
iis_binding { ‘chocolatey’:
binding_info => {
certificatehash => $profile::machine_cert::data['thumbprint’],
}
}
CA Cert Manifest Linux
class profile::ca (Hash $certs) {
class { 'trusted_ca': }
create_resources('trusted_ca::ca’, $certs)
}
profile::ca::certs:
vault.domain.tld:
content: |
-----BEGIN CERTIFICATE-----
xxx
-----END CERTIFICATE-----
Hiera (YAML Config Data)
Puppet Server
Root Vault
Linux
Root Vault
puppet/trusted_ca
1. Facts
2. Compile
3. Hiera
4. Catalog
5. Apply
6. Write to Filesystem
CA Certs on Windows
file { 'C:/ProgramData/Puppetlabs/ca_certs':
ensure => directory,
}
# root certs go into Cert:/LocalMachine/Root
$certs.each |$name, $data| {
file { "C:/ProgramData/Puppetlabs/ca_certs/${name}.crt":
ensure => file,
content => $data['content'],
}
$cert_details = vault::cert_details($data['content'])
sslcertificate { "${name}.crt":
location => 'C:ProgramDataPuppetlabsca_certs',
thumbprint => $cert_details['thumbprint'],
store_dir => 'Root',
interstore => true,
}
Puppet Master
Root Vault
Windows
Root Vault
puppet/sslcertificate
3. Catalog
1. Facts
2. Compile
5. Write to Cert Store
4. Agent
Vault + Puppet = Dynamic Duo
•Every server has a cert (500+)
•CA distributed Cross Platform
•Services bound to certs
•Certs auto-renew (30d)
•Services auto-refreshed
•Validation enabled
Future
•DevOps for HPC
•GPU Algorithms
•C++
•Heavily Optimized Software
Thanks!
@NickMaludy
github.com/nmaludy
github.com/EncoreTechnologies/puppet-vault

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Security in microservices architectures
Security in microservices architecturesSecurity in microservices architectures
Security in microservices architectures
 
Stopping the Hassle of SSH keys by using SSH certificates - Community Summit ...
Stopping the Hassle of SSH keys by using SSH certificates - Community Summit ...Stopping the Hassle of SSH keys by using SSH certificates - Community Summit ...
Stopping the Hassle of SSH keys by using SSH certificates - Community Summit ...
 
Streamline CI/CD with Just-in-Time Access
Streamline CI/CD with Just-in-Time AccessStreamline CI/CD with Just-in-Time Access
Streamline CI/CD with Just-in-Time Access
 
API Security : Patterns and Practices
API Security : Patterns and PracticesAPI Security : Patterns and Practices
API Security : Patterns and Practices
 
Microservices Security: dos and don'ts
Microservices Security: dos and don'tsMicroservices Security: dos and don'ts
Microservices Security: dos and don'ts
 
Modern authentication in Sling with Openid Connect and Keycloak - Adapt.to 20...
Modern authentication in Sling with Openid Connect and Keycloak - Adapt.to 20...Modern authentication in Sling with Openid Connect and Keycloak - Adapt.to 20...
Modern authentication in Sling with Openid Connect and Keycloak - Adapt.to 20...
 
Kubernetes Secrets - The Good, The Bad, and The Ugly - Akeyless
Kubernetes Secrets -  The Good, The Bad, and The Ugly - AkeylessKubernetes Secrets -  The Good, The Bad, and The Ugly - Akeyless
Kubernetes Secrets - The Good, The Bad, and The Ugly - Akeyless
 
Toronto MuleSoft Meetup: Virtual Meetup #3
Toronto MuleSoft Meetup: Virtual Meetup #3Toronto MuleSoft Meetup: Virtual Meetup #3
Toronto MuleSoft Meetup: Virtual Meetup #3
 
CyberArk Impact 2017 - REST for the Rest of Us
CyberArk Impact 2017 - REST for the Rest of UsCyberArk Impact 2017 - REST for the Rest of Us
CyberArk Impact 2017 - REST for the Rest of Us
 
Alfresco DevCon 2019: Encryption at-rest and in-transit
Alfresco DevCon 2019: Encryption at-rest and in-transitAlfresco DevCon 2019: Encryption at-rest and in-transit
Alfresco DevCon 2019: Encryption at-rest and in-transit
 
OpenId Connect Protocol
OpenId Connect ProtocolOpenId Connect Protocol
OpenId Connect Protocol
 
Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
 
API Security In Cloud Native Era
API Security In Cloud Native EraAPI Security In Cloud Native Era
API Security In Cloud Native Era
 
Global Azure Bootcamp 2017 - Azure Key Vault
Global Azure Bootcamp 2017 - Azure Key VaultGlobal Azure Bootcamp 2017 - Azure Key Vault
Global Azure Bootcamp 2017 - Azure Key Vault
 
muCon 2016: Authentication in Microservice Systems By David Borsos
muCon 2016: Authentication in Microservice Systems By David BorsosmuCon 2016: Authentication in Microservice Systems By David Borsos
muCon 2016: Authentication in Microservice Systems By David Borsos
 
Webservice security considerations and measures
Webservice security considerations and measuresWebservice security considerations and measures
Webservice security considerations and measures
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
API Security in a Microservices World
API Security in a Microservices WorldAPI Security in a Microservices World
API Security in a Microservices World
 
Enterprise Security mit Spring Security
Enterprise Security mit Spring SecurityEnterprise Security mit Spring Security
Enterprise Security mit Spring Security
 
Microservices Manchester: Authentication in Microservice Systems by David Borsos
Microservices Manchester: Authentication in Microservice Systems by David BorsosMicroservices Manchester: Authentication in Microservice Systems by David Borsos
Microservices Manchester: Authentication in Microservice Systems by David Borsos
 

Similar a Hashitalks 2021 - How the Dynamic Duo of Vault and Puppet Tame SSL Certificates

Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips
confluent
 
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat Security Conference
 

Similar a Hashitalks 2021 - How the Dynamic Duo of Vault and Puppet Tame SSL Certificates (20)

The Dynamic Duo of Puppet and Vault tame SSL Certificates - Puppet Camps Cent...
The Dynamic Duo of Puppet and Vault tame SSL Certificates - Puppet Camps Cent...The Dynamic Duo of Puppet and Vault tame SSL Certificates - Puppet Camps Cent...
The Dynamic Duo of Puppet and Vault tame SSL Certificates - Puppet Camps Cent...
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 
Passwordless Development using Azure Identity
Passwordless Development using Azure IdentityPasswordless Development using Azure Identity
Passwordless Development using Azure Identity
 
Dirty Little Secrets They Didn't Teach You In Pentest Class v2
Dirty Little Secrets They Didn't Teach You In Pentest Class v2Dirty Little Secrets They Didn't Teach You In Pentest Class v2
Dirty Little Secrets They Didn't Teach You In Pentest Class v2
 
Dirty Little Secrets They Didn't Teach You In Pentest Class v2
Dirty Little Secrets They Didn't Teach You In Pentest Class v2Dirty Little Secrets They Didn't Teach You In Pentest Class v2
Dirty Little Secrets They Didn't Teach You In Pentest Class v2
 
Chickens & Eggs: Managing secrets in AWS with Hashicorp Vault
Chickens & Eggs: Managing secrets in AWS with Hashicorp VaultChickens & Eggs: Managing secrets in AWS with Hashicorp Vault
Chickens & Eggs: Managing secrets in AWS with Hashicorp Vault
 
Application Security in ASP.NET Core
Application Security in ASP.NET CoreApplication Security in ASP.NET Core
Application Security in ASP.NET Core
 
Demystifying OAuth2 for PHP
Demystifying OAuth2 for PHPDemystifying OAuth2 for PHP
Demystifying OAuth2 for PHP
 
Implementing cert-manager in K8s
Implementing cert-manager in K8sImplementing cert-manager in K8s
Implementing cert-manager in K8s
 
Paris FOD meetup - kafka security 101
Paris FOD meetup - kafka security 101Paris FOD meetup - kafka security 101
Paris FOD meetup - kafka security 101
 
Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips
 
Using MCollective with Chef - cfgmgmtcamp.eu 2014
Using MCollective with Chef - cfgmgmtcamp.eu 2014Using MCollective with Chef - cfgmgmtcamp.eu 2014
Using MCollective with Chef - cfgmgmtcamp.eu 2014
 
Zero Credential Development with Managed Identities for Azure resources
Zero Credential Development with Managed Identities for Azure resourcesZero Credential Development with Managed Identities for Azure resources
Zero Credential Development with Managed Identities for Azure resources
 
Zero credential development with managed identities
Zero credential development with managed identitiesZero credential development with managed identities
Zero credential development with managed identities
 
MCSA 70-412 Chapter 06
MCSA 70-412 Chapter 06MCSA 70-412 Chapter 06
MCSA 70-412 Chapter 06
 
Zero Credential Development with Managed Identities
Zero Credential Development with Managed IdentitiesZero Credential Development with Managed Identities
Zero Credential Development with Managed Identities
 
Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
Azure Low Lands 2019 - Building secure cloud applications with Azure Key VaultAzure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
 
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
 
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur....NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
 
hackcon2013-Dirty Little Secrets They Didn't Teach You In Pentesting Class v2
hackcon2013-Dirty Little Secrets They Didn't Teach You In Pentesting Class v2hackcon2013-Dirty Little Secrets They Didn't Teach You In Pentesting Class v2
hackcon2013-Dirty Little Secrets They Didn't Teach You In Pentesting Class v2
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

Hashitalks 2021 - How the Dynamic Duo of Vault and Puppet Tame SSL Certificates

  • 1. How the Dynamic Duo of Vault and Puppet Tame SSL Certificates
  • 3. Self Signed Verification Flow Server Client App/Browser CA public Web Server priv pub 2. Pub Key 1. Hello 3. Verify PUB KEY DOESN’T MATCH CA NO TRUST!
  • 4. Proper SSL Verification Flow Server Client App/Browser CA public Web Server priv pub 2. Pub Key 1. Hello 3. Verify PUB KEY MATCHES ONE OF THE CAs TRUSTED!
  • 5. PKI Old School Root CA Linux Windows Root Root Public Private Public Private Apache / Nginx IIS CSR CSR Public Public CSR CSR Manually Copy Manually Copy Sign Sign Manually Copy Manually Copy Manually Copy Client Client Root Root Root
  • 6. Villains •Painful signed certs •Oprah – self signed certs for everyone •No trust •Disable validation •MITM Attacks •Renewal and Expiration •Security tickets
  • 7. Call For Help •Security • Centrally signed with CA • Validation enabled • Strong ciphers •DevOps • Auto renewal • Cross-platform • Integrated with services
  • 8. •Configuration Management •Distribution •encore/vault module •vault_cert {} •github.com/EncoreTechnologies/puppet-vault Justice HashiCorp Vault Puppet •PKI Secrets Engine •REST API
  • 9. PKI with Vault + Puppet (vault_cert) Root CA Vault CA Puppet Server Root Vault Sign Intermediate CA Copy Copy Copy Linux Windows Root Vault Root Vault Public Private Public Private Apache / Nginx IIS Client Root Vault Client Root Vault
  • 10. Check Expiration Check Revocation Revoke old Create New Write to filesystem Bounce service vault_cert run
  • 11. vault_cert { ‘synapse’: cert_dir => '/etc/pki/tls/certs’ priv_key_dir => '/etc/pki/tls/private’ notify => Service[‘nginx’], } nginx::resource::server { ‘synapse’: ssl_port => 443, ssl => true, ssl_cert => '/etc/pki/tls/certs/synapse.crt', ssl_key => '/etc/pki/tls/private/ synapse.key’, } Linux Linux Public Private Nginx Vault CA CSR Cert & Key Write to Filesystem Reload Service
  • 13. Windows problem • Certs in cert store have a path • Cert:LocalMachineMy<UNIQUE-THUMBPRINT> • Cert:LocalMachineMyABC1234 • Thumbprints are unique • Thumbprints = hash of cert content • Services bind to cert path • relies on Thumbprint
  • 14. vault_cert { ‘chocolatey’: cert_dir => 'Cert:LocalMachineMy’ notify => Service[‘iis’], } iis_binding { ‘chocolatey’: binding_info => { certificatestore => ‘Cert:LocalMachineMy’ certificatehash => WHAT DO I PUT HERE????, }, } Windows Manifest PROBLEM: Puppet can’t output data from a resource
  • 15. Windows solution – Use a function! • Functions run on the server • Function calls Vault API • Embed certificate in Catalog • Path to certificate is known at compile time
  • 16. $cert_output = vault::cert(...args...) vault_cert { ‘chocolatey’: cert => $cert_output['cert’], priv_key => $cert_output['priv_key’], } iis_binding { ‘chocolatey’: binding_info => { certificatehash => $cert_output['thumbprint'], }, } Windows solution Vault CA Windows Public Private IIS 2. CSR 4. Embed in Catalog 7. Write to Cert Store Puppet Server 1. Facts 3. Cert & Key 5. Catalog 6. Agent 8. Bind and reload IIS
  • 17. Windows “machine cert” profile class profile::machine_cert { $data = vault::cert(args) vault_cert { $trusted['certname’]: cert => $data['cert’], priv_key => $data['priv_key’], } } ######################### class { ‘winrm’: certificate_hash => $profile::machine_cert::data['thumbprint'], } iis_binding { ‘chocolatey’: binding_info => { certificatehash => $profile::machine_cert::data['thumbprint’], } }
  • 18. CA Cert Manifest Linux class profile::ca (Hash $certs) { class { 'trusted_ca': } create_resources('trusted_ca::ca’, $certs) } profile::ca::certs: vault.domain.tld: content: | -----BEGIN CERTIFICATE----- xxx -----END CERTIFICATE----- Hiera (YAML Config Data) Puppet Server Root Vault Linux Root Vault puppet/trusted_ca 1. Facts 2. Compile 3. Hiera 4. Catalog 5. Apply 6. Write to Filesystem
  • 19. CA Certs on Windows file { 'C:/ProgramData/Puppetlabs/ca_certs': ensure => directory, } # root certs go into Cert:/LocalMachine/Root $certs.each |$name, $data| { file { "C:/ProgramData/Puppetlabs/ca_certs/${name}.crt": ensure => file, content => $data['content'], } $cert_details = vault::cert_details($data['content']) sslcertificate { "${name}.crt": location => 'C:ProgramDataPuppetlabsca_certs', thumbprint => $cert_details['thumbprint'], store_dir => 'Root', interstore => true, } Puppet Master Root Vault Windows Root Vault puppet/sslcertificate 3. Catalog 1. Facts 2. Compile 5. Write to Cert Store 4. Agent
  • 20. Vault + Puppet = Dynamic Duo •Every server has a cert (500+) •CA distributed Cross Platform •Services bound to certs •Certs auto-renew (30d) •Services auto-refreshed •Validation enabled
  • 21. Future •DevOps for HPC •GPU Algorithms •C++ •Heavily Optimized Software

Notas del editor

  1. Show lock link
  2. - Landscape? - Ohio in middle of the Brown Field - - Windows - 2008 - 2012 - 2016 - Linux - RHEL 6 & 7 - Ubuntu 14.04, 16.04, 18.04
  3. - Parts - CA Cert - Server public / private keys - Signing infrastructure
  4. - Security - More often (weekly) - Faster (1 day or less) - Reports of available patches - - DevOps - HA groups - Customizable workflows - Cross-platform - Windows Update + Chocolatey
  5. - Built on bolt - - Open source for community - - Eat our own dogfood - - Forge
  6. - Parts - CA Cert - Server public / private keys - Signing infrastructure
  7. - Available updates - Create snapshot - Pre - app shutdowns - Update - Post - Reboot - Delete snapshot
  8. - Inventory YAML on the left - - Result on the right - - Puts data into a array - - Sorted by patching order - - If multiple inventory groups with same patching_order, result in one group - - Allows inventory to be defined by different dimension, say application
  9. - Show screenshot of cert paths in powershell
  10. - Show screenshot of cert paths in powershell
  11. - Inventory YAML on the left - - Result on the right - - Puts data into a array - - Sorted by patching order - - If multiple inventory groups with same patching_order, result in one group - - Allows inventory to be defined by different dimension, say application
  12. - Windows - Choco upagrade all : EASY - Special snowflake windows update - Scheduled task - RHEL - yum update - Ubuntu - apt-get dist-upgrade
  13. - Opinionated workflow - - Uses all of the components we just talked about - - Customizable / pluggable - vars - dynamic dispatch - - Super easy way to get started - - Fully expect people to make their own workflows
  14. - Opinionated workflow - - Uses all of the components we just talked about - - Customizable / pluggable - vars - dynamic dispatch - - Super easy way to get started - - Fully expect people to make their own workflows
  15. - Opinionated workflow - - Uses all of the components we just talked about - - Customizable / pluggable - vars - dynamic dispatch - - Super easy way to get started - - Fully expect people to make their own workflows
  16. - Opinionated workflow - - Uses all of the components we just talked about - - Customizable / pluggable - vars - dynamic dispatch - - Super easy way to get started - - Fully expect people to make their own workflows
  17. - 500+ Vms - 6x internal and customer environments - - 1 engineer - < 1 day - - Every week - dev = latest - prod = dev from week before
  18. - Monitoring - SolarWinds - Prometheus - - Reporting - - Notifications - email - Slack - - ServiceNow change integration - - Inventory from Satellite, WSUS, AD, IPA, Vmware, ServiceNow - - More workflows - Network patching - Vmware patching
  19. - Thanks! - - Build a patching community - - Twitter, github - - Puppet slack #puppetize-pdx