이 가이드는 엔지니어링 시스템 개선을 위한 전략과 측정 항목을 추천하는 GitHub의 ESSP(엔지니어링 시스템 성공 플레이북)에서 영감을 받았습니다.
Copilot을 출시하려면 목표를 정의하고, 이에 따라 출시를 계획하고, 직원에게 목표를 명확하게 전달하는 것이 좋습니다. GitHub Copilot을 사용하여 회사의 엔지니어링 목표 달성을(를) 참조하세요.
1. 성공을 가로막는 주요 장애 요인들을 파악합니다.
ESSP에서 권장하는 첫 번째 단계는 회사의 개선을 방해하는 장애물을 명확히 이해하는 것입니다. 현재 기준, 원하는 미래 상태, 진행을 방해하는 장벽을 이해하게 되면 발생하는 변화의 방향이 목표 지향적이고 효과적이라는 것을 확신할 수 있습니다.
개발 팀은 종종 새로운 기능을 제공하고 애플리케이션을 원활하게 실행하기 위해 속도와 기능에 집중합니다. 시간이 지남에 따라 다음과 같은 작은 문제가 누적 될 수 있습니다.
- 고정되지 않은 상태로 유지되는 알려진 보안 약점
- 이전 소프트웨어 구성 요소의 잠재적 결함에 대한 의존성
- 검색된 문제 해결 지연
이로 인해 보안 부채가 발생하며, 문제의 중요한 적체를 초래합니다.
보안 부채는 실제 위험을 수반합니다. 해결되지 않는 시간이 길어질수록 더 크고 비용이 많이 듭니다. 대규모 보안 부채는 시스템을 공격에 취약하게 만들고, 중요한 데이터를 노출하며, 고객 신뢰를 침식합니다.
문제는 안전하고 안정적인 소프트웨어 환경을 유지 관리하여 신속한 개발의 균형을 맞추는 것입니다.
2. 옵션을 평가합니다.
다음 단계에서는 1단계에서 확인된 장벽을 해결하기 위한 솔루션을 평가하고 합의해야 합니다. 이 가이드에서는 GitHub Copilot이 사용자가 인지하는 목표 달성에 어떠한 영향을 미칠 수 있는지 중점적으로 살펴보겠습니다. 새 도구를 성공적으로 출시하려면 문화권 및 프로세스를 변경해야 합니다.
파일럿 그룹을 사용하여 새로운 도구 및 프로세스의 평가판을 실행하여 피드백을 수집하고 성공을 측정합니다. 평가판 중에 사용할 학습 리소스 및 메트릭에 대해서는 3. 변경 사항 구현 및 주의할 메트릭 섹션을 참조하세요.
<a href="https://github.com/github-copilot/purchase?ref_product=copilot&ref_type=trial&ref_style=button&ref_plan=enterprise" target="_blank" class="btn btn-primary mt-3 mr-3 no-underline"> <span>Copilot 가입</span> <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-link-external" aria-label="link external icon" role="img"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a>
Copilot이 도움을 주는 방식
Copilot은 개발 수명 주기에 보안 고려 사항을 직접 통합합니다. 이를 통해 개발자는 프로젝트를 최신 상태로 유지하고 잠재적 취약성을 사전에 식별하여 해결할 수 있습니다.
Copilot은 소프트웨어 개발 수명 주기 전반에 걸쳐 보안 취약점을 줄여줍니다.
개발 중
Copilot은 코드를 작성하는 동안 실시간으로 검토 기능을 제공합니다. 일반적인 보안 결함에 대한 이해를 사용하여 악용에 취약할 수 있는 영역에 플래그를 지정합니다. 이 실시간 분석은 표준 개발 또는 초기 보안 검토 중에 누락될 수 있는 숨겨진 취약성을 노출합니다.
Copilot에서 문제를 식별하면 취약점을 수정하기 위한 코드 변경을 제안합니다. 이렇게 하면 약점을 조기에 해결하고 보안 부채가 누적되는 것을 방지할 수 있습니다.
지속적인 유지 관리
Copilot은 기존 코드베이스의 안전성을 보장하기 위해 GitHub의 코드 스캔 기능과 통합되어 작동합니다. 코드 스캔이 보안 경고를 식별할 때, Copilot 자동 수정에서 이를 분석하고 해결하기 위한 구체적인 권장 사항을 제공합니다.
이러한 제안된 수정 사항은 취약성을 조사하고 문제를 해결하는 방법을 결정하는 데 걸리는 시간을 줄입니다. 이렇게 하면 보안 경고를 보다 효율적으로 해결하고 지속적인 보안 문제를 방지할 수 있습니다.
문화적 고려 사항
GitHub Copilot의 출시와 함께 목표 달성에 방해가 될 수 있는 사회적 및 문화적 요인을 해결하십시오.
다음 예시는 ESSP의 ‘안티 패턴’ 섹션에서 발췌한 내용입니다.
- 팀은 보안 부채를 무시하거나 연기할 수 있습니다. 이렇게 하면 비효율적이고 취약한 시스템이 지속될 수 있습니다. 이는 기능에 대한 마감일 중심의 초점이나 보안 부채의 장기적인 영향에 대한 교육 부족으로 인해 발생할 수 있습니다.
- 팀은 간단한 문제에 대해 지나치게 복잡한 솔루션을 빌드 할 수 있습니다. 이렇게 하면 코드를 유지 관리하기가 더 어려워지고 보안 문제를 감지하기가 더 어려워집니다. 이는 불필요하게 미래에 대비하려는 욕구 또는 복잡성을 통해 가치를 추가해야 한다는 압력으로 인해 발생할 수 있습니다.
3. 변경 내용 구현
장벽을 극복하기 위한 올바른 방법을 확인한 경우 식별한 솔루션의 크기를 조정합니다. 새 도구 또는 프로세스의 성공적인 롤아웃을 위해 롤아웃의 각 부분에 소유권을 할당하고, 목표에 대해 투명하게 전달하고, 효과적인 교육을 제공하고, 결과를 측정합니다.
이 섹션에서는 개발자를 위한 예시 시나리오와 모범 사례, 그리고 관련 리소스를 안내합니다. 이 섹션에서는 직원들이 목표와 일치하는 방식으로 Copilot을(를) 사용할 수 있도록 커뮤니케이션 및 교육 세션을 계획 할 수 있습니다.
-
[코드의 보안 취약성 분석](#analyze-your-code-for-security-vulnerabilities) -
[Copilot 자동 수정 for code scanning 의 경고를 사용](#use-copilot-autofix-for-code-scanning-alerts) -
[개발자를 위한 모범 사례](#best-practices-for-developers) -
[개발자를 위한 리소스](#resources-for-developers)
코드의 보안 취약성 분석
코드베이스 크기에 따라 Copilot이 코드 작성 중 전체 프로젝트를 분석하지 못할 수도 있습니다. 컨텍스트 제약 조건 때문입니다. 그러나 안전하지 않은 코드 사례에 대한 특정 파일을 분석하도록 요청할 수 있습니다.
-
Visual Studio Code에서 분석할 파일을 여세요.
-
Copilot 채팅에서
Analyze this code for potential security vulnerabilities and suggest fixes와 같이 요청합니다.채팅 변수를
#file사용하여 프롬프트에 파일의 콘텐츠를 구체적으로 포함할 수 있습니다. 프롬프트 파일과 사용자 지정 지침을 활용하여 Copilot의 응답을 조정할 수도 있습니다. -
Copilot 채팅 코드를 분석하고, 보안 취약성을 식별하고, 수정을 제안합니다.
-
제안된 변경 사항을 검토한 후 적절히 반영해 주시기 바랍니다.
프롬프트의 다른 예:
Are there any security vulnerabilities in my code? If so, can you explain them and suggest fixes?Does this code follow secure code best practices? If not, what specific improvements can I make?What are the potential security risks in this code if it were deployed to production? How can I mitigate them?
Copilot 자동 수정 for code scanning 의 경고를 사용
Copilot 자동 수정는 GitHub Code Security의 기능 중 하나로, code scanning 경고에 대한 잠재적인 해결 방안을 제시합니다. 이 기능은 공용 리포지토리와 GitHub Code Security 라이선스가 있는 리포지토리에서 사용할 수 있습니다.
리포지토리에서 코드 검사를 실행하면 code scanning 경고로 잠재적인 문제를 경고합니다. 다음 단계에 따라 경고를 해결합니다.
- GitHub에서 경고를 엽니다.
-
**수정 생성**을 클릭합니다. 이는 코필로트가 경고를 해결할 수 있는 시기를 표시합니다. - Copilot 자동 수정는 잠재적인 수정사항을 만들어 알림에서 코드 변경 내용을 표시합니다. 이 코드 변경 내용을 새 분기 또는 기존 분기로 커밋할 수 있습니다.
- 코드를 테스트합니다. 그런 다음 끌어오기 요청을 열어 변경 내용을 주 분기로 이동합니다.
- 변경 사항을 메인 브랜치에 반영하고 code scanning에서 수정 여부를 확인하면, 해당 경고가 자동으로 종료됩니다.
개발자를 위한 모범 사례
개발자는 다음을 수행해야 합니다.
-
**취약점 분석을 위해 Copilot 채팅을 정기적으로 사용하여 코드 조각을 분석합니다.**. 변경 내용을 커밋하기 전에 코드에서 보안 문제를 확인하는 습관을 만듭니다. -
**Copilot 자동 수정 for code scanning 의 경고를 사용**. 경고 메시지가 나타나면, 가장 먼저 Copilot 자동 수정를 활용해 문제를 빠르게 해결해 보세요. -
**Copilot 채팅에 명확하고 구체적인 프롬프트를 제공합니다**. 요청이 더 구체적일수록 Copilot가 코드를 더욱 효과적으로 분석하여 관련 수정 사항을 제안할 수 있습니다. 예를 들어 프로그래밍 언어 및 특정 관련 영역을 포함합니다. -
**Copilot를 기존 보안 도구와 결합합니다**. Copilot은 보안 분석의 추가 계층으로 활용하며, 전용 보안 스캐너 및 기존 보안 관행을 대체하는 용도로 사용하지 마세요.
개발자는 다음을 수행해서는 안 됩니다.
-
**Copilot의 보안 제안을 자동으로 수락합니다**. 항상 제안된 코드 변경 내용을 검토하고 테스트하여 적절하고 효과적인지 확인합니다. -
**포괄적인 보안 감사를 위해 Copilot에만 의존하세요**. Copilot는 유용한 도구이지만 철저한 보안 검토 및 침투 테스트를 대체해서는 안됩니다. -
**code scanning 경고를 무시하세요**. 보안 부채가 누적되는 것을 방지하기 위해 사소한 것처럼 보일지라도 모든 경고를 즉시 해결합니다. -
**안전한 코딩 사례를 학습하지 않도록 Copilot을(를) 핑계로 사용합니다**. 자신과 팀에게 보안 모범 사례를 계속 교육합니다. -
**Copilot가 모든 취약성을 탐지할 것이라고 가정합니다**. 보안은 지속적인 프로세스이며 항상 경계가 필요합니다. -
**Copilot를 사용하여 보안 정책을 우회합니다**. 조직의 보안 프로토콜을 준수합니다. Copilot을 우회하는 대신, 개선 도구로 활용해 보세요.
개발자를 위한 리소스
-
[GitHub Copilot 채팅](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github) -
[AUTOTITLE](/copilot/copilot-chat-cookbook/security-analysis/finding-existing-vulnerabilities-in-code) -
[GitHub Skills - GitHub Copilot 시작](https://github.com/skills/getting-started-with-github-copilot)
감시해야 할 메트릭
새 도구의 평가판을 평가하고 전체 롤아웃이 일관된 개선을 제공하고 있는지 확인하려면 결과를 모니터링하고 필요한 경우 조정합니다. 품질, 속도 및 개발자 행복의 주요 영역과 이러한 영역이 함께 모여 비즈니스 결과에 기여하는 방법을 고려하는 것이 좋습니다.
다음은 특정 목표에 대한 Copilot의 영향을 평가하는 데 사용할 수 있는 몇 가지 지표입니다.
-
**보안 부채 비율** 보안 개요를 사용하여 시간이 지남에 따라 경고 수가 감소하는지 확인합니다. -
**보안 문제를 해결할 시간입니다**. 보안 개요를 사용하여 보안 문제를 수정하는 시간이 시간이 지남에 따라 떨어지는지 확인합니다.
코드의 보안 위험 평가을(를) 참조하세요.