SlideShare a Scribd company logo
Barbican1.0
Key management for the open cloud
Jarret Raim & Matt Tesauro

aboutus

ACADEMIC
DEVELOPER
SECURITY
CONSULTANT
SECURITY
ARCHITECT

OWASP BOARD MEMBER
OWASP LIVE CD
OWASP WTE

RACKER SINCE ‘11
PRODUCT SECURITY

SECURITY
PRODUCTS

HACKING THE RACK
Everyone writing code needs good key management

CustomerS

Most important security technologies for a hoster to provide !
Data Protection!

57%!

Endpoint & Network Protection!

19%!

Identity & Access Control!

13%!

11%!

11%!

9%!

73%

46%

16%!

18%!

2%!

#1 Choice!

38%

#2 Choice!
Application Security!
Vulnerability & Incident Management!
Configuration & Patch Management!

7%!

27%!

4%!
2%!

18%!

18%!

13%!

49%

27%!

27%!

52%

42%

#3 Choice!
Every OpenStack project has encryption needs

OpenStack
Swift & Glance

Cinder

Encrypted files at rest.

Transparent volume encryption.

Trove

Heat

Encrypted databases and tables.

AES, SSH & SSL key management.

Neutron

Marconi

SSL Certificates and VPN keys.

Encrypted queue messages.

Nova & Ironic

Savanna

SSH keys, encrypted file systems.

Analytics on encrypted data.

Keystone

OSLO

Encrypted metadata, user level keys.

Support all the things.
Customdev
Settings
Commonly exposed settings including credentials can be
protected either through encryption or by storing the entire
settings file.

Encryption Keys
Keys used to provide encryption for data at rest.

SSL Keys
SSL / TLS private keys.

SSH Keys
Keys used for access control.
InteractionMOdels
Transparent
Encryption	


Least secure	


Federated
Keys	


On-Premise
Management	


Most secure
Transparentencryption
Customer	

 Rackspace	

Consuming	

Service	


Public	


Public	


Private	


Private
FEderatedKeys
Customer	

 Rackspace	

Consuming	

Service	


Public	


Public	


Private	


Private
OnPRemise
Customer	

 Rackspace	


Public	


Public	


Private	


Private
VagrantUp
Barbican 1.0 - Open Source Key Management for OpenStack
KeySTorage
DEK	


Barbican API
Node	


Hardware
Security
Module	


Data Store	


KEK	


DEK	


All keys are encrypted with a tenant-level key encryption key (KEK). This key never leaves the HSM (if
using one). The encrypted data encryption key (DEK) is stored in the Barbican data store.
The keying material

SecretResource
POST v1/{tenant_id}/secrets!

GET v1/{tenant_id}/secrets/888b29a4-c7cf-49d0bfdf-bd9e6f26d718!

!
{!

!
"name": "AES key",!
"expiration": "2014-02-28T19:14:44.180394",!
"algorithm": "aes",!
"bit_length": 256,!
"mode": "cbc",!
"payload": "gF6+lLoF3ohA9aPRpt+6bQ==",!
"payload_content_type": "application/octetstream",!
"payload_content_encoding": "base64"!

{!
"status": "ACTIVE",!
"updated": "2013-06-28T15:23:33.092660",!
"name": "AES key",!
"algorithm": "AES",!
"mode": "cbc",!
"bit_length": 256,!
"content_types": {!
"default": "application/octet-stream"!
},!
"expiration": "2013-05-08T16:21:38.134160",!
"secret_href": "http://localhost:8080/
v1/12345/secrets/888b29a4-c7cf-49d0-bfdfbd9e6f26d718",!

}!

}!
The keying material

OrdersResource
POST v1/orders!

GET v1/orders/f9b633d-…-80289e!

!

!
{!

{!
"secret": {!
"name": "secretname",!
"algorithm": "AES",!
"bit_length": 256,!
"mode": "cbc",!
"payload_content_type": "application/octetstream"!
}!

"secret": {!
"name": "secretname",!
"algorithm": "aes",!
"bit_length": 256,!
"mode": "cbc",!
"payload_content_type": "application/octetstream"!
},!
"order_href": "http://localhost:8080/
v1/12345/orders/f9b633d8--5b2c9280289e",!
"secret_href": "http://localhost:8080/
v1/12345/secrets/888b29a4-c7cf-49d0-bfdfbd9e6f26d718"!

}!

!

}!
SwiftDemo

