webdino / lyceum-pokemon

ポケモン API を使った Nuxt+Express アプリ/サーバの開発演習
3 stars 28 forks source link

動作方法の説明などで .env に AWS アクセスキーを記載するパターンを止める #144

Open dynamis opened 8 months ago

dynamis commented 8 months ago

.env ファイルを git commit に含めてしまう事故を防止したい。

事前に aws configure でローカルに認証情報が保存されていれば AWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEY 環境変数を設定したり .env ファイルに書かずとも済むので、そちらをメインの手順の説明に切り替えると良いのではないか。

手順としては

(aws CLI のインストール要求をしたり、ユーザ全体のホームに保存されるのも嫌と言えば嫌なんですが App Runner デプロイとかを考える場合にはそれくらいの要求は良いかなと)

元々 AWS_ACCESS_KEY_ID を環境変数に設定するのは AWS 以外の環境にデプロイする場合にサーバサイドも環境変数設定するのに合わせローカルでもそうする (ことで統一性があり分かり易く) という意図であり、AWS App Runner デプロイを前提とする場合は AWS 側で環境変数設定しないのでその方針は採らない。

汎用的なデプロイ対応の説明を残すなら、AWS App Runner デプロイする時は AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY は null でロール設定すれば良いが、他にデプロイする時には環境変数に設定するか s3Client 初期化時に渡してねって説明を環境変数一覧表に残せば良いのではないか。

knokmki612 commented 8 months ago

https://github.com/webdino/lyceum-pokemon?tab=readme-ov-file#user-content-fnref-AWS_%E3%82%AF%E3%83%AC%E3%83%87%E3%83%B3%E3%82%B7%E3%83%A3%E3%83%AB-2-0b3b29049d8b1f3350e176af6927669c にて AWS SDK 使用時不要とは書いているのですが、READMEにおける環境変数の説明で一様に記載してあるので利用者も.envへの記載が必須(実際にはそうではない)と思いがちかもしれないですね

knokmki612 commented 8 months ago

zipでダウンロードすると.gitignoreも除去された状態なので誤って.envファイルをコミット(クレデンシャルの漏洩)を引き起こしてしまう可能性がありますね。

dynamis commented 8 months ago

利用者も.envへの記載が必須(実際にはそうではない)と思いがちかもしれないですね

そうなんですよ。条件に応じて必要か分かれるものはメインの手順には含めず注意書きとか環境変数表に書くだけとかにしないと何も考えずにやってしまうという前提で(初学者向け資料においては)書かないとということでした。

zipでダウンロードすると.gitignoreも除去された状態なので

まじかー。それは気付かなかった。なお、設定値の記載先は gitignore で除外ではなくそもそも外部ディレクトリを指定した先のファイルに記載する方が良いのではという提案/指摘も頂きました。通常の設定は .env だがシークレットにあたるものはやっぱり .env に書くのはナシ、ディレクトリの外のファイルを参照というより aws configure か OS 環境変数のいずれかだけを指示するが良い気がしました。

knokmki612 commented 8 months ago

https://github.com/webdino/lyceum-pokemon?tab=readme-ov-file#user-content-fnref-AWS_%E3%82%AF%E3%83%AC%E3%83%87%E3%83%B3%E3%82%B7%E3%83%A3%E3%83%AB-2-0b3b29049d8b1f3350e176af6927669c にて AWS SDK 使用時不要

この注釈のリンク先もAWSのドキュメントが更新され該当文書がなくなっているようです