Windows 개발을 위한 보안 및 책임 있는 AI

AI 도구는 Windows 앱 개발을 크게 가속화할 수 있지만 속도는 책임을 제거하지 않습니다. AI 에이전트가 생성하는 코드는 사용자가 발송하는 코드이며, 작성 방법에 관계없이 앱의 모든 것을 책임집니다.

이 페이지에서는 AI 도구를 사용하여 앱을 빌드하는 책임 있는 사례와 AI 생성 코드와 관련된 보안 문제라는 두 가지 관련 항목을 다룹니다.

사용자가 코드를 소유합니다.

AI 에이전트가 함수, 레이아웃 또는 API 호출을 생성하면 커밋하는 순간 코드가 됩니다. 코드를 손으로 작성했는지 또는 생성되었는지에 관계없이 동일한 표준이 적용됩니다.

  • 적용하기 전에 모든 변경 내용을 읽고 이해합니다.
  • 적어도 손으로 쓴 코드만큼 철저하게 AI 생성 코드를 테스트합니다. 모델은 미묘하게 잘못된 그럴듯하게 보이는 코드를 생성할 수 있습니다.
  • 프로덕션의 버그 또는 보안 문제에 대한 설명으로 "AI가 작성했습니다"를 사용하지 마세요.

AI 도구는 코드 검토의 필요성을 제거하지 않습니다. 검토 여부가 아니라 검토 중인 내용을 변경합니다.

AI 도구로 보내지 않을 내용

프롬프트 및 컨텍스트 창에 포함하는 내용에 대해 신중하게 설명합니다.

  • 비밀 및 자격 증명 - API 키, 암호 또는 연결 문자열을 프롬프트에 붙여넣지 않습니다. 비공개 채팅 세션에서도 프롬프트의 자격 증명은 보안 위험이며 로그에 나타날 수 있습니다. 아래 의 자격 증명 및 비밀 처리를 참조하세요 .
  • 고객 데이터 및 PII - 버그를 설명하기 위해 실제 고객 이름, 이메일 또는 사용량 현황 데이터를 예제 입력으로 사용하지 마세요. 가상 데이터를 사용합니다.
  • 독점 비즈니스 논리 - 내부 시스템 코드를 공유하기 전에 외부 AI 서비스로 보낼 수 있는 소스 코드에 대한 조직의 정책을 이해합니다.

입력 유효성 검사

AI는 허용되는 입력 처리를 생성하는 경향이 있습니다. 사용자 입력에 따라 동작하기 전에 항상 길이, 형식 및 범위의 유효성을 검사합니다.

  • 셸 명령, 파일 경로 또는 데이터베이스 쿼리에 원시 TextBox.Text 값을 전달하지 마세요.
  • 스토리지에 쓰거나 네트워크를 통해 보내기 전에 문자열 길이의 유효성을 검사합니다.
  • 파일 경로에 대해 허용 목록 접근 방식을 사용합니다. 확인된 경로가 예상된 디렉터리 내에 있는지 확인합니다.

프롬프트에 "모든 사용자 연결 필드에 입력 유효성 검사 및 길이 제한 추가"를 추가합니다.

자격 증명 및 비밀 처리

API 키, 암호 또는 연결 문자열을 하드 코딩하지 않습니다. AI는 종종 자리 표시자 문자열(예: "your-api-key-here" 버그로 처리)을 생성합니다.

  • Windows.Security.Credentials.PasswordVault에 자격 증명을 저장합니다.

    var vault = new PasswordVault();
    vault.Add(new PasswordCredential("MyApp", username, password));
    
  • 런타임에 이를 가져오세요:

    var credential = vault.Retrieve("MyApp", username);
    credential.RetrievePassword();
    
  • 서버 쪽 또는 CI 시나리오에서 서비스 자격 증명에 환경 변수 또는 Azure Key Vault 사용합니다.

패키지 및 종속성 무결성

AI 에이전트가 제안하는 모든 NuGet 패키지를 검토한 후 프로젝트에 추가합니다.

  • nuget.org 게시자를 확인합니다. 파란색 방패(Microsoft) 또는 알려진 게시자를 찾습니다.
  • 알려진 취약성을 검색합니다.
    dotnet list package --vulnerable
    
  • 최근 업데이트 및 활성 유지 관리가 있는 패키지를 선호합니다.

앱 기능 및 권한

AI에서 생성된 파일에는 Package.appxmanifest 종종 광범위한 기능이 포함됩니다. 섹션을 검토하고 앱에 <Capabilities> 필요하지 않은 항목을 제거합니다.

주의해야 할 일반적인 지나치게 광범위한 기능은 다음과 같습니다.

  • broadFileSystemAccess — 앱이 임의 파일 시스템 경로를 진정으로 읽는 경우에만 필요
  • documentsLibrary — 스토어 특별 승인이 필요합니다. 필요 없는 경우를 방지합니다.
  • userAccountInformation - 사용자의 이름 또는 사진이 필요한 경우에만

코드 검토 검사 목록

