- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 엑셀에서 매크로 보안 설정을 올바르게 변경하고 조직·개인 환경에서 안전하게 운용하는 실무 절차와 주의사항을 제공하는 것이다.
1. 매크로 보안의 기본 개념 정리
매크로는 VBA(Visual Basic for Applications)로 작성된 자동화 코드로 반복 업무를 효율화하지만 악성 코드 유입 경로가 될 수 있으므로 기본적으로 제한되는 것이 정상이다.
엑셀은 신뢰할 수 없는 원본의 매크로를 비활성화하고, 사용자가 명시적으로 허용하는 방식으로 설계되어 있다.
실무에서는 파일의 출처, 디지털 서명, 신뢰할 수 있는 위치, 조직 정책을 기준으로 허용 범위를 계층적으로 설계하는 것이 핵심이다.
2. UI에서 매크로 보안 설정 변경(Windows 엑셀 365/2021/2019 기준)
- 파일 > 옵션 > 보안 센터 > 보안 센터 설정으로 이동한다.
- 매크로 설정 메뉴에서 다음 중 하나를 선택한다.
| 옵션 | 동작 | 권장 사용 사례 |
|---|---|---|
| 알림 표시 없이 모든 매크로 사용 안 함 | 모든 매크로 차단, 배너 경고 없음 | 매크로 필요 없는 표준 사용자 PC에 권장 |
| 모든 매크로 사용 안 함(알림 표시) | 차단하되 보안 경고 배너로 사용자 선택 허용 | 매크로 파일을 간헐적으로 수신하는 사용 환경 |
| 디지털 서명된 매크로만 포함한 매크로 사용 | 신뢰된 게시자의 서명은 허용, 그 외는 차단 | 조직 배포 매크로에 코드 서명을 적용한 환경 |
| 모든 매크로 사용 | 전면 허용 | 비권장, 격리된 실험 환경에서만 예외적으로 사용 |
3. 신뢰할 수 있는 위치(Trusted Locations) 활용
보안 센터의 신뢰할 수 있는 위치에 등록된 폴더의 통합 문서는 매크로가 자동으로 활성화된다. 조직 표준 매크로 배포 시 읽기 전용 네트워크 공유나 배포 전용 로컬 폴더를 등록하여 사용자 승인 과정을 단순화한다.
- 파일 > 옵션 > 보안 센터 > 보안 센터 설정 > 신뢰할 수 있는 위치로 이동한다.
- “새 위치 추가”를 클릭하고 경로를 지정한다.
- 하위 폴더 포함 여부를 선택한다.
4. 인터넷에서 받은 파일과 ‘차단 해제’
웹·메일에서 내려받은 파일에는 웹에서 가져옴(Mark of the Web, MoTW) 속성이 붙고 기본적으로 매크로가 차단된다.
- 파일 탐색기에서 해당 파일을 우클릭한다.
- “속성 > 일반” 하단의 “차단 해제” 체크 후 확인한다.
- 엑셀을 다시 열어 보안 경고를 확인한다.
5. 디지털 서명 기반 신뢰 체계
조직 배포 매크로는 코드 서명을 적용하면 사용자 측에서 “디지털 서명된 매크로만 허용” 정책을 유지하면서도 무리 없이 사용할 수 있다.
5.1 자체 서명 인증서(SelfCert)로 테스트
- Windows에서 “SelfCert.exe”를 실행한다(Office와 함께 설치됨).
- 인증서 이름을 입력하고 생성한다.
- VBA 편집기(Alt+F11) > 도구 > 디지털 서명 > “선택”에서 방금 생성한 인증서를 지정한다.
5.2 신뢰할 수 있는 게시자 등록
- 서명된 매크로 파일을 열고 보안 경고에서 “컨텐츠 사용”을 선택한다.
- 인증서 확인 창에서 “신뢰할 수 있는 게시자로 추가”를 선택한다.
6. VBA 프로젝트 개체 모델에 대한 신뢰(Trust access to the VBA project object model)
VBA가 다른 VBA 프로젝트를 조작하도록 허용하는 고위험 옵션이다. 기본 값은 꺼짐이 안전하다.
- 파일 > 옵션 > 보안 센터 > 보안 센터 설정 > 매크로 설정으로 이동한다.
- “VBA 프로젝트 개체 모델에 대한 신뢰” 체크 여부를 관리한다.
7. 추가 보호 기능과 상호작용
- 보호된 보기(Protected View)에서 읽기 전용으로 열린 뒤 “편집 사용”을 눌러야 매크로 경고가 노출된다.
- 파일 차단(File Block) 정책이 오래된 형식을 차단하면 매크로 이전보다 먼저 열기 자체가 제한된다.
- 추가 기능(Add-ins)의 XLA/XLAM도 매크로이며 동일한 보안 모델을 따른다.
- ActiveX 컨트롤이 포함된 통합 문서는 별도의 ActiveX 제한 설정 영향을 받는다.
8. 그룹 정책(GPO)·레지스트리로 중앙 관리
기업 환경에서는 GPO로 매크로 정책을 강제한다. 로컬에서 UI 변경이 불가하거나 회색으로 비활성화될 수 있다.
8.1 대표 레지스트리 키(VBAWarnings)
| 경로(사용자) | 값 | 의미 |
|---|---|---|
| HKCU\Software\Microsoft\Office\16.0\Excel\Security\VBAWarnings | 1 | 모든 매크로 사용 |
| 동일 | 2 | 서명된 매크로만 사용 |
| 동일 | 3 | 모든 매크로 사용 안 함(알림 표시) |
| 동일 | 4 | 알림 표시 없이 모든 매크로 사용 안 함 |
버전 번호는 Office 2016/2019/2021/365에서 보통 16.0을 사용한다.
# PowerShell 예시(사용자 컨텍스트) New-Item -Path "HKCU:\Software\Microsoft\Office\16.0\Excel\Security" -Force | Out-Null Set-ItemProperty -Path "HKCU:\Software\Microsoft\Office\16.0\Excel\Security" -Name "VBAWarnings" -Type DWord -Value 3 8.2 그룹 정책 핵심 포인트
- 사용자 구성 > 정책 > 관리 템플릿 > Microsoft Excel > 보안 > 매크로 설정에서 강제한다.
- “신뢰할 수 있는 위치 사용 제한” 정책으로 사용자 임의 등록을 차단한다.
- 조직 코드 서명 인증서를 엔터프라이즈 신뢰 저장소에 배포한다.
9. Mac용 엑셀에서의 매크로 보안
- Excel > 설정 > 보안 및 개인 정보로 이동한다.
- 매크로 보안에서 동일한 네 가지 수준을 관리한다.
- Gatekeeper와 다운로드 파일 격리를 고려하여 신뢰 경로를 좁게 유지한다.
10. 안전한 운영 표준(SoP) 예시
- 모든 외부 수신 매크로 파일은 격리 폴더에서 검사한 뒤 이동한다.
- 조직 배포 매크로는 반드시 코드 서명한다.
- 사용자 PC는 “서명된 매크로만 허용” 또는 “알림 표시” 수준을 유지한다.
- 개발 PC에만 “VBA 프로젝트 개체 모델 신뢰”를 허용한다.
- 신뢰 위치는 읽기 전용 네트워크 공유 한 곳만 운영한다.
- 분기별로 신뢰된 게시자 목록을 점검한다.
| 점검 항목 | 체크 방법 | 주기 |
|---|---|---|
| VBAWarnings 정책 준수 | GPO 리포트·레지스트리 스팟 체크 | 월 1회 |
| 신뢰 위치 최소화 | 보안 센터 위치 목록 점검 | 분기 1회 |
| 게시자 인증서 유효성 | 만료일·폐기 목록 확인 | 분기 1회 |
| 매크로 감염 탐지 | EDR/AV 로그, 의심 파일 샘플링 | 상시 |
11. 문제별 실무 해결책
11.1 보안 경고가 계속 나타나 매크로 실행이 안 될 때
- 파일 속성의 “차단 해제” 여부를 확인한다.
- 신뢰 위치가 로컬 경로인지 확인한다. 네트워크 위치는 추가 옵션이 필요하다.
- 디지털 서명 인증서가 만료되었는지 확인한다.
11.2 옵션이 회색으로 비활성화될 때
- 그룹 정책이 강제 적용된 상태이다. 보안팀에 정책 완화 요청을 한다.
- 레지스트리 직접 변경은 정책에 의해 되돌려질 수 있다.
11.3 조직 서명 매크로가 갑자기 차단될 때
- 루트/중간 인증서 체인이 신뢰 저장소에서 제거되었는지 점검한다.
- 타임스탬프 유무에 따라 만료 후 신뢰가 끊길 수 있다.
12. 샘플 배포 스크립트와 개발 팁
12.1 사용자 PC에 “알림 표시” 정책 적용
# PowerShell(관리자 아님, 사용자 컨텍스트) $path = "HKCU:\Software\Microsoft\Office\16.0\Excel\Security" New-Item -Path $path -Force | Out-Null Set-ItemProperty -Path $path -Name "VBAWarnings" -Type DWord -Value 3 Write-Output "Excel 매크로 정책을 '알림 표시'로 설정하였다." 12.2 신뢰 위치 읽기 전용 네트워크 공유 등록 안내
경로 예: \\filesvr01\excel\trusted 파일 > 옵션 > 보안 센터 > 보안 센터 설정 > 신뢰할 수 있는 위치 > 새 위치 추가 '하위 폴더 포함'은 필요한 경우에만 선택한다. 12.3 VBA 프로젝트 서명 절차 요약
1) CA 또는 조직 PKI에서 코드 서명 인증서 발급 2) 개발 PC 개인 인증서 저장소에 설치 3) VBA 편집기(Alt+F11) > 도구 > 디지털 서명 > 인증서 선택 4) 배포 전 빌드·서명 자동화(예: Office Scripts, 빌드 배치) 13. 승인·검증 워크플로우 설계
- 요청 접수: 매크로 기능 요구사항·데이터 접근 범위를 명확화한다.
- 코드 리뷰: 외부 연결, 쉘 호출, 파일 시스템 쓰기 등 고위험 API 사용 여부를 점검한다.
- 정적 분석: 서명 전 악성 패턴을 검사한다.
- 서명·배포: 신뢰 위치로만 배포한다.
- 운영 모니터링: 감사 로그와 사용자 피드백을 수집한다.
14. 보안 사고 방지를 위한 체크리스트
- 외부 수신 파일은 기본 차단 상태에서 열어 내용·출처를 검증한다.
- “모든 매크로 사용”과 “VBA 프로젝트 개체 모델 신뢰”는 개발 전용으로만 허용한다.
- 코드 서명 없는 매크로는 신뢰 위치에서도 실행 전 수동 검증한다.
- EDR/백신 예외 등록은 최소 범위로 한정한다.
FAQ
매크로를 자주 쓰는데 매번 경고가 불편하다. 안전하게 간소화할 수 있나?
조직 서명 인증서를 사용해 매크로에 코드 서명을 적용하고, 읽기 전용 신뢰 위치에서만 배포하면 경고 없이 안전하게 사용할 수 있다.
신뢰 위치를 네트워크 공유로 지정해도 되나?
가능하다. 다만 권한을 최소화하고 변경 이력 관리가 가능한 공유만 사용해야 한다. 쓰기 권한은 배포 담당자에게만 부여한다.
옵션이 회색으로 비활성화되어 변경이 불가능하다.
그룹 정책이 강제된 상태이다. 보안팀 정책을 확인하고 변경 요청 절차를 따른다.
개발 환경에서만 특정 API를 허용하려면 어떻게 하나?
개발 전용 PC OU에 별도 GPO를 적용하여 “VBA 프로젝트 개체 모델 신뢰”를 허용하고 운영 OU에서는 금지한다.
서명이 만료되면 기존 파일도 막히나?
타임스탬프가 있다면 유효 기간 내 서명 시점 기준으로 신뢰가 유지된다. 타임스탬프가 없다면 만료 시 차단될 수 있다.