Transparent encryption for object storage.
portcullisproxy
Pyrox is a HTTP reverse proxy that can intercept requests ahead of an upstream HTTP REST service. This allows
reuse of common middleware functions like: message enhancement, dynamic routing, authentication,
authorization, resource request rate limiting, service distribution, content negotiation and content transformation.
These services can then be scaled horizontally separate the origin REST endpoint.

Key Per File

HMAC /verify resource

Portcullis currently uses a single key per encrypted file.
This is to deal with copy between container semantics in
Swift.

We currently use AES-CBC with HMAC. We’ll move to
GCM as soon as the code is stable. We have a new /verify
resource that clients can use to check integrity.

Filename & Container Names

Flow Control

We don’t currently encrypt filenames and container names.
This is to ensure that all tools that expect Swift semantics
still work.

Pyrox performs the necessary flow control functionality that
needs to happen to keep the proxy from being
overwhelmed.
Futurework
KMIP Support
There is a possibility that a Python KMIP client will
be open-sourced by Safenet soon. If so, we’ll
integrate it, if not, we’ll build our own.

SSL / TLS
Barbican will support the provisioning of SSL
certificates from internal and external CAs.

Federation
Support for federated keys in both Barbican to
Barbican and Barbican to HSM configurations.

Integrations
Barbican will help teams integrate to provide
encryption services.
IntegrateNow
Python-Barbicanclient

from barbicanclient import client!

Provides both a programmatic and command
line interface to a Barbican instance.

barbican_client = client.Client(endpoint='http://path-tobarbican', tenant_id='tenant_id_for_context')!

!
!

Source Code & Documentation
The documentation and source code both reside
on GitHub in the CloudKeep organization.
Blueprints and project documentation is on
Launchpad.

Integration Environment
Barbican maintains an integration environment
on Public Cloud for testing. Not for use in
production deploys, but usable for testing / dev.

barbican_client.secrets.store(name, payload,
payload_content_type, payload_content_encoding,
algorithm, bit_length, mode, expiration)!
!
barbican_client.orders.create(name, payload_content_type,
algorithm, bit_length, mode, expiration)!

usage: keep [-h] [--no-auth | --os-auth-url <auth-url>]!
"[--os-username <auth-user-name>] [--os-password <authpassword>] [--os-tenant-name <auth-tenant-name>] [--ostenant-id <tenant-id>] [--endpoint <barbican-url>]!
"<entity> <action> ...!
~ fin ~
#openstack-coudkeep

github.com/cloudkeep

barbican@lists.google.com

More Related Content

PDF
Améliorer OpenStack avec les technologies Intel
PPT
Open Source KMIP Implementation
PDF
Shifting security left simplifying security for k8s open shift environments
PDF
Using Kubernetes to make cellular data plans cheaper for 50M users
PDF
[muCon2017]DevSecOps: How to Continuously Integrate Security into DevOps
PDF
Introduction to the DevNet Sandbox and IVT
PDF
Open source cloud native security with threat mapper
PPTX
Simplify Your Way To Expert Kubernetes Management
Améliorer OpenStack avec les technologies Intel
Open Source KMIP Implementation
Shifting security left simplifying security for k8s open shift environments
Using Kubernetes to make cellular data plans cheaper for 50M users
[muCon2017]DevSecOps: How to Continuously Integrate Security into DevOps
Introduction to the DevNet Sandbox and IVT
Open source cloud native security with threat mapper
Simplify Your Way To Expert Kubernetes Management

What's hot (20)

