광고 자리 모집 중 · 제휴 문의

Sourcegraph Cody 컨텍스트 필터를 구성하여 민감한 저장소를 AI 컨텍스트에서 제외하는 방법

365Finds Editorial
Wiki 문서 11,430편 수록

내 AI에서 365 Wiki 사용하기

아래 프롬프트를 복사해 평소 사용하는 AI에 붙여넣고 바로 질문하세요.

전체 Skill 다운로드

먼저 프롬프트로 체험해 보세요. 365 Wiki를 자주 쓴다면 전체 365Wiki Skill을 설치해 매번 붙여넣는 수고를 줄일 수 있습니다. 평소 쓰는 AI가 없다면 Gemini나 Microsoft Copilot 웹 버전도 사용할 수 있습니다.

기업 환경에서 AI 코딩 어시스턴트인 Sourcegraph Cody를 도입할 때 엔지니어링 관리자와 보안 및 컴플라이언스 팀이 가장 주의 깊게 검토하는 과제는 데이터 유출 방지입니다. 독점 알고리즘, 영업 비밀, 금융 결제(PCI-DSS)나 의료 데이터(HIPAA) 등 엄격한 규제를 받는 핵심 비즈니스 코드베이스가 타사 대규모 언어 모델(LLM)에 프롬프트 컨텍스트로 전달되지 않도록 어떻게 완벽히 통제할 수 있을까요?

Sourcegraph Cody는 이를 위해 서버 수준에서 강력하게 강제되는 엔터프라이즈 거버넌스 기능인 컨텍스트 필터(cody.contextFilters)를 제공합니다. 사이트 관리자가 Sourcegraph 사이트 구성(Site Configuration)에서 RE2 정규표현식을 사용하여 저장소 단위의 포함 및 제외 규칙을 정의하면, Cody가 자동완성, 채팅 및 인라인 편집을 수행할 때 참조할 수 있는 코드베이스를 중앙에서 엄격하게 제한할 수 있습니다.

본 가이드에서는 엔지니어링 관리자가 cody.contextFilters를 구성하는 단계별 절차, 정규표현식 문법 및 규칙 평가 우선순위, 엔터프라이즈 환경에서의 다층 방어 보안 전략을 상세히 설명합니다.


사전 요구 사항 및 클라이언트 호환성

컨텍스트 필터를 적용하기 전에 인프라 및 개발자 클라이언트가 다음 요구 사항을 충족하는지 확인하십시오.

클라이언트 호환성 매트릭스 및 정책 강제

개발자가 구버전 IDE 확장 프로그램을 사용하여 엔터프라이즈 필터링 정책을 우회하는 것을 방지하기 위해 Sourcegraph 인스턴스는 다음과 같이 엄격하게 정책을 적용합니다.

클라이언트확장 프로그램 버전Sourcegraph v5.4.0 동작Sourcegraph v5.4.12303+ 동작
VS Code< 1.16.xCody 비호환정책 강제 준수; 플러그인 업데이트 요청
VS Code1.18.0 ~ < 1.20.0Cody 비호환정책 강제 준수; 플러그인 업데이트 요청
VS Code>= 1.20.0정책 완전 준수정책 완전 준수
JetBrains<= 5.5.9Cody 비호환정책 강제 준수; 플러그인 업데이트 요청
JetBrains5.5.10 ~ < 6.0.0Cody 비호환정책 강제 준수; 플러그인 업데이트 요청
JetBrains>= 6.0.0정책 완전 준수정책 완전 준수

최신 Sourcegraph 서버 환경에서는 컨텍스트 필터 지시어를 해석하지 못하는 레거시 클라이언트의 컨텍스트 전송을 원천 차단하고 업그레이드를 안내하므로 보안 사각지대가 발생하지 않습니다.


구성 스키마 및 RE2 정규표현식 문법

