在Docker文件中加密密码

时间:2019-05-26 12:48:50

标签: node.js docker security encryption

在docker文件中存储密码的推荐做法是什么?

在使用docker之前,我曾经在config.json文件中拥有密码,然后在我的代码中解密(在此示例中为nodejs)

{
"database": {
    "host":"localhost",
    "user":"root",
    "password":"0234c7912c78797d39",
    "database":"mydatabase"
  }
}

然后在nodejs中解密。

config.database.password = crypto.decrypt(config.database.password);

我不确定这是否是一种好方法,但绝对希望看到将密码存储在将要部署的纯文本文件中的最佳方法。

现在我有了这个docker文件,我应该如何获取开发/生产的密码?

version: '3'

services:

  mysql:
    image: "mysql:5.7"
    container_name: "mysql"
    ports:
      - "6603:3306"
    environment:
      DATABASE_HOST: mysql
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: mysql
      MYSQL_PASSWORD: password

1 个答案:

答案 0 :(得分:-1)

我们使用了Kubernetes,在link之后进行了很好的检查,首先您应该创建一个称为secret的东西并将其应用private Date currentDate() { final Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, 0); return cal.getTime(); } DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); String posted = dateFormat.format(currentDate());

kubectl apply -f <secret-file>

然后您应该创建一个可以访问机密的pod

apiVersion: v1
kind: Secret
metadata:
  name: test-secret
data:
  username: bXktYXBw
  password: Mzk1MjgkdmRnN0pi
秘密文件中的

用户名和密码均为base64,并且通过安装在apiVersion: v1 kind: Pod metadata: name: secret-test-pod spec: containers: - name: test-container image: nginx volumeMounts: # name must match the volume name below - name: secret-volume mountPath: /etc/secret-volume # The secret data is exposed to Containers in the Pod through a Volume. volumes: - name: secret-volume secret: secretName: test-secret 下的卷向容器公开。如果您连接到Docker容器,则将cd插入/etc/secret-volume并在下面运行:

/etc/secret-volume

您应该获得如下输出:

cat username; echo; cat password; echo