Skip to main content

GITHUB_TOKEN에 대한 권한 제어

GITHUB_TOKEN에 부여된 기본 사용 권한을 수정합니다.

개요

permissions를 사용하여 GITHUB_TOKEN에 부여된 기본 사용 권한을 수정하면 필요에 따라 액세스를 추가하거나 제거하여 필요한 최소 액세스만 허용할 수 있습니다. 자세한 내용은 "자동 토큰 인증"을(를) 참조하세요.

permissions를 최상위 키로 사용하거나, 워크플로의 모든 작업에 적용하거나, 특정 작업 내에서 적용할 수 있습니다. 특정 작업 내에 permissions 키를 추가하면 GITHUB_TOKEN을 사용하는 해당 작업 내의 모든 동작 및 실행 명령이 지정한 액세스 권한을 얻게 됩니다. 자세한 내용은 jobs.<job_id>.permissions를 참조하세요.

아래 표에 표시된 사용 가능한 각 권한에 대해 read(해당되는 경우), write 또는 none 액세스 수준 중 하나를 할당할 수 있습니다. write에는 read가 포함됩니다. 이러한 권한에 대한 액세스를 지정하면 지정되지 않은 모든 권한은 none으로 설정됩니다.

사용 가능한 권한 및 각 작업에서 수행할 수 있는 작업에 대한 세부 정보:

PermissionGITHUB_TOKEN을(를) 사용하여 작업을 허용합니다.
actionsGitHub Actions으로 실행 예를 들어, actions: write이(가) 워크플로 실행을 취소하도록 허용합니다. 자세한 내용은 "GitHub 앱에 필요한 권한"을(를) 참조하세요.
attestations아티팩트 증명을 사용합니다. 예를 들어 attestations: write는 작업에서 빌드에 대한 아티팩트 증명을 생성하도록 허용합니다. 자세한 내용은 "아티팩트 증명을 사용하여 빌드의 출처 설정"을(를) 참조하세요.
checks검사 실행 및 검사 도구 모음을 사용합니다. 예를 들어, checks: write이(가) 검사 실행을 만들도록 허용합니다. 자세한 내용은 "GitHub 앱에 필요한 권한"을(를) 참조하세요.
contents리포지토리의 내용을 이용합니다. 예를 들어 contents: read이(가) 커밋을 나열하도록 허용하고 contents: write이(가) 릴리스를 만들 수 있도록 허용합니다. 자세한 내용은 "GitHub 앱에 필요한 권한"을(를) 참조하세요.
deployments배포 작업. 예를 들어, deployments: write이(가) 새 배포를 만들도록 허용합니다. 자세한 내용은 "GitHub 앱에 필요한 권한"을(를) 참조하세요.
discussionsGitHub Discussion과 함께 작업합니다. 예를 들어 discussions: write을(를) 통해 토론을 닫거나 삭제할 수 있습니다. 자세한 내용은 "토론에 GraphQL API 사용"을(를) 참조하세요.
id-tokenOIDC(OpenID Connect) 토큰을 가져옵니다. id-token: write여야 합니다. 자세한 내용은 "OpenID Connect를 사용한 보안 강화 정보"을(를) 참조하세요.
issuesIssue 작업. 예를 들어 issues: write이(가) 문제에 주석을 추가하도록 허용합니다. 자세한 내용은 "GitHub 앱에 필요한 권한"을(를) 참조하세요.
packagesGitHub 패키지로 작업합니다. 예를 들어, packages: write이(가) GitHub 패키지에 패키지를 업로드하고 게시하는 작업을 허용합니다. 자세한 내용은 "GitHub 패키지에 대한 사용 권한 정보"을(를) 참조하세요.
pagesGitHub Pages로 작업합니다. 예를 들어 pages: write이(가) GitHub Pages 빌드를 요청하도록 허용합니다. 자세한 내용은 "GitHub 앱에 필요한 권한"을(를) 참조하세요.
pull-requests끌어오기 요청을 사용합니다. 예를 들어 pull-requests: write이(가) 끌어오기 요청에 레이블을 추가하도록 허용합니다. 자세한 내용은 "GitHub 앱에 필요한 권한"을(를) 참조하세요.
repository-projectsGitHub 프로젝트(클래식)로 작업합니다. 예를 들어 repository-projects: write이(가) 프로젝트(클래식)에 열을 추가하도록 허용합니다. 자세한 내용은 "GitHub 앱에 필요한 권한"을(를) 참조하세요.
security-eventsGitHub 코드 검사 및 Dependabot 경고를 사용합니다. 예를 들어 security-events: read이(가) 리포지토리에 대한 Dependabot 경고를 나열하도록 허용하고 security-events: write이(가) 코드 검색 경고의 상태 업데이트하도록 허용합니다. 자세한 내용은 "GitHub 앱에 필요한 사용 권한"에서 "'코드 검색 경고'에 대한 리포지토리 권한" 및 "'Dependabot 경고'에 대한 리포지토리 권한"을 참조하세요.
statuses커밋 상태 작업합니다. 예를 들어 statuses:read이(가) 지정된 참조에 대한 커밋 상태 나열하도록 허용합니다. 자세한 내용은 "GitHub 앱에 필요한 권한" 항목을 참조하세요.

