2017-04-26 67 views
3

我們使用VSTS構建各種Azure Web應用程序並將它們部署到不同的環境。在發佈過程中,我們對Web.config文件執行轉換,使用存儲在VSTS中的變量來處理每個環境的連接字符串等內容。使用VSTS設置Azure功能應用程序設置而不暴露在Azure門戶中

我們想用Azure函數做類似的事情,但是我們遇到了問題。我們發現執行轉換到appsettings.json文件不起作用。添加的新鍵/值對在Azure中不起作用,並且現有的更改未在Azure中加載。

我查看了無數的文檔,只發現文檔指出Azure函數的應用設置必須使用Azure Portal存儲,或者在發佈過程中使用PowerShell腳本進行設置。但是,這些解決方案會將連接字符串和其他祕密公開給任何有權訪問Azure Portal的人,這不是我們想要的。

如何將應用程序設置提供給Azure函數(如AzureWebJobsStorage和AzureWebJobsDashboard值),而不將它們暴露在Azure門戶上?

回答

5

但是,這些解決方案會將連接字符串和其他祕密公開給任何有權訪問Azure Portal的人,這不是我們想要的。

這不是一個正確的假設。只有屬於該功能應用程序的貢獻者或管理員的用戶才能看到應用程序設置。這些用戶可以看到所有已部署的文件,因此如果您在已部署的文件中有祕密,它們同樣可見。

使用App設置在具有在文件你的祕密的好處是:

  • 應用設置祕密和休息
  • 加密你就不太可能通過下載部署文件,而意外泄露祕密意識到他們有祕密。
+0

非常感謝,這是非常有見識的!我會向我的團隊的其他成員說明,我們應該考慮使用應用程序設置而不是文件中的祕密。僅供參考,是否有在Azure功能應用程序的文件內部署祕密的方法,還是必須通過應用程序設置?如果是這樣,怎麼樣?我們想確保我們考慮所有可能的解決方案。謝謝! –

+0

@DavidOmid我與其他人覈對過,並且不可能在function.json中硬編碼祕密。它們僅在Azure應用程序設置(或通常環境變量)中受支持。至於'appsettings.json',請注意,這隻包含用於客戶端開發的祕密。該文件本身不在Azure上使用。 –

+0

好的,非常感謝您爲我確認這一點,我會將這些信息傳回給我的團隊,因爲我們普遍擔心的是,這不符合我們的應用設置如何處理其他Azure應用的部署。我們對.NET很有經驗,但Azure的功能對我們來說是全新的,我們仍在學習,所以感謝您的耐心。 –

相關問題