GitHub의 에이전트 보안 원칙이 AI 에이전트를 최대한 안전하게 만드는 방법

GitHub의 에이전트 보안 원칙이 AI 에이전트를 최대한 안전하게 만드는 방법

우리는 개발자를 위한 가장 유용하고 즐거운 AI 에이전트를 구축하기 위해 지난 몇 달 동안 열심히 노력해 왔습니다. 유용성과 보안 사이의 적절한 균형을 유지하기 위해 우리는 우리가 설계하는 모든 것에 항상 인간 참여 요소가 있도록 일련의 지침을 마련했습니다.

AI 제품이 더 “에이전트”적일수록 실제로 더 많은 일을 할 수 있어 훨씬 더 풍부한 워크플로가 가능하지만 그에 따른 위험도 더 커집니다. 기능이 추가되면 AI가 가드레일을 벗어나거나, 정렬을 잃거나, 심지어 악의적인 행위자에 의해 조작될 가능성과 영향이 훨씬 더 커집니다. 이들 중 하나라도 고객에게 보안 사고를 일으킬 수 있습니다.

이러한 에이전트를 최대한 안전하게 만들기 위해 우리는 모든 호스팅 에이전트를 구축하여 해석 가능성을 극대화하고 자율성을 최소화하며 비정상적인 동작을 줄였습니다. 호스팅 에이전트 제품, 특히 Copilot 코딩 에이전트에 대한 위협 모델을 살펴보겠습니다. 또한 이러한 위협을 완화하기 위해 보안 제어를 어떻게 구축했는지 살펴보고 이러한 원칙을 자신의 에이전트에 적용할 수도 있을 것입니다.

보안 문제

에이전트 기능을 개발할 때 우리는 주로 세 가지 위험 등급에 관심을 갖습니다.

  1. 데이터 유출

에이전트가 인터넷에 액세스할 수 있으면 컨텍스트에서 의도하지 않은 대상으로 데이터가 유출될 수 있습니다. 에이전트는 실수로 또는 악의적으로 현재 저장소의 데이터를 의도하지 않은 웹 사이트로 보내도록 속일 수 있습니다. 데이터의 민감도에 따라 에이전트가 쓰기 액세스 GitHub 토큰을 악의적인 엔드포인트에 유출하는 등 심각한 보안 사고가 발생할 수 있습니다.

  1. 명의 도용 및 적절한 조치 귀속

에이전트가 작업을 수행할 때 어떤 권한을 가져야 하는지, 누구의 지시에 따라 작동해야 하는지 명확하지 않을 수 있습니다. 누군가가 문제에 Copilot 코딩 에이전트를 할당할 때 지침을 발행한 사람은 누구입니까? 문제를 제기한 사람입니까, 아니면 Copilot에 할당한 사람입니까? 그리고 상담원이 한 일의 결과로 사건이 발생하는 경우 상담원이 취한 조치에 대한 적절한 책임과 추적성을 어떻게 보장할 수 있습니까?

  1. 신속한 주입

에이전트는 시작 사용자를 대신하여 작동하므로 시작 사용자가 에이전트가 수행할 작업을 알고 있는지 확인하는 것이 매우 중요합니다. 에이전트는 GitHub 문제, 저장소 내의 파일 및 기타 여러 위치에서 메시지를 받으므로 개시자가 문제에 대한 명확한 그림을 갖고 있는지 확인하는 것이 중요합니다. 모두 그것을 안내하는 정보. 그렇지 않은 경우 악의적인 사용자는 지시문을 숨기고 리포지토리 관리자를 속여 잘못된 지시문이 있는 에이전트를 실행하게 할 수 있습니다.

에이전트 제품에 대한 규칙

위의 위험을 방지하기 위해 우리는 모든 호스팅 에이전트 제품에 대한 일련의 규칙을 만들어 사용자를 위해 더욱 일관되고 안전하게 만들었습니다.

  1. 모든 컨텍스트가 표시되는지 확인

보이지 않는 컨텍스트를 허용하면 악의적인 사용자가 관리자가 볼 수 없는 지시문을 숨길 수 있습니다. 예를 들어 Copilot 코딩 에이전트에서 악의적인 사용자는 프롬프트 삽입 지침과 함께 보이지 않는 유니코드가 포함된 GitHub 문제를 생성할 수 있습니다. 관리자가 이 문제에 Copilot을 할당하면 관리자가 이러한 보이지 않는 지시어를 인식하지 못했기 때문에 보안 사고가 발생할 수 있습니다.

이를 방지하기 위해 컨텍스트가 생성된 파일을 표시하고 에이전트에 전달하기 전에 유니코드 또는 HTML 태그를 통해 보이지 않거나 가려진 정보를 제거하려고 시도합니다. 이렇게 하면 관리자가 명확하게 볼 수 있는 정보만 에이전트에 전달됩니다.

  1. 에이전트 방화벽

