# 조직에서 데이터 유출을 방지하기 위한 모범 사례

조직에서 개인 데이터나 중요한 데이터가 노출되지 않도록 보호하는 데 도움이 되는 지침과 권장 사항을 알아보세요.

## 이 가이드에 대하여

조직의 소유자는 개인 정보나 중요 데이터가 노출되지 않도록 최우선으로 관리해야 합니다. 데이터 유출은 의도적인 행위든, 우발적인 사고든 관련 당사자에게 심각한 위험을 초래할 수 있습니다. 데이터 유출로부터 보호하기 위한 조치를 취하지만 GitHub 보안을 강화하기 위해 조직을 관리할 책임이 있습니다.

데이터 유출 방지를 위해서는 다음과 같은 몇 가지 주요 구성 요소가 필요합니다.

* 예방을 위한 사전 대응적 접근
* 유출 가능성 조기 검색
* 사건 발생 시 완화 계획을 유지합니다.

어떤 방법이 가장 좋을지는 관리하는 조직의 유형에 따라 결정됩니다. 오픈 소스 개발을 중심으로 하는 조직의 경우, 외부와의 협력을 원활하게 하기 위해 일반적인 상업 조직에 비해 관리 감독이 덜 엄격할 수 있습니다. 이 문서에서는 필요에 따라 구현해야 하는 고려해야 할 기능 및 설정에 대한 GitHub 높은 수준의 지침을 제공합니다.

## 계정 보안

2FA 사용 설정 및 모든 구성원에게 적용, 강력한 암호 지침 설정 등 보안 모범 사례를 구현하여 조직의 리포지토리와 설정을 보호해야 합니다.

* 조직 구성원, 외부 협력자 및 청구 관리자가 개인 계정에 대해 2FA를 사용하도록 요구하므로 악의적인 행위자가 조직의 리포지토리 및 설정에 액세스하기가 더 어려워집니다. 자세한 내용은 [조직에서 2단계 인증 요구](/ko/enterprise-server@3.22/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization)을(를) 참조하세요.

* 권장되는 암호 지침에 따라 GitHub사용자가 강력한 암호를 만들고 적절하게 보호하도록 장려합니다. 자세한 내용은 [강력한 암호 만들기](/ko/enterprise-server@3.22/authentication/keeping-your-account-and-data-secure/creating-a-strong-password)을 참조하세요.

* 내부 보안 정책을 GitHub설정하여 사용자가 적절한 조치를 취하고 인시던트가 의심되는 경우 누구에게 연락해야 하는지 알 수 있도록 합니다. 자세한 내용은 [Adding a security policy to your repository(리포지토리에 보안 정책 추가)](/ko/enterprise-server@3.22/code-security/how-tos/report-and-fix-vulnerabilities/configure-vulnerability-reporting/add-security-policy)을(를) 참조하세요.

계정 보안에 대한 자세한 내용은 [계정 보안의 모범 사례](/ko/enterprise-server@3.22/code-security/tutorials/implement-supply-chain-best-practices/securing-accounts)을(를) 참조하세요.

## 데이터 누출 방지

조직의 소유자는 조직의 유형에 맞춰 액세스 권한을 제한하고 검토해야 합니다. 더욱 철저한 제어를 위해서는 다음 설정을 고려해 보세요.

