保障Kubernetes上微服务的安全
1. 管理Kubernetes中的秘密
在Kubernetes中,秘密(secrets)的类型通常为Opaque,返回的值是经过Base64编码的。若要获取并解码这些值,可使用以下命令:
$ echo -n $(kubectl get secret generic-secrets -o jsonpath="{.data.a}") | base64 -D
jsonpath输出格式能让你深入到对象的特定部分。若你更喜欢,也可以使用 jq (https://stedolan.github.io/jq/)。
需要注意的是,秘密并非以加密形式存储或传输,只是进行了Base64编码,任何人都能对其进行解码。当你使用用户账户创建秘密(或获取秘密)时,会得到解密后秘密的Base64编码表示。不过,它在磁盘上静态存储时是加密的,并且在通过HTTPS与Kubernetes API服务器通信时,传输过程也是加密的。
将秘密传递给容器有多种方式:
- 可以将秘密嵌入容器镜像中。
- 可以将其传递到环境变量中。
- 可以将其作为文件挂载。
其中,最安全的方式是将秘密作为文件挂载。若将秘密嵌入镜像,任何有权访问该镜像的人都能获取你的秘密;若将秘密作为环境变量传递,可通过 docker inspect 、 kubectl describe pod 查看,若不清理环境,子进程也能看到。此外,在报告错误时通常会记录整个环境
超级会员免费看
订阅专栏 解锁全文
1069

被折叠的 条评论
为什么被折叠?



