Skip to main content

ワークフローでの認証に GITHUB_TOKEN を使用する

GITHUB_TOKENを使用して、GitHub Actionsの代わりに認証する方法について説明します。

このチュートリアルでは、トークンをアクションに渡す例、API 要求を行う方法、セキュリティで保護された自動化のためのアクセス許可を構成する例など、GITHUB_TOKEN ワークフローで認証にGitHub Actionsを使用する方法について説明します。

参考情報については、「GitHub Actions のワークフロー構文」をご覧ください。

ワークフローでの GITHUB_TOKEN の使用

GITHUB_TOKENは、シークレットを参照するための標準構文 (${{ secrets.GITHUB_TOKEN }}) を使用して使用できます。 GITHUB_TOKENを使用する例としては、アクションへの入力としてトークンを渡すことや、トークンを使用して認証された GitHub API 要求を行う場合などがあります。

重要

ワークフローで GITHUB_TOKEN がアクションに明示的に渡されない場合でも、アクションでは github.token コンテキストを介して GITHUB_TOKEN にアクセスできます。 セキュリティを強化するには、GITHUB_TOKEN に付与されるアクセス許可を制限することにより、アクションに必要な最小限のアクセスのみが含まれるようにする必要があります。 詳しくは、「GitHub Actions のワークフロー構文」をご覧ください。

例 1: 入力として GITHUB_TOKEN を渡す

このワークフロー例では、GitHub CLI を使用しており、GH_TOKEN 入力パラメーターの値として GITHUB_TOKEN が必要です。

YAML
name: Open new issue
on: workflow_dispatch

jobs:
  open-issue:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: write
    steps:
      - run: |
          gh issue --repo ${{ github.repository }} \
            create --title "Issue title" --body "Issue body"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

例 2: REST API を呼び出す

GITHUB_TOKEN を使用して、認証済みの API 呼び出しを行うことができます。 このワークフロー例では、 GitHub REST API を使用して問題を作成します。

name: Create issue on commit

on: [ push ]

jobs:
  create_issue:
    runs-on: ubuntu-latest
    permissions:
      issues: write
    steps:
      - name: Create issue using REST API
        run: |
          curl --request POST \
          --url https://api.github.com/repos/${{ github.repository }}/issues \
          --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
          --header 'content-type: application/json' \
          --data '{
            "title": "Automated issue for commit: ${{ github.sha }}",
            "body": "This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**. \n\n The commit hash was: _${{ github.sha }}_."
            }' \
          --fail

GITHUB_TOKEN のアクセス許可の変更

ワークフロー全体または個々のジョブに対する permissions のアクセス許可を変更するには、ワークフロー ファイルで GITHUB_TOKEN キーを使います。 これにより、ワークフローまたはジョブに最低限必要な権限を設定できます。 優れたセキュリティ プラクティスとして、GITHUB_TOKEN に必要最小限のアクセス権を付与することをお勧めします。

使用できるアクセス許可とパラメーター化された名前の一覧については、「個人用アクセス トークンを管理する」を参照してください。

この記事で前に示した 2 つのワークフロー例では、permissions キーがジョブ レベルで使われています。

追加の権限を付与する

GITHUB_TOKENで使用できないアクセス許可を必要とするトークンが必要な場合は、GitHub Appを作成し、ワークフロー内にインストール アクセス トークンを生成します。 詳しくは、「GitHub Actions ワークフローでGitHub アプリを使用して認証済み API 要求を作成する」をご覧ください。 または、 personal access tokenを作成し、それをシークレットとしてリポジトリに格納し、 ${{ secrets.SECRET_NAME }} 構文を使用してワークフローでトークンを使用することもできます。 詳細については、「個人用アクセス トークンを管理する」および「GitHub Actions でのシークレットの使用」を参照してください。

次のステップ