2017-04-14 11 views
1

Cloud SQLに接続するGAEにNode.jsアプリケーションをデプロイします。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

はい。私たちも同じことをしています。環境変数やファイルに資格情報を格納することに大きな違いはありません。それらをファイルに保存すると、私はより便利になりました(それは完全に主観的です)。セキュリティの面では、常にファイルのアクセス許可を使用してプレイすることができます。 appを実行するユーザーを作成し、このユーザーに読み取りアクセスを許可することができます。

0

秘密を保存すると、漏れが発生する可能性があります(例:誤ってgithubでチェックインされていることを確認するのは珍しいことではありません)。配備時にapp.yamlに織り込まれた.gitignoredファイルに秘密を格納する方法が1つあります。別のアプローチは、秘密をデータストア内のエンティティに格納することです。

私のアプリの多くは、文字列化されたJSONを格納するConfigというエンティティに秘密を保存します。これにより、管理UIが簡略化され、1つのtextareaに編集され、より複雑なUIの必要性が排除されます。

もっとフル機能のUIを使ったこのアプローチの例については、Khan Academyのスニペットアプリをご覧ください。 https://github.com/Khan/snippets

+0

回答ありがとうございます。たとえば、AWS Elastic Beanstalkでは、環境変数としてデータベースのユーザー名とパスワードにアクセスできるほか、Webコンソールから環境変数を設定することもできます(設定ファイルには表示されません)。 –

0

Googleにはまだこのサービスがありません。私は以前これについてのサポートを依頼しましたが、データストアにデータを保存することを提案しました(暗号化済み)

関連する問題