如何解码/解密Kubernetes机密

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

诸如密码,SSH密钥,API凭证和OAuth令牌之类的敏感信息作为秘密存储在Kubernetes中。我们最近做了一篇关于如何将Kubernetes机密从一个名称空间复制到另一个名称空间的教程。当需要确认密码的实际值时,可以解码base64数据。在本简短教程中,我们将向我们展示如何使用kubectl命令在Kubernetes中解码base64秘密。

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

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

运行kubectl create secret命令以创建Kubernetes API服务器的Secret对象。

$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

这就是我们如何轻松地在Kubernetes中输出base64编码的机密信息。