Skip to main content

GitHub 비밀 형식 이해

GitHub 비밀의 사용량, 범위, 액세스 권한에 대해 알아봅니다.

GitHub의 비밀 형식 정보

GitHub 비밀은 API 키, 토큰, 암호와 같은 중요한 정보를 리포지토리에 안전하게 저장하는 데 사용됩니다.

중요한 정보를 GitHub 비밀로 저장하는 경우 자격 증명 또는 키를 하드 코딩할 필요가 없으며 코드나 로그에 노출되지 않도록 방지할 수 있습니다. 그런 다음 비밀을 사용하여 서비스를 인증하고, 자격 증명을 관리하며, 중요한 데이터를 워크플로에 안전하게 전달할 수 있습니다.

GitHub에서는 두 가지 유형의 비밀을 사용합니다.

GitHub 비밀 유형에 따라 리포지토리, 조직 또는 개인 계정 보안 설정 페이지에서 비밀을 만들고 관리할 수 있습니다.

Dependabot 비밀

Dependabot 비밀은 Dependabot에서 사용할 자격 증명 및 중요한 정보를 저장하는 데 사용됩니다.

Dependabot 비밀은 리포지토리의 dependabot.yml 파일에서 참조됩니다.

사용

Dependabot 비밀은 일반적으로 Dependabot에서 프라이빗 패키지 레지스트리를 인증하는 데 사용됩니다. 이렇게 하면 Dependabot에서 끌어오기 요청을 열어 프라이빗 리포지토리의 취약하거나 오래된 종속성을 업데이트할 수 있습니다. 인증에 사용되는 이러한 Dependabot 비밀은 리포지토리의 dependabot.yml 파일에서 참조됩니다.