AI 생성 코드를 전달하기 전에 다음을 확인합니다.

  • 하드 코딩된 비밀 또는 자격 증명 없음
  • 사용하기 전에 유효성이 검사된 사용자 입력
  • 허용된 디렉터리에 대해 확인된 파일 경로
  • 매니페스트에 선언된 최소 필수 기능
  • 취약성을 검사한 NuGet 패키지(dotnet list package --vulnerable)
  • 민감한 데이터는 PasswordVault에 저장되며, ApplicationData.LocalSettings에는 저장되지 않습니다
  • 모든 네트워크 호출은 HTTPS를 사용합니다.
  • 예외 메시지는 사용자에게 내부 경로 또는 스택 추적을 노출하지 않습니다.

AI 모델에는 오래된 지식이 있습니다.

오늘 사용하는 AI 도구는 컷오프 날짜가 있는 데이터에 대해 학습되었습니다. Windows 개발의 경우 모델이 WinUI 3 샘플보다 훨씬 더 많은 UWP 샘플을 보았으므로 이 설명서 섹션이 존재하는 이유입니다.

AI 출력을 신뢰할 수 있는 것으로 취급하지 마세요.

  • 현재 API 이름 및 네임스페이스( WinUI 3 API 참조에 대해 확인)
  • 현재 SDK 버전 및 패키지 이름
  • Microsoft Store 정책 및 제출 요구 사항(자주 변경)
  • 보안 지침(모델이 오래된 암호화 또는 인증 패턴을 재현할 수 있음)

Microsoft Learn MCP serverWinUI agent plugin은 에이전트가 최신 설명서를 기반으로 작동하도록 하여 오래된 지식으로 인한 문제를 완화해 주지만, 보안상 중요한 내용은 항상 1차 출처를 통해 확인하세요.

Accessibility

AI에서 생성된 UI는 접근성 지원을 자주 생략합니다. 수백만 개의 XAML 샘플로 학습된 모델은 그 샘플들의 평균적인 품질을 재현할 것이며, 역사적으로 그러한 평균은 AutomationProperties, 키보드 내비게이션, 그리고 충분한 명암 대비를 빠뜨려 왔습니다.

AI에서 생성된 XAML을 수락하거나 코드를 제어하는 경우:

  • 대화형 요소에 AutomationProperties.AutomationIdAutomationProperties.Name가 설정되어 있는지 확인합니다.
  • 포커스 순서가 논리적인지 확인 - 탭 정지가 읽기 순서를 따라야 합니다.
  • 배송 전에 내레이터 또는 다른 화면 읽기 프로그램을 사용하여 테스트
  • Accessibility Insights for Windows 도구를 사용하여 누락된 부분을 자동으로 찾아냅니다.

에이전트에 " 이 XAML의 모든 대화형 요소에 접근성 속성 추가"를 명시적으로 요청합니다. 완료되었다고 가정하지 마세요.

앱에서 AI 기능을 사용하는 경우

AI를 사용하여 앱을 작성하는 것뿐만 아니라 앱 AI 기능을 빌드하는 경우 추가 책임이 적용됩니다.

사용자와 투명합니다. 사용자에게 알리기:

  • 앱이 AI 서비스에 보내는 데이터
  • AI가 영향을 주는 결정을 내리고 있는지 여부
  • 적절한 경우 옵트아웃하는 방법

중요한 영향을 미치는 작업에는 사람이 개입하도록 하세요. AI가 데이터를 자율적으로 삭제하거나, 구매하거나, 사용자를 대신하여 메시지를 보내거나, 명시적 확인 없이 다른 돌이킬 수 없는 작업을 수행하도록 허용하지 마세요.

바이어스 및 예기치 않은 출력을 테스트합니다. AI 모델은 편향되거나 공격적이거나 실제로 잘못된 출력을 생성할 수 있습니다. 배송 전에 다양한 입력 및 에지 사례로 앱의 AI 기능을 테스트합니다.

콘텐츠 안전 도구를 사용합니다. 앱이 AI를 사용하여 사용자 연결 텍스트, 이미지 또는 기타 콘텐츠를 생성하거나 처리하는 경우 Azure AI 콘텐츠 보안 또는 동등한 필터링을 사용하여 사용자에게 도달하기 전에 유해한 출력을 catch합니다.

라이선스 및 저작자 표시

AI 도구는 기존 오픈 소스 코드와 유사한 코드를 생성할 수 있습니다. 상용 앱에서 AI 생성 코드를 사용하기 전에 다음을 수행합니다.

  • AI 생성 코드 기여에 대한 조직의 정책 파악
  • Microsoft의 Copilot 및 지적 재산권에 대한 지침을 검토하세요
  • 타사 코드에 동일한 오픈 소스 라이선스 준수 검사를 적용합니다.

Microsoft의 책임 있는 AI 원칙

Microsoft 공정성, 안정성 및 안전성, 개인 정보 보호 및 보안, 포용성, 투명성 및 책임의 6가지 원칙에 따라 AI 제품 및 기능을 설계합니다.

microsoft.com/ai/responsible-ai 자세히 알아보세요.