.NET 및 Azure DevOps 비밀 정보 보안 관리 가이드
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

.NET 및 Azure DevOps에서 비밀 정보 관리 가이드

카테고리

인프라/DevOps/보안

서브카테고리

DevOps

대상자

.NET 개발자, Azure DevOps 파이프라인 설계자

난이도: 중급 (비밀 관리 기본 개념과 DevOps 자동화 기술 필요)

핵심 요약

  • 비밀 정보를 절대 코드에 직접 저장하지 않도록 하라 (예: appsettings.jsonConnection String 직접 입력 금지)
  • User Secrets 사용: 로컬 개발 환경에서 dotnet user-secrets로 비밀 정보를 secrets.json에 저장 (Git에 포함되지 않음)
  • Azure DevOps 파이프라인에서는 Pipeline Variable 활용: PowerShell 스크립트로 환경 변수 설정 후 dotnet test 실행 (예: Write-Host "##vso[task.setvariable variable=ServiceBusConnectionString;issecret=true]...")

섹션별 세부 요약

1. 문제 정의: 공개 저장소에서의 비밀 정보 유출 위험

  • API 키, Connection String, 인증 토큰 등의 비밀 정보가 appsettings.json에 저장되면 GitHub에 커밋된 후 영원히 저장됨
  • 수동 삭제 방식(예: commit 전 삭제)은 실수로 인해 유출 위험 증가

2. User Secrets 활용: 로컬 개발 환경 비밀 관리

  • dotnet user-secrets init 명령으로 .csprojUserSecretsId 추가 (프로젝트와 secrets.json 연동)
  • dotnet user-secrets set "Settings:ServiceBus:DeleteUserAccount" "SecretValue" 명령으로 비밀 정보 저장
  • appsettings.Development.json에 빈 값으로 템플릿 제공 (예: "DeleteUserAccount": "")

3. Azure DevOps 파이프라인에서의 비밀 정보 설정

  • Pipeline Variable 생성: ServiceBusConnectionString 변수 생성 후 비밀 표시 (보안 강화)
  • PowerShell Task 추가: dotnet test 전에 ##vso[task.setvariable] 명령으로 환경 변수 설정

```powershell

Write-Host "##vso[task.setvariable variable=ServiceBusConnectionString;issecret=true]SuaConnectionStringSuperSecretaAqui"

```

  • CI/CD 자동화secrets.json 파일이 포함되지 않도록 유의 (로컬 환경에서만 사용)

결론

  • User SecretsPipeline Variable을 결합하여 로컬/CI/CD 환경에서 비밀 정보를 안전하게 관리할 것
  • dotnet user-secretsPowerShell 스크립트를 활용한 환경 변수 설정은 테스트 실패 예방보안 강화에 필수적
  • 환경 변수 우선순위 (User Secrets > appsettings.Development.json)를 이해하고, secrets.json 파일이 Git에 포함되지 않도록 주의해야 함