gsutill: файлы резервных копий, зашифрованные с помощью предоставленного клиентом ключа - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть хранилище облачного хранилища 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

Я предполагаю, что причиной этого сбоя является отсутствующий ключ для копирования файлов.

Я также пытался создать операцию переноса, но она не удалась по странной причине.

Как я могу сделать резервную копию своих файлов в этом случае? Просто скопируйте это как есть. Каковы мои альтернативы?

1 Ответ

1 голос
/ 25 февраля 2020

Вы должны предоставить ключи, которые вы использовали для шифрования файлов. С gsutils вы должны использовать файл .boto и поместить его во что-то похожее:

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

gsutil автоматически определяет правильный CSEK для использования в облачном объекте, сравнивая ключ SHA256 га sh с ключом га sh из ЦСЭК. gsutil учитывает настроенный ключ шифрования и до 100 ключей дешифрования при поиске совпадения. Ключи дешифрования должны быть перечислены в файле конфигурации boto в порядке возрастания номеров, начиная с 1.

, чтобы узнать больше о предоставляемых клиентом ключах шифрования, проверьте здесь

...