엔터프라이즈 액세스, 권한 및 거버넌스 관리
이전 단원에서는 GitHub에서 리포지토리 및 팀 권한의 작동 방식과 해당 수준에서 사용자에게 액세스 권한이 부여되는 방법을 살펴보아야 했습니다. 이 단원에서는 조직 및 기업 전체에서 더 광범위한 규모로 권한 및 액세스를 관리하는 방법을 알아봅니다.
- 조직 권한
- 기업 권한
- 내부 협력자 및 외부 협력자
- 최소 권한 전략
- 보안 및 거버넌스 모범 사례
조직 권한 수준
GitHub 조직은 리포지토리 및 중요한 데이터에 대한 제어된 액세스를 유지하면서 팀이 프로젝트에 대해 공동 작업할 수 있는 중앙 집중식 방법을 제공합니다. 조직 권한은 구성원과 팀이 조직 내에서 수행할 수 있는 작업을 결정하여 각 사용자에게 적절한 수준의 액세스 권한을 줍니다.
조직 수준에는 여러 수준의 권한이 있습니다.
| 권한 수준 | 설명 |
|---|---|
| 소유자 | 조직 소유자는 조직 멤버가 할 수 있는 모든 작업을 수행할 수 있으며 조직에 다른 사용자를 추가하거나 조직에서 제거할 수 있습니다. 이 역할은 조직 내에서 2명 이상으로 제한되어야 합니다. |
| 회원 | 조직 구성원은 조직 리포지토리 및 팀을 만들고 관리할 수 있습니다. |
| 중재자 | 조직 중재자는 멤버가 아닌 기여자를 차단 및 차단 해제하고, 상호 작용 제한을 설정하고, 조직이 소유한 공용 리포지토리의 주석을 숨길 수 있습니다. |
| 청구 관리자 | 조직 청구 관리자는 청구 정보를 보고 편집할 수 있습니다. |
| 보안 관리자 | 조직 보안 관리자는 조직 전체의 보안 경고 및 설정을 관리할 수 있습니다. 또한 조직의 모든 리포지토리에 대한 권한을 읽을 수도 있습니다. |
| 외부 협력자 | 컨설턴트나 임시 직원과 같은 외부 협력자는 하나 이상의 조직 리포지토리에 액세스할 수 있습니다. 조직의 명시적인 멤버가 아닙니다. |
이러한 수준 외에도 조직의 모든 구성원에 대한 기본 권한을 설정할 수 있습니다.
또한, 개선된 관리 및 보안을 위해 조직의 모든 구성원에게 기본 읽기 권한을 부여하고 사례별로 리포지토리에 대한 액세스를 조정하는 것이 좋을 수 있습니다. 사용자 수가 적거나, 리포지토리 수가 적거나, 둘의 조합이 있는 비교적 작은 조직인 경우 이 제한 수준이 필요하지 않을 수 있습니다. 변경 내용을 리포지토리에 푸시하는 모든 사용자를 신뢰하는 경우 기본적으로 모든 구성원에게 쓰기 권한을 부여하는 것이 좋습니다.
엔터프라이즈 권한 수준
이전에 배운 대로 엔터프라이즈 계정은 조직의 컬렉션이라는 점을 기억하세요. 확장하여 말하면, 조직의 멤버인 각 개별 사용자 계정은 엔터프라이즈의 멤버이기도 합니다. 이 상위 수준에서 인증과 관련된 다양한 설정을 제어할 수 있습니다.
엔터프라이즈 수준에는 세 가지 권한 수준이 있습니다.
| 권한 수준 | 설명 |
|---|---|
| 소유자 | 엔터프라이즈 소유자는 엔터프라이즈에 대한 완전한 제어권을 가지며 다음을 포함한 모든 작업을 수행할 수 있습니다. - 관리자를 관리합니다. - 엔터프라이즈에 조직을 추가 및 제거합니다. - 엔터프라이즈 설정을 관리합니다. - 조직 전반에 정책을 적용합니다. - 청구 설정을 관리합니다. |
| 회원 | 엔터프라이즈 구성원은 조직 구성원과 동일한 기능 세트를 가지고 있습니다. |
| 청구 관리자 | 엔터프라이즈 청구 관리자는 엔터프라이즈의 청구 정보를 보고 편집하고 다른 청구 관리자를 추가하거나 제거할 수만 있습니다. |
| 게스트 협력자 | 리포지토리 또는 조직에 대한 액세스 권한을 부여할 수 있지만 기본적으로 액세스가 제한됩니다(엔터프라이즈 관리 사용자만 해당). |
이러한 세 가지 수준 외에도 모든 조직에서 기본 리포지토리 권한 정책을 설정할 수 있습니다.
개선된 관리 및 보안을 위해 조직의 모든 구성원에게 기본 읽기 권한을 부여할 수 있으며 사례별로 리포지토리에 대한 액세스를 조정하는 것이 좋습니다. 소규모 엔터프라이즈(예: 비교적 작은 단일 조직)에서는 기본적으로 쓰기 권한이 있는 모든 구성원을 신뢰하는 것을 선호할 수 있습니다.
엔터프라이즈 규모 액세스 제어를 더욱 간소화하려면 다음을 수행합니다.
- 중첩된 팀들: 엔터프라이즈 계정은 중첩된 팀 구조를 사용하여 부서 구조를 반영할 수 있습니다. 부모 팀의 권한은 자식 팀으로 연계하여 복잡한 액세스 관리를 간소화합니다.
- 자동화 및 감사: GitHub의 API 또는 GitHub Actions를 사용하여 팀 만들기 및 권한 할당을 자동화하고 조직 또는 엔터프라이즈 감사 로그를 통해 액세스를 감사할 수 있습니다.
규칙 집합을 통한 엔터프라이즈 권한 및 정책
이 섹션에서는 규칙 집합을 통해 엔터프라이즈 권한 및 정책을 관리하는 방법을 설명합니다. 조직 구조화, 기본 권한 설정, AD(Active Directory)를 통해 팀 동기화, 다중 조직 스크립팅 자동화, 회사의 신뢰 및 제어 위치에 정책 조정에 대한 모범 사례를 살펴보겠습니다.
단일 조직과 여러 조직 배포의 장단점 비교
엔터프라이즈를 구조화할 때 중요한 결정 중 하나는 단일 조직 또는 여러 조직을 사용할지 여부입니다. 각 접근 방식에는 고유한 이점과 장만점이 있습니다.
단일 조직
| 장점 | 단점 |
|---|---|
| 간소화된 관리: 권한 및 정책의 중앙 집중식 제어 | 제한된 유연성: 하나의 크기에 맞는 모든 정책은 모든 팀에 적합하지 않을 수 있습니다. |
| 일관성: 규칙의 균일한 적용 및 간소화된 공동 작업. | 보안 위험: 단일 위반이 전체 조직에 영향을 미칠 수 있습니다. |
| 리소스 공유: 팀 간 자산 공유가 더 쉽습니다. | 확장성 문제: 조직이 성장함에 따라 권한 관리가 복잡해질 수 있습니다. |
| 비용 효율성: 관리 도구 및 라이선스의 오버헤드가 줄어듭니다. |
여러 조직
| 장점 | 단점 |
|---|---|
| 맞춤형 정책: 각 팀의 특정 요구 사항에 맞게 사용 권한을 사용자 지정합니다. | 복잡성 증가: 조직이 많을수록 관리 오버헤드가 더 깁니다. |
| 향상된 격리: 보안 위반의 영향을 단일 조직으로 제한합니다. | 중복성: 설정 및 관리 작업의 잠재적 중복. |
| 탈중앙화 관리: 팀은 자체 정책 및 사용 권한을 관리할 수 있습니다. | Inter-Org 공동 작업: 조직 간 프로젝트에 추가 도구 또는 프로세스가 필요할 수 있습니다. |
조직 전체에서 기본 읽기 및 기본 쓰기 설정
기본 사용 권한 수준을 결정하는 것은 기업 내 보안 및 공동 작업의 균형을 맞추는 데 중요합니다.
기본 읽기 및 기본 쓰기
| 기본 읽기 | 기본 쓰기 |
|---|---|
| 향상된 보안: 의도하지 않은 수정의 위험을 최소화합니다. | 향상된 협업: 사용자가 콘텐츠를 직접 기여하고 수정할 수 있습니다. |
| 제어: 변경 내용을 보다 쉽게 감사하고 모니터링할 수 있습니다. | 능률: 콘텐츠 만들기 및 업데이트에서 병목 상태를 줄입니다. |
| 최적 대상: 대부분의 사용자가 리소스만 볼 필요가 있는 환경입니다. | 위험: 신중하게 관리하지 않으면 실수로 변경되거나 잘못된 구성이 발생할 가능성이 높아질 수 있습니다. |
추천:
기본 읽기 권한 모델을 사용하고 선택적으로 쓰기 액세스 권한을 부여하여 최소 권한 원칙을 준수합니다.
AD(Active Directory)를 통한 팀 동기화
팀 동기화에 AD(Active Directory)를 사용하면 사용자 관리 및 액세스 제어가 더 쉽고 효율적입니다.
AD 동기화를 사용하는 이유
- 단일 진실의 근원: 조직 전체에서 사용자 ID를 일관되게 유지합니다.
- 자동화된 액세스 관리: 온보딩, 오프보딩 및 역할 업데이트를 간소화합니다.
- 원활한 역할 맞춤: AD 그룹이 엔터프라이즈 역할 및 사용 권한과 일치하는지 확인합니다.
구현하기 전에 고려해야 할 사항
- 역할 매핑: AD 그룹이 조직의 역할에 부합하는 방법을 명확하게 정의합니다.
- 동기화 빈도: 성능과 보안의 균형을 맞추는 일정을 설정합니다.
- 규정 준수 및 감사: 모든 변경 내용을 기록하여 규정 준수 요구 사항을 충족합니다.
미리 계획하여 조직을 안전하고 잘 조직하는 원활한 통합을 보장할 수 있습니다.
유지 관리 기능: 여러 조직에 대한 스크립팅 및 액세스 권한
엔터프라이즈 규모가 확장됨에 따라 유지 관리를 위해 여러 조직에서 사용 권한 관리를 자동화하는 것이 필수적입니다.
주요 사례
이 섹션에서는 엔터프라이즈가 성장함에 따라 일관되고 안전하게 권한을 관리하기 위한 스크립팅 및 자동화에 대한 주요 사례를 강조합니다. 이러한 사례를 따르면 관리를 간소화하고 수동 오류를 최소화하며 강력한 거버넌스를 유지할 수 있습니다.
- 모듈화: 모듈식 구성 요소에서 스크립트를 개발하여 최소한의 변경으로 여러 조직을 처리합니다.
- 재사용: 재사용 가능한 함수 또는 모듈을 만들어 일반적인 권한 작업을 수행합니다.
- 테스트: 배포 전에 제어된 환경에서 스크립트를 철저히 테스트합니다.
- 로깅: 자세한 로깅을 구현하여 변경 내용을 추적하고 문제 해결을 용이하게 합니다.
- 버전 제어: 버전 제어 시스템(예: Git)을 사용하여 스크립트 수정 버전을 관리하고 팀 구성원과 공동 작업합니다.