Хранение двоичных данных в Google Secret Manager - PullRequest
1 голос
/ 07 апреля 2020

Я впервые использую 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 Ответ

2 голосов
/ 07 апреля 2020

Secret Manager хранит данные в точности так, как указано. К сожалению, в инструменте CLI gcloud была ошибка, которая добавляла дополнительный символ новой строки в конец ответа.

Эта ошибка была исправлена ​​в gcloud v288.0.0 . Пожалуйста, убедитесь, что вы используете v288.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
...