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로 제한됩니다. 자세한 내용은 비밀에 대한 제한을 참조하세요.