🐺

GitHub App を利用した GitHub Actions の認証

2025/02/28に公開

はじめに

github actionsgithub app を使用した組織の認証を行うにあたり
github app について調査してみました。

GitHub App 認証の種類

GitHub Appには複数の認証が存在する

GitHub Appとしての認証

https://docs.github.com/ja/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app

GitHub App インストールとしての認証

https://docs.github.com/ja/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app-installation

ユーザーに代わって GitHub アプリで認証する

https://docs.github.com/ja/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-with-a-github-app-on-behalf-of-a-user

GitHub Actions ワークフローで GitHub App を使用して認証する

https://docs.github.com/ja/apps/creating-github-apps/authenticating-with-a-github-app/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow

作成するGitHub Appについて

GitHub Actions ワークフローで GitHub Appを使用した認証を行いたいので
今回は GitHub Actions ワークフローで GitHub App を使用して認証する方法を見てみようと思います。

Organizationや別のリポジトリ内のアクセスについて

Organization 内や別のリポジトリ内のリソースなど、追加のリソースにアクセスする必要がある場合は、GitHub App を使用できます。 personal access token ではなく GitHub App を使う場合の理由の詳細については、「GitHub App の作成について」を参照してください。

GitHub App の認証

GitHub App を使って認証済み API を実行するための大まかな手順

まずGitHub Appを登録してinstallする

  • GitHub App を登録し
  • アプリの資格情報を格納し
  • アプリをインストールする

次にアプリを使用してトークンの生成をする

  • アプリを使ってインストール アクセス トークンを作成し
  • インストール アクセス トークンを使って、GitHub Actionsワークフローで認証済みのAPI実行をする

※トークンを必要とするカスタム アクションにインストール アクセス トークンを渡すことも可能

具体的な手順はドキュメントに記載されています。
https://docs.github.com/ja/apps/creating-github-apps/authenticating-with-a-github-app/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow#github-app-による認証

公式が提供しているtokenを生成してくれるRepo

公式にはサードパーティ製のアクションを利用したくない場合は、forkして利用するか、もしくは自前で作成するように推奨しています。

https://github.com/actions/create-github-app-token

公式のactions

# 公式が提供していくれている composite action
on:
  workflow_dispatch:
jobs:
  demo_app_authentication:
    runs-on: ubuntu-latest
    steps:
      - name: Generate a token
        id: generate-token
        uses: actions/create-github-app-token@v1
        with:
          app-id: ${{ vars.APP_ID }}
          private-key: ${{ secrets.APP_PRIVATE_KEY }}

      - name: Use the token
        env:
          GH_TOKEN: ${{ steps.generate-token.outputs.token }}
        run: |
          gh api octocat

作成したGitHub AppAPP_IDAPP_PRIVATE_KEYを渡すことでGitHub Actionsワークフローで実認証済みのAPI実行をすることができます。

自前での作成

今回は自前で作成する方にしてみました。

具体的な作成方法は公式のドキュメントtmknom さんのGitHub Appsトークン解体新書:GitHub ActionsからPATを駆逐する技術を参考にさせていただき、非常に理解が深まりました。
ありがとうございます。

利用した GitHub API

GitHub Appのインストール アクセストークンを生成するにあたり
利用したREST APIはこちらです。

その他 参照した情報

Discussion