こんにちは。フロントエンドエンジニアの松岡です。

GitHubでは、2023年3月から2FA(2要素認証)の有効化を義務付ける取り組みが展開されています。 記事執筆時点では一部のアカウントに有効化を促すバナーが表示され、2023年末にはすべてのアカウントに対して有効化が義務付けられるようです。

ソフトウェアのセキュリティ水準向上のために: 3月13日よりGitHub 2要素認証(2FA)を開始 | GitHubブログ

GitHubでサポートしている2要素認証はいくつかあり、好みのものを使うことができます。

2 要素認証を設定する | GitHub Docs

本記事ではドキュメントで推奨されている TOTPアプリケーションセキュリティキー の登録方法を紹介します。

2要素認証の設定画面

GitHubログイン後の右上に表示されるプロフィールアイコンから「Settings」に移動し「Password and authentication」で設定します。

https://github.com/settings/security

TOTPアプリケーションを設定する

TOTP(Time-base One Time Password)とはワンタイムパスワードを発行するアプリケーションで、GitHubの画面に対応アプリがいくつか列挙されています。 以下は 1Password のスマホアプリを併用した手順です。

GitHubの設定画面を開き「Authenticator App」の「Add」で新しい設定を追加します。

QRコードが表示されます。

スマホアプリでgithub.comのログイン情報を編集します。

ワンタイムパスワードを追加します。

QRコードのアイコンをクリックします。

起動したカメラでGitHubに表示されたQRコードを読み取ると、パスワードが作成されます。

パスワードをGitHubの画面で入力します。 検証をパスしたら「Save」で保存します。

デフォルトの2要素認証を「Authenticator App」にセットします。

GitHubから一度サインアウトして、ログイン画面を見てみましょう。 いつも通りユーザー名とパスワードを入力した後に、ワンタイムパスワードの入力が求められるようになります。

スマホアプリを開き、表示されたパスワードをGitHubの画面に入力するとログインできます。

セキュリティキーを設定する

セキュリティキーとはFIDO(Fast IDentity Online)で定められた仕様をWEBで実現する、WebAuthnというAPIを利用した認証の仕組みです。 なんだかややこしいですね。 つまりはパスワードだけに頼らず、生体認証・デバイス認証やPINコードなどを使って安全にWEBでログインしましょう、というものです。

以下はChromeで「パスキー」という暗号鍵ペアを作成しセキュリティーキーに登録して利用する手順です。 (SMSなど他の2要素認証が登録されていないと利用できないとドキュメントに記載されていたのでご注意ください。)

GitHubの設定画面を開き「Security keys」で「Register new security key」をクリックします。

任意の名前を入力します。

パスキー作成のポップアップが表示されます。「続行」すると設定が追加されます。

デフォルトの2要素認証を「Security keys」にセットします。

GitHubから一度サインアウトして、ログイン画面を見てみましょう。 いつも通りユーザー名とパスワードを入力した後に、セキュリティキーの入力が求められるようになります。

「Use security key」をクリックするとポップアップでパスキーがサジェストされます。「続行」でログインできます。

セキュリティーキーは複数登録できるため、デバイスごとにパスキーを作成し登録することもできます。その場合は2台目のデバイスでログインし、1台目と同じ操作でセキュリティキーを登録します。

セキュリティキーを作成した2台目のデバイスもパスキーのサジェストが表示されるようになります。

パスキーはデバイス間で同期が可能です。詳しくは以下を参照してください。

Chrome でパスキーを管理する | Google Chromeヘルプ

複数の2要素認証が登録されている時のログイン

TOTPアプリケーションやセキュリティーキーなど複数の2要素認証が設定されている場合、デフォルトとして選択されたものがトップに表示されます。リンクをたどれば登録済みの別の認証を使うこともできます。

複数の2要素認証を登録しておけば、オペレーティングシステムの再インストールによってパスキーが無くなってしまった時にTOTPアプリケーションでログインする、といった使い方ができます。

リカバリーコードを使ったログイン

いずれの2要素認証も利用できない場合はリカバリーコードを使ってログインできます。 リカバリーコードはログインしないと表示できないため、あらかじめ控えておく必要があります。

GitHubの設定画面を開き「Recovery codes」の「View」を開きます。

リカバリーコードは16個用意されています。1度使ったリカバリーコードは無効になります。 すべて使い切った場合は画面内にある「Generate new recovery codes」で再発行できます。

ログイン画面の「Use a recovery code…」リンクをたどると、リカバリーコードでログインできます。

おわりに

GitHubはシステム開発だけでなく、ドキュメント管理やタスク管理としても幅広く使われています。 みんなが2要素認証に明るい訳ではなく、義務化をお知らせするメールにとまどうかもしれません。

2FA、なんだそれ?どうやって設定したらいいの?と思った方の手助けになれば幸いです。