移転しました。

約3秒後に自動的にリダイレクトします。

GitHubのOrganizationを2FA必須にしようとしたらちょっと大変でした

Viibar開発部の id:mstssk です。

もうしばらく前になるのですが、Viibarで使っているGitHubのOrganizationを2要素認証(以下、2FA)を必須にしました。

Organizationに所属するアカウントを2FA必須にするのは、設定画面でチェックボックスを切り替えるだけで簡単に行なえます。

Orgの2FAの必須設定

しかし、設定を有効にする時に既にOrganizationに2FAを有効にしていないアカウントがあると、そのアカウントは強制的にOrganizationから外されてしまいます。 事前に所属アカウントの2FAをすべて有効にしておかなければいけません。

help.github.com

よっしゃやったろ!と思って手を付けたら、思いのほか手間がかかってしまいました。

既存アカウントを2FAに

まずはOrganizationに所属しているアカウントのうちどれが2FAになっているかを確認していきます。

Organizationの管理権限をもっていれば、所属するアカウントの一覧でそれぞれ2FAになっているかどうかを確認できます。

help.github.com

既に社内のエンジニアのアカウントはすべて2FAになっていました。

他方、Viibarではコーポレートサイトの管理もGitHubリポジトリにしており、エンジニアではない広報担当者のアカウントが2FAになっていませんでした。 その時、近くに座っていらっしゃったので、早速社内で声をかけて2FAを有効にしてもらいました。

謎の共有アカウントを削除

他の2FAになっていないアカウントを見ていくと、 viibar-admin というアカウントがありました。 なにかの管理用アカウントっぽい名前ですが、アクティビティを見ても何年もなにもしていません。

社内で聞いてみたところ、むかーしに共有して使っていたアカウントとのこと。 完全に使っていないので、とりあえずOrganizationから外しました。

アカウント自体は残しておこうかと少し迷いましたが、削除することにしました。

ただ名前の確保のためにアカウントを取得しておくことはGitHubのポリシーに反します。 かつ、使われていないアカウントは思いの外カジュアルに名前を他の希望者に移したりされたりします。 将来的に活用したいというのも現時点では無く、素直にアカウントを消しておきました。

GitHub はアカウント名を不正に占拠することを禁止しており、現時点で使用しないアカウント名を将来の使用のために保持することはできません。 使用されていないアカウントは、GitHub スタッフの裁量で名前を変更または削除される場合があります。

GitHub ユーザ名ポリシー - GitHub ヘルプ https://help.github.com/ja/github/site-policy/github-username-policy

いざアカウントを削除しようとした際に、あれ?パスワードどこ?というひと悶着があったのはまた別のお話。

Machine Userの2FA化

GitHubは様々なタスクの自動化のために専用アカウントを作る事を許容していて、それは Machine User と呼ばれます。

ViibarでもBeaverくんと呼んでいるアカウントを一つ使っています。

さてビーバーくんのアカウントを2FA化しようとして一つ壁にぶつかりました。 アカウントを開発部の中で共同管理出来ている状態を維持しつつ、どうやって2要素目の認証を設定するのか。

GitHubの2FAにはTOTPアプリまたはSMS認証が必要です。 つまり、特定のスマートフォンに依存するのが普通です。

1Password の有料プランであればワンタイムパスワードを共同管理できますが、弊社で使っているのは LastPass です。

どうせ特定のデバイスに依存せざるを得ないなら、セキュリティトークンを社内で管理すればよいのでは?とも思いました。 しかし、セキュリティトークンはTOTPまたはSMS認証を設定した上でのバックアップ的にしか使えません。

最終的には、開発部の共用スマートフォンにTOTPアプリを入れてビーバーくんを2FA化しました。

終わりに

思ったより時間がかかってしまいましたが、これでGitHubのOrganizationを2FA必須にできました。 以後、Organizationに追加するメンバーにも常に2FAを要求します。 いちいち「セキュリティのために2FAにしてね」などとアナウンスしなくても済むようになりました。

セキュリティはもちろん大事ですが、常にセキュリティを意識するのは大変です。 Organizationの設定ひとつで所属メンバーに常に2FAを必須にできるのは楽ちんなので、この記事をご覧になった方もお忘れでしたら設定しましょう。 もし問題が起きたら、この記事が参考になれば幸いです。