gsutill:使用客户提供的密钥

时间:2020-02-25 12:26:11

标签: google-cloud-platform google-cloud-storage

我有一个包含文件的Google云存储桶。出于安全原因,每个文件都使用不同的密钥进行加密。此存储桶是源。我想将其内容从“源”存储桶复制到“目标”存储桶。只是要备份...

我尝试运行此命令:

$ gsutil cp -r gs://source-bucket/* gs://dest-bucket/
Traceback (most recent call last):
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gsutil", line 21, in <module>
    gsutil.RunMain()
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gsutil.py", line 132, in RunMain
    sys.exit(gslib.__main__.main())
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 431, in main
    user_project=user_project)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 760, in _RunNamedCommandAndHandleExceptions
    _HandleUnknownFailure(e)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 626, in _RunNamedCommandAndHandleExceptions
    user_project=user_project)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/command_runner.py", line 411, in RunNamedCommand
    return_code = command_inst.RunCommand()
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/commands/cp.py", line 1200, in RunCommand
    seek_ahead_iterator=seek_ahead_iterator)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/command.py", line 1515, in Apply
    arg_checker, should_return_results, fail_on_error)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/command.py", line 1586, in _SequentialApply
    worker_thread.PerformTask(task, self)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/command.py", line 2306, in PerformTask
    results = task.func(cls, task.args, thread_state=self.thread_gsutil_api)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/commands/cp.py", line 790, in _CopyFuncWrapper
    preserve_posix=cls.preserve_posix_attrs)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/commands/cp.py", line 1000, in CopyFunc
    preserve_posix=preserve_posix)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/utils/copy_helper.py", line 3729, in PerformCopy
    decryption_key = GetDecryptionCSEK(src_url, src_obj_metadata)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/utils/copy_helper.py", line 3645, in GetDecryptionCSEK
    (src_obj_metadata.customerEncryption.keySha256, src_url))
gslib.cloud_api.EncryptionException: Missing decryption key with SHA256 hash 0z1dPrWjTL6yrU5U6GP2gTaBriwNbMJnh6CcIuLSy8o=. No decryption key matches object gs://source-bucket/myfile.json

我猜想失败的原因是为了复制文件而缺少密钥。

我也尝试创建一个Transfer操作,但是由于一个奇怪的原因它失败了。

在这种情况下如何备份文件?只需照原样复制即可。 我有什么选择?

1 个答案:

答案 0 :(得分:1)

您必须提供用于加密文件的密钥。 使用gsutils,您必须使用.boto文件,并将其放入类似的内容中:

[GSUtil]
encryption_key = ...
decryption_key1 = ...
decryption_key2 = ...

gsutil自动检测要用于云的正确CSEK 通过将键的SHA256哈希值与 CSEK。 gsutil会考虑配置的加密密钥,最多100个 搜索匹配项时的解密密钥。解密密钥必须是 在boto配置文件中以升序排列 从1开始。

有关客户提供的加密密钥的更多信息,请检查here