👋

管理するGitレポジトリに含まれる機密データをチェックする

2021/06/03に公開

3行で説明

  • 最近 Gitで管理してたデータから情報が漏れて関連の大きめのインシデントが複数あった
  • org-secretsは、コンテナ経由で動作し、環境を汚さず、管理しているすべてのレポジトリに含まれる機密情報をチェックできる
    • ユーザ単位 or オーガニゼーション単位
    • GitHub, GitLab, BitBucket, Gitea対応
  • org-secretsはコンテナイメージで動作していて、様々なオプションが指定できる

最近公表されたインシデント

少し前に公表されたClassiさんのリリースによると、昨年発生した情報窃取は、Gitレポジトリに(AWSの)機密情報が含まれていたことが原因とされています。具体的な攻撃と対応については、該当のリリースを読むとわかります。
https://corp.classi.jp/news/2416/

mercariさんも、GitHubで管理しているソースコード経由でインシデントが発生しました。※ GitHubで情報をどのように管理していたかは不明
https://about.mercari.com/press/news/articles/20210521_incident_report/

気軽にチェックしたい

もともと、気軽に機密情報が含まれていないか、1コマンドでチェックできるコンテナイメージを作ってました。最近の動向もあり、危機意識はあるけど、チェックするのはちょっとめんどくさい人向けのツールとして利用できるかと考えてます。

  • 対象のユーザのレポジトリの機密情報をチェック
    $ docker run --rm -it goodwithtech/org-secrets -t <repositoryへの権限があるgithub_token> -u <username> -f -a

  • 対象のオーガニゼーションに含まれる、自分がアクセスできる範囲のレポジトリをチェック
    $ docker run --rm -it goodwithtech/org-secrets -t <organizationへの権限があるgithub_token> -o <organization name> -f -a

なお、私がまず新しい環境にジョインして最初に行うことの1つが、この機密情報のチェックです。

内部実装

以下のツールを組み合わせて動作してます。

Tips

  • /secrets_ghorg/ をボリュームマウントをすることで、ホストの指定したパスにcloneされたgitレポジトリ群が残る
    docker run --rm -it -v /path/to/save/:/secrets_ghorg/ goodwithtech/org-secrets -t <token> -o <organization> -f -a
  • -f: forkしたプロジェクトも含む
  • -a: archived したプロジェクトも含む

注意事項

  • org-secretsのために発行したアクセストークンはかならず削除する
    • 引数でコマンドラインに残るので、人の目に触れる可能性がある
  • 発見した機密情報は、コードの削除だけでは消えない。パスワード/トークンは再発行する

Discussion