monoの開発ブログ

サーバ上のプログラムから Github に自動 push する

プログラムが自動 push ということで、自動的に新たなプログラムを生成して push しておいてくれる、なんてことがあったらとても助かる気はしますが、残念ながらそういう話ではありません。この記事では自動で push する内容はすでにあるものとして、私が自動 push する上でセキュリティ面で工夫した点を2つほど紹介します。なお、ここでは自動 push を行う計算機は外部に公開していて、何かしらの攻撃を受ける可能性があるものとします。

# 一応自動 push している内容にも軽く触れておくと、私自身は Web サイトをスクレイピングした結果を格納するデータベースとして git を活用しています。とにかく commit していくだけで後から変化の履歴を自在に辿ることができるので、手軽さの割にはなかなか便利なんじゃないかと思っています。

1点目は、Deploy key を使うということです。Deploy key は、その名の通りデプロイを目的とした鍵のことです。通常 ssh の鍵は Github のアカウントに対して設定しますが、Deploy key はリポジトリ単位で設定可能なので、専用の鍵を使うようにしておけば、秘密鍵が漏れたとしても他のリポジトリやサーバに影響することを防げます。

2点目は、Protected branch を設定するということです。Deploy key を使うことで他のリポジトリに影響が無いとは言っても、Deploy key を設定しているリポジトリに対しては好き放題できてしまいます。もし秘密鍵が漏れて force push やブランチの削除を行われてしまうと、データを失うことになります。Protected branch を設定しておけば、指定されたブランチに対しては force push と削除ができなくなり、追記専用になるため、ゴミを突っ込まれることはあっても、積み上げてきた歴史を改変される心配はなくなります。

私はスクレイピングした結果をひたすら突っ込むという野蛮な使い方をしてしまいましたが、今回の記事で出てきた機能はまじめに使ってもかなり重宝すると思われます。賢明な皆さまは是非とも有意義に使ってあげてください。