[英]Should I use user-secrets or environment variables with docker
使用 docker 和 asp.net core 進行開發時,我應該使用用戶機密還是環境變量? 我正在使用 Visual Studio 2017 在添加項目時創建的默認 docker 文件,該文件使用 microsoft/aspnetcore:1.1,我認為是 linux 映像。
如何在 docker 中設置用戶機密/環境變量,以便在啟動時設置它們,但不包含在源代碼中?
出於生產目的,您需要使用環境變量,而不是 use-secrets。 通過幫助防止敏感數據存儲在代碼中/簽入源代碼控制,秘密僅用於在開發過程中安全存儲:
Secret Manager 工具不會加密存儲的機密,不應將其視為受信任的存儲。 它僅用於開發目的。 鍵和值存儲在用戶配置文件目錄中的 JSON 配置文件中。
作為環境變量的替代方案,您可以考慮使用“外部”鍵值存儲,例如Consul 、 Vault等。
關於docker中的環境變量,SO已經有相關的問題/答案。 請參閱如何將環境變量傳遞給 docker 容器? 作為例子。
我決定添加另一個名為 appsettings.secrets.json 的 appsettings 文件,而不是使用用戶機密或環境變量。 然后在構造函數中像其他 appsettings 文件一樣添加文件:
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile("appsettings.secrets.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
只要確保將 appsettings.secrets.json 添加到 .gitignore 文件中,這樣它就不會被添加到源代碼管理中。 仍然可以使用用戶機密和環境變量。
環境變量更好 - https://12factor.net/config
如果您使用--env-file
docker run
--env-file
使用-e
或--env-file
選項: https : --env-file
如果您使用env_file
docker-compose
use environment
或env_file
key 運行env_file
: https : env_file
對於開發,我依賴 .net秘密管理器工具:
dotnet user-secrets init
dotnet user-secrets set "Movies:ServiceApiKey" "12345"
..
請參閱MS 文檔:在 ASP.NET Core 中安全存儲開發中的應用程序機密。
Docker 示例:
docker run ^
-e ASPNETCORE_ENVIRONMENT=Development ^
-v %APPDATA%/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro ^
company/image:latest
docker-compose 示例:
version: "3.8"
..
net_core_service:
..
environment:
# should be defined Development-env to allow loading user-secrets located on the local computer.
- ASPNETCORE_ENVIRONMENT=Development
..
volumes:
# map the dotnet user-secret folder
- $APPDATA/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
..
..
將docker與asp.net core一起使用進行開發時,我應該使用用戶秘密或環境變量嗎? 我正在使用添加項目時使用Visual Studio 2017創建的默認docker文件,該項目使用microsoft / aspnetcore:1.1,我相信這是一個Linux映像。
如何在docker中設置user-secrets / environment變量,以便在啟動時設置它們,但不包含在源代碼中?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.