GitHub Copilot 관리 설정: 앱 및 클라우드 에이전트를 안전하게 관리하기
요약
GitHub가 Copilot 앱과 클라우드 에이전트에 대한 엔터프라이즈 관리 설정을 확장했습니다. 이를 통해 관리자는 플러그인 및 마켓플레이스 규칙을 일관되게 적용하고, CLI 액세스와 별개로 앱 사용 권한을 제어할 수 있습니다.
핵심 포인트
- Copilot 앱과 클라우드 에이전트에 대한 거버넌스 격차 해소
- managed-settings.json을 통한 클라이언트별 세밀한 정책 제어
- Copilot 앱에 대한 독립적인 액세스 정책 설정 가능
- 플러그인 및 마켓플레이스 규칙의 일관된 적용
GitHub Copilot 관리 설정 (managed settings): 앱 및 클라우드 에이전트를 안전하게 관리하기
요약 (Quick answer)
2026년 7월 27일, GitHub는 엔터프라이즈 관리 설정 (enterprise managed settings)을 GitHub Copilot 앱과 Copilot 클라우드 에이전트 (cloud agent)로 확장했습니다. 이번 변경 사항은 중요한 거버넌스 (governance) 격차를 해소합니다. 이제 플러그인 (plugin) 및 마켓플레이스 (marketplace) 규칙이 Copilot CLI 및 VS Code를 사용하는 개발자를 따라 앱과 클라우드 작업까지 이어질 수 있습니다. 또한 GitHub는 Copilot 앱에 대한 액세스를 Copilot CLI 정책과 분리하여, 관리자가 CLI 액세스 결정과 결합하지 않고도 앱 사용 가능 여부를 결정할 수 있도록 했습니다.
이를 "하나의 JSON 파일이 모든 클라이언트를 동일하게 제어한다"라고 간주해서는 안 됩니다. 클라이언트별 키 매트릭스 (client-by-key matrix)로 시작하고, 앱 액세스를 런타임 가드레일 (runtime guardrails)과 분리하며, 풀 리퀘스트 (pull request)를 통해 가장 작은 단위의 정책을 배포하고, 광범위한 배포 전에 6가지의 부정적 사례 및 복구 사례 (negative and recovery cases)를 검증하십시오. 특히, 우회 프롬프트 (bypass-prompt) 제어는 대화형 클라이언트 (interactive clients)에 적용되며 클라우드 에이전트에는 적용되지 않습니다. 또한 OpenTelemetry 설정은 현재 Copilot CLI 및 VS Code에만 적용됩니다.
대상 (Who this is for)
이 가이드는 GitHub Copilot Enterprise 소유자, 보안 또는 플랫폼 리드, 그리고 로컬 및 클라우드 코딩 에이전트 전반에 걸쳐 일관된 제어가 필요한 소규모 팀을 대상으로 합니다. 이는 작업 설계가 아닌 정책 배포 (policy rollout)에 관한 것입니다. 작업 인계 (task handoff) 자체에 대해서는 Linear-to-draft-PR checklist를 사용하고, 리포지토리 수준의 운영 규칙에 대해서는 Copilot workflow control checklist를 참조하십시오.
변경된 사항 및 변경되지 않은 사항 (What changed, and what did not)
GitHub의 7월 27일 릴리스에 따르면, Copilot 앱은 이제 지원되는 Copilot 클라이언트에서 사용하는 것과 동일한 managed-settings.json을 읽습니다. 클라우드 에이전트는 승인된 플러그인 및 마켓플레이스를 포함하여 자신에게 적용되는 설정을 읽습니다. 기존의 서버 관리 정책 (server-managed policies)은 앱의 경우 재시작 또는 로그인 후에, 클라우드 에이전트의 경우 다음 작업 할당 시에 적용됩니다.
7월 27일에 출시된 두 번째 업데이트에서는 Copilot 앱에 자체 액세스 정책 (access policy)을 부여합니다. 이 정책은 기본적으로 모든 곳에서 활성화되어 있으며, 모든 곳에서 활성화 (Enabled everywhere), 모든 곳에서 비활성화 (Disabled everywhere), 또는 조직이 결정하도록 허용 (Let organizations decide) 중 하나로 설정할 수 있습니다. 이것은 거시적인 가용성 스위치 (coarse availability switch)입니다. managed-settings.json은 보다 세밀한 동작 정책 (finer behavior policy)입니다. 두 가지를 모두 검토하십시오. 위험한 설정을 비활성화한다고 해서 앱 자체를 사용할 수 있어야 하는지에 대한 답이 되지는 않습니다.
핵심 경계는 클라이언트 범위 (client coverage)입니다:
| 제어 항목 | Copilot 앱 | 클라우드 에이전트 (Cloud agent) | 중요한 경계 |
|---|---|---|---|
| 승인된 플러그인 및 마켓플레이스 (Approved plugins and marketplaces) | 적용됨 | 해당되는 설정이 적용됨 | 프라이빗 플러그인이라 하더라도 여전히 사용자나 에이전트가 저장소 액세스 권한을 가져야 함 |
| ... | |||
설정 이름만 보고 범위를 추측하지 마십시오. 키를 추가할 때는 GitHub의 관리 설정 (managed-settings) 참조 문서를 다시 확인하십시오. 지원되는 클라이언트 매트릭스 (supported-client matrix)는 JSON 스키마와 독립적으로 변경될 수 있기 때문입니다.
배포 경로 선택하기
검토, 범위 적용, 그리고 롤백 (rollback)이 가능한 가장 좁은 범위의 배포 방법을 사용하십시오.
| 상황 | 권장 경로 | 트레이드오프 (Trade-off) |
|---|---|---|
엔터프라이즈에 이미 .github-private 저장소가 있는 경우 | 서버 관리형 (Server-managed) | 최상의 풀 리퀘스트 (pull-request) 감사 추적 제공; 조직의 재정의 없이 엔터프라이즈 전역에 적용됨 |
| ... |
GitHub의 우선순위는 MDM, 서버 관리형, 파일 기반, 그리고 사용자 설정 순입니다. 파일 기반 테스트가 성공했다고 해서 이미 MDM 페이로드 (payload)를 받고 있는 장치에서 어떻게 작동할지 증명되는 것은 아닙. 배포 전에 모든 활성 소스를 인벤토리 (inventory) 하십시오.
최소한의, 검토 가능한 정책으로 시작하기
다음 카나리 정책 (canary policy)은 문서화된 키를 사용합니다. 빈 strictKnownMarketplaces 배열은 마켓플레이스를 완전히 차단하므로, 도입하기 전에 소규모 그룹에서 먼저 테스트하십시오.
{
"permissions": {
"disableBypassPermissionsMode": "disable",
...
서버 관리형 배포 (server-managed deployment)를 위해서는 엔터프라이즈 .github-private 리포지토리의 copilot/managed-settings.json 경로에 파일을 저장하고, 수명이 짧은 브랜치 (short-lived branch)에 커밋한 뒤 리뷰를 거치도록 설정하십시오. 프라이빗 리포지토리의 플러그인을 활성화하는 경우, 별도로 권한을 확인해야 합니다. 정책을 배포한다고 해서 플러그인 소스에 대한 접근 권한이 부여되는 것은 아닙니다.
마켓플레이스 (marketplaces) 및 플러그인 (plugins)은 소유자, 소스, 지원되는 경우 고정된 참조 (pinned ref), 필수 권한, 데이터 경계 (data boundary), 업데이트 방법, 그리고 롤백 연락처를 기록한 후에만 추가하십시오. 이는 단순한 편의성 설정이 아니라, 신뢰할 수 없는 리포지토리 에이전트 샌드박스 (untrusted-repository agent sandbox)에 도구를 허용하는 것과 동일한 신뢰 문제입니다.
6단계 케이스 롤아웃 카나리 (six-case rollout canary) 실행
소규모 파일럿 그룹을 사용하고 각 결과에 대한 스크린샷이나 로그를 보관하십시오.
- 정책 소스 테스트 (Policy-source test). 파일럿 기기에서 어떤 소스가 우선권을 갖는지 확인합니다. 로컬 사용자 설정이 MDM 또는 서버 관리형 값을 덮어써서는 안 됩니다.
- 앱 우회 테스트 (App bypass test). Copilot 앱을 재시작하거나 로그인하여, 우회 모드 (bypass mode)가 비활성화되었을 때 도구 권한에 대한 모두 허용 (Allow all) 설정을 활성화할 수 없는지 확인합니다.
- 마켓플레이스 거부 테스트 (Marketplace deny test). 목록에 없는 마켓플레이스에서 설치를 시도합니다. 요청은 다른 소스로 조용히 전환(fallback)되지 않고 반드시 실패해야 합니다.
- 승인된 플러그인 테스트 (Approved-plugin test). 검토된 플러그인을 하나 추가하고, 정확한 소스와 액세스를 확인한 다음, 무해한 읽기 전용 작업을 하나 실행합니다. 프라이빗 리포지토리 권한 (entitlement)이 누락된 경우 반드시 차단(fail closed)되어야 합니다.
- 클라우드 에이전트 경계 테스트 (Cloud-agent boundary test). 비운영 (non-production) 작업을 할당하고 승인된 플러그인 및 마켓플레이스 설정만 준수되는지 확인합니다. 앱의 우회 결과를 클라우드 에이전트 격리 (cloud-agent isolation)의 증거로 사용하지 마십시오. 일반적인 리포지토리, 브랜치 및 리뷰 제어를 유지하십시오.
- 새로고침 및 롤백 테스트 (Refresh and rollback test). 카나리 플러그인을 제거하거나 정책 PR을 되돌립니다. GitHub에 따르면 서버 관리형 변경 사항은 보통 약 1시간 이내에 도달하며, 클라이언트의 경우 재시작/로그인 직후 또는 다음 클라우드 작업 시 적용됩니다. 실제 수렴 시간 (convergence time)을 기록하십시오.
여섯 가지 케이스가 모두 통과될 때만 승인(Promote)하십시오. JSON 파싱 성공은 구문(syntax)의 유효성을 증명할 뿐, 분포(distribution), 우선순위(precedence), 클라이언트 커버리지(client coverage), 플러그인 권한 부여(plugin authorization) 또는 강제 적용(enforcement)을 증명하는 것은 아닙니다.
일반적인 실수
액세스(access)와 동작(behavior)을 하나의 결정으로 결합하는 것. 전용 Copilot 앱 정책은 앱 사용 가능 여부를 결정합니다. 관리 설정(Managed settings)은 지원되는 동작이 어떻게 제한되는지를 결정합니다. 두 가지를 모두 검토하고 테스트하십시오.
클라우드 작업이 모든 로컬 가드레일(guardrail)을 상속받는다고 가정하는 것. GitHub는 바이패스 프롬프트(bypass-prompt) 제어를 대화형 클라이언트로 명시적으로 제한합니다. 클라우드 에이전트(Cloud-agent)의 안전성은 여전히 저장소 옵트인(repository opt-in), 작업 범위(task scope), 자격 증명(credentials), 브랜치 규칙(branch rules), CI 및 인간의 검토(human review)에 달려 있습니다.
정책에 비밀값(secrets)을 직접 추가하는 것. GitHub의 참조 문서에 따르면 텔레메트리 헤더(telemetry headers)에 인증 정보(authorization material)가 포함될 수 있지만, 텔레메트리는 앱이나 클라우드 에이전트 설정이 아닙니다. 비밀값은 승인된 장치 또는 텔레메트리 배포 경로에 유지해야 하며, 실제 토큰을 거버넌스(governance) 저장소에 절대 커밋하지 마십시오.
빈 마켓플레이스 허용 목록(allowlist)을 전역적으로 배포하는 것. 비어 있는 strictKnownMarketplaces 목록은 완전한 잠금(lockdown) 상태를 의미합니다. 이는 유효한 목적지가 될 수 있지만, 반드시 필요한 플러그인을 먼저 발견하고 롤백(rollback) 경로를 증명한 후에 수행해야 합니다.
FAQ
기존 관리 설정이 Copilot 앱에 자동으로 적용되나요?
GitHub에 따르면 개발자가 앱을 재시작하거나 다시 로그인한 후, 앱이 기존의 서버 관리 구성(server-managed configuration)을 가져옵니다. 그럼에도 불구하고 강제 적용 카나리(enforcement canary)를 실행하십시오. 구성 전달(configuration delivery)과 동작 강제 적용(behavior enforcement)은 별개의 주장입니다.
조직(organization)이 서버 관리 엔터프라이즈 설정을 재정의(override)할 수 있나요?
아니요. GitHub 문서는 엔터프라이즈 관리 설정을 조직 수준의 재정의가 불가능한 엔터프라이즈 전역 설정으로 정의합니다. 별도의 Copilot 앱 액세스 정책을 통해 엔터프라이즈가 조직별로 앱 사용 가능 여부를 결정하도록 허용할 수는 있지만, 그렇다고 해서 관리되는 JSON이 조직에 의해 재정의 가능해지는 것은 아닙니다.
바이패스 모드(bypass mode)를 비활성화하면 모든 Copilot 접점(surface)이 안전해지나요?
아니요. 이는 지원되는 대화형 클라이언트(interactive clients)에서 문서화된 '모두 허용(allow-all)' 동작을 차단할 뿐입니다. 이것이 플러그인 검토(plugin review), 마켓플레이스 제한(marketplace restriction), 리포지토리 권한(repository permissions), 샌드박싱(sandboxing), 브랜치 보호(branch protection), 결정론적 테스트(deterministic tests) 또는 인간의 병합 권한(human merge authority)을 대체하는 것은 아닙니다.
출처
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기