Step 9. 실행 정책과 첫 스크립트 — 윈도우의 안전장치와 정면으로 만나기
Level 0 — 컴퓨터 조작과 구조의 이해 | 난이도 ★★☆☆☆ | 예상 소요 시간 2~3시간
전제: Step 8 완료. 윈도우 파워쉘에서 진행합니다. 인터넷 연결은 필요 없습니다.
- 준비물: 윈도우 PC, 파워쉘, 메모장.
- 주의: 오늘은 보안 설정을 하나 바꿉니다. "왜 바꾸는가"와 "무엇이 위험해지는가"를 반드시 함께 이해하고 넘어가세요. 이 태도 자체가 보안 공부의 핵심입니다.
- 예고: 이 챕터에는 의도된 실패가 있습니다. 3-2절에서 스크립트는 반드시 실패하고, 그 빨간 오류가 오늘의 주인공입니다. 실패 메시지를 정확히 읽는 연습을 하게 됩니다.
2000년, "ILOVEYOU"라는 이메일이 전 세계를 강타했습니다. 제목만 보면 연애편지 같았지만, 첨부 파일은 스크립트였고, 클릭하는 순간 컴퓨터의 파일을 감염시키고 주소록의 모든 사람에게 자기 자신을 퍼뜨렸습니다. 교훈은 단순합니다: 스크립트는 문서가 아니라 ‘실행되는 명령 묶음’이다. 그래서 윈도우는 파워쉘 스크립트 파일(.ps1)을 기본적으로 "실행 금지" 상태로 둡니다. 이게 오늘의 주제, 실행 정책(Execution Policy)입니다.
1. 학습 목표
이 챕터를 끝내면 다음을 할 수 있습니다:
- 명령 묶음을
.ps1스크립트 파일로 저장하고 실행한다 - 실행 정책(Execution Policy)이 무엇이며 왜 존재하는지 설명한다
- 스크립트가 정책에 막혔을 때 오류 메시지를 읽고 원인을 파악한다
Set-ExecutionPolicy로 내 계정의 정책을 안전하게 조정하고 되돌릴 수 있다- 스크립트에 주석을 달아 "미래의 나"가 읽을 수 있는 파일을 만든다
2. 배경 지식 — 오늘의 도구와 개념
오늘의 도구 한눈에 보기
| 구분 | 내용 |
|---|---|
| 언어·환경 | 파워쉘 5.1 (윈도우 기본 내장), 메모장으로 .ps1 파일 작성 |
| 오늘의 명령어 | .\파일명(스크립트 실행), Get-ExecutionPolicy(정책 확인), Set-ExecutionPolicy -Scope CurrentUser(정책 변경) |
| 필요한 개념 | 스크립트와 프로그램의 차이, 실행 정책의 4단계, 적용 범위(Scope), 주석(#) |
2-1. 스크립트 — 명령의 재사용 단위
지금까지는 명령을 한 줄씩 직접 쳤고, 창을 닫으면 다 날아갔습니다. 스크립트(script)는 이 명령들을 파일에 저장해 둔 것입니다. 파워쉘 스크립트는 확장자가 .ps1입니다. 파일로 남기면 언제든 다시 실행할 수 있고, 다른 사람에게 전달할 수도 있습니다.
장점은 명확합니다:
- 재사용 — 백 번 쳐야 할 작업을 한 번의 실행으로
- 공유 — 동료가 똑같은 작업을 똑같이 실행
- 자동화 — 예약 실행의 기본 단위 (Step 30에서 다룹니다)
2-2. 실행 정책 — "이 스크립트, 믿을 수 있나?"
문제는 이 편리함이 공격자에게도 똑같이 편리하다는 것입니다. 이메일 첨부나 다운로드 파일에 악성 스크립트가 섞여 들어올 수 있습니다. 그래서 윈도우는 스크립트를 실행하기 전에 묻습니다 — "이 파일, 어디서 왔니? 믿을 수 있니?" 이 판단 기준이 실행 정책입니다. 대표적인 단계는 네 가지입니다:
| 정책 | 의미 |
|---|---|
| Restricted | 전부 금지. 스크립트는 한 줄도 실행 안 됨 (윈도우 클라이언트 기본값) |
| RemoteSigned | 인터넷에서 온 파일은 서명 필요, 내가 만든 로컬 파일은 허용 |
| AllSigned | 어디서 왔든 서명된 것만 허용 |
| Unrestricted | 전부 허용 (위험!) |
여기서 "서명"은 "이 파일은 이 제작자가 만들었고 배포 후 변조되지 않았다"는 전자 도장입니다. 지금 단계에서는 존재만 알아두세요.
우리가 오늘 선택할 것은 RemoteSigned입니다. "내가 직접 만든 파일은 실행하되, 인터넷에서 온 낯선 파일은 여전히 경계한다"는, 공부용으로 균형이 좋은 설정입니다.
2-3. Scope — "누구에게 적용할 것인가"
정책을 바꿀 때는 적용 범위(Scope)를 정합니다. 컴퓨터 전체(LocalMachine)에 적용할지, 내 계정(CurrentUser)에만 적용할지. 오늘은 CurrentUser — 내 계정에만 적용합니다. 다른 사용자와 시스템 기본값은 건드리지 않는 최소한의 변경이며, 관리자 권한도 필요 없습니다.
"설정을 바꿀 때는 범위를 최소로" — 이것도 보안의 기본 원칙(최소 권한의 원칙)의 일상 버전입니다.
3. 따라 하기
3-1. 첫 스크립트 파일 만들기
바탕 화면이 아니라, 지금까지 쓰던 연습 폴더(없으면 C:\security-lab을 새로 만드세요)에서 합시다. 메모장을 열어 이렇게 한 줄 씁니다:
Get-Date
그리고 파일 → 다른 이름으로 저장에서 파일명을 hello.ps1로 저장합니다.
저장할 때 두 가지를 확인하세요:
- 파일 형식을 "모든 파일"로 — 그냥 저장하면
hello.ps1.txt가 되는 수가 있습니다 - 인코딩을 "UTF-8(BOM 포함)"으로 — 최신 메모장의 기본값인 "UTF-8"은 BOM이 없어서, 스크립트에 한글이 들어가면 파워쉘이 파일을 엉뚱하게 읽어 오류가 납니다. 오늘의 한 줄은 영어라 당장은 괜찮지만, 지금 습관을 들여 두세요 (자세한 실측은 벽 5에서)
저장 후 폴더에서 확장자가 .ps1인지 꼭 확인하세요. 파일 탐색기의 보기 → 파일 이름 확장자를 켜 두면 속일 수 없게 됩니다.
3-2. 의도된 실패 — 정책에 막히다
파워쉘을 열고 그 폴더로 이동합니다(cd C:\security-lab). 그리고 실행해 봅시다:
.\hello.ps1
윈도우 기본 상태(정책이 Restricted)라면 이런 오류가 뜹니다:
.\hello.ps1 : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\security-lab\hello.ps1 파일을
로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오.
+ CategoryInfo : 보안 오류: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
(2026-09-09 실측. 만약 오류 없이 날짜가 출력됐다면 여러분의 컴퓨터는 이미 정책이 완화된 상태입니다. 3-3절에서 직접 확인해 보세요.)
빨간 오류 — 이게 정상입니다. 실패한 게 아니라, 윈도우의 안전장치가 정확히 일한 겁니다.
출력 읽는 법: "이 시스템에서 스크립트를 실행할 수 없다" — 시스템이 고장난 게 아니라 정책이 막고 있다는 뜻입니다. 오류 종류를 보면 PSSecurityException(보안 예외), UnauthorizedAccess(권한 없음)라고 친절하게 분류돼 있고, 참조 문서(about_Execution_Policies) 힌트까지 줍니다.
왜 .\를 붙였나: .\는 "현재 폴더의"라는 뜻입니다. 파워쉘은 보안상, 현재 폴더의 스크립트라도 이름만으로는 실행해 주지 않습니다. 시스템 명령과 같은 이름의 악성 파일을 속여 실행시키는 수법을 막기 위해서입니다. 앞으로 스크립트 실행은 항상 .\파일명 형태입니다.
3-3. 현재 정책 확인 — Get-ExecutionPolicy
막힌 이유를 확인합시다:
Get-ExecutionPolicy
Restricted
출력 읽는 법: Restricted = "전면 금지" — 2-2절 표의 첫 번째 단계로, 윈도우 클라이언트의 기본값입니다. 여러분 환경에서는 다른 값이 나올 수 있습니다. 그 값이 무엇이든 2-2절 표에서 찾아 의미를 확인해 보세요.
더 자세히 보려면 범위별 목록을 출력합니다:
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
Undefined는 "정해진 값 없음"입니다. 아무것도 정해져 있지 않으면 윈도우 기본값(Restricted)이 적용됩니다. 3-4절에서 CurrentUser에 값을 넣으면, 이 표의 해당 칸이 바뀌는 것을 볼 수 있습니다.
왜 하는가: 보안 설정을 바꾸기 전에 현재 상태를 기록하는 것 — 이건 습관으로 들여 두세요. 나중에 원래대로 되돌리거나, "누가 이 설정을 바꿨나" 조사할 때 출발점이 됩니다.
3-4. 내 계정만 완화 — Set-ExecutionPolicy
이제 정책을 바꿉니다:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
실행 정책 변경
실행 정책을 변경하면 보안 위험에 노출될 수 있습니다. 실행 정책을 변경하시겠습니까?
[Y] 예(Y) [A] 모두 예(A) [N] 아니오(N) [L] 모두 아니오(L) [S] 일시 중지(S) [?] 도움말
(기본값은 "N"입니다):
출력 읽는 법: 윈도우가 스스로 "이거 위험할 수 있는데 진짜 할 거야?"라고 묻습니다. 이런 확인 질문이 뜬다는 자체가 "지금 보안과 관련된 변경을 하고 있다"는 신호입니다. 내용을 읽고 Y를 입력합니다.
각 부분의 의미: RemoteSigned(2-2절에서 배운 균형 설정), -Scope CurrentUser(내 계정에만). 즉, "나만, 내가 만든 스크립트만, 실행 가능하게."
다시 확인해 봅시다:
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine Undefined
CurrentUser 칸만 RemoteSigned로 바뀌었습니다. 컴퓨터 전체(LocalMachine)는 여전히 손대지 않은 상태입니다 — 최소한의 변경이 정확히 적용됐습니다.
3-5. 재도전 — 드디어 성공
.\hello.ps1
2026년 9월 9일 수요일 오전 8:55:03
(날짜는 실행 시점에 따라 다릅니다.)
성공입니다. 같은 파일인데 정책 하나가 실행을 좌우했습니다.
여기서 멈추고 생각해 봅시다 — 왜 이게 보안과 관련되는가: 우리는 지금 "공부하기 위해" 이 잠금을 풀었습니다. 그런데 악성코드도 똑같은 명령으로 이 잠금을 풀려 시도합니다. 실제 침해 사고에서 공격자가 초기에 실행하는 명령 중 하나가 실행 정책 완화입니다. 그래서 보안 모니터링에서는 "누가 Set-ExecutionPolicy를 실행했나"가 감시 대상입니다. 오늘 여러분은 이 명령을 배우기 위해 썼지만, 어딘가의 분석가는 같은 명령을 공격의 흔적으로 추적합니다. 도구 자체가 아니라 맥락이 정상과 공격을 가릅니다.
3-6. 스크립트 키우기 — 여러 줄의 힘
한 줄짜리는 아쉬우니, Step 7~8의 기술을 담아 봅시다. 메모장으로 hello.ps1을 다시 열어 이렇게 바꿉니다:
$today = Get-Date
"오늘은 $today"
"이 스크립트는 파일에서 실행되었습니다."
저장 전 확인: 이제 한글이 들어갔으니, 인코딩을 반드시 "UTF-8(BOM 포함)"으로 저장하세요. 저장하고 다시 실행합니다:
.\hello.ps1
오늘은 09/09/2026 08:55:03
이 스크립트는 파일에서 실행되었습니다.
세 줄이 순서대로 실행됩니다. 이것이 스크립트입니다 — 창을 닫아도 파일은 남고, 언제든 같은 동작을 재현할 수 있습니다.
예측해 보기: 이 파일을 USB에 담아 다른 컴퓨터로 옮기면 실행될까요? (정답: 상대 컴퓨터의 실행 정책이 Restricted라면 막힙니다. 그리고 "인터넷 등 외부에서 온 파일" 표시가 붙으면 RemoteSigned에서도 추가 확인이 필요할 수 있습니다. 스크립트 배포가 생각만큼 간단하지 않은 이유 — 정책은 각 컴퓨터가 각자 갖고 있기 때문입니다.)
3-7. 스크립트에 주석 달기 — 미래의 나에게 쓰는 메모
스크립트가 길어지기 시작하면 "이 줄이 뭐였지?" 하는 순간이 옵니다. 그래서 코드 사이에 설명을 끼워 넣는 주석(comment)이 있습니다. 파워쉘에서는 # 뒤가 전부 주석입니다 — 컴퓨터는 이 부분을 실행하지 않고 무시합니다:
# 작성일: 2026-09-09
# 용도: 매일 아침 컴퓨터 상태 점검
$today = Get-Date
"오늘은 $today" # 화면에 날짜 출력
규칙은 단순합니다: #부터 그 줄의 끝까지는 사람만 읽는 메모입니다. 코드 앞머리에 쓰면 "이 파일은 무엇인가"를 설명하고, 줄 끝에 쓰면 그 줄의 메모가 됩니다.
왜 이게 중요한가: "주석은 6개월 뒤의 나에게 보내는 편지다"라는 말이 있습니다. 6개월 뒤의 나는 사실상 남입니다. 그리고 보안 분석 현장에서는 남이 쓴 스크립트를 해독하는 일 자체가 업무입니다 — 공격자가 남기고 간 스크립트에 어떤 명령이 숨어 있는지 읽어내는 것. 주석이 잘 달린 코드는 분석이 빠르고, 주석 없는 코드는 작성자 본인도 헤맵니다.
실무 습관 제안: 오늘부터 스크립트 맨 위에 세 줄을 습관화합시다 — ① 만든 날짜, ② 무엇을 하는 파일인지, ③ 실행 전 확인할 것(예: "C:\security-lab에서 실행"). 세 줄이 그 파일의 신분증입니다.
4. 미션과 연습문제
미션 — 나만의 점검 스크립트
지금까지 배운 것을 모아, checkup.ps1을 만들어 봅시다. 요구사항:
- 파일을 만들고
.ps1로 저장 (확장자와 인코딩 확인!) - 내용은 Step 5의 보고서 스타일로: 현재 시각, 실행 중인 프로세스 수, C: 드라이브 여유 공간을 출력
- 프로세스가 200개를 넘으면
"프로세스가 많습니다"라는 조건 메시지 추가 (Step 8 복습) .\checkup.ps1로 실행해 결과 확인
연습문제
문제 1. Restricted와 RemoteSigned의 차이를 설명하세요.
문제 2. hello.ps1을 쳤는데 실행이 안 됐습니다. 명령의 어떤 부분이 빠졌을까요?
문제 3. Set-ExecutionPolicy RemoteSigned를 쳤더니 권한 오류가 났습니다. 무엇이 문제일까요?
문제 4. 정책을 RemoteSigned로 바꿨는데 인터넷에서 받은 스크립트가 여전히 실행되지 않습니다. 왜일까요?
5. 모범 답안과 완료 기준
미션 모범 답안
# checkup.ps1 - 매일 아침 컴퓨터 상태 점검
"지금 시각: $(Get-Date)"
$proc = (Get-Process).Count
"실행 중인 프로세스: $proc 개"
if ($proc -gt 200) { "프로세스가 많습니다" }
$free = [math]::Round((Get-PSDrive C).Free / 1GB, 1)
"C: 드라이브 여유 공간: $free GB"
실행 결과 예시 (2026-09-09 실측):
지금 시각: 09/09/2026 09:05:33
실행 중인 프로세스: 446 개
프로세스가 많습니다
C: 드라이브 여유 공간: 375.8 GB
(숫자는 컴퓨터마다 다릅니다. 실측 환경에서는 프로세스가 446개라 조건 메시지가 출력됐습니다. 200 이하라면 그 줄만 안 뜨면 정상입니다.)
검증하는 법: 한 줄씩 창에 쳐서 되던 코드를 파일에 옮겼는데 안 되면, ① 확장자가 .ps1인지, ② .\를 붙였는지, ③ 현재 폴더가 파일 있는 곳인지(cd로 이동)를 순서대로 확인하세요. 이 3점 체크가 초보 시절 스크립트 문제의 대부분을 해결합니다.
심화: Set-ExecutionPolicy Restricted -Scope CurrentUser로 원래대로 되돌릴 수도 있습니다. 공부가 끝난 컴퓨터, 특히 가족과 공용으로 쓰는 컴퓨터라면 되돌려 두는 것도 좋은 습관입니다. "설정을 바꿀 수 있는 사람은 되돌릴 수도 있어야 한다" — 이것도 실무 원칙입니다.
연습문제 해답
문제 1 해답. Restricted는 모든 스크립트 실행을 금지하는 윈도우 기본값입니다. RemoteSigned는 내가 직접 만든 로컬 스크립트는 실행하되, 인터넷 등 외부에서 온 파일은 서명을 요구해 경계를 유지하는 설정입니다. 공부용으로 균형이 좋은 선택이 RemoteSigned입니다.
문제 2 해답. .\가 빠졌습니다. 파워쉘은 보안상 현재 폴더의 스크립트도 이름만으로는 실행하지 않습니다. 항상 .\hello.ps1처럼 "이 폴더의 이 파일"이라고 주소를 명시해야 합니다.
문제 3 해답. -Scope CurrentUser를 빼먹었기 때문입니다. 범위를 지정하지 않으면 컴퓨터 전체(LocalMachine) 설정을 바꾸려 해서 관리자 권한을 요구합니다. -Scope CurrentUser를 붙이면 내 계정만 바뀌며 관리자 권한 없이 가능합니다.
문제 4 해답. RemoteSigned는 "내가 만든 로컬 파일"만 허용하고, 인터넷에서 온 파일에는 "외부 파일" 표시가 붙어 서명을 요구하기 때문입니다 — 이게 이 정책의 존재 이유입니다. 신뢰할 수 있는 파일이라면 파일 우클릭 → 속성에서 "차단 해제"를 체크할 수 있지만, 내용을 모르는 스크립트라면 차단 상태가 정답입니다.
완료 기준 체크리스트
- [ ] .ps1 파일을 올바른 확장자와 인코딩(UTF-8 BOM 포함)으로 저장할 수 있다
- [ ] 실행 정책에 막히는 오류를 보고 원인을 설명할 수 있다
- [ ] 실행 정책이 왜 존재하는지(악성 스크립트 방지) 말할 수 있다
- [ ] RemoteSigned와 Restricted의 차이를 설명할 수 있다
- [ ] Set-ExecutionPolicy로 내 계정 설정을 바꾸고 확인하고 되돌릴 수 있다
- [ ] 스크립트에 주석을 달 수 있다
- [ ] 미션: checkup.ps1을 완성했다
6. 흔한 실수와 해결
벽 1. 저장했는데 파일이 안 보이거나 실행이 안 된다
증상: hello.ps1을 실행했는데 "파일을 찾을 수 없다".
원인: 메모장이 hello.ps1.txt로 저장했을 가능성이 높습니다. 탐색기가 확장자를 숨기고 있으면 겉보기엔 멀쩡해 보입니다.
해결: 탐색기 보기 → 파일 이름 확장자를 켜고 실제 이름을 확인하세요. .txt가 붙어 있으면 이름을 바꿔 떼어내세요.
벽 2. .\를 빼먹었다
증상: hello.ps1이라고만 치면 아무 반응이 없거나 명령을 못 찾습니다.
원인: 파워쉘은 현재 폴더의 스크립트를 이름만으로 실행하지 않습니다(보안 설계).
해결: 항상 .\hello.ps1 형태로. "점 슬래시"가 "이 폴더의 이 파일을 실행해"라는 주소 표기라고 기억하세요.
벽 3. Set-ExecutionPolicy에서 권한 오류
증상: 빨간 오류 "레지스트리 키에 대한 액세스가 거부되었습니다"류.
원인: -Scope CurrentUser를 빼먹으면 컴퓨터 전체 설정을 바꾸려 해서 관리자 권한을 요구합니다.
해결: -Scope CurrentUser를 반드시 붙이세요. 굳이 전체를 바꿀 필요가 있다면 관리자 파워쉘이 필요하지만, 지금 단계에서는 CurrentUser면 충분합니다.
벽 4. 정책을 바꿨는데도 안 된다
증상: RemoteSigned로 바꿨는데 여전히 실행이 안 됩니다.
원인 세 가지 후보: ① 파일이 인터넷에서 다운로드된 것이라 "외부 파일" 표시가 붙은 경우, ② 회사/학교 컴퓨터라 그룹 정책이 덮어쓰는 경우, ③ 설정을 바꾼 것과 다른 창/다른 계정에서 실행하는 경우.
해결: ①은 파일 우클릭 → 속성에서 "차단 해제"가 보이면 체크. ②는 조직의 관리 정책이 우선하므로 개인 연습용 컴퓨터에서 하세요. ③은 Get-ExecutionPolicy -List로 스코프별 실제 적용 값을 확인하면 원인이 보입니다.
벽 5. 한글이 들어간 스크립트가 이상한 오류를 낸다
증상: 한글을 넣어 저장한 스크립트를 실행하면 문자열에 " 종결자가 없습니다 같은 파싱 오류가 납니다. 따옴표도 분명 닫았는데 말입니다.
원인: 인코딩 문제입니다 (2026-09-09 실측 확인). 최신 메모장은 기본적으로 "UTF-8(BOM 없음)"으로 저장하는데, 파워쉘 5.1은 BOM이 없는 .ps1 파일을 한국어 윈도우의 옛 방식(ANSI)으로 읽습니다. 한글이 깨지면서 따옴표 위치까지 어긋나 저 오류가 납니다.
해결: 메모장에서 다른 이름으로 저장 → 인코딩을 "UTF-8(BOM 포함)"으로 선택해 다시 저장하세요. 영어로만 된 스크립트는 상관없지만, 한글을 쓰는 순간 이 설정이 필수입니다.
벽 6. 스크립트가 열리기만 하고 실행이 안 된다
증상: 더블클릭했더니 메모장이 열립니다.
원인: .ps1 파일의 더블클릭 동작은 "실행"이 아니라 "편집"입니다. 이것도 의도된 안전 설계입니다 — 첨부 파일을 더블클릭하는 것만으로 실행되면 안 되니까요.
해결: 스크립트 실행은 항상 파워쉘 창에서 .\파일명으로. "더블클릭만으로는 절대 실행되지 않는다"는 이 한 줄이, 메일 첨부 스크립트에 감염되는 수많은 사고를 막아 왔습니다. 보안에서 "조금 불편한 것"은 대부분 이유가 있는 설계입니다.
7. 정리
오늘의 개념
| 개념 | 한 줄 설명 |
|---|---|
| 스크립트 (.ps1) | 명령들을 저장한 파일 — 재사용·공유·자동화의 단위 |
| 실행 정책 | 스크립트를 실행해도 될지 정하는 윈도우의 안전장치 |
| Restricted / RemoteSigned | 전면 금지 / 외부 파일은 경계·로컬 파일은 허용 |
| Scope CurrentUser | 내 계정에만 적용 — 최소한의 변경 |
| 주석 (#) | 컴퓨터는 무시하고 사람만 읽는 메모 |
오늘의 명령어
| 명령 | 하는 일 |
|---|---|
.\hello.ps1 |
현재 폴더의 스크립트 실행 (.\ 필수) |
Get-ExecutionPolicy |
현재 정책 확인 |
Get-ExecutionPolicy -List |
범위(Scope)별 정책 확인 |
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser |
내 계정만 완화 |
Set-ExecutionPolicy Restricted -Scope CurrentUser |
원래대로 되돌리기 |
명령어보다 중요한 감각
실행 정책은 ILOVEYOU 같은 스크립트 악성코드 시대의 교훈에서 나온 장치입니다. 오늘 우리는 이걸 공부 목적으로 완화했지만, 실전에서는 이 설정의 변경 자체가 감시 대상입니다. "편의를 위해 잠금을 풀 때는, 무엇이 위험해지는지 알고 풀어라" — 이 원칙은 앞으로 수많은 보안 설정에서 반복됩니다.
그리고 하나 더: 실행 정책은 완벽한 방어막이 아니라 "1차 관문"입니다. 공격자들은 우회 기법을 알고 있고, 마이크로소프트도 이 정책을 "보안 경계가 아니라 실수 방지 장치"로 설명합니다. 실제 방어는 정책 + 감시(누가 바꿨나 기록) + 최소 권한의 조합 — "단 하나의 완벽한 방어는 없다"는, 이 책 전체를 관통하는 생각의 첫 사례입니다.
전부 체크되면 Step 9 완료입니다. 사이드바의 체크박스를 눌러 진도를 저장하세요.