如何解码/解密Kubernetes秘密

时间:2020-02-23 14:30:29  来源:igfitidea点击:

密码,SSH密钥,API凭据和OAuth令牌等敏感信息将存储在Kubernetes中的秘密。
我们最近对如何将Kubernetes秘密从一个名称空间复制到另一个名称的教程。
当我们需要确认秘密的实际值时,我们可以解码Base64数据。
在此简短教程中,我们将向我们展示如何使用kubectl命令解码Kubernetes中的Base64秘密。

对于此演示,我们将为数据库的用户名和密码创建一个简单的秘密。

echo -n 'admin' > ./username.txt
echo -n 'Password' > ./password.txt

运行kubectl创建秘密命令以创建Kubernetes API服务器的秘密对象。

$kubectl create secret generic my-user-pass --from-file=./username.txt --from-file=./password.txt
secret/my-user-pass created

我们可以通过运行以下kubectl命令确认已成功创建的秘密对象:

$kubectl get secret

解码秘密数据:

secret_name="my-user-pass"
kubectl get secret $secret_name -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'

这是我的命令执行

password.txt: Password
username.txt: admin

如果我们有JQ,我们可以使用以下命令解码。

$kubectl get secret my-user-pass -o json | jq '.data | map_values(@base64d)'
{
  "password.txt": "Password",
  "username.txt": "admin"
}

使用命令安装JQ:

--- Ubuntu/Debian --
$sudo apt install jq
--- CentOS/Fedora --
$sudo yum install jq