納品前に最も避けたい事故の1つが、成果物と一緒に秘密情報を渡してしまうことです。
APIキーやアクセストークンは、目立つファイルだけに入っているとは限りません。
APIキー・トークン
まず検索したいのは、
- APIキー
- アクセストークン
- パスワード
- 秘密鍵
- 接続文字列
です。
GitHubのSecret Securityでは、APIキー・パスワード・トークンなどを「secrets」として扱います。Secret scanningはパターン照合や検証で露出した認証情報を検出しますが、検出範囲はシークレット種別や設定によって異なります。
コード納品では、ソース本体だけでなくGit履歴や設定ファイルにも注意が必要です。
.env と設定ファイル
.env、config.json、ローカル用設定などには、本番・検証環境の秘密情報が入りやすくなります。
納品にはテンプレートとして、
API_KEY=YOUR_API_KEY
のようなダミー値を入れ、実値は外します。
ログ
ログには、入力値、メール、URL、エラー時のトークン断片などが残ることがあります。
「ログだから安全」と考えず、中身を検索します。
一時ファイルとバックアップ
backup_old.zip、test-output/、tmp/ の中に、削除したつもりの情報が残ることがあります。
本番成果物だけを新しいフォルダーへコピーし直してからZIP化する方が安全です。
サンプルデータ
動作確認用のCSVやExcelに、実顧客データをそのまま使っていないか確認します。
名前だけ消していても、メールや住所、注文番号が残っている場合があります。
サンプルは最初から架空データで作る方が安全です。
画像・文書のメタデータ
画像やOffice文書には、作成者名、組織名、コメント、変更履歴などが入っている場合があります。
必要に応じて文書検査やメタデータ確認を行います。
ZIPにした後でもう一度見る
最後に、実際に送るZIPを再展開し、検索します。
検索対象の例:
keytokensecretpasswordAuthorizationBearer- メールアドレス形式
自動スキャンだけで完全には防げませんが、典型パターンを機械で探し、最後に人が中身を見ると漏えい確率を下げられます。
あわせて確認
参考
- GitHub Docs: Secret scanning
https://docs.github.com/en/code-security/concepts/secret-security/secret-scanning