컨텍스트 필터는 Sourcegraph 사이트 구성 JSON 파일 내의 최상위 cody.contextFilters 필드에 정의됩니다. 스키마는 include(허용 목록)와 exclude(제외 목록)라는 두 개의 선택적 배열을 지원합니다.

{
  "cody.contextFilters": {
    "include": [
      {
        "repoNamePattern": "^github\\.com\\/example-corp\\/.*"
      }
    ],
    "exclude": [
      {
        "repoNamePattern": ".*-sensitive$"
      },
      {
        "repoNamePattern": "^github\\.com\\/example-corp\\/core-payments.*"
      }
    ]
  }
}

스키마 작성 핵심 규칙:


필터 평가 로직 및 우선순위 규칙

Cody는 구성된 include 및 exclude 배열의 조합에 따라 다음과 같은 평가 로직을 실행합니다.

1. 필터 미정의 (기본 동작)

cody.contextFilters 설정이 존재하지 않으면, Cody는 현재 사용자가 Sourcegraph에서 읽기 권한을 가진 모든 저장소를 자유롭게 컨텍스트로 활용할 수 있습니다.

2. include 규칙만 정의된 경우 (엄격한 화이트리스트 모드)

저장소 이름이 include에 정의된 정규식 패턴 중 적어도 하나와 일치할 때만 Cody가 컨텍스트로 사용할 수 있으며, 지정되지 않은 모든 저장소는 기본적으로 차단됩니다.

{
  "cody.contextFilters": {
    "include": [
      {
        "repoNamePattern": "^github\\.com\\/example-corp\\/frontend-.*"
      },
      {
        "repoNamePattern": "^github\\.com\\/example-corp\\/public-docs$"
      }
    ]
  }
}

3. exclude 규칙만 정의된 경우 (블랙리스트 제외 모드)

exclude에 지정된 정규표현식 패턴과 일치하는 저장소를 제외한 나머지 모든 저장소의 코드를 Cody가 컨텍스트로 참조할 수 있습니다.

{
  "cody.contextFilters": {
    "exclude": [
      {
        "repoNamePattern": "^github\\.com\\/example-corp\\/crypto-vault$"
      },
      {
        "repoNamePattern": ".*payment-processing.*"
      },
      {
        "repoNamePattern": ".*-restricted$"
      }
    ]
  }
}

4. include와 exclude가 모두 정의된 경우 (복합 세분화 모드)

두 배열이 모두 지정된 경우 저장소가 컨텍스트로 채택되려면 다음 두 가지 조건을 모두 만족해야 합니다.

  1. include 패턴 중 최소 하나와 일치해야 합니다.
  2. exclude 패턴 중 어느 것과도 일치하지 않아야 합니다.

제외 규칙은 항상 포함 규칙보다 우선합니다. 아래 예시에서는 example-corp 산하의 모든 저장소를 허용하되, compliance가 포함되거나 -secret으로 끝나는 저장소는 예외 없이 엄격하게 제외합니다.

{
  "cody.contextFilters": {
    "include": [
      {
        "repoNamePattern": "^github\\.com\\/example-corp\\/.+"
      }
    ],
    "exclude": [
      {
        "repoNamePattern": ".*compliance.*"
      },
      {
        "repoNamePattern": ".*-secret$"
      }
    ]
  }
}

관리자 단계별 구성 가이드

기업 Sourcegraph 인스턴스에서 컨텍스트 필터를 안전하게 적용하고 검증하는 절차는 다음과 같습니다.

1단계: 저장소 이름 및 명명 규칙 확인

Cody는 Sourcegraph 인스턴스에 인덱싱된 전체 정규 저장소 이름을 기반으로 정규식을 평가합니다.

2단계: 사이트 구성 에디터 접속

  1. 사이트 관리자(Site Admin) 권한 계정으로 Sourcegraph에 로그인합니다.
  2. 우측 상단의 사용자 프로필 아이콘을 클릭하고 Site Admin을 선택합니다.
  3. 좌측 탐색 메뉴에서 Configuration(/site-admin/configuration)을 클릭합니다.

