我的应用程序需要确保通过Pub / Sub发送的消息中包含的数据不会离开欧盟的边界。这与所谓的“数据驻留”要求有关。
Pub / Sub被描述为全局服务[1],其中服务的客户端可以在不知道存储和处理消息的特定位置的情况下发布/订阅消息。
我可以将Pub / Sub用于我的应用程序吗?
答案 0 :(得分:2)
今天提供的Google Cloud Pub / Sub服务版本不提供任何“数据驻留”保证。然而,可以设计具有Pub / Sub的解决方案,其最小化违反“数据驻留”目标的风险,使得Pub / Sub消息数据存储在EU多区域之外的可能性变得极不可能。具体做法是:
当位于欧盟区域的发布者(即发布/订阅客户代码)(例如eu-west1)向Pub / Sub主题发布消息时,该消息将存储在同一区域中,除非)该地区的Pub / Sub遭遇停电; b)VM和Pub / Sub之间的网络连接遇到延迟峰值;或c)消息主题的订阅者从不同的区域连接。
由于Pub / Sub负载均衡器使用网络延迟测量(ping),因此驻留在EU区域(例如eu-west1)的计算引擎VM发布的消息不太可能被复制到EU之外。 )在决定是否将消息存储到不同的区域时。从欧盟地区到不同欧盟地区的网络延迟可能低于从欧盟地区到非欧盟地区的网络延迟。因此,即使在中断事件(即上面的1a)和区域内网络延迟峰值(上面的1b)中,该消息也可能留在欧盟。
如果邮件被复制到欧盟地区之外,则该邮件将被存储在非欧盟地区最多7天,之后将其删除。邮件保留时间可以减少到不到7天。
答案 1 :(得分:2)
Google Cloud Pub / Sub不支持数据驻留。建议的解决方案是确保您不使用Pub / Sub发送任何客户数据。相反,您可以发送指向存储在数据存储区,GCS等中的实际数据的指针。这些服务确实尊重数据驻留,并且可以配置为确保数据不会离开欧盟。
答案 2 :(得分:1)
更正:事实证明,我们实际上无法在任何地方设置数据驻留位置。 MessageStoragePolicy类型仅用于读取的
2019年的答案: Golang API具有MessageStoragePolicy类型 https://godoc.org/cloud.google.com/go/pubsub#MessageStoragePolicy
type MessageStoragePolicy struct {
// The list of GCP regions where messages that are published to the topic may
// be persisted in storage. Messages published by publishers running in
// non-allowed GCP regions (or running outside of GCP altogether) will be
// routed for storage in one of the allowed regions. An empty list indicates a
// misconfiguration at the project or organization level, which will result in
// all Publish operations failing.
AllowedPersistenceRegions []string }