使用浏览器查看时,创建数据存储条目会导致加密属性

时间:2016-10-18 09:57:05

标签: python google-cloud-datastore google-cloud-python gcloud-python

我设法在python中使用google.cloud.datastore创建或修改数据存储实体,但是当我在浏览器中登录我的Cloud Platform项目并检查条目时,看起来它的所有属性都已加密(它们看起来像"Rm9vIEJhcg=="等 - 如果我从浏览器创建它,我可以正常看到。)

我正在使用服务帐户标识的json文件进行身份验证:

self.client = datastore.Client()
self.client = self.client.from_service_account_json(cert_file.json)

服务帐户有"编辑器"整个项目的权限。将其更改为"所有者",这是我用于登录的Gmail帐户的设置,并不能解决问题。

我像这样创建实体:

with self.datastore.client.transaction():
    entity = Entity(Key("key", project="project"))
    entity["property"] = "data"
    self.datastore.client.put(entity)

任何方法都可以使用python库修改的条目可以从浏览器站点读取吗?

1 个答案:

答案 0 :(得分:5)

该值未真正加密,而是使用Base64编码。原因是该值存储为Blob(原始字节),而不是文本/字符串。控制台以Base64格式显示Blob字段。当用Base64解码时,值Rm9vIEJhcg ==是Foo Bar。

我对Python没有太多了解,但请看一下官方documentation的说明:

  

将实体保存到后端时,值为“text”(unicode   在Python2中,str3在Python3中将使用'text_value'保存   字段,在编码为UTF-8之后。从后端检索时,   这些值将再次解码为“文本”。值为“字节”   (Python2中的str,Python3中的字节),将使用   'blob_value'字段,没有任何解码/编码步骤。

根据您使用的Python版本,调整数据的数据类型,并解决问题。