초보자를위한 Github : Github Copilot의 보안 모범 사례
Github Copilot의 세계로 뛰어 들고있는 Github for Beginners 시리즈의 다음 에피소드에 오신 것을 환영합니다. 이것은 우리의 네 번째 에피소드이며, 우리는 이미 Copilot에 대해 이미, 필수 기능 중 일부 및 Coplot을 최대한 활용하기 위해 좋은 프롬프트를 작성하는 방법에 대해 이야기했습니다. 우리는 블로그에 이전 에피소드를 모두 가지고 있으며 비디오로 제공됩니다.
오늘 우리는 보안에 대해 이야기 할 것입니다. 모든 사람은 코드를 안전하게 만들어야하며 잠재적 인 해킹에 대한 책임을지지 않는다는 것을 알고 있습니다. 그러나 Github Copilot이 보안 모범 사례에 도움이 될 수 있다는 것을 알고 있습니까? 우리는 당신이 그것을 사용하는 방법과 다른 도구를 사용하여 프로젝트를 첫날부터 더 안전하게 만들 수 있도록 도와줍니다.
https://www.youtube.com/watch?v=9x4ekt65hx8
보안에 대해 이야기합시다
대부분의 보안 팀은 자신의 잘못없이 회사의 코드를 제대로 확보하기에 충분한 시간이나 자원이 없습니다. 따라서 개발자는 첫 번째 방어선이됩니다. 많은 개발자가 일을 제대로 수행하기에 충분한 공식적인 보안 교육이 없기 때문에 힘든 일입니다. 적절한 훈련이없는 사람들에게는 종종 직장에서 이러한 기술을 배우도록 강요받습니다.
다행히도 Github는 Github Copilot과 함께 오픈 소스 코드를 구축 할 때 무료로 사용할 수있는 다양한 보안 도구를 사용하여 도와 드리겠습니다.
구조대에 사본
Github Copilot은 코드를 작성하는 방법을 모릅니다. 또한 코드를보다 안전하게 만드는 방법을 이해합니다. 그러나 그것은 완벽하지 않으므로 무엇을 요구 해야하는지 알아야합니다. 당신은 또한 그것에 의존해서는 안됩니다 오직 보안 도구.
간단한 예로 시작하겠습니다.
SQL 데이터베이스를 사용하여 INSERT
데이터를 추가하는 진술. 이제 SQL 주입에 대해 들었을 것입니다. 당신이하지 않았거나 새로 고침이 필요한 경우, 누군가가 댓글 상자 나 이름 입력과 같이 일반 텍스트 필드를 통해 악의적 인 명령에 몰래 들어가는 곳입니다. 이것은 같은 명령 일 수 있습니다 DROP TABLE
전체 데이터베이스를 삭제할 수 있습니다.
코드를 보호하는 한 가지 방법은 Github Copilot에게 재생하도록 요청하는 것입니다. 사용하는 코드를 삭제하십시오 INSERT
당신이하고 싶은 일을 설명하는 명확한 의견을 명령하고 작성하십시오. 예를 들어 다음 주석을 삽입 할 수 있습니다.
/*
insert from cart using a parameterized query:
mail, product_name, user_name, product_id, address, phone, ship_date, price" and get a Copilot suggestion
*/
Colecilot은 안전하고 매개 변수화 된 쿼리를 제안합니다. 보안은 추측이 아니기 때문입니다.
이 의견을 추가하면 Github Copilot이 IDE에서 활성화되면 몇 가지 코드를 제안합니다. 코드를 수락하기 전에 Copilot이 작성한 내용을 검토하십시오. 유용한 보조자이지만 확인하고 검증하는 것이 귀하의 업무입니다. 출력을 확인한 후에는 탭을 누르면 제안을 수락하십시오.
이제 기존 코드를 삭제하지 않으려면 어떻게해야합니까? 확인하려는 코드 덩어리가있을 수 있습니다. 이 경우 Copilot에게 코드를 살펴보고 수정하도록 요청할 수 있습니다. 이렇게하려면 검토하려는 코드를 강조 표시하고 Copilot Chat을 열고 “이 기능에 취약점이 있습니까?”
범위를 확장하려면 전체 파일을 선택하거나 사용할 수 있습니다. @workspace
Copilot 채팅 창에서. 사용 @workspace
Copilot은 현재 열린 파일뿐만 아니라 작업 공간의 모든 파일을 보라고 지시합니다. 시도해야 할 프롬프트는 다음과 같습니다.@workspace
공격 표면은 무엇입니까?” 그것은 누군가 가이 프로젝트를 어떻게 공격하려고 시도하는지 묻는 멋진 방법입니다.
Copilot은 코드를 스캔하고 찾을 수있는 제안을 제공합니다. 여기에는 코드의 개별 변경 또는 프로젝트에 추가하여 더 안전하게 만들기 위해 고려할 특정 패키지가 포함될 수 있습니다.
슬래시 명령을 사용하여 이것을 한 단계 더 발전시킬 수 있습니다. /fix
전반적인 코드 품질 및 효율성을 향상시키기위한 제안을받습니다.
Copilot이 응답을 제공하거나 제안을 한 후에도 항상 더 자세한 질문을 할 수 있다는 것을 잊지 마십시오. 다음과 같은 저작권 질문을 할 수 있습니다.
- “이 취약점은 무엇을 의미합니까?”
- “이 작업을 수행하는 더 안전한 방법을 제안 할 수 있습니까?”
더 많은 샘플 프롬프트를 보려면 Copilot Chat Cookbook을 확인하십시오. 취약성 찾기에 관한 섹션은이 주제에 특히 적합합니다.
Github Copilot은 강력하지만 모든 보안 도구를 대체하는 것은 아닙니다. 이것은 부분적으로 Copilot이 전문가가 아니라 일반인이기 때문입니다. 생산 환경의 전체 맥락을 항상 볼 수는 없습니다. 구축 된 목적 보안 도구는 컴파일러, 환경 변수 및 배포 방법과 같은 다른 요소를 고려할 수 있습니다.
다행히도 Github에는 오픈 소스 관리자를위한 많은 무료 보안 제품이 있습니다. 즉, 공개 리포지토리에서 무료로 사용할 수 있습니다. 그들 중 일부를 살펴 보겠습니다.
의존
공개 github 저장소에서 코드를 작업 한 경우 의존. 그것은 당신의 종속성이 취약하고 최신인지 확인하기 위해 검사하는 Github의 도구입니다.
의존하는 사람을 활성화하거나 비활성화하려면 다음을 클릭하십시오 설정 저장소의 탭. 아래로 스크롤하고 클릭하십시오 코드 보안 왼쪽 메뉴에서. 이 메뉴에는 전체 섹션이 있습니다 의존. 자동 업데이트뿐만 아니라 경고를 활성화 또는 비활성화 할 수 있습니다.
코드 스캔 및 CodeQL
공개 저장소의 다음 섹션은 다음과 같습니다 코드 스캔. 이 섹션이 보이지 않으면 개인 저장소에서 일하고 있음을 의미합니다. 코드 스캔은이 게시물의 시작 부분에서 이야기 한 SQL 주입 취약성과 같은 일반적인 취약점 및 코딩 오류를 자동으로 감지합니다. 활성화하는 것이 좋습니다 CodeQL 분석.
그렇게하려면 클릭하십시오 설정 버튼을 선택하고 선택하십시오 기본 나타나는 메뉴에서. 그런 다음 녹색을 클릭하십시오 CodeQL을 활성화합니다 팝업 창 하단의 버튼. 이를 통해 Github은 코드에서 패턴 기반 취약점을 찾을 수 있습니다. 이는 리포지토리에 새 코드를 커밋 할 때, 풀 요청을 수행 할 때 및 정기적 인 스캔으로 자동으로 발생합니다. GitHub이 새로운 문제를 발견하면 알림을 보내서 수정할 수 있습니다.
Copilot Autofix
Copilot이 이러한 취약점에 대한 수정 사항을 자동으로 제안하려면 활성화하십시오. Copilot Autofix. 그것은에서 찾을 수 있습니다 코드 보안 버튼 아래에 페이지 CodeQL을 활성화합니다. 이 활성화를 사용하면 Github가 문제를 발견하면 Copilot을 실행하며 Copilot에서 제공하는 제안 된 솔루션으로 풀 요청을 생성합니다. 솔루션을 검토하면 풀 요청을 수락 할 수있는 옵션이있어서 가능한 솔루션을 생성하기 위해 Copilot을 수동으로 실행할 필요가 없습니다.
비밀 스캔
우리가 지적하고자하는 다음 보안 도구는 비밀 스캔. 바닥에서 비밀 스캔 옵션을 찾을 수 있습니다. 코드 보안 페이지. 비밀 스캔을 가능하게함으로써 Github는 코드를 스캔하여 암호 또는 보안 토큰과 같은 노출 된 비밀을 찾습니다. 보안 위험으로 인해 코드에 직접 포함 된 것을 원하지 않습니다. 와 함께 푸시 보호 활성화 된 Github은 새로운 비밀이 Github 호스트 코드에 전념되는 것을 적극적으로 차단합니다.
여기서 탐색 할 시간이없는 몇 가지 다른 기능이 있습니다. 스스로 자세한 내용을 읽으려면 GitHub 보안 기능에 대한 문서와 저장소 보안을위한 빠른 스타트를 확인하십시오.
다음 단계
보안은 엄청나게 깊은 주제이며, 우리는 당신이 전문가가 될 것으로 기대하지 않습니다. 지금은이 세 가지를 기억하십시오.
- Colecilot에게 취약점을 찾고 수정하도록 요청하십시오. 이것은 달리기만큼 간단 할 수 있습니다
/fix
Copilot Chat에서 또는 일부 코드 선택 및 Copilot에게 취약점을 확인하도록 요청하는 등 더 자세한 정보가있을 수 있습니다. - 문제가 발견되면 자세한 내용은 Colecilot에게 문의하십시오. 솔루션을 이해하는 것이 중요합니다. 작업을 확인할 수 있고 미래에 도움을 줄 수있는 학습 기회로도 있습니다.
- Dependabot, 코드 스캔 및 비밀 스캔을 활성화하십시오. 이 도구 코드 보안 설정은 알고 싶은 문제가있을 때 경고를 보내는 데 유용합니다. 그리고 Copilot은 당신이 그들을 고치는 데 도움이 될 수 있음을 기억하십시오!
Github Copilot을 무료로 사용할 수 있다는 것을 잊지 마십시오! 궁금한 점이 있으시면 Github 커뮤니티 스레드에서 팝업하면 응답하겠습니다. 이 시리즈의 다음 부분에 참여하십시오. 여기서 Copilot을 사용하여 REST API를 구축하는 방법을 배울 것입니다.
행복한 코딩!
작성자가 작성했습니다
Post Comment