使用浏览器查看时,创建数据存储条目会导致加密属性
Creating a Datastore Entry results in encrypted properties when viewing with the browser
我设法在 python 中使用 google.cloud.datastore 创建或修改数据存储实体,但是当我在浏览器中登录到我的 Cloud Platform 项目并检查条目时,它看起来像所有它的属性是加密的(它们看起来像 "Rm9vIEJhcg=="
等等 - 如果我从浏览器创建它,我可以正常看到)。
我正在使用服务帐户身份的 json 文件进行身份验证:
self.client = datastore.Client()
self.client = self.client.from_service_account_json(cert_file.json)
服务帐户对整个项目具有 "editor" 权限。将其更改为 "Owner",这是我用于登录的 gmail 帐户的设置,并不能解决问题。
我这样创建实体:
with self.datastore.client.transaction():
entity = Entity(Key("key", project="project"))
entity["property"] = "data"
self.datastore.client.put(entity)
有什么方法可以使我用 python 库修改的条目可以从浏览器站点读取?
该值并未真正加密,而是使用 Base64 编码。原因是该值存储为 Blob(原始字节),而不是 Text/Character 字符串。控制台以 Base64 格式显示 Blob 字段。值 Rm9vIEJhcg==,当用 Base64 解码时,是 Foo Bar。
我对Python了解不多,不过看看官方的注释documentation:
When saving an entity to the backend, values which are “text” (unicode
in Python2, str in Python3) will be saved using the ‘text_value’
field, after being encoded to UTF-8. When retrieved from the back-end,
such values will be decoded to “text” again. Values which are “bytes”
(str in Python2, bytes in Python3), will be saved using the
‘blob_value’ field, without any decoding / encoding step.
根据您使用的 Python 版本,调整数据的数据类型,问题应该可以解决。
我设法在 python 中使用 google.cloud.datastore 创建或修改数据存储实体,但是当我在浏览器中登录到我的 Cloud Platform 项目并检查条目时,它看起来像所有它的属性是加密的(它们看起来像 "Rm9vIEJhcg=="
等等 - 如果我从浏览器创建它,我可以正常看到)。
我正在使用服务帐户身份的 json 文件进行身份验证:
self.client = datastore.Client()
self.client = self.client.from_service_account_json(cert_file.json)
服务帐户对整个项目具有 "editor" 权限。将其更改为 "Owner",这是我用于登录的 gmail 帐户的设置,并不能解决问题。
我这样创建实体:
with self.datastore.client.transaction():
entity = Entity(Key("key", project="project"))
entity["property"] = "data"
self.datastore.client.put(entity)
有什么方法可以使我用 python 库修改的条目可以从浏览器站点读取?
该值并未真正加密,而是使用 Base64 编码。原因是该值存储为 Blob(原始字节),而不是 Text/Character 字符串。控制台以 Base64 格式显示 Blob 字段。值 Rm9vIEJhcg==,当用 Base64 解码时,是 Foo Bar。
我对Python了解不多,不过看看官方的注释documentation:
When saving an entity to the backend, values which are “text” (unicode in Python2, str in Python3) will be saved using the ‘text_value’ field, after being encoded to UTF-8. When retrieved from the back-end, such values will be decoded to “text” again. Values which are “bytes” (str in Python2, bytes in Python3), will be saved using the ‘blob_value’ field, without any decoding / encoding step.
根据您使用的 Python 版本,调整数据的数据类型,问题应该可以解决。