Skip to main content

GitHub 앱을 빌드할 시기 결정하기

통합을 빌드할 때 다음 시나리오에서는 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으(로) 마이그레이션하는 방법에 대한 자세한 내용은 "OAuth 앱을 GitHub 앱으로 마이그레이션"을(를) 참조하세요.

GitHub Apps 에서는 강화된 보안을 제공합니다.

GitHub Apps 에서는 앱이 수행할 수 있는 작업을 더 자세히 제어할 수 있습니다. OAuth apps에서 사용하는 광범위한 범위 대신GitHub Apps은(는) 세분화된 권한을 사용합니다. 예를 들어 앱이 리포지토리의 콘텐츠를 읽어야 하는 경우 OAuth app 에는 repo 범위가 필요하며, 그러면 앱이 리포지토리 콘텐츠 및 설정을 편집할 수도 있습니다. GitHub App은(는) 리포지토리 콘텐츠에 대한 읽기 전용 액세스를 요청할 수 있으므로 앱이 리포지토리 콘텐츠 또는 설정 편집과 같이 더 많은 권한이 있는 작업을 수행할 수 없습니다.

또한 GitHub Apps 에서도 리포지토리 액세스를 더 잘 제어할 수 있습니다. GitHub App을(를) 사용하면 앱을 설치한 사용자 또는 조직 소유자가 앱에서 액세스할 수 있는 리포지토리가 무엇인지를 결정할 수 있습니다. 반대로 OAuth app 에서는 앱에 권한을 부여한 사용자가 액세스할 수 있는 모든 리포지토리에 액세스할 수 있습니다.

GitHub App 에서는 유효 기간이 짧은 토큰을 사용합니다. 토큰이 유출되면 토큰이 더 짧은 시간 동안 유효하므로 피해를 줄일 수 있습니다. 반대로 OAuth app 토큰은 OAuth app에 권한을 부여한 사용자가 해당 토큰을 철회할 때까지 만료되지 않습니다.

이러한 보안 기능은 앱의 자격 증명이 유출된 경우 발생할 수 있는 피해를 제한하여 GitHub App의 보안을 강화하는 데 도움이 됩니다. 또한 이러한 조치는 더 엄격한 보안 정책을 가진 조직에서 앱을 사용할 수 있도록 해 줍니다.

GitHub Apps은(는) 사용자와 독립적으로 작업하거나 사용자를 대신하여 작업할 수 있습니다.

GitHub Apps은(는) 사용자와 독립적으로 작업할 수 있습니다. 이는 사용자 입력이 필요하지 않은 자동화 작업에 유용합니다.

OAuth apps 에서도 GitHub Apps은(는) 사용자를 대신하여 작업을 수행할 수 있습니다. 앱에서 작업을 수행했음을 나타내지 않는 OAuth apps와(과) 달리 GitHub Apps은(는) 사용자를 대신하여 앱에서 작업을 수행했음을 나타냅니다.

GitHub Apps은(는) 사용자 계정에 연결되지 않으며 GitHub의 사용자를 소모하지 않습니다. GitHub Apps은(는) 처음에 앱을 설치한 사람이 조직을 떠날 때에도 설치 상태를 유지합니다. 이렇게 하면 사용자가 팀을 떠나더라도 통합이 계속 작동할 수 있습니다.

GitHub Apps에 확장 가능한 트래픽률 제한이 있습니다.

설치 액세스 토큰을 사용하는 GitHub Apps의 트래픽률 제한은 리포지토리 수와 조직 사용자 수로 확장됩니다. 반대로 OAuth apps은(는) 트래픽률 제한이 낮으며 확장되지 않습니다. 자세한 내용은 "GitHub 앱의 트래픽률 제한"을(를) 참조하세요.

GitHub App은(는) 기본 제공되는 웹후크가 있습니다.

GitHub Apps에는 기본 제공되는 중앙 집중식 웹후크가 있습니다. GitHub Apps은(는) 앱이 액세스할 수 있는 모든 리포지토리 및 조직에 대한 웹후크 이벤트를 수신할 수 있습니다. 반대로 OAuth apps 에서는 각 리포지토리 및 조직에 대해 개별적으로 웹후크를 구성해야 합니다.

API 액세스는 약간 다릅니다.

