かわろぐ

技術、ボルダリング、セキュリティ、その他もろもろ

MENU

Github の Organizationに所属するユーザの二要素認証状態を取得する

環境、使用ライブラリ

  • VisualStudio 2013 Pro
  • C#
  • Octokit.net
  • Slack.Webhook

二要素認証って?

通常のIDとパスワード以外にもう一つ認証要素を使う方式のことです。リスト型アカウントハッキングなどが流行しているので、オンにできるサービスは自衛のために有効にすべきですね。

二要素認証の設定状況を定期的に確認する

特定の Organization に所属するメンバーの二要素認証の設定状況を定期的に確認したかったのですが、web インターフェイスに毎回アクセスしてチェックするのは忘れるし、めんどくさい。そこで、プログラムで定期的に確認して、slack とかに通知できるようにしようと思いました。

今回主に使用したライブラリは Octokit.net です。これは Github が公式で出している Github API の .net のラッパーです。 最初は User に個別に 2FA の情報を持っているものかと思ってコードをにらめっこしていたけど、それらしきプロパティは見つからず。ぐぐってみたらこの記事が出てきて、取得時に絞れば良さそうということで、 GetAll() のオーバーロードを調べてみたらありました。以下のような感じでいけます。

var users = await github.Organization.Member.GetAll("yourOrganization", OrganizationMembersFilter.TwoFactorAuthenticationDisabled);

コード全体は Github に公開しています。 上記のコードにてコンソールアプリを作成して常時起動している Windows サーバのタスクスケジューラに登録して毎朝確認できるようにしました。毎朝こんな感じで Slack にポストされます。

f:id:kawa_xxx:20150906172952j:plain

だれだ!二要素認証無効なのは!!

参考文献