Я работаю с GCP KMS, и кажется, что когда я отправляю файл в корзину GCP (используя gustil cp), он зашифровывается.
Однако у меня есть вопрос, связанный с разрешением восстановить этот файл из той же корзины, используя другую учетную запись службы.Я имею в виду, что служебная учетная запись, которую я использую для восстановления файла из корзины, не имеет привилегии Decrypt, и даже при этом работает gustil cp.
Мой вопрос: нормальное ли это поведение илиm что-то упустил?
Позвольте мне описать мой вопрос:
Прежде всего, я подтверждаю, что шифрованием по умолчанию для корзины является КЛЮЧ, который я установил ранее:
$ kms encryption gs://my-bucket
Default encryption key for gs://my-bucket:
projects/my-kms-project/locations/my-location/keyRings/my-keyring/cryptoKeys/MY-KEY
Затем, с помощью gcloud config, я установил учетную запись службы, которая имеет разрешения «Storage Object Creator» и «Cloud KMS CryptoKey Encrypter»:
$ gcloud config set account my-service-account-with-Encrypter-and-object-creator-permissions
Updated property [core/account].
Я отправляю локальный файл в корзину:
$ gsutil cp my-file gs://my-bucket
Copying file://my-file [Content-Type=application/vnd.openxmlformats-officedocument.presentationml.presentation]...
| [1 files][602.5 KiB/602.5 KiB]
Operation completed over 1 objects/602.5 KiB.
После отправки файла в корзину я подтверждаю, что файл зашифрован с использованием ключа KMS, который я создал ранее:
$ gsutil ls -L gs://my-bucket
gs://my-bucket/my-file:
Creation time: Mon, 25 Mar 2019 06:41:02 GMT
Update time: Mon, 25 Mar 2019 06:41:02 GMT
Storage class: REGIONAL
KMS key: projects/my-kms-project/locations/my-location/keyRings/my-keyring/cryptoKeys/MY-KEY/cryptoKeyVersions/1
Content-Language: en
Content-Length: 616959
Content-Type: application/vnd.openxmlformats-officedocument.presentationml.presentation
Hash (crc32c): 8VXRTU==
Hash (md5): fhfhfhfhfhfhfhf==
ETag: xvxvxvxvxvxvxvxvx=
Generation: 876868686868686
Metageneration: 1
ACL: []
Затем я установил другую учетную запись службы, но на этот раз БЕЗ РАЗРЕШЕНИЯ и разрешения средства просмотра объектов (чтобы он мог читать файлы из корзины):
$ gcloud config set account my-service-account-WITHOUT-DECRYPT-and-with-object-viewer-permissions
Updated property [core/account].
После наборадо новой учетной записи службы (БЕЗ разрешения на расшифровку), gustil для восстановления файла из корзины работает гладко ...
gsutil cp gs://my-bucket/my-file .
Copying gs://my-bucket/my-file...
\ [1 files][602.5 KiB/602.5 KiB]
Operation completed over 1 objects/602.5 KiB.
Мой вопрос: нормально ли это поведение?Или, поскольку новая учетная запись службы не имеет разрешения на расшифровку, gustil cp
для восстановления файла не должно работать?Я имею в виду, что идея не в том, что при шифровании KMS 2-я команда gustil cp
должна завершиться ошибкой с сообщением об ошибке "403 разрешение отказано" или что-то в этом роде.2-я служебная учетная запись (для восстановления файла из корзины), в этом случае gustil не работает, но это потому, что у него нет разрешения на чтение файла:
$ gsutil cp gs://my-bucket/my-file .
AccessDeniedException: 403 my-service-account-WITHOUT-DECRYPT-and-with-object-viewer-permissions does not have storage.objects.list access to my-bucket.
Я ценю, если кто-то ещемог бы помочь мне и прояснить вопрос .... конкретно я не уверен, должна ли команда gsutil cp gs://my-bucket/my-file .
работать или нет.
Я думаю, что это не должно работать (поскольку учетная запись службы не имеет разрешения на дешифрование) или оно должно работать?