1

我已经用Google Cloud ML引擎成功培训了我的第一个网络,现在我正在尝试通过提供自己的加密密钥来加密数据以使安装程序更安全一些。正如the manual中所解释的,我现在使用自己的自定义加密密钥将数据复制到云存储,而不是将其存储在未加密的位置。为gcloud作业提供解密密钥提交培训

但是,现在我的设置(显然!)打破了,因为我提交给ML引擎的Python代码无法解密文件。我期待像--decrypt-keygcloud ml-engine jobs submit training这样的选项,但是我找不到这样的选项。如何提供此密钥,以便我的代码可以解密数据?

回答

0

简答:您不应将解密密钥传递给培训工作。相反请参见https://cloud.google.com/kms/docs/store-secrets

长答案:虽然技术上可以使解密密钥成为通过培训作业定义传递的标志,但这会将其暴露给任何有权访问列表培训作业的人员。您应该将密钥放置在Google云密钥管理服务中,并让运行ML培训作业的服务帐户有权从此处获取密钥。

您可以确定通过下面的https://cloud.google.com/ml-engine/docs/how-tos/working-with-data#using_a_cloud_storage_bucket_from_a_different_project

编辑列出的程序运行培训工作的服务帐户:还要注意什么阿列克谢说,在下面的评论; Tensorflow目前无法直接从GCS读取和解密文件,您需要将它们复制到每个工作人员的本地磁盘上,并将密钥提供给gsutil cp

+0

除了Chris说的之外,我想指出的是,您将无法通过TensorFlow从GCS读取加密文件,因为TensorFlow中的GCS客户端库不支持它们。 相反,您需要使用'gsutil cp'(提供加密密钥)将训练数据从GCS复制到本地磁盘,然后指导您的训练TensorFlow代码从本地磁盘读取数据。 –

+0

在GCKMS中存储密钥会影响目的,因为我也可以使用Google的默认服务器端加密。如果数据从Google云端存储泄漏,我不希望任何人能够读取这些文件。显然,在运行代码时应该提供密钥,但据我了解[本页](https://cloud.google.com/storage/docs/encryption),密钥可以在内存中并在操作成功后清除。 – jthread

+0

TL; DR:唯一安全的解决方案是在提交新工作时通过密钥,但显然这是不可能的。 – jthread