Technote

보안 입문

연재 깨지지 않는 업데이트 루틴 8부 중 2부

업데이트 순서 — 코어 · 플러그인 · 테마

한 번에 전부 올리면 빠르지만, 깨졌을 때 무엇 때문인지 알 수 없습니다. 순서를 정하고 사이사이에 확인하는 것은 느린 방법이 아니라 원인을 특정할 수 있게 하는 방법입니다.

업데이트 화면에는 대개 “모두 선택” 체크박스가 있습니다. 열두 개의 플러그인과 코어와 테마가 한 번에 올라가고, 3분이면 끝납니다. 그리고 사이트가 깨지면, 그 순간부터 열네 개의 후보를 놓고 원인을 찾게 됩니다.

순서를 지키는 이유는 안전 그 자체가 아닙니다. 원인을 특정할 수 있는 상태를 유지하는 것입니다. 한 번에 하나를 올리고 확인하면, 깨졌을 때 방금 올린 그것이 원인입니다. 이 차이가 5분과 반나절을 가릅니다.

순서 — 아래층부터 올립니다

아래층 → 위층. 사이사이의 확인이 순서의 절반이다

코어를 먼저 올립니다. 위층(플러그인 · 테마)이 아래층을 가정하고 있으므로, 아래를 먼저 최신으로 만든 뒤 위층을 그 위에 맞추는 것이 자연스럽습니다. 반대로 하면 플러그인이 새 코어를 전제로 만들어졌을 때 옛 코어 위에서 오작동할 수 있습니다.

다만 코어가 주 버전(예: 6.x → 7.x)으로 뛰는 경우는 예외가 필요합니다. 이때는 코어를 올리기 전에 플러그인과 테마를 먼저 최신으로 만들어 두는 편이 낫습니다 — 새 코어에 대응한 버전이 이미 나와 있는 경우가 많기 때문입니다. 즉 부 버전은 코어부터, 주 버전은 위층을 먼저 정리한 뒤 코어입니다.

플러그인은 하나씩 올립니다. 전부 한 번에 올리고 싶은 유혹이 가장 큰 단계인데, 여기가 바로 원인 후보가 가장 많은 곳입니다. 열두 개라면 열두 번 확인하는 대신, 중요도로 나누어 사이트의 핵심 기능을 담당하는 플러그인(결제 · 폼 · 회원 · 캐시)은 반드시 단독으로 올리고, 나머지 소품들은 묶어도 괜찮습니다.

테마는 마지막입니다. 화면에 가장 가깝고, 깨졌을 때 가장 눈에 띄며, 자식 테마를 쓰고 있다면 부모 테마 변경이 자식의 오버라이드와 어긋날 수 있습니다.

사이사이의 “확인” 이 절반입니다

순서만 지키고 확인을 건너뛰면 순서를 지킨 의미가 없습니다. 그렇다고 매 단계마다 전수 점검을 할 필요는 없습니다. 30초짜리 확인이면 충분합니다.

단계 사이의 30초 확인 — 전수 점검은 마지막에 한 번만 한다

마지막 줄이 특히 유용합니다. 화면은 멀쩡한데 로그에만 경고가 쌓이는 상태가 있는데, 그것은 지금은 동작하지만 다음 버전에서 깨질 것이라는 예고입니다. 이 신호를 지금 보면 다음 업데이트가 훨씬 쉬워집니다.

순서를 지킬 수 없을 때

현실에서는 순서를 지키기 어려운 경우가 있습니다. 취약점 공지가 나서 특정 플러그인을 즉시 올려야 하는 상황이 대표적입니다. 이때는 순서를 지키는 것보다 빨리 올리는 것이 맞습니다 — 보안 패치는 예외입니다. 다만 그 한 건만 올리고, 나머지 밀린 것들은 평소 순서대로 따로 진행합니다.

반대로 밀린 것이 이미 수십 건이라면 순서로 풀리지 않습니다. 그때는 이 연재의 4회차(스테이징)를 먼저 읽으시길 권합니다.

취약점 공지에 어떻게 대응하는지는 보안 아카이브에서 다루고, 밀린 버전이 커서 순서대로 올리는 것 자체가 위험해진 사이트는 작업 과정에 정리된 절차대로 병렬 검증을 거쳐 옮깁니다.

다음 회차

순서를 정했어도 깨질 수 있습니다. 다음 회차는 그 전에 만들어 두는 되돌림 장치 — 파일과 데이터베이스를 같은 시점에 잡아야 하는 이유입니다.

이 주제의 다른 글

노하우 목록으로

보안 실무

동의와 추적 — 고지 없이 심는 태그의 위험

최소한만 모으고, 모은다는 사실을 알리고, 거부를 존중한다. 원칙은 세 줄이고 대부분의 사고는 한 곳에서 납니다 — 동의를 받기 전에 이미 발사된 태그입니다.

마케터 4분 읽기

₩270,000 · 신청하기