2017-04-14 51 views
1

我在GAE上部署了一個Node.js應用程序,該應用程序連接到一個Cloud SQL。在app.yaml中存儲祕密的最佳實踐

docs,我被告知,用於存儲裏面的app.yaml數據庫中的用戶名/密碼:

env_variables: 
    MYSQL_USER: YOUR_USER 
    MYSQL_PASSWORD: YOUR_PASSWORD 
    MYSQL_DATABASE: YOUR_DATABASE 
    # e.g. my-awesome-project:us-central1:my-cloud-sql-instance 
    INSTANCE_CONNECTION_NAME: YOUR_INSTANCE_CONNECTION_NAME 

這真的是存儲密碼的好地方?

回答

0

是的。我們也這樣做。將憑證存儲在環境變量或文件中沒有太大區別。將它們存儲在文件中,我發現更方便(通過它完全是主觀的)。在安全方面,你總是可以使用文件權限。您可以創建一個將運行應用程序的用戶,並授予該用戶的讀取權限。

0

app.yaml中存儲機密可能會導致它們泄漏(例如,偶然發現它們在github中檢查並不罕見)。將祕密存儲在您部署時編入app.yaml.gitignore d文件是一種方法。另一種方法是將祕密存儲在數據存儲中的實體中。

對於我的很多應用程序,我在一個名爲Config的實體中存儲機密,該實體存儲字符串化的JSON。這簡化了管理界面,將其編輯爲單個textarea,推遲了對更復雜UI的需求。

有關此方法的更全面的用戶界面示例,請查看可汗學院的「片段」應用。 https://github.com/Khan/snippets

+0

感謝您的回答,但我正在尋找更原生的GAE實施。例如,在AWS Elastic Beanstalk中,您可以使用數據庫用戶名和密碼作爲開箱即用的環境變量,並且還可以從Web控制檯設置環境變量(因此它們不會出現在任何配置文件中)。 –

0

谷歌沒有爲此服務(還)。我之前詢問過有關這方面的支持,他們的建議是將數據存儲在數據存儲中(加密的)

相關問題