Мое приложение хранит файлы в Firebase Storage. Я хочу удобно зашифровать эти файлы на сервере. Firebase Storage использует Google Cloud Storage. Для этого Google Cloud Storage предлагает два варианта: ключи шифрования, предоставленные клиентом, где приложение предоставляет ключ, и управляемое клиентом шифрование keys, где приложение предоставляет имя серверной «учетной записи службы шифрования» в облачном хранилище Google.
Я думаю, что моя серверная часть Java, которая создает мои файлы, будет в порядке: Firebase Admin SDK использует библиотеку Java Cloud Storage. И там Storage.BlobTargetOption имеет encryptionKey()
метод для ключа шифрования, предоставляемого заказчиком, и метод kmsKeyName()
для ключей шифрования, управляемого заказчиком.
Но я не понимаю, как я могу загружать файлы с ключами шифрования, предоставленными / управляемыми заказчиком, в Angular или Flutter. Во Flutter получение ссылки на файл позволяет мне указать только путь, а не ключ или имя ключа. И получение URL-адреса загрузки для этой ссылки не имеет параметров, так что здесь тоже нет ключа или имени ключа. То же самое и для Angular SDK: невозможно указать ключ или имя ключа при создании сегмента для доступа к файлу (извините, здесь нет ссылки) и при получении URL-адреса загрузки файла.
Итак: как мне загрузить файлы с предоставленными заказчиком / управляемыми ключами шифрования с помощью Firebase Storage в Angular или Flutter?