3단계: cody.contextFilters 설정 블록 추가

루트 JSON 구성 객체 내에 기능 플래그와 필터링 블록을 입력합니다.

{
  // ... 기존 사이트 구성 ...
  "cody-context-filters-enabled": true,
  "cody.contextFilters": {
    "include": [
      {
        "repoNamePattern": "^github\\.com\\/my-org\\/.*"
      }
    ],
    "exclude": [
      {
        "repoNamePattern": "^github\\.com\\/my-org\\/core-trading$"
      },
      {
        "repoNamePattern": ".*proprietary.*"
      },
      {
        "repoNamePattern": ".*sec-tools.*"
      }
    ]
  }
}

4단계: 변경 사항 저장 및 실시간 적용

페이지 하단의 Save changes를 클릭합니다. Sourcegraph는 서비스 중단이나 서버 재시작 없이 구성을 실시간으로 동적 갱신합니다.

5단계: 개발자 환경에서 차단 검증

보안 정책이 정확히 동작하는지 IDE 클라이언트에서 검증합니다.

  1. VS Code 또는 JetBrains IDE에서 제외 대상으로 지정된 저장소의 프로젝트 파일을 엽니다.
  2. 인라인 편집(Edit)을 시도하거나 코드 생성 명령을 실행합니다. 확장이 요청을 차단하고 다음과 같은 오류를 표시하는지 확인합니다.
    Edit failed to run: file is ignored (due to cody.contextFilters Enterprise configuration setting)
    
  3. Cody 채팅 창에서 @-mention을 사용하여 해당 저장소의 파일이나 함수를 호출해 봅니다. 컨텍스트 추천 목록에 표시되지 않으며 프롬프트 컨텍스트로 코드가 전송되지 않는 것을 확인합니다.

개발자 사용 환경 및 영향

필터가 적용된 저장소에서 작업하는 개발자의 동작 방식을 사전에 이해하면 내부 안내를 원활하게 진행할 수 있습니다.


다층 거버넌스 아키텍처: 보안 제어 비교

기업의 소스 코드 데이터 보호는 단일 기능이 아닌 다계층 심층 방어 체계로 완성됩니다.

거버넌스 계층설정 위치적용 범위 및 세분성관리 주체개발자 우회 가능 여부
엔터프라이즈 컨텍스트 필터사이트 구성 (cody.contextFilters)RE2 정규식을 통한 저장소 전체 단위사이트 관리자 / 보안 팀우회 불가 (서버 강제 적용)
저장소 파일 제외 규칙저장소 루트의 .cody/ignore특정 파일, 하위 디렉터리, 확장자 패턴저장소 관리자 / 개발 리드Git 커밋을 통해 전 팀원 적용
클라이언트 로컬 제외IDE 설정 (settings.json)로컬 임시 디렉터리나 파일 확장자개별 개발자우회 가능 (개인 PC 로컬 한정)
코드 접근 권한 관리Sourcegraph RBAC 및 OAuth 동기화저장소 레벨 읽기 권한사내 IAM / 보안 인프라우회 불가 (권한 없는 코드는 호출 불가)
업스트림 모델 데이터 계약Cody Gateway 무저장 합의 (Zero-Retention)전체 LLM API 전송 구간클라우드 공급업체 기업 계약우회 불가 (데이터 미저장 및 학습 미사용)

서버 측의 cody.contextFilters로 전사적 저장소 보안 경계를 설정하고, 개별 프로젝트 내 로컬 시크릿이나 설정 파일은 .cody/ignore로 차단하며, Cody Gateway의 제로 리텐션 계약을 결합함으로써 기업은 생성형 AI의 생산성을 누리면서도 지적 재산과 규제 준수를 안전하게 지킬 수 있습니다.


참고 자료