워크플로에서 인증에 GITHUB_TOKEN 사용하기

워크플로에서 인증에 GITHUB_TOKEN 사용하기

GitHub Actions를 대신해 GITHUB_TOKEN으로 인증하는 방법을 배워볼게요. 토큰을 액션에 전달하고, API를 호출하고, 권한을 안전하게 구성하는 예시까지 한 번에 다룰게요.

출처: 문서

본문

GitHub Actions를 대신해 인증할 때 GITHUB_TOKEN을 사용하는 방법을 배웁니다.

이 튜토리얼은 GitHub Actions 워크플로에서 인증에 GITHUB_TOKEN을 사용하는 방법을 안내합니다. 토큰을 액션에 전달하는 예시, API 요청, 안전한 자동화를 위한 권한 구성까지 포함합니다.

참고 자료는 Workflow syntax for GitHub Actions를 참고하세요.

워크플로에서 GITHUB_TOKEN 사용하기

시크릿을 참조하는 표준 구문인 ${{ secrets.GITHUB_TOKEN }}을 사용해서 GITHUB_TOKEN을 사용할 수 있습니다. GITHUB_TOKEN을 사용하는 예로는 토큰을 액션의 입력으로 전달하거나, 인증된 GitHub API 요청을 만드는 데 사용하는 것이 있습니다.

[!IMPORTANT] 액션은 워크플로가 GITHUB_TOKEN을 액션에 명시적으로 전달하지 않아도 github.token 컨텍스트를 통해 GITHUB_TOKEN에 접근할 수 있습니다. 좋은 보안 관행으로, GITHUB_TOKEN에 부여된 권한을 제한해서 액션이 필요한 최소한의 접근만 가지도록 항상 확인해야 합니다. 자세한 내용은 Workflow syntax for GitHub Actions를 참고하세요.

예시 1: GITHUB_TOKEN을 입력으로 전달하기

이 예시 워크플로는 GH_TOKEN 입력 파라미터의 값으로 GITHUB_TOKEN을 요구하는 GitHub CLI를 사용합니다:

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에는 가장 적게 필요한 접근 권한을 부여해야 합니다.

사용 가능한 권한 목록과 파라미터화된 이름을 보려면 Workflow syntax for GitHub Actions를 참고하세요.

이 문서의 앞부분에 나온 두 워크플로 예시는 permissions 키를 잡 레벨에서 사용하는 것을 보여줍니다.

추가 권한 부여하기

GITHUB_TOKEN에서 사용할 수 없는 권한을 요구하는 토큰이 필요하면 GitHub App을 만들고 워크플로 안에서 설치 액세스 토큰을 생성하세요. 자세한 내용은 Making authenticated API requests with a GitHub App in a GitHub Actions workflow를 참고하세요. 또는 개인용 액세스 토큰을 만들고 저장소의 시크릿으로 저장한 다음 ${{ secrets.SECRET_NAME }} 구문으로 워크플로에서 사용할 수 있습니다. 자세한 내용은 Managing your personal access tokensUsing secrets in GitHub Actions를 참고하세요.

다음 단계

더 알아보기 (Learn more)