GitHub Apps 정보
GitHub App는 GitHub의 기능과 상호 작용하고 확장하기 위해 빌드할 수 있는 통합 유형입니다. GitHub App을(를) 빌드하여 사용자를 로그인하거나 서비스 계정을 만들지 않고도 유연성을 제공하고 프로세스에서 마찰을 줄일 수 있습니다.
GitHub Apps의 일반적인 사용 사례는 다음과 같습니다.
- 작업 또는 백그라운드 프로세스 자동화
- 사용자가 GitHub 계정으로 로그인하여 에코시스템에서 ID를 제공할 수 있는 "GitHub로 로그인"을 지원합니다.
- 개발자 도구로서 사용자가 GitHub App에 로그인하여 GitHub에서 작업할 수 있도록 허용합니다. 그러면 사용자가 대신 작업할 수 있습니다.
- 도구 또는 외부 서비스를 GitHub과 통합
GitHub Apps은(는) GitHub 내의 독립 행위자입니다. GitHub App는 자체적으로 작동하므로 봇 또는 서비스 계정을 별도의 사용자로 유지 관리할 필요가 없습니다. 또한 사용자에게 부여된 권한을 사용하여 사용자로 인증하고 사용자를 대신하여 작업할 수 있습니다.
앱이 GitHub의 이벤트에 응답하도록 하려면 앱이 웹후크를 구독해야 합니다. 예를 들어 끌어오기 요청이 열릴 때 앱이 주석을 남기도록 할 수 있습니다. 자세한 내용은 "GitHub 앱에서 웹후크 사용"을 참조하세요.
개발하는 동안 개발을 위해 앱을 로컬로 실행할 수 있습니다. 앱을 프로덕션에 사용할 준비가 되면 전용 서버에 앱을 배포해야 합니다. 예를 들어 Azure App Service 사용할 수 있습니다.
GitHub Apps에 대한 권한 및 표시 여부
GitHub Apps은 조직 및 개인 계정에 직접 설치가 가능하고 특정 리포지토리에 대한 액세스 권한을 부여받을 수 있습니다. 또한 기본 제공 웹후크와 범위가 좁은 특정 권한이 함께 제공됩니다. GitHub App을(를) 설정할 때 앱에 대한 특정 권한을 선택할 수 있습니다. 이러한 권한은 앱이 GitHub API를 통해 수행할 수 있는 작업, 로그인한 사용자를 대신하여 수행할 수 있는 작업 및 앱이 받을 수 있는 웹후크를 결정합니다. 앱이 사용자 또는 organization 계정에 설치되면 앱을 설치하는 사람이 해당 계정에서 앱이 액세스할 수 있는 리포지토리를 결정합니다. 자세한 내용은 "GitHub 앱 대한 권한 선택"을 참조하세요.
기본적으로 조직의 소유자만 조직에서 GitHub 앱의 설정을 관리할 수 있습니다. 추가 사용자가 조직이 소유한 GitHub 앱의 개발자 설정을 변경할 수 있도록 소유자가 GitHub 앱 관리자 권한을 부여할 수 있습니다. GitHub 앱 관리자는 타사 애플리케이션을 관리할 수 없습니다. 조직에서 GitHub 앱 관리자를 추가하고 제거하는 방법에 대한 자세한 내용은 "조직의 역할"을 참조하세요.
앱의 표시 유형을 설정하여 설치할 수 있는 사용자를 제어할 수 있습니다. 다른 GitHub 사용자 또는 조직에서 앱을 설치하거나 비공개로 설치하여 앱을 소유한 계정에만 설치할 수 있도록 공개할 수 있습니다. 자세한 내용은 "공개 또는 비공개 GitHub 앱 만들기"을 참조하세요.
GitHub Apps을(를) 사용해야 하는 경우
통합을 빌드할 때 OAuth App, personal access token 또는 GitHub Actions 대신 다음 시나리오에서 GitHub App를 사용하는 것이 좋습니다.
OAuth App 대신 GitHub App 사용
일반적으로 GitHub Apps는 OAuth Apps보다 선호됩니다.
OAuth Apps 및 GitHub Apps 모두 OAuth 2.0을 사용합니다.
OAuth Apps는 사용자를 대신하여 작동할 수 있지만 GitHub Apps는 사용자를 대신하여 또는 사용자와 독립적으로 작동할 수 있습니다.
자세한 내용은 "GitHub 앱과 OAuth 앱 간의 차이점"을 참조하세요.
기존 OAuth App을(를) GitHub App로 마이그레이션하는 방법에 대한 자세한 내용은 "Migrating OAuth Apps to GitHub Apps"을 참조하세요.
GitHub App의 향상된 보안 제공
GitHub Apps은(는) 앱이 수행할 수 있는 작업을 더 자세히 제어합니다. OAuth App에서 사용하는 광범위한 범위 대신 GitHub App은(는) 세분화된 권한을 사용합니다. 예를 들어 앱이 리포지토리의 콘텐츠를 읽어야 하는 경우 OAuth App에는 앱이 리포지토리 콘텐츠 및 설정을 편집할 수 있는 scope 필요합니다 repo
. GitHub App는 리포지토리 콘텐츠에 대한 읽기 전용 액세스를 요청할 수 있으므로 앱이 리포지토리 콘텐츠 또는 설정 편집과 같은 더 많은 권한 있는 작업을 수행할 수 없습니다.
GitHub Apps은(는) 리포지토리 액세스에 대한 더 많은 제어를 제공합니다. GitHub App를 사용하면 앱을 설치한 사용자 또는 조직 소유자 앱이 액세스할 수 있는 리포지토리를 결정할 수 있습니다. 반대로 OAuth App은(는) 앱에 권한을 부여한 사용자가 액세스할 수 있는 모든 리포지토리에 액세스할 수 있습니다.
GitHub Apps은(는) 수명이 짧은 토큰을 사용합니다. 토큰이 유출되면 토큰이 더 짧은 시간 동안 유효하므로 수행할 수 있는 손상이 줄어듭니다. 반대로 OAuth App 토큰은 OAuth App에 권한을 부여한 사람이 토큰을 해지할 때까지 만료되지 않습니다.
이러한 보안 기능은 앱의 자격 증명이 유출된 경우 발생할 수 있는 손상을 제한하여 GitHub App의 보안을 강화하는 데 도움이 됩니다. 또한 이렇게 하면 더 엄격한 보안 정책을 가진 조직에서 앱을 사용할 수 있습니다.
GitHub Apps는 사용자와 독립적으로 또는 사용자를 대신하여 작동할 수 있습니다.
GitHub Apps은(는) 사용자와 독립적으로 작동할 수 있습니다. 이는 사용자 입력이 필요하지 않은 자동화에 유용합니다.
OAuth Apps와 마찬가지로 GitHub Apps는 여전히 사용자를 대신하여 작업을 수행할 수 있습니다. 앱에서 작업을 수행했음을 나타내지 않는 OAuth Apps와 달리 GitHub App은(는) 사용자를 대신하여 앱에서 작업을 수행했음을 나타냅니다.
GitHub Apps은(는) 사용자 계정에 연결되지 않으며 GitHub Enterprise Server의 좌석을 사용하지 않습니다. GitHub Apps은(는) 처음에 앱을 설치한 사람이 organization 떠날 때에도 설치되어 있습니다. 이렇게 하면 사람들이 팀을 떠나더라도 통합이 계속 작동할 수 있습니다.
GitHub Apps에는 확장 가능한 속도 제한이 있습니다.
설치 액세스 토큰을 사용하는 GitHub App의 속도 제한은 리포지토리 수와 organization 사용자 수로 확장됩니다. 반대로 OAuth Apps은(는) 속도 제한이 낮으며 크기를 조정하지 않습니다. 자세한 내용은 "GitHub 앱의 속도 제한"을 참조하세요.
GitHub Apps이(가) 웹후크에 기본 제공
GitHub Apps에는 기본 제공 중앙 집중식 웹후크가 있습니다. GitHub Apps는 앱이 액세스할 수 있는 모든 리포지토리 및 조직에 대한 웹후크 이벤트를 받을 수 있습니다. 반대로 OAuth Apps는 각 리포지토리 및 organization 대해 개별적으로 웹후크를 구성해야 합니다.
API 액세스는 약간 다릅니다.
일반적으로 GitHub Apps 및 OAuth Apps는 동일한 API 요청을 수행할 수 있습니다. 하지만 약간의 차이점이 있습니다.
- 검사 실행 및 검사 제품군을 관리하는 REST API는 GitHub Apps에서만 사용할 수 있습니다.
- 엔터프라이즈 리소스는 OAuth Apps에만 사용할 수 있습니다.
- 일부 요청은 GitHub App에 부여된 권한 및 리포지토리 액세스에 따라 불완전한 데이터를 반환할 수 있습니다. 예를 들어 앱이 사용자가 액세스할 수 있는 모든 리포지토리를 가져오기 위해 요청하는 경우 응답에는 앱에 액세스 권한이 부여된 리포지토리만 포함됩니다.
GitHub Apps에 사용할 수 있는 REST API 엔드포인트에 대한 자세한 내용은 "GitHub 앱에 사용할 수 있는 엔드포인트"을 참조하세요.
GitHub App 또는 personal access token 중에서 선택
사용자를 대신하여 또는 organization GitHub 리소스에 액세스하거나 수명이 긴 통합을 예상하는 경우 GitHub App을(를) 빌드하는 것이 좋습니다.
API 테스트 또는 수명이 짧은 스크립트에 personal access tokens를 사용할 수 있습니다. personal access token은(는) 사용자와 연결되어 있으므로 사용자가 더 이상 필요한 리소스에 액세스할 수 없으면 자동화가 중단될 수 있습니다. organization 설치된 GitHub App은(는) 사용자에 종속되지 않습니다. 또한 사용자와 달리 GitHub App은(는) GitHub 좌석을 사용하지 않습니다.
GitHub은(는) 두 가지 유형의 personal access tokens을(를) 지원하지만 가능하면 personal access tokens 대신 fine-grained personal access tokens를 사용하는 것이 좋습니다. personal access tokens에 대한 자세한 내용은 "Managing your personal access tokens.
GitHub App 또는 GitHub Actions 중에서 선택
GitHub Apps 및 GitHub Actions는 모두 자동화 및 워크플로 도구를 빌드하는 방법을 제공합니다.
GitHub Actions는 리포지토리에서 연속 통합, 배포 작업 및 프로젝트 관리와 같은 작업을 수행할 수 있는 자동화를 제공합니다. 관리자가 설정한 GitHub호스팅 실행기 컴퓨터 또는 자체 호스팅 실행기에서 직접 실행됩니다. GitHub Actions은(는) 영구적으로 실행되지 않습니다. 리포지토리에서 발생하는 이벤트에 대한 응답으로 실행되며, 설정된 리포지토리의 리소스에만 액세스할 수 있습니다. 그러나 리포지토리와 조직 간에 공유할 수 있으므로 개발자는 요구 사항에 맞게 기존 작업을 재사용하고 수정할 수 있습니다. GitHub Actions에는 타사 서비스와 안전하게 상호 작용하고 배포 키를 안전하게 관리하는 데 사용할 수 있는 기본 제공 비밀 관리도 제공됩니다.
GitHub Apps은(는) 제공하는 서버 또는 컴퓨팅 인프라에서 지속적으로 실행되며, GitHub 에코시스템 외부의 이벤트뿐만 아니라 웹후크 이벤트에 반응합니다. 여러 리포지토리 또는 조직에 걸쳐 있는 작업 또는 다른 조직에 호스트된 서비스를 제공하는 데 적합한 옵션입니다. GitHub App은(는) 주로 GitHub 외부에서 발생하거나 실행을 위해 할당된 작업보다 더 많은 시간이 필요한 함수를 사용하여 도구를 빌드할 때 가장 적합합니다.
GitHub Actions을(를) GitHub Apps에 비교하는 방법에 대한 자세한 내용은 "사용자 지정 작업 정보.
기본 제공에 충분한 권한이 없는 경우 GitHub App을(를) 사용하여 GitHub Actions 워크플로에서 GITHUB_TOKEN
인증할 수 있습니다. 자세한 내용은 "Making authenticated API requests with a GitHub App in a GitHub Actions workflow"을 참조하세요.
빌드할 GitHub App의 유형 이해
앱에 적용하려는 기능에 따라 고려할 GitHub App을(를) 디자인하는 방법에는 여러 가지가 있습니다.
사용자를 대신하여 작동하는 GitHub Apps
앱이 사용자를 대신하여 작업을 수행하도록 하려면 인증에 사용자 액세스 토큰을 사용해야 합니다. 이 유형의 요청을 "사용자-서버"라고도 하며, 이는 앱에 부여된 권한과 사용자의 권한에 의해 앱이 제한됨을 의미합니다. 이 패턴을 사용하면 앱이 작업을 수행하려면 먼저 사용자가 앱에 권한을 부여해야 합니다. 자세한 내용은 "사용자를 대신하여 GitHub 앱 인증"을 참조하세요.
앱이 사용자를 대신하여 작동하는 GitHub App를 사용하여 만들 수 있는 자동화의 몇 가지 예는 다음과 같습니다.
- 에코시스템의 ID 공급자로 GitHub를 사용하는 GitHub App
- GitHub App 사용자에게 유용할 수 있는 GitHub.com 위에 서비스를 추가하는 GitHub GitHub Marketplace를 통해 또는 앱을 공개하여 다른 개발자와 앱을 공유할 수 있습니다.
사용자를 대신하여 작동하는 GitHub Apps
앱이 사용자가 아닌 자신을 대신하여 작업을 수행하도록 하려면 인증에 설치 액세스 토큰을 사용해야 합니다. 이러한 유형의 요청을 "서버-서버"라고도 하며 앱에 부여된 권한으로 앱이 제한됩니다. 자세한 내용은 "GitHub 앱 설치로 인증"을 참조하세요.
앱이 자체적으로 작동하는 GitHub App를 사용하여 만들 수 있는 자동화의 몇 가지 예는 다음과 같습니다.
- 특정 조건 집합이 지정된 경우 웹후크를 사용하여 이벤트에 반응하는 GitHub App입니다. 예를 들어 특정 조건 집합이 지정된 경우 레이블에 대한 REST API 엔드포인트 를 사용하여 리포지토리에서 만든 각 새 문제에 레이블을 추가하는 자동화를 만들 수 있습니다
- 리포지토리 기여자를 돕는 GitHub App 예를 들어 앱은 기여자 끌어오기 요청을 만들거나 주석을 만든 후 유용한 리소스를 게시할 수 있습니다.
- 다른 CI/CD 도구에 제공하거나 리포지토리에서 정보를 가져오는 수명이 짧은 토큰을 생성하는 GitHub App