Closed6

GitHubの認証まとめ

ぱんだぱんだ

自動トークン

GitHub Actions内で自動的に作成されるGITHUB_TOKENとして使えるやつ。アクションを実行しているリポジトリに対しての読み書きの権限などはあるが他のリポジトリへのアクセス権はないのでそういった操作が必要であれば他の方法を使う必要がある。

アクションを実行しているリポジトリに対して簡単な操作をするだけであれば十分で一番簡単に使える。

ちなみに、有効期限はアクション終了後か24時間で期限が切れる。

https://docs.github.com/ja/actions/security-guides/automatic-token-authentication

ぱんだぱんだ

Deploy keys

リポジトリへの読み込みや書き込みの権限を与えるためにssh鍵を追加することができる。これはアカウントではなくリポジトリに対して設定し紐づけることになる。

設定の仕方は自分のマシンなどで用意したssh鍵の公開鍵の方をGitHubの設定画面から追加する。

で、秘密鍵を使ってssh認証することでCI環境などからリポジトリのcloneなどができる

デメリットは秘密鍵の扱いをどうするか

https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/managing-deploy-keys

以下の記事ではGitHub Actionsから別のprivateリポジトリをクローンするのにprivateリポジトリのDeploy keysに公開鍵を登録し、GitHub Actionsのsecretに秘密鍵を指定することでクローンする方法を紹介している。

https://zenn.dev/kou_pg_0131/articles/gh-actions-checkout-private-repo

ぱんだぱんだ

PAT(Personal Access Token)

PATはユーザーのアカウントに紐づいて作成することができ、ユーザーのユーザー名とパスワードの代わりに使用することでAPIリクエストの認証に使うことができる。トークンは細かく権限の設定をすることができる。

PATは以下の2種類がある。

  • fine-grained personal access token
  • personal access tokens (classic)

GitHub的にはより細かな権限管理ができるfine-grained personal access tokenを推奨しているので基本的にはこっちを使ったほうがいい。

PATはあくまで生成したユーザーアカウントがアクセスできる範囲で権限を与えるのでアカウントに読み書きの権限がなければそのトークンもアクセス権限はない。

PATは有効期限を設定する必要があり、CI環境などで使う場合有効期限が切れる前にトークンを入れ替える必要があるためCI環境などで使う場合は他の認証方法のほうがいいかもしれない。

https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens

ぱんだぱんだ

マシンユーザー

チーム開発でCI環境で認証を通すのにメンバーアカウントを使うとチーム内での運用で不都合がありえるのでマシンユーザーというCI専用のアカウントみたいなのも作れる。これはGitHubも容認しているっぽい。

https://docs.github.com/ja/get-started/learning-about-github/types-of-github-accounts#:~:text=ヒント%3A 個人用アカウントは人間が使用するものですが、GitHub のアクティビティを自動化するアカウントを作成できます。 この種類のアカウントは、マシン ユーザーと呼ばれます。 たとえば、継続的インテグレーション (CI) ワークフローを自動化するマシン ユーザー アカウントを作成できます。

これはあくまで個人アカウントで特定のユーザーに紐づかないアカウントを作成してCI用に使うのはありだよみたいな話だと思う。

しかし、後述するGiHub Appの登場でマシンユーザーの作成自体不要になっているっぽい。

ぱんだぱんだ

GitHub Apps

こちらがわかりやすかった

https://zenn.dev/takamin55/articles/569875e8346948

AWS Lambdaで動くプログラムをGitHub Appとしてだれでも公開でき、リポジトリにインストールすることで使えるみたい。GitHub Appはマーケットプレイスで公開されているものがチェックできる。

ざっと見てみたけどCode rabbitとか無料で使える枠があるみたいだから使ってみたいかも。Cloud BuildのAppとかもあってなんか便利そうなのがあれば使ってみたい。

https://github.com/marketplace/coderabbitai

で認証の話に戻るとこのGitHub Appを作成し、Appから作成したIDと秘密鍵を使うことでGitHub Actionsなどで一時的に使用できるトークンを生成して使うことができる。

これを使うことでPATもマシンユーザーも使わずにGitHub Actionsなどから別のリポジトリへのアクセスなどが簡単にできるという流れ。

このスクラップは4ヶ月前にクローズされました