Хранение двоичных данных в Google Secret Manager

Я впервые использую Google Secret Manager для хранения двоичных данных. Когда я открываю секрет, кажется, что у него другая кодировка или формат.

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

  1. Создайте файл с двоичными данными:

    echo -e -n '\xed\xfe' > secret.txt
    
  2. Создайте секрет и версию:

    gcloud secrets create "my-secret" \
      --data-file ./secret.txt \
      --replication-policy "automatic"
    
  3. Получите доступ к секрету и сохраните результат в файл:

    gcloud secrets versions access latest --secret "my-secret" > result.txt
    
  4. Сравните два файла:

    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
Другие вопросы по тегам