Encryption in Transit in Google Cloud
cloud.google.com
cloud.google.com
Edit: Of particular note is that if you have a VM in say us-central1 talking to another of your VMs in us-east1, we encrypt that traffic across regions (even though it's riding our backbone).
Disclosure: I work on Google Cloud (and even sort of contributed to this).
[1] https://cloud.google.com/images/security/whitepaper-transit-...
It wasn’t there before, but you can assign multiple certs to a front end now, and it works as you expect (tested with SSLLabs.com).
Great, thanks! :)
> Data in transit inside a physical boundary controlled by or on behalf of Google is generally authenticated but not necessarily encrypted.
Previously I believe this was not explicitly called out, but this is very important for GKE! In the default configuration, Kubernetes can arbitrarily bounce Service traffic between nodes, since the cloud LB selects a node at random, and then the Service iptables rules redirect the traffic to a node which hosts a pod that backs the Service.
So if your regulatory environment (or SLA) requires end-to-end encryption, you are not covered using GKE out of the box.
Options I've found to resolve this:
1) TLS to-the-pod
2) Using source-IP-address-preservation to ensure that the Service doesn't reroute your traffic to another node.
I'd really prefer if Google made this limitation a bit clearer in their GKE docs, since it's a major security gotcha, and took me a lot of digging to piece together. But it's definitely a big step forwards that the encryption policy is spelled out explicitly here.
> If you want to implement mutual authentication and encryption for workloads, you can use istio auth. Specifically, for a workload in Kubernetes, Istio auth allows a cluster-level CA to generate and distribute certificates, which are then used for pod-to-pod mutual Transport Layer Security (mTLS).
https://cloud.google.com/security/encryption-in-transit/#ser...
Disclosure: I work at Google on Kubeflow
As I roll out more services I've definitely got my eye on Istio, since auto-provisioned mTLS certs will be very useful. It does seem a bit bleeding edge though; it's only on version 0.3.
I asked questions about this exact same thing during a deep dive on EKS at reInvent a couple weeks ago; unsurprisingly the same issue exists there.
Disclosure: I work on Google Cloud.
The only disadvantage is one has to use a stream cipher, and those have fallen out of favor lately...
Then all you need is to interleave the stream and XOR with the data to encrypt your 100Gbps stream.
There are a number of technologies that support this kind of thing at the kernel level, but 1) layering these onto an existing SDN is not trivial, and 2) the extra encoding/decoding will absolutely have a performance impact if you're trying to do it at line rate on a 10Gb NIC, e.g. see https://www.weave.works/blog/weave-net-performance-fast-data....
Firebase hosting also serves content over HTTPS and redirect all http requests to https.
Disclosure: I work on Google Cloud (but disclaimer: not on Firebase).
[1] https://cloud.google.com/images/security/whitepaper-transit-...
Data in Datastore (and Firestore fwiw, that needs an update) is encrypted at rest, and today's paper discusses how it's also encrypted in transit between your app and the service. I don't believe Datastore supports Customer Supplied Encryption Keys [2] (yet) but that lets you have a key that even Google can't decrypt the data without you providing it. That's a pretty good way to separate permission from keys.
Disclosure: I work on Google Cloud.
[1] https://cloud.google.com/security/encryption-at-rest/default... [2] https://cloud.google.com/security/encryption-at-rest/custome...