Step 9. 실행 정책과 첫 스크립트 — 윈도우의 안전장치와 정면으로 만나기

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로 저장합니다.

저장할 때 두 가지를 확인하세요:

  1. 파일 형식을 "모든 파일"로 — 그냥 저장하면 hello.ps1.txt가 되는 수가 있습니다
  2. 인코딩을 "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을 만들어 봅시다. 요구사항:

  1. 파일을 만들고 .ps1로 저장 (확장자와 인코딩 확인!)
  2. 내용은 Step 5의 보고서 스타일로: 현재 시각, 실행 중인 프로세스 수, C: 드라이브 여유 공간을 출력
  3. 프로세스가 200개를 넘으면 "프로세스가 많습니다"라는 조건 메시지 추가 (Step 8 복습)
  4. .\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 완료입니다. 사이드바의 체크박스를 눌러 진도를 저장하세요.