在 Google Secret Manager 中存储二进制数据
Storing binary data in 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 处理二进制数据?
Secret Manager 完全按照给定的方式存储数据。不幸的是,gcloud
CLI 工具中存在一个错误,该错误会在响应末尾添加一个额外的换行符。
这个错误是 fixed in 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
我第一次使用 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 处理二进制数据?
Secret Manager 完全按照给定的方式存储数据。不幸的是,gcloud
CLI 工具中存在一个错误,该错误会在响应末尾添加一个额外的换行符。
这个错误是 fixed in 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