Хранение двоичных данных в Google Secret Manager
Я впервые использую Google Secret Manager для хранения двоичных данных. Когда я открываю секрет, кажется, что у него другая кодировка или формат.
Фактические данные представляют собой пакет сертификатов, но мне удалось воспроизвести проблему, используя меньшие двоичные данные. Действия по воспроизведению:
Создайте файл с двоичными данными:
echo -e -n '\xed\xfe' > secret.txt
Создайте секрет и версию:
gcloud secrets create "my-secret" \ --data-file ./secret.txt \ --replication-policy "automatic"
Получите доступ к секрету и сохраните результат в файл:
gcloud secrets versions access latest --secret "my-secret" > result.txt
Сравните два файла:
od -t x1 secret.txt # ed fe od -t x1 result.txt # 3f 3f 0a
Почему результат другой? Нужно ли мне делать что-то еще, чтобы Google Secret Manager работал с двоичными данными?
1 ответ
Secret Manager хранит данные точно так, как указано. К сожалению, вgcloud
Инструмент CLI, который добавлял дополнительный символ новой строки в конец ответа.
Эта ошибка была исправлена в gcloud v288.0.0. Убедитесь, что вы используете версию 288.0.0 или выше.
Если вас беспокоят проблемы с локальной кодировкой, вам следует вместо этого получить необработанный ответ JSON. Этот ответ будет включать секретную полезную нагрузку в кодировке base64, которая намного безопаснее для транспорта:
gcloud secrets versions access latest --secret "my-secret" --format "json"
Вы можете использовать такой инструмент, как jq, для анализа JSON в командной строке. Обратите внимание, что секретные данные полезной нагрузки закодированы в формате base64, поэтому вам необходимо декодировать значение перед его использованием.
gcloud secrets versions access latest --secret "my-secret" --format "json" | \
jq -r .payload.data | \
base64 --decode > results_binary.txt
Проверить:
od -t x1 results_binary.txt # ed fe