PDF
Redefining cloud native debugging
PDF
CSTA - Cisco Security Technical Alliances, New Ecosystem Program Built on the...
PDF
Cisco Cloud Networking Workshop
PDF
The Future of Security and Productivity in Our Newly Remote World
PDF
Patterns and Pains of Migrating Legacy Applications to Kubernetes
PPTX
Comparing Microsoft SQL Server 2019 Performance Across Various Kubernetes Pla...
PDF
Cloud Native Security: New Approach for a New Reality
PPTX
Managing Microservices at Scale
PPTX
ADDO Open Source Observability Tools
PDF
DevOps Spain 2019. Beatriz Martínez-IBM
PDF
Implementing Microservices Security Patterns & Protocols with Spring
PDF
Rugged DevOps: Bridging Security and DevOps
PDF
Cncf kanister.pptx
PDF
DevOps in a Cloud Native World
PPTX
Making Git Work for the Enterprise Through the Power of Perforce Helix
PPTX
Scania: A DevOps Journey in an Automotive Enterprise  
PPTX
What’s New with NGINX Controller Load Balancing Module 2.0?
PDF
Dynatrace - Red Hat workshop : Monolith to Microservices
PPTX
NGINX Plus R18: What's new
PDF
Continuous Integration - Live Static Analysis with Puma Scan
Redefining cloud native debugging
CSTA - Cisco Security Technical Alliances, New Ecosystem Program Built on the...
Cisco Cloud Networking Workshop
The Future of Security and Productivity in Our Newly Remote World
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Comparing Microsoft SQL Server 2019 Performance Across Various Kubernetes Pla...
Cloud Native Security: New Approach for a New Reality
Managing Microservices at Scale
ADDO Open Source Observability Tools
DevOps Spain 2019. Beatriz Martínez-IBM
Implementing Microservices Security Patterns & Protocols with Spring
Rugged DevOps: Bridging Security and DevOps
Cncf kanister.pptx
DevOps in a Cloud Native World
Making Git Work for the Enterprise Through the Power of Perforce Helix
Scania: A DevOps Journey in an Automotive Enterprise  
What’s New with NGINX Controller Load Balancing Module 2.0?
Dynatrace - Red Hat workshop : Monolith to Microservices
NGINX Plus R18: What's new
Continuous Integration - Live Static Analysis with Puma Scan
Ad

Viewers also liked (14)

KEY
Openstack In Real Life
PPT
Code Quality - Security
PDF
MySQL HA with Pacemaker
PPTX
Glance image-cacheコマンドを使ってみた
DOCX
Supriya Shailaja Latest Gallery
PDF
MySQL High Availability Sprint: Launch the Pacemaker
PDF
High availability and fault tolerance of openstack
PPTX
Open stack HA - Theory to Reality
PDF
MySQL with DRBD/Pacemaker/Corosync on Linux
PDF
いまさら聞けないOpen stack
PDF
Deep dive into highly available open stack architecture openstack summit va...
PPTX
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
PDF
Chef cookbooks for OpenStack HA
PPTX
A 30-minute Introduction to NETCONF and YANG
Openstack In Real Life
Code Quality - Security
MySQL HA with Pacemaker
Glance image-cacheコマンドを使ってみた
Supriya Shailaja Latest Gallery
MySQL High Availability Sprint: Launch the Pacemaker
High availability and fault tolerance of openstack
Open stack HA - Theory to Reality
MySQL with DRBD/Pacemaker/Corosync on Linux
いまさら聞けないOpen stack
Deep dive into highly available open stack architecture openstack summit va...
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Chef cookbooks for OpenStack HA
A 30-minute Introduction to NETCONF and YANG
Ad

Recently uploaded (20)

PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
cuic standard and advanced reporting.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Encapsulation theory and applications.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Electronic commerce courselecture one. Pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
A Presentation on Artificial Intelligence
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
Agricultural_Statistics_at_a_Glance_2022_0.pdf
cuic standard and advanced reporting.pdf
NewMind AI Weekly Chronicles - August'25 Week I
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Encapsulation theory and applications.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
NewMind AI Monthly Chronicles - July 2025
Electronic commerce courselecture one. Pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
A Presentation on Artificial Intelligence
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Spectral efficient network and resource selection model in 5G networks
Dropbox Q2 2025 Financial Results & Investor Presentation

