DHOZEd.png

Secret on kubernetes

Secret在kubernetes中用于存放敏感数据,降低暴露风险。
POD有2种方式来使用secret:作为volume的一个域被容器挂载,或者拉取镜像的时候被kubelet引用。
Secret三种类型:

  • Opaque:使用base64编码明文来存放,可以通过base64 --decode解码获得原始数据,安全性弱。
  • kubernetes.io/dockerconfigjson:用来存储私有docker仓库的认证信息。
  • kubernetes.io/service-account-token:用于被serviceaccount引用,serviceaccout 创建时Kubernetes会默认创建对应的secret。Pod如果使用了serviceaccount,对应的secret会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中。

Opaque类型

Opaque类型使用base64编码存储信息

创建base64编码

[root@master01 ~]# echo -n 'admin' | base64
YWRtaW4=
[root@master01 ~]# echo -n '123456' | base64
MTIzNDU2

创建Secret

apiVersion: v1
kind: Secret
metadata:
  name: testsecret
  namespace: test
type: Opaque
data:
  username: YWRtaW4=
  password: MTIzNDU2

查看Secret

[root@master01 ~]# kubectl -n test get secret testsecret -o yaml
apiVersion: v1
data:
  password: MTIzNDU2
  username: YWRtaW4=
kind: Secret
metadata:
  creationTimestamp: "2020-05-15T01:31:20Z"
  name: testsecret
  namespace: test
  resourceVersion: "29716401"
  selfLink: /api/v1/namespaces/test/secrets/testsecret
  uid: a26a3cd9-2e19-4292-925e-1e9a8e16af3a
type: Opaque

可以获得明文,较为不安全:

[root@master01 ~]# echo YWRtaW4= |base64 --decode
admin[root@master01 ~]# echo MTIzNDU2 |base64 --decode
123456

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code