こう 聞かれます
- 「API キーや
パスワードを コードに 書かないのは なぜですか」 - 「外部の API の
キーは、 アプリの どこに 置いていますか」 - 「キーを GitHub に
上げてしまったら、 どうしますか」
面接官が 見ている点
- 一度
コミットした物は、 消しても 履歴に 残ると 分かっているか - 秘密を
コードと 分けて 置く 方法を、 自分の 作った 物で話せるか - 漏れた
ときに、 まずキーを 無効に する 順番を言えるか
短い答え
- コードに
書いた 秘密は、 リポジトリを 見られる 人全員に 渡り、 あとで 消しても Git の 履歴に 残るからです。 - 秘密は
環境変数や、 サーバーの 秘密を 置く 仕組みに 分けて 置き、 コードは そこから 読むだけにします。 - 漏れた
ときは、 まず その キーを 無効に して 新しく 作り直し、 その あとで 履歴の 掃除や 影響の 確かめをします。
少し 詳しい答え
なぜコードに 書かないか
- 履歴に残る Git は
過去の コミットを 全部持っています。 最新の コードから 消しても、 前の コミットを 見れば読めます - 広がる
公開の リポジトリなら誰でも 読めます。 非公開でも、 手元の 写しや、 貸した 相手の パソコンに 広がります - 環境ごとに
変えられない 開発と 本番で 違う キーを 使うには、 コードの 外に 置く 必要があります
どこに置くか
手元の.env のような.gitignore に
ブラウザで
漏れたら
- その
キーを 無効にし、 新しい キーを 作って 差し替えます - 漏れていた
間に 使われていないかを、 サービスの 記録で 確かめます - 必要なら
履歴からも 消します。 ただし、 すでに 写しを 取られていれば 消えないので、 1 番が先です
作った.env に.gitignore に
よく ある間違い
- 「最新の
コードから 消したので 大丈夫」と言う 過去の コミットに 残っています。 キーを 無効に して 作り直します - 「非公開の
リポジトリだから 書いて よい」と言う 見られる 人が 増えたり、 写しが 広がったりします。 秘密は コードと分けます - 「環境変数に
すれば ブラウザに 入れても よい」と言う 作る ときに ブラウザ向けの JavaScript に 埋め込まれれば、 誰でも読めます
深掘りの問い
- 「コミットする
前に 秘密に 気づくには」コミットの 前に 秘密らしい 文字を 調べる 道具や、 GitHub の 秘密を 見つける 仕組みを 使う、と答えます - 「開発と
本番で キーを 分けるのは なぜですか」 開発の キーが 漏れても 本番に 届かないようにし、 それぞれの 権限を 絞れるから、と答えます - 「チームで
秘密を 渡すには」チャットに 貼らず、 チームで 使う 秘密の 置き場や、 権限を 分けられる 仕組みを 使う、と答えます