使用 dotnet user-secrets 儲存敏感資訊
紀錄一下如何透過 dotnet user-secret 儲存敏感資訊
Intro
專案通常會有一個配置檔案,在 dotnet 則是儲存於 appSetting.json
,這隻檔案應該要進版控,因為有它專案才完整,但如果是ㄧ些比較敏感的資訊就不合適一起進入版控,例如一些 token
或者是一些比較敏感的資料,可能是關於安全的,可能是關於錢的,反正這些東西進入版控就會有一些風險。所以我們不會想要這些東西進入版控,在 dotnet 的世界裏面有一個東西可以解決這件事情,就是 user-secret
簡單的來說,既然你不想把這些東西進版控,那就另外放在別的目錄,跟專案隔開來,這些敏感資訊也只會留在你的電腦中,不會進入版控,也不會 deploy 出去。他的概念其實就只是這樣,實際的做法則是在你本機上的目錄做一個 json 檔案,當專案有設定,他會去找這個檔案。如果secret.json
與appSetting.json
有同樣的設定,則是會以secret.json
的設定為準
How To Start
輸入dotnet user-secrets
指令可以看到說明,所以使用方法就是在沒有用 user secret
的專案,先透過 init
來初始化
1 | 產生 secret 的 guid |
做完這件事情之後,專案檔會被加入一段 XML Tag,用來記錄所產生的 Guid,接著可以透過 clear
、list
、set
、remove
來管理,這個應該就不用多講了,不過如果是在本機開發,我會建議還是直接開啟 json 檔編輯比較直接。 cli 指令可以等到需要自動化作業的時候再研究語法即可。
VisualStudio 2022 似乎可以在專案右鍵從跳出來的選單中找到使用者秘密的選項,點選後會直接幫你把 json 檔開起來,Rider 則需要安裝外掛.NET Core User Secrets,然後 RightClick Solution -> Tools -> Open Project User Secrets 開啟檔案
範例設定
appSetting.json
1 | { |
secrets.json
1 | { |
佈署到 Azure
佈署到 Azure 則是需要在應用程式設定中自己新增
假設以這樣的結構來說,我在 azure 的設定就是
1 | LineBot:adminUserId |
驗證一下 azure 設定是不是真的有吃到,我做了一個簡單的 Controller 去抓設定值並顯示,並且改了一個設定,測試是否會出現在 azure 網站上
應用程式設定修改之後記得按下儲存,他會重新啟動網站
結論
設定值如果要往下一個節點,就用冒號隔開,這個東西很簡單,但是也很容易忘記細節,主要是怕自己忘記在 azure 要怎麼設定,剛好有機會就隨手紀錄一下