일반적으로 GitHub Apps 및 OAuth apps은(는) 동일한 API 요청을 수행할 수 있습니다. 하지만 약간의 차이점이 있습니다.

  • 검사 실행 및 검사 도구 모음을 관리하는 REST API는 GitHub Apps 에서만 사용할 수 있습니다.
  • 엔터프라이즈 개체 자체와 같은 엔터프라이즈 수준의 리소스는 GitHub Apps에서 사용할 수 없습니다. 즉, GitHub Apps은(는) GET /enterprise/settings/license 등의 엔드포인트를 호출할 수 없습니다. 그러나 엔터프라이즈 소유의 조직 및 리포지토리 리소스는 사용할 수 있습니다.
  • 일부 요청은 GitHub App에 부여된 권한 및 리포지토리 액세스에 따라 불완전한 데이터를 반환할 수 있습니다. 예를 들어 앱이 사용자가 액세스할 수 있는 모든 리포지토리를 가져오도록 요청하는 경우 응답에는 앱에 대한 액세스 권한도 부여된 리포지토리만 포함됩니다.

GitHub Apps에 사용할 수 있는 REST API 엔드포인트에 대한 자세한 내용은 "GitHub 앱 설치 액세스 토큰에 사용할 수 있는 엔드포인트"팀에 대한 자세한 내용은 "AUTOTITLE"을 참조하세요.

GitHub App 또는 personal access token 중 선택

사용자 또는 조직을 대신하여 GitHub 리소스에 액세스하거나 오랜 기간 동안의 통합을 원하는 경우 GitHub App을(를) 빌드하는 것이 좋습니다.

API 테스트 또는 유효 기간이 짧은 스크립트에 personal access tokens을(를) 사용할 수 있습니다. personal access token은(는) 사용자와 연결되어 있으므로 사용자가 더 이상 필요한 리소스에 액세스할 수 없으면 자동화가 중단될 수 있습니다. 조직에 설치된 GitHub App은(는) 사용자에 종속되지 않습니다. 또한 사용자와 달리 GitHub App은(는) GitHub 사용자를 소모하지 않습니다.

GitHub은(는) 두 가지 유형의 personal access tokens을(를) 지원하지만, 가능하면 personal access tokens (classic) 대신 fine-grained personal access token을(를) 사용하는 것이 좋습니다. personal access tokens에 대한 자세한 내용은 "개인용 액세스 토큰 관리"을(를) 참조하세요.

GitHub App 또는 GitHub Actions 중에서 선택

GitHub Actions 및 GitHub Apps은(는) 모두 자동화 및 워크플로 도구를 빌드하는 방법을 제공합니다.

GitHub Actions 은(는) 리포지토리에서 연속 통합, 배포 작업 및 프로젝트 관리와 같은 작업을 수행할 수 있는 자동화를 제공합니다. GitHub 호스팅된 실행기 컴퓨터 또는 관리자가 설정한 자체 호스팅 실행기에서 직접 실행됩니다. GitHub Actions은(는) 영구적으로 실행되지 않습니다. GitHub Actions 워크플로는 해당 리포지토리에서 발생하는 이벤트에 대한 응답으로 실행되며, 설정된 리포지토리의 리소스에만 액세스할 수 있습니다. 그러나 사용자 지정 작업은 리포지토리 및 조직 간에 공유할 수 있으므로 개발자는 요구 사항에 맞게 기존 작업을 다시 사용하고 수정할 수 있습니다. GitHub Actions 에는 타사 서비스와 안전하게 상호 작용하고 안전하게 배포 키를 관리하는 데 사용할 수 있는 기본 제공 비밀 관리도 제공됩니다.

GitHub Apps 은(는) 사용자 디바이스에서 제공하거나 실행하는 서버 또는 컴퓨팅 인프라에서 영구적으로 실행됩니다. GitHub 웹후크 이벤트뿐만 아니라 GitHub 에코시스템 외부의 이벤트에 반응할 수 있습니다. 여러 리포지토리 또는 조직에 걸쳐 있는 작업 또는 호스트된 서비스를 다른 조직에 제공하는 데 적합한 옵션입니다. GitHub App은(는) GitHub 외부에서 주로 발생하거나 GitHub Actions 워크플로가 할당된 것보다 더 많은 실행 시간 또는 권한이 필요한 함수를 사용하여 도구를 빌드할 때 가장 적합합니다.

GitHub Actions 및 GitHub Apps의 비교에 대한 자세한 내용은 "사용자 지정 작업 정보"을(를) 참조하세요.

기본 제공 GITHUB_TOKEN 에 충분한 권한이 없는 경우 GitHub App을(를) 사용하여 GitHub Actions 워크플로에서 인증할 수 있습니다. 자세한 내용은 "GitHub Actions 워크플로에서 GitHub 앱을 사용하여 인증된 API 요청 만들기"을(를) 참조하세요.