워크플로에서 인증에 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 tokens와 Using secrets in GitHub Actions를 참고하세요.