Barbican 1.0 - Open Source Key Management for OpenStack

  • 2. Jarret Raim & Matt Tesauro aboutus ACADEMIC DEVELOPER SECURITY CONSULTANT SECURITY ARCHITECT OWASP BOARD MEMBER OWASP LIVE CD OWASP WTE RACKER SINCE ‘11 PRODUCT SECURITY SECURITY PRODUCTS HACKING THE RACK
  • 3. Everyone writing code needs good key management CustomerS Most important security technologies for a hoster to provide ! Data Protection! 57%! Endpoint & Network Protection! 19%! Identity & Access Control! 13%! 11%! 11%! 9%! 73% 46% 16%! 18%! 2%! #1 Choice! 38% #2 Choice! Application Security! Vulnerability & Incident Management! Configuration & Patch Management! 7%! 27%! 4%! 2%! 18%! 18%! 13%! 49% 27%! 27%! 52% 42% #3 Choice!
  • 4. Every OpenStack project has encryption needs OpenStack Swift & Glance Cinder Encrypted files at rest. Transparent volume encryption. Trove Heat Encrypted databases and tables. AES, SSH & SSL key management. Neutron Marconi SSL Certificates and VPN keys. Encrypted queue messages. Nova & Ironic Savanna SSH keys, encrypted file systems. Analytics on encrypted data. Keystone OSLO Encrypted metadata, user level keys. Support all the things.
  • 5. Customdev Settings Commonly exposed settings including credentials can be protected either through encryption or by storing the entire settings file. Encryption Keys Keys used to provide encryption for data at rest. SSL Keys SSL / TLS private keys. SSH Keys Keys used for access control.
  • 12. KeySTorage DEK Barbican API Node Hardware Security Module Data Store KEK DEK All keys are encrypted with a tenant-level key encryption key (KEK). This key never leaves the HSM (if using one). The encrypted data encryption key (DEK) is stored in the Barbican data store.
  • 13. The keying material SecretResource POST v1/{tenant_id}/secrets! GET v1/{tenant_id}/secrets/888b29a4-c7cf-49d0bfdf-bd9e6f26d718! ! {! ! "name": "AES key",! "expiration": "2014-02-28T19:14:44.180394",! "algorithm": "aes",! "bit_length": 256,! "mode": "cbc",! "payload": "gF6+lLoF3ohA9aPRpt+6bQ==",! "payload_content_type": "application/octetstream",! "payload_content_encoding": "base64"! {! "status": "ACTIVE",! "updated": "2013-06-28T15:23:33.092660",! "name": "AES key",! "algorithm": "AES",! "mode": "cbc",! "bit_length": 256,! "content_types": {! "default": "application/octet-stream"! },! "expiration": "2013-05-08T16:21:38.134160",! "secret_href": "http://localhost:8080/ v1/12345/secrets/888b29a4-c7cf-49d0-bfdfbd9e6f26d718",! }! }!
  • 14. The keying material OrdersResource POST v1/orders! GET v1/orders/f9b633d-…-80289e! ! ! {! {! "secret": {! "name": "secretname",! "algorithm": "AES",! "bit_length": 256,! "mode": "cbc",! "payload_content_type": "application/octetstream"! }! "secret": {! "name": "secretname",! "algorithm": "aes",! "bit_length": 256,! "mode": "cbc",! "payload_content_type": "application/octetstream"! },! "order_href": "http://localhost:8080/ v1/12345/orders/f9b633d8--5b2c9280289e",! "secret_href": "http://localhost:8080/ v1/12345/secrets/888b29a4-c7cf-49d0-bfdfbd9e6f26d718"! }! ! }!
  • 16. portcullisproxy Pyrox is a HTTP reverse proxy that can intercept requests ahead of an upstream HTTP REST service. This allows reuse of common middleware functions like: message enhancement, dynamic routing, authentication, authorization, resource request rate limiting, service distribution, content negotiation and content transformation. These services can then be scaled horizontally separate the origin REST endpoint. Key Per File HMAC /verify resource Portcullis currently uses a single key per encrypted file. This is to deal with copy between container semantics in Swift. We currently use AES-CBC with HMAC. We’ll move to GCM as soon as the code is stable. We have a new /verify resource that clients can use to check integrity. Filename & Container Names Flow Control We don’t currently encrypt filenames and container names. This is to ensure that all tools that expect Swift semantics still work. Pyrox performs the necessary flow control functionality that needs to happen to keep the proxy from being overwhelmed.
  • 17. Futurework KMIP Support There is a possibility that a Python KMIP client will be open-sourced by Safenet soon. If so, we’ll integrate it, if not, we’ll build our own. SSL / TLS Barbican will support the provisioning of SSL certificates from internal and external CAs. Federation Support for federated keys in both Barbican to Barbican and Barbican to HSM configurations. Integrations Barbican will help teams integrate to provide encryption services.
  • 18. IntegrateNow Python-Barbicanclient from barbicanclient import client! Provides both a programmatic and command line interface to a Barbican instance. barbican_client = client.Client(endpoint='http://path-tobarbican', tenant_id='tenant_id_for_context')! ! ! Source Code & Documentation The documentation and source code both reside on GitHub in the CloudKeep organization. Blueprints and project documentation is on Launchpad. Integration Environment Barbican maintains an integration environment on Public Cloud for testing. Not for use in production deploys, but usable for testing / dev. barbican_client.secrets.store(name, payload, payload_content_type, payload_content_encoding, algorithm, bit_length, mode, expiration)! ! barbican_client.orders.create(name, payload_content_type, algorithm, bit_length, mode, expiration)! usage: keep [-h] [--no-auth | --os-auth-url <auth-url>]! "[--os-username <auth-user-name>] [--os-password <authpassword>] [--os-tenant-name <auth-tenant-name>] [--ostenant-id <tenant-id>] [--endpoint <barbican-url>]! "<entity> <action> ...!