| Recommendation                                                                                                                                                                                                                                                                                                                                          | 추가 정보 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| 리포지토리를 포크하는 기능을 비활성화합니다.                                                                                                                                                                                                                                                                                                                                |       |
| [리포지토리에 대한 포크 정책 관리](/ko/enterprise-server@3.22/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-forking-policy-for-your-repository)                                                                                                                                                              |       |
| 리포지토리 표시 여부 변경을 비활성화 합니다.                                                                                                                                                                                                                                                                                                                               |       |
| [조직의 리포지토리 표시 유형 변경 제한](/ko/enterprise-server@3.22/organizations/managing-organization-settings/restricting-repository-visibility-changes-in-your-organization)                                                                                                                                                                                         |       |
| 리포지토리 생성을 비공개 또는 내부용으로 제한합니다.                                                                                                                                                                                                                                                                                                                           |       |
| [조직에서 리포지토리 만들기 제한](/ko/enterprise-server@3.22/organizations/managing-organization-settings/restricting-repository-creation-in-your-organization)                                                                                                                                                                                                       |       |
| 리포지토리 삭제 및 전송을 비활성화합니다.                                                                                                                                                                                                                                                                                                                                 |       |
| [리포지토리를 삭제하거나 전송하기 위한 권한 설정](/ko/enterprise-server@3.22/organizations/managing-organization-settings/setting-permissions-for-deleting-or-transferring-repositories)                                                                                                                                                                                     |       |
|                                                                                                                                                                                                                                                                                                                                                         |       |
| 배포 키를 사용하는 기능을 비활성화 합니다.                                                                                                                                                                                                                                                                                                                                |       |
| [조직의 배포 키 제한](/ko/enterprise-server@3.22/organizations/managing-organization-settings/restricting-deploy-keys-in-your-organization)                                                                                                                                                                                                                     |       |
|                                                                                                                                                                                                                                                                                                                                                         |       |
| 범위 personal access token는 필요한 최소 권한까지입니다.                                                                                                                                                                                                                                                                                                               | None  |
| 코드를 보호하기 위해 필요한 경우 퍼블릭 리포지토리를 프라이빗으로 전환하세요. 를 사용하여 이 변경 내용의 리포지토리 소유자에게 자동으로 경고할 수 있습니다 GitHub App.                                                                                                                                                                                                                                                     |       |
| \[                                                                                                                                                                                                                                                                                                                                                      |       |
| ]\(<https://github.com/apps/prevent-public-repos)에서> GitHub Marketplace                                                                                                                                                                                                                                                                                 |       |
| 도메인을 확인하고 이메일 알림을 확인된 이메일 도메인으로만 제한하여 조직의 ID를 확인합니다.                                                                                                                                                                                                                                                                                                    |       |
| [조직의 도메인 확인 또는 승인](/ko/enterprise-server@3.22/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization) 및 [조직에 대한 메일 알림 제한](/ko/enterprise-server@3.22/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/restricting-email-notifications-for-your-organization) |       |
| 기여자가 실수로 커밋하는 것을 방지합니다.                                                                                                                                                                                                                                                                                                                                 |       |
| [Removing sensitive data from a repository(리포지토리에서 중요한 데이터 제거)](/ko/enterprise-server@3.22/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository#avoiding-accidental-commits-in-the-future)                                                                                                                     |       |

## 데이터 유출 감지

데이터 유출을 방지하기 위해 조직을 얼마나 잘 강화하든, 일부는 여전히 발생할 수 있으며 감사 로그 및 분기 보호 규칙을 사용하여 secret scanning대응할 수 있습니다.

### secret scanning 사용

Secret scanning 는 GitHub 리포지토리의 모든 브랜치의 전체 Git 기록을 스캔하여 실수로 커밋된 비밀을 탐지함으로써 조직과 리포지토리 전반에 걸쳐 코드의 보안을 유지하고 비밀을 안전하게 보호하는 데 도움이 됩니다. 비밀 검색 파트너, 다른 서비스 공급자 또는 사용자 또는 과 일치하는 모든 문자열은 리포지토리 탭에서 **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security** 경고로 보고됩니다.

> \[!TIP]
> secret scanning 및 푸시 보호의 사용 상태와 관계없이 조직이 GitHub TeamGitHub Enterprise에서 무료 보고서를 실행하여 조직의 코드 내에서 유출된 비밀을 검사할 수 있습니다. [GitHub 사용하여 비밀 보안](/ko/enterprise-server@3.22/code-security/concepts/secret-security/secret-security-with-github)을 참조하세요.

이 기능을 사용하려면 먼저 사이트 관리자가 귀하의 인스턴스에서 secret scanning를 활성화해야 합니다. 자세한 내용은 [어플라이언스에 대한 비밀 검사 구성](/ko/enterprise-server@3.22/code-security/how-tos/secure-at-scale/configure-enterprise-security/configure-specific-tools/configure-secret-scanning)을 참조하세요.

secret scanning에 대한 자세한 내용은 [비밀 스캐닝](/ko/enterprise-server@3.22/code-security/concepts/secret-security/secret-scanning)을(를) 참조하세요.

secret scanning을 리포지토리 또는 조직에 대한 푸시 보호로 사용하도록 설정할 수도 있습니다. 이 기능을 사용하도록 설정하면 secret scanning에서 기여자가 검색된 비밀을 사용하여 코드를 푸시하지 못하도록 방지합니다. 자세한 내용은 [푸시 보호](/ko/enterprise-server@3.22/code-security/concepts/secret-security/push-protection)을 참조하세요. 마지막으로 검색 범위를 확장하여 사용자 지정 비밀 문자열 구조를 포함할 수도 있습니다. 자세한 내용은 [비밀 검사를 위한 사용자 지정 패턴 정의](/ko/enterprise-server@3.22/code-security/how-tos/secure-your-secrets/customize-leak-detection/define-custom-patterns)을(를) 참조하세요.

### 조직의 감사 로그 검토

GraphQL 감사 로그 API를 사용하여 조직의 감사 로그를 활용함으로써 IP를 사전에 보호하고 조직의 규정 준수를 유지할 수 있습니다. 자세한 내용은 [조직의 감사 로그 검토](/ko/enterprise-server@3.22/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization) 및 [기업 관리자](/ko/enterprise-server@3.22/graphql/reference/enterprise-admin#interface-auditentry)을(를) 참조하세요.

### 분기 보호 규칙 설정

분기 보호를 설정하면 기본 분기에 병합하기 전에 모든 코드를 제대로 검토할 수 있습니다. 분기 보호 규칙을 설정하면 기여자가 변경 사항을 푸시하기 전에 특정 워크플로나 요구 사항을 적용할 수 있습니다. 자세한 내용은 [보호된 분기 정보](/ko/enterprise-server@3.22/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches)을(를) 참조하세요.

분기 보호 규칙 대신 규칙 집합을 만들 수 있습니다. 규칙 세트는 상태와 같은 분기 보호 규칙에 비해 몇 가지 장점이 있으며 관리자 액세스를 요구하지 않고도 검색 가능성을 향상할 수 있습니다. 여러 규칙 집합을 동시에 적용할 수도 있습니다. 자세한 내용은 [규칙 세트에 대한 정보](/ko/enterprise-server@3.22/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets)을(를) 참조하세요.

## 데이터 유출 완화

사용자가 중요한 데이터를 푸시했을 경우, `git filter-repo` 도구를 사용하여 해당 데이터를 제거하도록 요청하세요. 자세한 내용은 [Removing sensitive data from a repository(리포지토리에서 중요한 데이터 제거)](/ko/enterprise-server@3.22/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository)을(를) 참조하세요. 또한 중요한 데이터가 아직 푸시되지 않은 경우 해당 변경 내용을 로컬로 실행 취소할 수 있습니다. 자세한 내용은 [the GitHub Blog](https://github.blog/2015-06-08-how-to-undo-almost-anything-with-git/) (하지만 `git revert` Git 기록에 원래 중요한 커밋을 남겨 두는 중요한 데이터 추가를 실행 취소하는 유효한 방법은 아님)을 참조하세요.

자신이 소유하고 있다고 확신하는 데이터를 삭제하기 위해 저장소 소유자와 직접 협의할 수 없는 경우, DMCA 게시 중단 통지 양식을 작성하여 GitHub 지원팀에 알릴 수 있습니다.  문제가 있는 커밋 해시가 반드시 포함되어야 합니다.  자세한 내용은 [DMCA 게시 중단 통지](https://support.github.com/contact/dmca-takedown)를 참조하세요.

> \[!NOTE]
> 만약 허위 신고로 인해 리포지토리 중 하나가 삭제되었다면, DMCA 반론 통지서를 작성하여 GitHub 지원팀에 알려주시기 바랍니다. 자세한 내용은 [DMCA 반론 통지](https://support.github.com/contact/dmca-counter-notice)를 참조하세요.

## 다음 단계

* [공급망 코드 보안의 모범 사례](/ko/enterprise-server@3.22/code-security/tutorials/implement-supply-chain-best-practices/securing-code)
* [빌드 시스템 보안의 모범 사례](/ko/enterprise-server@3.22/code-security/tutorials/implement-supply-chain-best-practices/securing-builds)