GITHUB_TOKEN 권한에 대한 액세스 정의

permissions 키 내에서 사용 가능한 권한의 값으로 read, write, none을 지정하여 GITHUB_TOKEN이 허용할 액세스를 정의할 수 있습니다.

permissions:
  actions: read|write|none
  attestations: read|write|none
  checks: read|write|none
  contents: read|write|none
  deployments: read|write|none
  id-token: write|none
  issues: read|write|none
  discussions: read|write|none
  packages: read|write|none
  pages: read|write|none
  pull-requests: read|write|none
  repository-projects: read|write|none
  security-events: read|write|none
  statuses: read|write|none

이러한 권한에 대한 액세스를 지정하면 지정되지 않은 모든 권한은 none으로 설정됩니다.

다음 구문을 사용하여 사용 가능한 모든 권한에 대한 read-all 또는 write-all 액세스 중 하나를 정의할 수 있습니다.

permissions: read-all
permissions: write-all

다음 구문을 사용하여 사용 가능한 모든 권한에 대한 사용 권한을 사용하지 않도록 설정할 수 있습니다.

permissions: {}

포크된 리포지토리의 권한 변경

또한 permissions 키를 사용하여 포크된 리포지토리에 대한 읽기 권한을 추가 및 제거할 수 있지만 일반적으로 쓰기 액세스 권한은 부여할 수 없습니다. 이 동작의 예외는 관리 사용자가 GitHub Actions 설정의 끌어오기 요청에서 워크플로에 쓰기 토큰 보내기 옵션을 선택한 경우입니다. 자세한 내용은 "리포지토리에 대한 GitHub Actions 설정 관리"을(를) 참조하세요.

워크플로의 GITHUB_TOKEN 모든 작업에 대한 사용 권한 설정

워크플로의 모든 작업에 설정이 적용되도록 워크플로의 최상위 수준에서 지정할 permissions 수 있습니다.

예시: 전체 워크플로에 GITHUB_TOKEN 대한 권한 설정

이 예제에서는 워크플로의 모든 작업에 적용되는 GITHUB_TOKEN에 대해 설정되는 사용 권한을 보여 줍니다. 모든 권한에는 읽기 액세스 권한이 부여됩니다.

name: "My workflow"

on: [ push ]

permissions: read-all

jobs:
  ...

예시: 특정 작업에 대한 GITHUB_TOKEN 사용 권한 설정

특정 작업의 경우 jobs.<job_id>.permissions를 사용하여 GITHUB_TOKEN에 부여된 기본 사용 권한을 수정하면 필요에 따라 액세스를 추가하거나 제거하여 필요한 최소 액세스만 허용할 수 있습니다. 자세한 내용은 "자동 토큰 인증"을(를) 참조하세요.

작업 정의 내에서 사용 권한을 지정하여 필요한 경우 각 작업의 GITHUB_TOKEN에 대해 다른 사용 권한 집합을 구성할 수 있습니다. 또는 워크플로의 모든 작업에 대한 사용 권한을 지정할 수 있습니다. 워크플로 수준에서 사용 권한을 정의하는 방법에 대한 자세한 내용은 permissions를 참조하세요.

예시: 워크플로에서 GITHUB_TOKEN 한 작업에 대한 사용 권한 설정

이 예제에서는 이름이 stale로 지정된 작업에만 적용되는 GITHUB_TOKEN에 대해 설명되는 사용 권한을 보여 줍니다. issuespull-requests 권한에 대한 쓰기 권한이 부여됩니다. 다른 모든 권한은 액세스할 수 없습니다.

jobs:
  stale:
    runs-on: ubuntu-latest

    permissions:
      issues: write
      pull-requests: write

    steps:
      - uses: actions/stale@v5