# 비밀

GitHub Actions 워크플로에서 사용되는 시크릿에 대해 알아봅니다.

## 비밀에 대한 정보

비밀을 사용하면 중요한 정보를 조직, 리포지토리 또는 리포지토리 환경에 저장할 수 있습니다. 시크릿은 조직, 리포지토리 또는 리포지토리 환경에서 GitHub Actions 워크플로에 사용할 수 있도록 만드는 변수입니다.

GitHub Actions 는 워크플로에 비밀을 명시적으로 포함하는 경우에만 비밀을 읽을 수 있습니다.

## 비밀 작동 방식

비밀은 [Libsodium 봉인 박스](https://libsodium.gitbook.io/doc/public-key_cryptography/sealed_boxes)를 사용하므로 GitHub에 도달하기 전에 암호화됩니다. 이는 [UI를 사용](/ko/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#creating-secrets-for-a-repository)하거나 [REST API](/ko/rest/actions/secrets)를 통해 비밀을 제출할 때 발생합니다. 이 클라이언트 쪽 암호화를 사용하면 인프라 내에서 GitHub실수로 인한 로깅(예: 예외 로그 및 요청 로그 등)과 관련된 위험을 최소화할 수 있습니다. 비밀이 업로드되면 GitHub 암호를 해독하여 워크플로 런타임에 삽입할 수 있습니다.

## 조직 수준 비밀

조직 수준 비밀을 사용하면 여러 리포지토리 간에 비밀을 공유할 수 있으므로 중복 비밀을 만들 필요가 줄어듭니다. 또한 한 위치에서 조직 비밀을 업데이트하면 해당 비밀을 사용하는 모든 리포지토리 워크플로에서 변경 내용이 적용됩니다.

조직을 위한 비밀을 만들 때, 정책을 사용하여 리포지토리별로 액세스를 제한할 수 있습니다. 예를 들어 모든 리포지토리에 대한 액세스 권한을 부여하거나 프라이빗 리포지토리 또는 지정된 리포지토리 목록에 대해서만 액세스를 제한할 수 있습니다.

환경 비밀의 경우 필요한 검토자가 비밀에 대한 액세스를 제어하도록 설정할 수 있습니다. 승인자가 승인할 때까지 워크플로 작업이 환경 비밀에 액세스할 수 없습니다.

작업에 비밀을 사용할 수 있도록 하려면 워크플로 파일에서 비밀을 입력이나 환경 변수로 설정해야 합니다. 작업의 추가 정보 파일을 검토하여 작업에 예상되는 입력 및 환경 변수에 대해 알아봅니다.
[GitHub Actions에 대한 워크플로 구문](/ko/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsenv)을(를) 참조하세요.

## 자격 증명 권한 제한

자격 증명을 생성할 때 가능한 최소 권한을 부여하는 것이 좋습니다. 예를 들어 개인 자격 증명을 사용하는 대신 [배포 키](/ko/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys) 또는 서비스 계정을 사용합니다. 필요한 모든 경우 읽기 전용 권한을 부여하고 가능한 한 액세스를 제한하는 것이 좋습니다.

생성할 personal access token (classic)때 필요한 범위 중 가장 적은 범위를 선택합니다. 생성할 fine-grained personal access token때 필요한 최소 권한 및 리포지토리 액세스를 선택합니다.

personal access token 대신, GitHub App와 유사하게 세분화된 권한과 짧은 수명의 토큰을 사용하는 fine-grained personal access token의 사용을 고려하세요.
personal access token와 달리 GitHub App는 특정 사용자에 종속되지 않으므로 앱을 설치한 사용자가 조직을 떠나더라도 워크플로는 계속 작동합니다. 자세한 내용은 [GitHub Actions 워크플로에서 GitHub 앱을 사용하여 인증된 API 요청 만들기](/ko/apps/creating-github-apps/authenticating-with-a-github-app/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow)을(를) 참조하세요.

## 자동으로 수정된 비밀

GitHub Actions 는 워크플로 로그에 인쇄되는 모든 GitHub 비밀의 내용을 자동으로 수정합니다.

GitHub Actions 또한 중요한 것으로 인식되지만 비밀로 저장되지 않은 정보를 수정합니다. 자동으로 수정된 비밀 목록은 [시크릿 참조](/ko/actions/reference/security/secrets#automatically-redacted-secrets)을(를) 참조하세요.

비밀 값을 변환할 수 있는 여러 가지 방법이 있기 때문에 이 수정이 보장되지는 않습니다. 또한 러너는 현재 작업 내에서 사용되는 비밀만 편집할 수 있습니다. 따라서 비밀이 수정되도록 하고 비밀과 관련된 다른 위험을 제한하기 위해 따라야 하는 특정 보안 사전 단계가 있습니다. 비밀이 있는 보안 모범 사례의 참조 목록은 [안전 사용 참조](/ko/actions/reference/security/secure-use#use-secrets-for-sensitive-information)을(를) 참조하세요.

## 추가 참고 자료

* [GitHub Actions에서 비밀 사용](/ko/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets)
* [GitHub Actions의 비밀을 위한 REST API 끝점](/ko/rest/actions/secrets)