하드닝을 시작할 때 대부분 설정 파일부터 엽니다. 그런데 순서가 하나 앞에 있습니다. 지금 이 사이트에서 무엇이든 할 수 있는 사람이 몇 명인지 세는 일입니다. 설정으로 닫은 문이 몇 개든, 열쇠를 가진 사람이 여덟 명이면 지켜야 할 것도 여덟 개입니다.
워드프레스는 역할과 권한 체계를 처음부터 갖추고 있습니다. 도구가 없는 것이 아니라 기본값이 방치되기 쉬울 뿐입니다. 이번 회차는 그 도구를 실제로 쓰는 절차입니다.
관리자 수를 세는 것이 첫 번째 측정입니다
목록은 관리 화면의 사용자 페이지에서도 볼 수 있지만, 명령으로 뽑아 두면 다음 점검 때 비교할 수 있는 기록이 남습니다.
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
wp user list --role=editor --field=user_login
처음 뽑아 보면 목록이 기억보다 깁니다. 제작 때 만든 임시 계정, 외주 업체 계정, 퇴사한 담당자, 연동용으로 만들어진 계정, 그리고 “잠깐 필요해서” 권한을 올려 준 뒤 되돌리지 않은 계정이 남아 있습니다.
관리자 계정 하나는 사이트 권한 전체의 사본입니다. 플러그인 설치 · 파일 편집 · 사용자 추가 · 설정 변경이 전부 됩니다. 계정이 늘어난다는 것은 지켜야 할 비밀번호와 기기가 늘어난다는 뜻이고, 그중 가장 약한 하나가 사이트 전체의 수준이 됩니다.
역할은 기능이 아니라 폭발 반경을 정합니다
편집자는 글을 쓰고 고치고 발행합니다. 플러그인을 설치할 일이 없습니다. 그런데 편집만 하는 사람이 관리자인 사이트가 흔한데, 이유는 대개 “언젠가 한 번 필요했기 때문” 입니다. 그 한 번을 위해 상시 권한을 두는 대신, 필요한 때에 잠깐 올렸다가 되돌리는 편이 낫습니다.
필요한 권한이 기본 역할과 어긋난다면 역할을 하나 만드는 방법도 있습니다. 편집자에 특정 기능 하나만 더한 역할은, 그 사람을 관리자로 올리는 것보다 언제나 좁습니다.
공용 계정은 만들지 않습니다. 여러 사람이 한 계정을 쓰면 누가 무엇을 했는지가 기록에 남지 않고, 사고가 났을 때 어디서부터 봐야 하는지 알 수 없습니다. 한 사람이 떠날 때 비밀번호를 전원이 바꿔야 하는 것도 같은 구조의 비용입니다.
정리 절차 — 지우기 전에 낮춥니다
쓰지 않는 계정을 바로 지우면 딸린 것이 함께 끊깁니다. 연동 플러그인이 그 계정으로 외부 API 를 호출하고 있을 수 있고, 예약 작업이 그 사용자 이름으로 돌고 있을 수 있습니다. 먼저 구독자로 낮추고 한 주 지켜본 뒤 지우면, 무엇이 그 계정에 매여 있었는지가 조용한 장애 대신 눈에 보이는 형태로 드러납니다.
삭제할 때 워드프레스는 그 사용자의 글을 어떻게 할지 묻습니다. 다른 사용자로 이전을 고르지 않으면 글이 함께 사라집니다. 발행된 글이 있는 계정은 반드시 이전을 선택합니다.
같은 화면에서 애플리케이션 비밀번호도 함께 봅니다. 사람이 로그인하지 않아도 API 로 접근하는 경로이고, 한번 만들고 잊히기 쉽습니다. 무엇에 쓰는지 설명할 수 없는 항목은 취소합니다 — 필요하면 다시 만들면 됩니다.
권한 설계와 계정 위생에 관한 글은 보안 아카이브에 더 있고, 운영 중인 사이트의 권한 · 설정 전반을 한 번에 점검받고 싶다면 최적화 지원 사업에 진단이 포함돼 있습니다.
다음 회차
관리자 수를 줄였다면, 남은 관리자 계정 하나가 탈취됐을 때의 피해를 줄일 차례입니다. 다음 회차는 관리 화면에서 코드를 실행할 수 있게 열려 있는 경로를 닫는 상수 두 개입니다.