Githubの「Personal access tokens」について
そもそも「Personal access tokens」ってなに?
完結にまとめるとパスワードの代わりに使用できる特定のユーザーに紐づく認証用の「デジタルキー」 です。
まぁ正直これだけ見てもよくわからないのでもう少し詳しく調べてみました。
ここで言う、パスワードとはGithubのWebサイトにアクセスした時などに求められるものではなく、コマンドラインやAPI経由でのアクセスにおいて git push や git pull のような操作をHTTPS経由で行う際に求められるものです。
POINT
- デジタルキーは一意の文字列
- セキュリティ上の理由から、GitHubは2021年8月13日以降、コマンドラインやAPIでのパスワード認証のサポートを廃止しているため、Personal access tokens は必須になっている
Personal access tokens のメリット
Githubがパスワードの認証などを廃止して Personal access tokens に切り替えるほどなので相当なメリットがあるのではないかと思い調べました
- 有効期限の設定
- アクセストークンを有効にする期間を決めることができる
- 細かい権限設定
- トークンごとにアクセスできるリポジトリの設定や、[ 参照, 編集 ] のような権限などこまかな設定が可能
- セキュリティ強化
- トークンは、パスワードが使い捨てになるような効果を持ち、漏洩時の被害を最小限に抑えられる
- 安全性の向上
- トークンが万が一漏洩した場合もアカウントのログイン情報などは漏れない
- トークンによる認証をいつでも失効、再生成することができる
気になったこと
トークンが漏洩して再生成されてしまったりした場合を考えたらセキュリティ低いのでは?と思い調べてみました。
結論として、その可能性は極めて低いです
そもそも、PATの失効や再生成はトークンの作成者のみが行えるためトークンの文字列が漏洩してしまったりしてもセキュリティーは高いです。
また、そのトークンによる権限自体も作成者が最初に設定した範囲内の行動しかできないため大きな被害を受けることもないようです。
Personal access tokens のデメリット
- 有効期限の設定
- 有効期限が切れたときpushできなくなる・更新が必要
- 漏洩時のリスク
- 漏洩した時のリスクが高い
- しかし、ユーザーログインのIDとPWが漏洩するよりはるかに被害が小さくなる(gemini調べ)
- 漏洩した時のリスクが高い
GithubのPersonal access tokens と Personal access tokens(classic) の違い
結論、Githubにおける Personal access tokens と Personal access tokens(classic) の違いは セキュリティと権限管理の「細かさ」 です。
| 比較項目 | PersonalAccessTokens | PersonalAccessTokens(classic) |
|---|---|---|
| 権限の範囲 | きめ細かい | 広く、粗い |
| 対象範囲 | 選択したリポジトリのみ | 全リポジトリ |
| 有効期限 | 必須(最大1年) | 無期限も選択可能 |
| User権限の管理 | 承認・却下・失効させることが可能 | 管理・閲覧が困難 |
memo
権限の範囲には、「Issuesの読み取り専用」「コードの書き込み」など50以上の権限から選択することができる
POINT
classicは以前からあるものであり、上記表からも分かる通り様々な問題が多くありました。それらの問題を解決するためにPersonalAccessTokensが作成されました
特別な理由がない限り、PersonalAccessTokens を使用するのが良い