如何解码/解密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编码的机密信息。