Dependabot 비밀에는 Dependabot에서 시작한 워크플로에 필요한 비밀도 포함될 수 있습니다. 예를 들어, Dependabot은 종속성을 업데이트하기 위한 끌어오기 요청을 만들거나 또는 끌어오기 요청에 대한 주석을 만들 때 GitHub Actions 워크플로를 트리거할 수 있습니다. 이 경우 Dependabot 이벤트에 의해 워크플로가 트리거되는 한 워크플로 파일(.github/workflows/*.yml)에서 Dependabot 비밀을 참조할 수 있습니다.

범위

Dependabot 비밀은 다음에서 정의할 수 있습니다.

  • 리포지토리 수준
  • 조직 수준

조직 수준에서 설정할 때 Dependabot 비밀은 리포지토리 간에 공유할 수 있습니다. 비밀에 액세스할 수 있는 조직의 리포지토리를 지정해야 합니다.

액세스 권한

Dependabot 비밀은 종속성을 업데이트하기 위해 프라이빗 레지스트리에 인증할 때 Dependabot에 의해 액세스됩니다.

Dependabot 비밀은 GitHub Actions이 워크플로에 대한 트리거 이벤트를 시작할 때 GitHub Actions 워크플로를 통해 액세스됩니다. 이는 Dependabot에서 워크플로를 시작할 때 Dependabot 비밀만 사용할 수 있고, 작업 비밀에는 액세스할 수 없기 때문입니다. 따라서 이러한 워크플로에 필요한 모든 비밀은 작업 비밀이 아닌 Dependabot 비밀로 저장해야 합니다. pull_request_target 이벤트에는 추가 보안 제한이 있습니다. 제한 및 제약을 참조하세요.

사용자 액세스 권한

리포지토리 수준 비밀:

  • 리포지토리에 대한 관리자 액세스 권한이 있는 사용자는 Dependabot 비밀을 만들고 관리할 수 있습니다.
  • 리포지토리에 대한 공동 작업자 액세스 권한이 있는 사용자는 Dependabot에 대한 비밀을 사용할 수 있습니다.

조직 수준 비밀:

  • 조직 소유자는 Dependabot 비밀을 만들고 관리할 수 있습니다.
  • 각 비밀에 액세스할 수 있는 리포지토리에 대한 공동 작업자 액세스 권한이 있는 사용자는 Dependabot에 대한 비밀을 사용할 수 있습니다.

제한 사항

Dependabot에서 시작한 워크플로의 경우 pull_request_target 이벤트는 다른 이벤트와 다르게 처리됩니다. 이 이벤트의 경우 끌어오기 요청의 기본 참조가 Dependabot(github.event.pull_request.user.login == 'dependabot[bot]')에서 만들어진 경우:

  • 워크플로는 읽기 전용 GITHUB_TOKEN을 수신합니다.
  • 워크플로에서는 비밀을 사용할 수 없습니다.

이러한 추가 제한은 Dependabot에서 만든 끌어오기 요청에서 발생할 수 있는 잠재적인 보안 위험을 방지하는 데 도움이 됩니다.

Dependabot 비밀은 포크에 전달되지 않습니다.

작업 비밀

작업 비밀은 API 키, 인증 토큰 및 기타 자격 증명과 같은 중요한 정보를 워크플로에 저장하는 데 사용됩니다.

사용

작업 비밀은 워크플로 파일(.github/workflows/*.yml)에서 참조됩니다.

범위

다음 위치에서 작업 비밀을 정의할 수 있습니다.

  • 리포지토리 수준
  • 환경 수준
  • 조직 수준

환경 수준 비밀은 프로덕션 또는 스테이징과 같은 특정 환경에만 적용됩니다. 조직 수준에서 설정하는 경우, 리포지토리 간에 작업 비밀을 공유할 수 있습니다. 액세스 정책을 사용하여 비밀에 액세스할 수 있는 리포지토리를 제어할 수 있습니다.

액세스 권한

작업 비밀은 GitHub Actions 워크플로 내에서만 사용할 수 있습니다. 작업에서 실행 중임에도 불구하고 Dependabot은 작업 비밀에 액세스할 수 없습니다.

Dependabot에서 시작한 워크플로의 경우 작업 비밀을 사용할 수 없습니다. 워크플로에 액세스하려면 이러한 워크플로 비밀이 Dependabot 비밀로 저장되어야 합니다.

작업 비밀을 저장하는 위치에 따라 접근성이 결정됩니다.

  • 리포지토리 비밀: 리포지토리의 모든 워크플로가 비밀에 액세스할 수 있습니다.
  • 환경 비밀: 비밀은 특정 환경을 참조하는 작업으로 제한됩니다.
  • 조직 비밀: 조직에서 액세스 권한을 부여받은 리포지토리의 모든 워크플로는 조직 비밀에 액세스할 수 있습니다.

사용자 액세스 권한

리포지토리 수준 및 환경 비밀:

  • 리포지토리에 대한 관리자 액세스 권한이 있는 사용자는 작업 비밀을 만들고 관리할 수 있습니다.
  • 리포지토리에 대한 공동 작업자 액세스 권한이 있는 사용자는 비밀을 사용할 수 있습니다.

조직 수준 비밀:

  • 조직 소유자는 작업 비밀을 만들고 관리할 수 있습니다.
  • 각 비밀에 대한 액세스 권한이 있는 리포지토리에 대한 공동 작업자 액세스 권한이 있는 사용자는 비밀을 사용할 수 있습니다.

제한 사항

  • Dependabot에서 시작한 워크플로에는 작업 비밀을 사용할 수 없습니다.
  • 작업 비밀은 포크에서 끌어오기 요청에 의해 트리거되는 워크플로에 전달되지 않습니다.
  • GitHub Actions는 워크플로 로그에 인쇄되는 모든 GitHub 비밀의 내용을 자동으로 수정합니다.
  • 최대 1,000개의 조직 비밀, 100개의 리포지토리 비밀 및 100개의 환경 비밀을 저장할 수 있습니다. 비밀의 크기는 48KB로 제한됩니다. 자세한 내용은 비밀에 대한 제한을 참조하세요.

추가 참고 자료