이전에 언급한 것처럼 외부 리소스에 대한 무제한 액세스를 통해 에이전트는 중요한 정보를 유출하거나 외부 리소스에 의해 즉시 주입되어 정렬을 잃을 수 있습니다.

Copilot 코딩 에이전트에 방화벽을 적용하여 잠재적으로 유해한 외부 리소스에 액세스하는 기능을 제한합니다. 이를 통해 사용자는 에이전트의 네트워크 액세스를 구성하고 원치 않는 연결을 차단할 수 있습니다. 보안과 유용성의 균형을 맞추기 위해 MCP 상호 작용이 방화벽을 우회하도록 자동으로 허용합니다.

Copilot Chat과 같은 다른 에이전트 환경에서는 코드를 자동으로 실행하지 않습니다. 예를 들어 HTML을 생성할 때 출력은 처음에는 미리보기용 코드로 표시됩니다. 사용자는 HTML을 실행하는 풍부한 미리보기 인터페이스를 수동으로 활성화해야 합니다.

  1. 민감한 정보에 대한 접근 제한

에이전트가 민감한 데이터를 유출하는 것을 방지하는 가장 쉬운 방법은 애초에 해당 데이터에 대한 액세스 권한을 부여하지 않는 것입니다!

우리는 Copilot이 작동하는 데 절대적으로 필요한 정보만 제공합니다. 이는 현재 저장소 외부의 CI 비밀 및 파일과 같은 항목이 에이전트에 자동으로 전달되지 않음을 의미합니다. Copilot 코딩 에이전트용 GitHub 토큰과 같은 특정 민감한 콘텐츠는 에이전트가 해당 세션을 완료하면 취소됩니다.

  1. 되돌릴 수 없는 상태 변경 방지

AI는 실수를 할 수 있고 또 할 것이다. 이러한 실수로 인해 수정될 수 없는 다운스트림 효과가 발생하는 것을 방지하기 위해 우리는 에이전트가 루프에 개입하지 않으면 되돌릴 수 없는 상태 변경을 시작할 수 없도록 합니다.

예를 들어 Copilot 코딩 에이전트는 끌어오기 요청만 생성할 수 있습니다. 기본 브랜치에 직접 커밋할 수는 없습니다. Copilot에서 생성된 풀 요청은 CI를 자동으로 실행하지 않습니다. 인간 사용자는 코드의 유효성을 검사하고 GitHub Actions를 수동으로 실행해야 합니다. Copilot Chat 기능에서 MCP 상호 작용은 도구 호출을 수행하기 전에 승인을 요청합니다.

  1. 개시자와 에이전트 모두에게 작업을 일관되게 귀속

사용자가 시작한 모든 에이전트 상호 작용은 해당 사용자에게 명확하게 귀속되며, 에이전트가 수행한 모든 작업은 확실히 에이전트에 귀속됩니다. 이는 모든 행동에 대한 명확한 책임 사슬을 보장합니다.

예를 들어 Copilot 코딩 에이전트가 생성한 풀 요청은 작업을 시작한 사용자가 공동 커밋합니다. 끌어오기 요청은 Copilot ID를 사용하여 생성되어 AI에서 생성되었음을 명확히 합니다.

  1. 승인된 사용자의 컨텍스트만 수집

우리는 에이전트가 승인된 사용자로부터만 컨텍스트를 수집하도록 보장합니다. 즉, 에이전트는 항상 상호 작용을 시작한 사용자가 부여한 권한과 컨텍스트에 따라 작동해야 합니다.

Copilot 코딩 에이전트는 기본 저장소에 대한 쓰기 액세스 권한이 있는 사용자만 문제에 할당할 수 있습니다. 또한 특히 공용 저장소의 경우 추가 보안 제어로서 기본 저장소에 대한 쓰기 액세스 권한이 있는 사용자의 문제 의견만 읽습니다.

지금 사용해 보세요

우리는 새로운 AI 제품에 적용할 수 있는 에이전트 보안 원칙을 구축했습니다. 코드 생성 에이전트부터 채팅 기능까지 모든 것과 함께 작동하도록 설계되었습니다. 이러한 디자인 결정은 최종 사용자에게 보이지 않고 직관적이도록 의도되었지만 이를 통해 제품 결정이 더 명확해져서 GitHub Copilot을 계속해서 자신있게 사용할 수 있기를 바랍니다. 이러한 보안 기능에 대한 자세한 내용은 Copilot 코딩 에이전트에 대한 공개 문서를 확인하세요.

GitHub Copilot을 통해 새로운 에이전트 제품을 사용해 보세요 >

작성자:

라훌 자데

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다