Я использую cloud storage
загрузить файл с ключом KMS. Вот мой код:
await storage.bucket(config.bucket).upload(file, {
kmsKeyName: `projects/${process.env.PROJECT_ID}/locations/global/keyRings/test/cryptoKeys/nodejs-gcp`,
destination: 'mmczblsq.kms.encrypted.doc'
});
У меня есть cloud-storage-admin.json
учетная запись службы с разрешением cloud storage admin
. Инициализируйте storage
с помощью этой учетной записи службы.
const storage: Storage = new Storage({
projectId: process.env.PROJECT_ID,
keyFilename: path.resolve(__dirname, '../.gcp/cloud-storage-admin.json')
});
И я использую gcloud kms keys add-iam-policy-binding
добавление roles/cloudkms.cryptoKeyEncrypterDecrypter
к cloud-storage-admin.json
служебной учетной записи.
Когда я пытаюсь загрузить файл с ключом kms, по-прежнему получено сообщение об ошибке разрешения:
В ключе Cloud KMS отказано в доступе. Убедитесь, что ваша учетная запись облачного хранилища авторизована для использования этого ключа.
обновление
☁ nodejs-gcp [master] ⚡ gcloud kms keys get-iam-policy nodejs-gcp --keyring=test --location=global
bindings:
- members:
- serviceAccount:cloud-storage-admin@<PROJECT_ID>.iam.gserviceaccount.com
- serviceAccount:service-16536262744@gs-project-accounts.iam.gserviceaccount.com
role: roles/cloudkms.cryptoKeyEncrypterDecrypter
etag: BwWJ2Pdc5YM=
version: 1