Swift Object Encryption
Janie Richling
IBM
Alistair Coles
Hewlett Packard Enterprise
Swift Object Encryption Janie Richling IBM Alistair Coles Hewlett - - PowerPoint PPT Presentation
Swift Object Encryption Janie Richling IBM Alistair Coles Hewlett Packard Enterprise Taking a look upstream Image: https://pixabay.com/en/sailor-spyglass-man-ship-lookout-40090/ Its a community effort Contributions from: Sam Merritt
Janie Richling
IBM
Alistair Coles
Hewlett Packard Enterprise
Contributions from:
Sam Merritt (SwiftStack) Mahati Chamarthy (Intel) Hamdi Roumani (IBM) Thiago Da Silva (Red Hat) Peter Chng (IBM) Jonathan Hinson (IBM) Tim Burke (SwiftStack) Christian Cachin (IBM) Janie Richling (IBM) Alistair Coles (HPE)
Create (PUT, COPY) Read (GET, HEAD) Update (POST) Delete (DELETE)
REST API via HTTP protocol
containers
accounts
REST API
tenant_1 images img_1 img_2 tenant_2 pictures video 001 002 abc
containers
accounts
REST API
tenant_1 images img_1 img_2 tenant_2 pictures video 001 002 abc
curl http://swift:8080/v1/tenant_1/images/004 -X PUT curl http://swift:8080/v1/tenant_2/video/abc -X GET
REST API via HTTP protocol
curl http://swift:8080/v1/tenant_1/images/004 -X PUT curl http://swift:8080/v1/tenant_2/video/abc -X GET
Load is distributed using modified consistent hashing
Proxy servers Storage nodes
curl http://swift:8080/v1/tenant_1/images/004 -X PUT curl http://swift:8080/v1/tenant_2/video/abc -X GET
Load is distributed using modified consistent hashing
Proxy servers Storage nodes
curl http://swift:8080/v1/tenant_1/images/004 -X PUT curl http://swift:8080/v1/tenant_2/video/abc -X GET
Data is protected using erasure coding or replication
Proxy servers Storage nodes
curl http://swift:8080/v1/tenant_1/images/004 -X PUT curl http://swift:8080/v1/tenant_2/video/abc -X GET
Data is protected using erasure coding or replication
Proxy servers Storage nodes
Proxy servers Storage nodes
Access is controlled e.g. using Keystone identity service and RBAC Only proxy nodes have externally facing network interfaces
+ performance + metadata is encrypted as well as data
Image: https://pixabay.com/en/hard-drive-hdd-disk-data-store-503960/Proxy servers Storage nodes
Self encrypting drives/disk controllers
+ software solution + metadata is encrypted as well as data
Proxy servers Storage nodes
dm-crypt
+ allows integration with Baribcan + allows user provided keys (BYOK) + upgrade without impacting existing data + internal data in flight is encrypted
Proxy servers Storage nodes
encrypter decrypter keymaster
First middleware last middleware
encrypter decrypter keymaster
First middleware last middleware
Keys are never cached or persisted
Request with credentials Root Secret
account1 containerA
containerB hmac(Secret, 'account1/containerA') = hmac(Secret, 'account1/containerA/object1') = Key derivation alg
encrypter decrypter keymaster
First middleware last middleware
Keys are never cached or persisted
Request with credentials
Key Server/ Barbican
encrypter decrypter keymaster
First middleware last middleware
Request with credentials
Key Pre-encrypt Values
Etag 4b7550f00f2e80408b8bb2d6dc7f705f Content- type text/plain Content- length 28 X-Object- Meta-Tag Bank account password Body correct horse battery staple
Key Post-encrypt Values
Etag LQIpWr6BPR1RUDxmnWrQX1JemA3J egzPI9yd9QmkBOo= Content- type text/plain Content- length 28 X-Object- Meta-Tag VEVYRwZYXVVC9QTEFJTg== Body *?/uew(liet#\4*!@j[>.6-f!y$\
Encoding encrypted headers
Contributions from:
Sam Merritt (SwiftStack) Mahati Chamarthy (Intel) Hamdi Roumani (IBM) Thiago Da Silva (Red Hat) Peter Chng (IBM) Jonathan Hinson (IBM) Tim Burke (SwiftStack) Christian Cachin (IBM) Janie Richling (IBM) Alistair Coles (HPE)
Spec: http://specs.openstack.org/openstack/swift-specs/specs/in_progress/at_rest_encryption.html Code: https://github.com/openstack/swift/tree/feature/crypto