LabHub
배우기 러닝패스 코스

폐쇄망 현장 — 방산·국방 도메인 · 계정과 권한을 최소로 줄이기 · 이론

권한은 줄어들지 않는다 — 줄이는 일을 따로 해야 한다

LabHub 에서 이어서 보기

한 줄 요약

권한은 필요할 때마다 더해지고 필요가 끝나도 그대로 남는다. 그래서 "누가 무엇을 할 수 있는가" 는 사람의 기억이 아니라 계정·역할·권한 자료에서 계산해 내야 하는 값이고, 줄이는 일은 누군가 일정을 잡아 따로 해야 하는 작업이다.

왜 이게 필요했나

인도 직후의 권한은 대개 맞다. 그때는 누가 무엇을 하는지 모두가 알고, 역할도 몇 개 되지 않는다. 문제는 그 다음이다. 야간 작업을 위해 임시로 준 권한이 남고, 사람이 부서를 옮기면 새 역할이 붙지만 옛 역할은 떨어지지 않으며, 퇴직 처리는 인사 시스템에서만 일어나고 계정은 살아 있다. 한 해가 지나면 아무도 전체 그림을 말할 수 없게 된다.

폐쇄망에서는 이것이 단순한 위생 문제가 아니다. 망 밖으로 나가는 길이 원래 없는 곳에서, 자료를 밖으로 옮길 수 있는 유일한 통로는 그럴 권한을 가진 계정이다. 그래서 감리가 인도물에 대해 묻는 첫 질문 가운데 하나가 계정 목록과 권한 목록이고, 두 번째 질문은 "그 권한이 왜 필요한가" 다. 두 번째 질문에 답하지 못하는 권한은 있어서는 안 되는 권한이다.

공개 표준도 같은 자리를 짚는다. [NIST SP 800-53 Rev 5](https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final)의 접근 통제 계열은 계정 관리, 최소 권한, 직무 분리를 각각 다른 통제로 나눠 놓았고, 방산 협력사가 자주 대조하는 [NIST SP 800-171 Rev 3](https://csrc.nist.gov/pubs/sp/800/171/r3/final)도 접근 통제를 첫 요구 계열로 둔다. 셋이 따로인 이유는 셋이 서로를 대신하지 못하기 때문이다. 계정을 잘 만들어도 권한이 넓으면 소용이 없고, 권한을 좁혀도 한 사람이 승인과 실행을 겸하면 승인은 형식이 된다.

어떻게 동작하나

계산의 순서는 늘 같다.

첫째, 유효 권한을 편다. 계정에는 역할이 붙고, 역할은 다른 역할을 상속한다. 화면에 보이는 것은 "역할 두 개" 지만 실제로 쥔 것은 상속을 전부 편 권한의 합집합이다. 여기서 처음 걸리는 것이 순환 상속이다. 역할 A가 B를 상속하고 B가 다시 A를 상속하면, 소박하게 짠 재귀는 끝나지 않는다. 방문한 역할을 기억하며 내려가야 하고, 그렇게 펴 보면 두 역할이 사실상 같은 권한 집합이라는 것이 드러난다. 그 사실 자체가 발견이다.

둘째, 쓰이지 않는 권한을 가른다. 가진 권한과 관측 기간에 실제로 쓴 권한을 견주면, 한 번도 쓰이지 않은 권한이 남는다. 이것은 "지워도 되는 권한" 과 같은 말이 아니다. 분기에 한 번 쓰는 복구 권한은 관측 기간에 안 보일 수 있다. 그래서 목록은 판정이 아니라 질문지로 쓴다.

셋째, 계정 쪽을 본다. 마지막 접속이 기준일에서 멀어진 계정, 인사 기록에 퇴직으로 남은 계정. 여기서 반드시 지킬 것이 하나 있다. 기준일을 "오늘" 로 잡으면 같은 자료에서 어제와 오늘의 답이 달라진다. 감사 대응 자료에서 이것은 치명적이다. 기준일은 자료에 적어 놓고 그 값을 쓴다.

넷째, 조합을 본다. 직무 분리는 권한 하나하나가 아니라 에 대한 규칙이다. 승인과 실행, 감사 기록 읽기와 지우기처럼 함께 쥐면 통제가 무력해지는 쌍을 목록으로 두고, 유효 권한에서 그 쌍을 찾는다.

다섯째, 도달 가능한 것까지 본다. 권한을 부여할 수 있는 권한을 가진 계정은, 지금 가진 것보다 많은 것을 할 수 있다. 자기에게 역할을 하나 더 붙이면 되기 때문이다. 그리고 그렇게 붙인 역할이 또 다른 역할을 부여할 수 있다면 한 걸음 더 간다. 한 단계만 보고 끝내면 가장 위험한 계정을 놓친다. 이것은 그래프를 끝까지 따라가는 문제다.

현장에서 만나는 모습

한 인도 현장에서 계정 축소를 한 적이 있다. 눈에 띈 것은 관리자 계정이 아니라 이름이 "이관계정" 인 계정이었다. 이관이 끝난 지 오래여서 아무도 쓰지 않았고, 마지막 접속은 여덟 달 전이었다. 그런데 그 계정에 붙은 역할은 다른 역할을 부여할 수 있었고, 그 역할이 부여할 수 있는 역할 중 하나가 감사 기록을 지울 수 있었다. 아무도 쓰지 않는 계정이 사실상 가장 강한 계정이었던 셈이다. 축소 작업에서 실제로 위험을 줄인 것은 관리자 권한을 다듬은 일이 아니라 그 계정 하나를 없앤 일이었다.

또 하나 자주 보는 것은 중복 배정이다. 이미 상위 역할을 가진 사람에게 하위 역할이 따로 붙어 있는 경우다. 권한은 하나도 늘지 않으므로 위험은 같지만, 목록을 읽는 사람에게는 계속 잡음이 된다. 회수해도 유효 권한이 그대로라는 것을 계산으로 보여 줄 수 있으면, 이 정리는 논쟁 없이 끝난다.

세 번째로 자주 만나는 것은 축소 작업이 한 번으로 끝난다고 믿는 것이다. 권한을 줄이는 일은 청소가 아니라 주기적인 작업이다. 한 번 줄여 놓아도 반년이 지나면 같은 목록이 다시 부풀어 있다. 그래서 축소의 결과물로 가장 값어치 있는 것은 줄인 권한의 개수가 아니라 그 판정을 다시 돌릴 수 있는 스크립트와 기준일 자료다. 다음 번에 같은 스크립트를 돌려 숫자를 견주면, 그 사이에 무엇이 늘었는지가 표로 나온다. 인도 문서에 축소 결과만 적고 그 계산을 남기지 않으면, 반년 뒤의 담당자는 처음부터 다시 시작한다.

다음 실습에서 할 것

18개 계정과 9개 역할, 그리고 석 달치 사용 기록으로 유효 권한을 펴고, 쓰이지 않는 권한·휴면 계정·직무 분리 위반·권한 상승 경로를 차례로 찾습니다. 그 다음 배정 하나하나에 회수와 유지를 정한 축소안을 만들고, 그것을 적용한 상태로 같은 판정을 다시 돌려 위반이 실제로 줄었는지 숫자로 확인합니다. 순환 상속과 여러 걸음짜리 상승 경로가 섞여 있으니, 한 단계만 보는 구현은 중간에서 막힙니다.