将机密存储在 DigitalOcean 上的 Django 应用程序 运行 docker 中
Store secrets in a Django application running with docker on a DigitalOcean
我很好奇在服务器上的 Django 应用程序中安全存储秘密(密码、密钥等)的最佳方法是什么。
之前,我将 Heroku 与 Git 一起使用,所有秘密都使用 Web 界面存储在 Heroku 的环境中。
然后我就可以使用 os.environ['secret_key']
来获取秘密了。
现在我正在尝试使用 Docker-Compose 部署到 DigitalOcean 服务器。我读过 docker secrets,但它似乎不安全。
我也可以将它们存储在 JSON 文件中,但我不确定它是否也安全。大概吧,那它们应该被编码。
环境变量是存储应用程序机密的常见做法。也就是说,这些变量的值不应存在于您的 (source-controlled-) docker-compose.
中
要指定一个变量应该从主机传输到容器,你只需要使用没有值的变量名:
# docker-compose.yml
version: '3'
services:
web:
build: .
environment:
DATABASE_URL:
SECRET_KEY:
然后,您可以选择多种方式在您的服务器上使用这些变量。一种方法是让 .env
file 具有这些值。例如:
# .env
SECRET_KEY=123
DATABASE_URL=postgresql://admin:s3cr3tz@db/mydb
这个文件当然没有提交到 git 存储库,并且是保密的。
利用上面的docker-compose.yml
和.env
,可以运行docker-compose config
看到完整的输出:
$ docker-compose config
services:
web:
build:
context: /vagrant/temp
environment:
DATABASE_URL: postgresql://admin:s3cr3tz@db/mydb
SECRET_KEY: '123'
version: '3.0'
我很好奇在服务器上的 Django 应用程序中安全存储秘密(密码、密钥等)的最佳方法是什么。
之前,我将 Heroku 与 Git 一起使用,所有秘密都使用 Web 界面存储在 Heroku 的环境中。
然后我就可以使用 os.environ['secret_key']
来获取秘密了。
现在我正在尝试使用 Docker-Compose 部署到 DigitalOcean 服务器。我读过 docker secrets,但它似乎不安全。
我也可以将它们存储在 JSON 文件中,但我不确定它是否也安全。大概吧,那它们应该被编码。
环境变量是存储应用程序机密的常见做法。也就是说,这些变量的值不应存在于您的 (source-controlled-) docker-compose.
中要指定一个变量应该从主机传输到容器,你只需要使用没有值的变量名:
# docker-compose.yml
version: '3'
services:
web:
build: .
environment:
DATABASE_URL:
SECRET_KEY:
然后,您可以选择多种方式在您的服务器上使用这些变量。一种方法是让 .env
file 具有这些值。例如:
# .env
SECRET_KEY=123
DATABASE_URL=postgresql://admin:s3cr3tz@db/mydb
这个文件当然没有提交到 git 存储库,并且是保密的。
利用上面的docker-compose.yml
和.env
,可以运行docker-compose config
看到完整的输出:
$ docker-compose config
services:
web:
build:
context: /vagrant/temp
environment:
DATABASE_URL: postgresql://admin:s3cr3tz@db/mydb
SECRET_KEY: '123'
version: '3.0'