인증 프로토콜·접근통제 모델
직원이라는 신원은 확인했다. 그러나 그 직원은 옆 조직의 문서를 읽으려 하고, 단말의 보안상태는 한참 전에 확인한 값이다. 로그인 화면에 초록색 표시가 떠 있다는 이유로 문서를 제공하면 인증 성공을 현재 업무 권한으로 바꾼 셈이다.
로그인한 직원도 모든 문서를 반출할 수는 없다
직원이라는 신원은 확인했다. 그러나 그 직원은 옆 조직의 문서를 읽으려 하고, 단말의 보안상태는 한참 전에 확인한 값이다. 로그인 화면에 초록색 표시가 떠 있다는 이유로 문서를 제공하면 인증 성공을 현재 업무 권한으로 바꾼 셈이다.
조직 A의 직원 U1이 앞 절의 지급 문서 M을 포함한 문서를 반출하려 한다. U1은 이미 로그인했고 M은 검증된 상태지만, 이것만으로 어떤 목록을 어느 단말로 내보낼 권한이 생기지는 않는다. 이 절에서는 U1의 한 요청을 고정하고 역할·조직·수량·단말·승인을 차례로 확인한다.
이 절은 인증의 결과를 접근통제의 입력으로 사용하되, 각 요청에서 주체·객체·행위·정책을 다시 대조한다. 예제는 조직별 문서 반출이라는 좁은 자체 정책이며 실제 서비스의 허용률이나 법적 준수 결과가 아니다.
인증과 인가를 먼저 나누기
식별·인증·인가에서 신원 주장을 확인하는 과정과 특정 행동의 권한을 결정하는 과정을 나누었다. 암호 기본도구의 유효한 서명은 해당 키와 메시지의 증거이지 모든 업무를 허용하는 표가 아니다. 이제 인증된 주체의 현재 역할과 요청 조건을 실제 허용 규칙에 연결한다.
1. 누가 어떤 근거로 권한을 정하는가
접근통제 모델은 주체, 객체, 행위와 정책근거를 이용해 권한 결정을 구조화한 모델이다. 인증된 주체라는 정보는 판단의 입력이며, 그 자체로 특정 객체에 대한 권한은 아니다.
임의적 접근통제(DAC)는 정해진 범위 안에서 객체 소유자 등이 접근 권한의 부여를 결정하는 모델이다. 강제적 접근통제(MAC)는 일반 사용자의 재량으로 바꿀 수 없는 중앙 정책과 보안 등급·범주 등을 통해 접근을 제한하는 모델이다. 여기의 MAC은 메시지 인증코드나 네트워크 인터페이스의 주소가 아니다.[CT-C06]
역할 기반 접근통제(RBAC)는 사용자에게 허용된 역할과 역할에 연결된 권한 및 제약을 통해 접근을 결정하는 모델이다. 속성 기반 접근통제(ABAC)는 주체·객체·행위·환경의 속성과 정책 규칙을 평가해 접근을 결정하는 모델이다. 실제 시스템은 역할을 안정적인 권한 묶음으로 사용하면서 현재 문서의 조직과 단말 상태 같은 속성을 함께 볼 수 있다.[CT-C06][CT-C07]
소유자 재량, 중앙 등급, 역할과 속성은 제품을 세대순으로 나열한 이름이 아니다. 어떤 근거를 누가 관리하고 어떤 경우에 실패하는지 비교해야 한다.
모델의 선택 근거와 운영 부담
| 중심 근거 | 맞는 요구의 예 | 관리할 산출물 | 실패하기 쉬운 경계 |
|---|---|---|---|
| DAC: 소유자의 위임 | 작은 협업 문서의 공유 | 소유자·허용 주체·행위 목록 | 과도한 재공유와 소유자 변경 |
| MAC: 중앙의 보안 규칙 | 임의 공유로 넘을 수 없는 등급·범주 | 분류 기준·표지·중앙 정책 | 잘못 붙인 등급과 예외 운영 |
| RBAC: 직무별 권한 묶음 | 반복되는 상담·반출·승인 직무 | 사용자–역할, 역할–권한 관계 | 퇴직자의 역할 잔존·불필요한 겸직 |
| ABAC: 요청의 속성 | 같은 조직·관리 단말·현재 조건 | 속성 발급자·시각·규칙·판정 기록 | 위조·누락·오래된 속성과 정책 충돌 |
이 표는 자체 선택 예이며 특정 모델이 다른 모델보다 항상 강하다는 순위가 아니다. RBAC에도 추가 제약을 둘 수 있으므로 “역할 모델은 문맥을 전혀 볼 수 없다”는 비교는 틀리다. 반대로 모든 속성 조합마다 새 역할을 만들면 역할이 늘어나 변경·감사가 어려워질 수 있다. 안정적인 직무와 자주 바뀌는 조건의 관리 책임을 분리한다.[CT-C07]
2. 역할 부여·활성화·업무 승인도 서로 다르다
가상 직원 U1에게 viewer와 exporter 역할을 부여했다고 하자. 역할 부여는 사용자가 취할 수 있는 역할의 범위를 정하고, 활성화는 그 세션이나 요청에서 사용할 역할을 선택한다. 활성화된 역할도 사용자에게 실제로 허용되어 있어야 하며, 그 역할에 연결된 행위와 추가 제약을 통과해야 한다. NIST의 RBAC 설명은 사용자–역할, 역할–권한과 역할 활성화의 관계를 구분한다.[CT-C07]
viewer는 문서 조회만, exporter는 반출 요청만, approver는 별도 반출 승인만 가능하도록 정한다. 특정 직원이 업무상 여러 역할을 가져야 하더라도 “자기 반출 요청을 자기가 승인”하는 것은 별도의 직무분리 규칙으로 막을 수 있다. 역할을 가진 사람이 두 번 승인한 기록은 서로 다른 두 사람의 검토가 아니다.
역할 이름을 요청 본문에 써서 보낸 것은 권한의 증거가 아니다. 사용자–역할 관계의 담당 시스템에서 현재 허용 여부를 확인하고, 객체의 조직·요청 행위·승인 대상도 신뢰할 수 있는 기록과 대조한다. 로그인 당시 복사한 역할 목록을 계속 쓰면 나중의 권한 회수가 반영되지 않을 수 있다.
3. 인증 단계를 늘리는 것과 인증요소를 늘리는 것
인증요소는 신원 주장을 뒷받침하는 증거의 종류로, 알고 있는 것·가지고 있는 것·신체적 특성으로 구분할 수 있다. 다중요소 인증(MFA)은 서로 다른 종류의 인증요소를 결합하여 인증하는 방식이다. 비밀번호와 서버에 보내는 별도 PIN은 둘 다 지식 요소이므로 두 번 입력했다고 자동으로 두 요소가 되지 않는다.[CT-C08]
반면 PIN이 손에 가진 암호 인증장치를 그 장치에서 활성화하고 그 장치의 키 보유를 증명하는 구성은 PIN의 지식과 장치의 소유를 함께 사용할 수 있다. 생체 비교도 NIST SP 800-63B-4에서는 단독 인증수단으로 취급하지 않고 물리적 인증수단과 결합한다. 인증장치의 키 보호, 사용자 확인, 등록·분실·복구 절차를 실제로 확인해야 한다.[CT-C08]
여기서 “두 요소”는 제품명이나 화면 수를 세는 것이 아니다. 실제로 증명한 요소와 그 결합 조건을 기록해야 하며, 이 설명만으로 특정 보증수준에 적합하다고 인증하지 않는다.
3.1 재전송 저항성과 피싱 저항성
인증 프로토콜은 메시지와 검증 순서를 통해 계정에 연결된 비밀·키의 통제를 확인한다. 서버가 이번 인증에 사용할 새 질문값을 보내고 응답을 그 값과 연결하면, 지난번 응답을 그대로 내는 재전송을 구별할 수 있다. 일회용 비밀번호도 허용 시간 안에서 한 번만 수락하는 등 해당 방식의 규칙을 지켜야 한다.[CT-C08]
그러나 사용자가 가짜 사이트에 직접 입력한 일회용 코드를 공격자가 진짜 사이트로 즉시 전달할 수 있다. 그래서 수동 입력 코드는 재전송을 통제하더라도 그 사실만으로 피싱에 저항한다고 보지 않는다. NIST는 채널 결합과 검증자 이름 결합을 구별하며, WebAuthn을 검증자 이름에 인증 출력을 결합하는 표준의 예로 설명한다.[CT-C08]
실제 서비스는 검토된 인증 구현으로 보호채널·계정에 연결된 키·이번 요청·검증자 결합·필요한 사용자 확인을 검증한다. 서명 하나만 수학적으로 맞다고 인증을 완료하지 않는다. 이 순서는 책임과 실패 지점을 읽기 위한 설명이며 새 인증 프로토콜이나 완전한 WebAuthn 검증기를 구현하는 규격이 아니다.
4. 로그인 뒤에도 남는 세션과 회수 문제
인증된 세션은 한 인증 사건 뒤의 여러 상호작용을 그 사건에 연결하여 관리하는 상태다. 세션을 나타내는 비밀값을 사용하면 매 요청마다 비밀번호를 다시 입력하지 않아도 되지만, 그 비밀값이 탈취되면 공격자가 세션을 이어 쓸 위험이 있다. NIST는 세션의 연결, 전체·비활동 시간 제한, 재인증과 종료를 별도의 관리 대상으로 다룬다.[CT-C08]
가상 문서 서비스는 관리된 인증 구성으로 세션을 만들고 서버에서 만료·종료 상태를 검사한다. 반출처럼 중요한 요청은 현재 계정·역할 상태도 담당 시스템에 확인하며, 조회가 실패하면 과거 성공값으로 허용하지 않는다. 이 온라인 확인은 가용성 의존성을 늘리므로 반출 보류와 재시도 안내를 운영 절차에 포함한다.
사용자가 다시 인증했다고 회수된 exporter 역할이 살아나는 것은 아니다. 인증수단 분실 시에는 계정 복구와 기존 인증수단 무효화, 영향 세션 종료를 별도로 확인한다. 복구 후에도 기존의 요청·문서 권한과 승인 조건을 다시 적용하며, 고객센터의 편의 절차로 반출 정책을 우회하지 않는다.
5. 실제 정책 CT-A1: 조직별 문서 반출
자체 정책 CT-A1은 한 번의 반출 요청만 판단한다. 모든 대상 문서는 서버가 확정한 동일 조직의 문서 목록이며, 목록·버전·요청 식별자는 판정부터 실행까지 변경되지 않도록 고정한다. 목록이 바뀌면 승인과 인가를 새로 받는다. 요청자가 보내는 조직·역할·단말 상태를 그대로 권위 있는 속성으로 사용하지 않는다.
| 정책 항목 | 허용 조건 | 확인 근거 |
|---|---|---|
| 인증·세션 | 인증된 세션이 현재 유효함 | 인증 담당의 세션 기록 |
| 계정·역할 | 계정이 활성이고 현재 exporter 역할이 허용됨 | 계정·권한 담당의 이번 요청 조회 |
| 조직 | 주체 조직과 서버가 확인한 모든 대상 문서의 조직이 일치함 | 계정 정보와 문서 원장 |
| 행위·수량 | 행위가 export, 문서 수가 정수이며 1 이상 100 이하 | 서버가 확정한 반출 목록 |
| 단말 | 관리 단말이며 상태 근거의 나이가 0초 이상 60초 미만 | 신뢰한 단말 관리자의 근거·시각 |
| 추가 승인 | 20개 이하는 불필요, 21개 이상은 요청자가 아닌 서로 다른 승인권자 두 명 이상 | 같은 요청·목록 버전에 대한 유효한 승인 기록 |
표의 조건은 모두 함께 만족해야 한다. 여기서 나이는 같은 신뢰 시간 기준의 요청 시각에서 단말 상태 관측 시각을 뺀 값이다. 59초는 통과하지만 60초는 통과하지 않으며, 음수는 미래 시각의 잘못된 근거로 처리한다. 60초 미만은 정책상 허용하는 근거 나이이지 그 사이 단말 상태가 절대로 바뀌지 않았다는 보장이 아니다.
승인권자 두 명은 승인 기록의 줄 수가 아니라 신뢰할 수 있는 서로 다른 주체 ID로 센다. 두 사람 모두 해당 조직·요청의 승인 권한이 현재 유효하고, 요청자 자신이 아니며, 승인한 목록 버전이 일치해야 한다. 반복 기록으로 두 사람을 채우지 않는다. 누락·잘못된 형식·출처 불명·확인 불가 입력은 허용으로 메우지 않고 원인과 함께 보류한다.
수량 100개는 이 자체 예제의 요청당 한도다. 사용자가 여러 요청으로 나누는 행위까지 일일 누적량으로 통제한 정책은 아니며, 그런 요구가 있으면 기간별 누적 사용량을 별도로 일관되게 관리해야 한다. 이 예의 범위를 전체 정보유출 방지로 확대하지 않는다.
6. 직접 판정: 같은 로그인, 다른 결과
자체 시험 CT-A2의 기준 입력은 U1의 유효한 인증 세션, 활성 계정, 현재 허용된 exporter, 주체·문서 조직 ORG-A, export 행위, 문서 10개, 관리 단말과 10초 된 유효한 상태 근거, 추가 승인 없음이다. 이 입력의 값·출처·시간 기준은 모두 확인된 것으로 가정한다. 각 행은 기준 입력에서 표의 조건만 바꾸는 독립 시험이며 이전 행의 변경을 누적하지 않는다.
| 시험 | 기준에서 바꾼 조건 | 판정 | 이유 |
|---|---|---|---|
| A1 | 변경 없음 | 허용 | 모든 조건 충족 |
| A2 | 단말 근거 나이 59초 | 허용 | 60초 미만 |
| A3 | 단말 근거 나이 60초 | 거부 | 나이 한도 도달 |
| A4 | 문서 21개, 유효한 승인권자 U2·U3 | 허용 | 요청자가 아닌 서로 다른 두 명 |
| A5 | 문서 21개, U2 승인 기록 두 번 | 거부 | 승인자는 한 명 |
| A6 | 대상 문서 조직 ORG-B | 거부 | 조직 불일치 |
| A7 | 현재 exporter 권한 회수 | 거부 | 로그인 여부와 무관한 역할 실패 |
| A8 | 단말 상태 근거를 확인할 수 없음 | 보류 | 불확실성을 허용하지 않음 |
이 유한 시험 집합은 허용 3건, 거부 4건, 보류 1건이다. 3/8이라는 값은 표의 시험 중 허용으로 판정한 비율일 뿐 실제 사용자의 정당한 요청 성공률이나 잘못된 허용률이 아니다. 시험은 미리 정한 기대값과 실제 결과의 일치를 확인해야 하므로 “거부가 많을수록 보안점수가 높다”고 평가하지 않는다.
문서 20개에서 추가 승인이 없어도 통과하는 것과 21개에서 승인을 요구하는 것은 별개의 경계 시험이다. 100개는 나머지 조건과 두 명 승인이 맞으면 이 수량 조건을 통과하지만 101개는 실패한다. 문서 수를 모르는 경우를 0이나 10으로 채워 성공시키지 않는다.
7. 허용 판정과 실제 반출을 연결한다
상담원 역할에는 고객 연락처 조회를 허용하되 급여자료 조회는 허용하지 않을 수 있다. 여기에 관리된 단말·담당 조직·현재 역할 같은 조건을 더하는 방식이 CT-A1이다. 정책을 정하는 담당과 자원 앞에서 집행하는 담당이 달라도 동일 요청·정책 버전·자료 목록을 사용해야 한다.
문서 제공 서버는 인증 계정, 고정된 문서 목록, 확인된 속성, 승인 기록과 정책 버전을 묶어 판정을 요청한다. 허용 결과가 그 요청과 목록의 결과인지 대조한 후에만 읽기·복호화와 반출을 실행한다. 허용 후 목록이 바뀌거나 실행 전에 만료·회수가 확인되면 다시 판정한다. 사용자 화면에서 반출 버튼을 숨기는 조치만으로 서버의 직접 호출을 막았다고 보지 않는다.
판정과 실행을 멀리 떨어뜨리면 그 사이 권한·문서·단말 상태가 바뀔 수 있다. CT-A1은 서버가 고정한 요청을 즉시 집행하고, 대기열에 오래 남거나 자료가 바뀐 작업에는 새 근거와 인가를 요구한다. 이미 제공한 문서를 권한 회수로 되찾을 수 있다는 보장은 하지 않는다. 허용 또는 거부 이유와 실제 실행 여부를 서로 다른 기록으로 남긴다.
CT-A1의 책임과 데이터 흐름
| 권위 있는 입력 출처 | 이번 요청에서 확인할 근거 |
|---|---|
| 인증 담당 | 현재 계정·유효 세션 |
| 권한 담당 | 현재 역할·서로 다른 승인권자와 동일 요청 승인 |
| 문서 원장 | 조직·고정 목록·버전 |
| 단말 관리자 | 상태·관측 시각 |
아래 SVG의 정책 판정은 이 입력을 함께 확인하고 요청·목록·정책 버전을 다시 대조한다. 허용만 서버 반출·실행 기록으로 이어지며, 거부·보류는 원인을 구분해 기록하되 이 정책에서는 모두 미반출이다.
화살표는 입력 출처와 집행 관계다. 판정 서비스가 장애이면 이 예제의 반출은 보류한다. 일반 조회와 비상 업무까지 같은 중단 정책을 적용하려면 별도의 위험·가용성 판단이 필요하다.
인증된 U1의 요청이 실제 반출까지 가는 조건 · 상태 따라가기
U1 요청 ID와 문서 목록·판본을 서버에서 고정한다. 모든 단계에서 U1·목록 판본·정책·반출의 위치를 유지하며 값과 허용 조건을 함께 확인합니다.
상자 안의 대상과 화살표의 조건을 함께 읽으세요. 좁은 화면에서는 같은 관계를 세로로 재배치한 도식을 보여 줍니다.
세션·역할·문서·단말·승인 근거는 신뢰한 출처로 확인한다. 모든 조건이 맞는 허용만 집행으로 이어지고, 거부와 보류는 이 반출 정책에서 모두 미반출로 끝난다.
이 예의 조건
- 세션·역할·문서·단말·승인 근거는 신뢰한 출처로 확인한다. 모든 조건이 맞는 허용만 집행으로 이어지고, 거부와 보류는 이 반출 정책에서 모두 미반출로 끝난다.
- 이 원문의 교육용 사례·조건 안에서 상태를 대조합니다. 실제 구축·실험 결과나 원문에 없는 성능 보장을 추가하지 않습니다.
관계도의 보충 설명
| 대상 | 원 설명 |
|---|---|
| U1 반출 요청 | 요청 ID·목록·버전 |
| 신뢰한 입력 | 세션·역할·조직·단말·승인 |
| 조건 판정 | 충족 여부 |
| 거부 | 확인한 조건 불충족 |
| 보류 | 필요한 근거 확인 불가 |
| 요청·결과 대조 | 목록·정책 버전 |
| 서버 반출·실행 기록 | 허용 결과의 실제 집행 |
| 연결 | 원 라벨·방향 |
|---|---|
| U1 반출 요청 → 신뢰한 입력 | 출처 / 정방향 / 실선 |
| 신뢰한 입력 → 조건 판정 | 입력 / 정방향 / 실선 |
| 조건 판정 → 거부 | 거부 / 정방향 / 실선 |
| 조건 판정 → 보류 | 불명 / 정방향 / 실선 |
| 조건 판정 → 요청·결과 대조 | 충족 / 정방향 / 실선 |
| 요청·결과 대조 → 서버 반출·실행 기록 | 집행 / 정방향 / 실선 |
| 경계 | 포함 대상 |
|---|---|
| 정책 판정 | U1 반출 요청, 신뢰한 입력, 조건 판정, 거부, 보류, 요청·결과 대조 |
| 실제 집행 | 서버 반출·실행 기록 |
| 관찰·상황 | 값·보충 정보 | 변화·이유 |
|---|---|---|
| 대상 고정 U1 요청 ID와 문서 목록·판본을 서버에서 고정한다. |
|
|
| 신뢰한 조건 현재 세션·역할·조직·단말·승인 근거를 대조한다. |
|
|
| 거부·보류 조건 불충족은 거부, 필요한 근거 불명은 보류이며 둘 다 미반출이다. |
|
|
| 별도 허용 대안의 집행 정책 판정 시작점으로 재설정하여 조건을 충족한 허용 대안의 목록·정책 판본을 대조한다. |
|
|
인증된 U1의 요청이 실제 반출까지 가는 조건 · 상태 따라가기
U1 요청 ID와 문서 목록·판본을 서버에서 고정한다. 모든 단계에서 U1·목록 판본·정책·반출의 위치를 유지하며 값과 허용 조건을 함께 확인합니다.
상자 안의 대상과 화살표의 조건을 함께 읽으세요. 좁은 화면에서는 같은 관계를 세로로 재배치한 도식을 보여 줍니다.
세션·역할·문서·단말·승인 근거는 신뢰한 출처로 확인한다. 모든 조건이 맞는 허용만 집행으로 이어지고, 거부와 보류는 이 반출 정책에서 모두 미반출로 끝난다.
이 예의 조건
- 세션·역할·문서·단말·승인 근거는 신뢰한 출처로 확인한다. 모든 조건이 맞는 허용만 집행으로 이어지고, 거부와 보류는 이 반출 정책에서 모두 미반출로 끝난다.
- 이 원문의 교육용 사례·조건 안에서 상태를 대조합니다. 실제 구축·실험 결과나 원문에 없는 성능 보장을 추가하지 않습니다.
관계도의 보충 설명
| 대상 | 원 설명 |
|---|---|
| U1 반출 요청 | 요청 ID·목록·버전 |
| 신뢰한 입력 | 세션·역할·조직·단말·승인 |
| 조건 판정 | 충족 여부 |
| 거부 | 확인한 조건 불충족 |
| 보류 | 필요한 근거 확인 불가 |
| 요청·결과 대조 | 목록·정책 버전 |
| 서버 반출·실행 기록 | 허용 결과의 실제 집행 |
| 연결 | 원 라벨·방향 |
|---|---|
| U1 반출 요청 → 신뢰한 입력 | 출처 / 정방향 / 실선 |
| 신뢰한 입력 → 조건 판정 | 입력 / 정방향 / 실선 |
| 조건 판정 → 거부 | 거부 / 정방향 / 실선 |
| 조건 판정 → 보류 | 불명 / 정방향 / 실선 |
| 조건 판정 → 요청·결과 대조 | 충족 / 정방향 / 실선 |
| 요청·결과 대조 → 서버 반출·실행 기록 | 집행 / 정방향 / 실선 |
| 경계 | 포함 대상 |
|---|---|
| 정책 판정 | U1 반출 요청, 신뢰한 입력, 조건 판정, 거부, 보류, 요청·결과 대조 |
| 실제 집행 | 서버 반출·실행 기록 |
| 관찰·상황 | 값·보충 정보 | 변화·이유 |
|---|---|---|
| 대상 고정 U1 요청 ID와 문서 목록·판본을 서버에서 고정한다. |
|
|
| 신뢰한 조건 현재 세션·역할·조직·단말·승인 근거를 대조한다. |
|
|
| 거부·보류 조건 불충족은 거부, 필요한 근거 불명은 보류이며 둘 다 미반출이다. |
|
|
| 별도 허용 대안의 집행 정책 판정 시작점으로 재설정하여 조건을 충족한 허용 대안의 목록·정책 판본을 대조한다. |
|
|
U1의 요청을 손으로 따라가는 순서
- 먼저 서버가 문서 목록을 고정한다. 목록이 바뀌면 같은 승인이나 허용 결과를 붙일 수 없으므로 판정 대상부터 확정하는 것이다.
- 유효 세션과 현재 반출 역할을 각각 확인한다. 세션이 신원을 연결해도 역할이 회수됐다면 반출 권한은 없으므로 A7을 거부한다.
- 조직·수량·단말 근거를 확인한다. A2의 59초는 조건 안이지만 A3의 60초는 경계 밖이다. 수량이 21개라면 승인 기록 두 줄이 아니라 요청자가 아닌 서로 다른 두 승인권자를 센다.
- 필요한 근거가 없으면 A8처럼 보류하고, 확인한 조건이 틀리면 거부한다. 기록에서 두 원인을 구별하되 이 정책의 반출은 둘 다 실행하지 않는다.
- 허용 결과도 현재 요청·목록·정책 버전과 다시 대조한 뒤 서버에서 집행한다. 예전 요청의 허용을 새 목록에 재사용하면 앞의 검사가 맞아도 실행 대상이 달라진다.
담당·검증·중단 조건을 확정한다
업무 책임자는 반출자·승인자의 역할과 20·100개 수량 경계를 승인한다. 권한 담당은 입사·직무변경·퇴직과 역할 회수를 연결하고, 단말 담당은 속성의 발급자·시각·형식과 유효성 기준을 관리한다. 서비스 담당은 서버 집행과 고정 요청의 연결을 책임진다. 보안 담당은 오류 이유·정책 버전·실행 결과를 표본 점검한다. 비밀번호·세션 비밀·민감한 문서 본문은 일반 감사 로그에 쓰지 않는다.
개별 사용자에게 직접 예외 권한을 계속 더하는 대안은 감사 가능한 역할 관리에서 이탈하기 쉬워 기각한다. 모든 조직·단말 나이별로 역할을 만드는 대안은 변경 조합이 불필요하게 늘어나므로 기각한다. 현재 설계는 직무 역할과 명시적인 속성 규칙을 함께 쓰며, RBAC 자체가 추가 제약을 금지한다고 설명하지 않는다.
정상 요청과 함께 A2/A3의 시간 경계, A4/A5의 승인자 구별, A6의 조직 변경, A7의 회수, A8의 조회 실패를 시험한다. 다른 요청의 승인·판정 결과를 붙이거나 반출 목록을 바꾸는 경우도 미반출이어야 한다. 거부·보류가 실제 파일 제공으로 이어지면 출시를 중단하고 서버 집행 경로를 고친다. 시험 통과는 명시한 유한 사례의 확인이며 모든 권한 누출이 없다는 증명이 아니다.
세밀함이 곧 좋은 통제는 아니다
역할을 사람마다 만들면 검토가 어려워지고, 속성의 출처와 최신성을 확인하지 않으면 자세한 정책도 틀린 입력으로 계산한다. 규칙이 충돌할 때의 처리나 필요한 입력이 없는 경우를 정하지 않으면 정상값을 임의로 채우는 우회가 생긴다. CT-A1은 모든 필수 조건을 함께 요구하며 모르는 입력으로 허용하지 않는다.
재인증, 추가 승인, 권한 회수는 서로 다른 실패를 고친다. 조직이 다른 문서는 다시 로그인해도 허용되지 않고, 잘못된 조직 경계를 승인자가 많다는 이유로 덮어쓰지 않는다. 역할 회수 뒤 이미 열린 세션과 대기 중 작업에 정책이 실제로 반영되는지 확인해야 한다.
보안기술을 보조하는 이 절의 범위
이 절은 인증 근거와 접근 조건을 분리하여 문서 반출을 허용·거부·보류한다. 대상은 인증된 주체·고정 문서 목록·행위·현재 역할·단말 근거·승인 기록이다. 경계는 인증 성공과 업무 인가, 역할과 속성, 판정과 실제 실행의 구별이다. 실패 판단은 오래된 속성·중복 승인·조직 불일치·권한 회수·조회 실패를 서로 다르게 처리하는 것이다. 모든 인증 프로토콜 구현·전체 인증 보증수준 적합성·기간별 누적 유출 통제·법적 승인은 제외한다.
자체 문제는 보안기술의 접근통제 적용을 보조한다. 앞 절의 주 담당 공식 경로를 바꾸거나 이 예제만으로 공식 범위 전체 완료를 선언하지 않는다.
8. 자체 10점 문제: 역할과 속성의 경계
CT-A2의 A2·A3·A5·A7·A8을 판정하고, MFA나 재인증의 성공만으로 이 반출 결과를 허용으로 바꿀 수 없는 이유를 설명하라.
시각 경계, 서로 다른 승인자 수, 현재 역할과 입력 불확실성을 각각 읽는다. 자체 교육 문제이며 공식 채점표가 아니다.
답안을 열기 전에: 문제에 주어진 값과 판정 근거를 먼저 적고, 결과만 맞춘 항목에는 그 이유를 한 문장 더 붙인다. 이 문제와 아래 설계 문제는 자체 연습이며 공식 채점표가 아니다.
10점 연습의 풀이와 완성 답안 보기
답안 목차
- 단말 근거의 시각 경계
- 승인 기록 수와 사람 수
- 권한 회수와 불확실한 근거
- 인증요소와 업무 인가
각 결과를 앞의 정책 항목에 연결하면 단순 제품 설명에서 벗어난다.
답안 도식
59초 → 시간 조건 통과 / 60초 → 거부
U2 + U2 → 한 사람 → 추가 승인 조건 실패
역할 회수 → 거부 / 근거 불명 → 보류
다시 인증 → 신원 근거 갱신, 반출 권한 자동 부여 아님완성 답안 예시
CT-A1은 단말 근거의 나이를 0초 이상 60초 미만으로 제한하므로 A2의 59초는 통과하고 A3의 60초는 거부한다. 같은 시간 기준의 관측 시각을 사용하며 미래 시각이나 누락 값을 정상 나이로 바꾸지 않는다.
A5는 21개 문서 반출에 U2의 승인 기록이 두 번 있어도 서로 다른 승인자는 한 명이므로 거부한다. 추가 승인은 같은 요청·목록 버전에 대한 현재 유효한 승인권자 두 명 이상이어야 하며 요청자 자신은 제외한다.
A7은 현재 반출 역할이 회수되어 거부하며 로그인 당시 역할로 되돌리지 않는다. A8은 필요한 단말 근거가 확인되지 않아 보류하고 미반출로 처리한다. 판단 불가를 관리 단말 성공으로 채우지 않는다.
MFA는 서로 다른 종류의 인증요소를 결합하는 것이지 모든 업무의 권한을 주는 방식이 아니다. 재인증은 신원 근거를 다시 확인하더라도 회수된 역할, 다른 조직의 문서, 누락된 승인과 단말 근거를 대신하지 않는다. 인증과 인가를 따로 판정한다.
9. 자체 25점 문제: 인증 이후의 문서 반출 설계
CT-A1에 따라 조직별 문서 반출을 설계하라. 역할·속성 선택, 입력의 신뢰와 최신성, 추가 승인, 인증·세션과 회수, 서버 집행, 검증·중단 조건 및 제외 범위를 제시하라.
“접근통제를 강화한다”로 끝내지 말고 실제 행위·문서 수·시간·승인 조건과 담당을 작성한다. 나열한 통제가 실제 반출 경로에서 집행되는지 설명해야 한다.
답안을 열기 전에: 설계의 허용 조건, 담당자, 실제 확인 방법과 중단 조건을 자신의 문장으로 연결한다. 앞의 정책을 그대로 복사하기보다 문제에서 바뀐 조건이 있는지 확인한다.
25점 연습의 설계 근거와 완성 답안 보기
설계 답안 목차
- 고정된 요청과 보호 범위
- 역할·속성의 결합 규칙
- 추가 승인과 입력 신뢰
- 인증·세션·회수
- 서버 집행과 책임
- 시험·중단·제외 범위
수량과 시각의 숫자는 이 사례의 가정이며 보편적인 인증 기준값이 아니다.
설계 답안 도식
CT-A1 정책의 모든 조건을 함께 적용하고 서버 집행 그림으로 연결한다. 유효 세션, 현재 활성 계정·역할, 동일 조직, export와 정수 1~100개, 관리 단말과 0초 이상 60초 미만의 근거 나이가 필요하다. 21개 이상은 요청자가 아닌 서로 다른 유효한 승인권자 두 명 이상을 요구한다. 모든 조건이 맞아도 고정 요청·목록·정책 버전을 확인한 뒤에만 반출한다. 확인한 불일치·회수는 거부하고 필요한 근거가 불명하면 보류한다.
완성 설계 답안 예시
CT-A1은 조직별 문서의 한 번의 반출 요청을 보호한다. 서버가 대상 문서와 조직·버전을 확인해 요청 ID와 고정 목록을 만들고 판정부터 집행까지 같은 내용을 사용한다. 목록이나 버전이 달라지면 새 승인과 인가를 요구한다.
안정적인 직무는 viewer·exporter·approver 역할로 묶고, 반출에는 현재 유효한 인증 세션·활성 계정·exporter를 요구한다. 주체와 모든 문서의 조직이 같고 행위가 export이며 정수 문서 수가 1 이상 100 이하이어야 한다. 관리 단말 근거의 나이는 0초 이상 60초 미만이어야 한다. 이 조건들은 모두 함께 적용한다.
문서 21개 이상은 요청자가 아닌 서로 다른 승인권자 두 명 이상이 같은 요청·목록 버전에 유효하게 승인해야 한다. 역할과 승인은 권한 담당, 조직과 문서는 계정·문서 원장, 단말 상태는 신뢰한 관리자로부터 확인한다. 중복 승인으로 사람 수를 늘리지 않고 필요한 입력이 없거나 출처·시각을 확인하지 못하면 보류한다.
인증은 검토된 구성의 서로 다른 요소와 필요한 프로토콜 검증으로 수행하고 세션의 만료·종료를 서버에서 관리한다. 중요한 반출마다 현재 계정·역할을 확인하며 재인증으로 회수된 권한을 되살리지 않는다. 인증수단 분실·복구 시 기존 수단 무효화와 영향 세션 종료를 별도로 확인한다.
문서 서버는 받은 허용 결과가 현재 요청·목록·정책 버전에 해당하는지 확인한 뒤에만 반출한다. 대기 중 자료나 근거가 바뀌면 다시 판단하고, 화면 버튼 숨김만으로 통제를 대신하지 않는다. 업무 책임자는 경계값과 역할, 권한·단말 담당은 입력, 서비스 담당은 집행, 보안 담당은 기록과 시험을 책임진다.
59/60초, 20/21개, 100/101개, 중복 승인, 조직 변경, 권한 회수와 근거 조회 실패를 각각 시험한다. 거부·보류인데 문서가 제공되거나 다른 요청의 승인이 재사용되면 출시를 중단한다. 실제 허용률이나 모든 인증 보증수준 적합성을 이 유한 시험에서 추정하지 않으며, 여러 요청의 기간별 누적 반출과 이미 제공된 문서 회수는 이 정책의 제외 범위로 남긴다.
10. 스스로 고치기
| 흔한 답 | 왜 틀렸는가 | 수정 예 | 돌아갈 곳 |
|---|---|---|---|
| 비밀번호와 PIN이면 늘 MFA다 | 지식 요소 두 번일 수 있음 | 실제 요소 종류와 장치 활성화 관계를 확인 | 인증요소 |
| 일회용 코드면 피싱도 막는다 | 가짜 사이트의 실시간 전달 가능 | 재전송·검증자 결합을 별도로 평가 | 프로토콜 |
| RBAC는 추가 제약을 못 둔다 | 모델의 제약을 잘못 설명 | 역할과 추가 정책을 함께 설계 | 모델 비교 |
| 60초 이하니 A3 허용 | 실제 정책은 미만 | 59초 통과·60초 거부 | 정책 |
| 승인 두 줄이면 두 명이다 | 주체 중복 | 같은 요청의 서로 다른 승인권자로 계산 | 직접 판정 |
| 다시 로그인하면 역할도 복구 | 인증과 권한 회수 혼동 | 현재 역할을 별도로 확인 | 세션 |
| 단말 조회가 안 되면 전에 성공한 값 | 미확인을 정상으로 채움 | 근거 부족 보류·미반출 | 정책 |
| 버튼을 숨겼으니 집행 완료 | 서버 직접 호출 경로가 남음 | 문서 앞의 서버에서 요청·정책 결과 대조 | 집행 |
고칠 때에는 오답 문장에서 바뀐 조건과 올바른 판정을 한 문장씩 적는다. 단순히 모델 이름을 더 붙이는 것으로는 어느 실패를 고쳤는지 확인할 수 없다.
조건을 바꿔 적용하기
문서가 20개에서 21개로 늘면? 다른 조건이 그대로여도 두 명의 유효한 추가 승인이 필요하다. U2와 요청자 U1의 승인만 있다면 한 명으로 세므로 허용하지 않는다. 수량·승인 규칙으로 돌아가 확인한다.
단말 근거 나이가 −1초면? 미래 관측 시각이므로 신뢰할 수 있는 입력으로 보지 않고 보류한다. 작다는 이유만으로 60초 미만 통과를 적용하지 않는다. 시각 계산의 하한도 확인한다.
같은 조건의 100개 요청을 열 번 나누면? 각 요청당 조건을 만족할 수 있지만 이 예제는 하루 총 1,000개를 차단하는 정책이 아니다. 일일 누적 한도가 새 요구라면 동시 요청까지 포함한 별도 합산·예약 통제가 필요하다. 제외 범위를 새 요구와 구별한다.
근거와 적용 한계
CT-C06: NIST SP 800-162, 2014-01, 2019-08-02 업데이트 포함, §§1.4, 2와 §3의 속성·정책·운영 고려사항. CT-C07: NIST RBAC FAQ, 역할의 정의·활성화·추가 제약과 직무분리 설명. 살아 있는 웹 문서의 관찰일을 논문 발행일로 바꾸지 않는다.
CT-C08: NIST SP 800-63B-4, 2025-07 최종판, §§2.2, 3.2.3, 3.2.5, 3.2.7, 4–5. 요소의 구별, 재전송·피싱 저항성, 인증수단과 세션의 생명주기를 참조했다. 관찰일은 2026-09-18이며 미국 연방 적용 규범을 모든 한국 서비스의 법적 의무로 일반화하지 않는다.
CT-A1·CT-A2, 수량·시간 기준, 책임 배분, 표·도식과 답안은 자체 교육용 설계다. 앞서 정의한 접근통제 모델을 실제 정책 조건에 적용한 것이며, 공식 적합성·사람에 의한 독립 검토·실제 사용자 성과를 주장하지 않는다.
회독 때 붙잡을 결론
접근통제 모델은 주체·객체·행위와 소유·등급·역할·속성 같은 근거로 권한 결정을 구조화한다. 인증이 성공해도 현재 역할과 객체의 조건을 별도로 판정하고, 속성·승인 입력의 출처·시각·중복을 확인한다. 허용 결과는 같은 요청·자료·정책 버전의 실제 서버 집행으로 이어져야 한다. 모델의 세밀함만이 아니라 정책 충돌, 입력 신뢰도, 복구와 운영 가능성을 함께 본다.
책을 덮고 확인하기: U1이 다시 로그인해도 조직 불일치나 역할 회수가 해결되지 않는 이유를 설명한다. 이어 59/60초, 20/21개, 두 줄/두 사람의 경계에서 각각 어떤 입력이 달라지는지 말하고 CT-A1로 확인한다.
조건을 바꾸어 연습하기: 목록 전체·집행 시점·여러 요청의 한도를 확인한다.
다음 세 사례는 CT-A1의 ‘모든 조건’을 무엇에 적용하는지 연습한다. 마지막 문제는 원 정책의 제외 범위를 확장한 별도 정책이며, 앞의 요청당 100개 한도가 이미 일일 한도를 뜻한다고 해석하지 않는다.
- AC-L. ORG-A의 U1이 문서 20개를 반출하려 한다. 세션·현재 역할·단말·행위 조건은 모두 충족한다. 서버 문서 원장에서 19개는 ORG-A, 마지막 한 개는 ORG-B의 문서로 확인된다. 요청 본문에는 전체 조직을 ORG-A라고 썼고 서로 다른 승인권자 두 명의 승인도 있다. CT-A1에서 이 목록을 허용하는가? ‘19/20=95%가 같은 조직’이라는 비율이나 승인자 수로 다른 조직의 문서를 포함할 수 있는가? 마지막 문서를 빼서 새 19개 목록으로 바꾸면 예전 목록의 허용 결과를 그대로 실행해도 되는가?
- AC-E. 신뢰한 단말 관측 시각은 같은 시간 기준의 941초이고, 1,000초에 요청을 판정했다. 다른 조건이 모두 충족되어 허용했다. 요청이 대기하다 1,002초에 실제 집행하려는데 새 단말 근거는 아직 없다. 근거 나이를 두 시점에서 구하고 무엇을 다시 확인해야 하는지 설명하라. 단말 조회가 실패하면 어떻게 하는가? 신뢰한 새 관측 시각 1,001초를 확인했다면 그때의 시간 조건은 어떠한가? 이때 재판정한 요청의 목록 버전은 v4인데 실행 파일 목록은 v5라면 시간 조건의 통과만으로 반출해도 되는가?
- AC-Q. 원 CT-A1에 별도 일일 정책을 추가한다. 기간과 주체를 고정하고 ‘완료 수량+유효 예약 수량+새 예약 수량≤150’이어야 한다. 현재 완료는 100개, 예약은 0개이며 문서 40개씩을 반출하는 서로 다른 요청 R1·R2가 동시에 들어왔다. 두 요청은 각각 CT-A1의 모든 조건을 충족한다고 가정한다. 각 작업이 같은 이전 합계 100을 읽고 자기 40개만 더해 허용하면, 모두 실행된 뒤 합계와 초과량은 얼마인가? 같은 주체·기간의 확인과 예약을 원자적으로 직렬화하면 몇 요청을 예약할 수 있고 여유는 얼마인가? R1 예약 뒤 실행 결과가 불명인 채 시간 초과가 나면 즉시 40개를 예약 합계에서 빼도 되는가?
모든 문서의 조직·시간이 흐른 근거·원자적 누적 예약 풀이
1. AC-L — 조직 조건은 목록의 모든 문서에 적용한다. ORG-B 문서 한 개가 있으므로 주체 조직과 모든 문서 조직이 같다는 조건을 만족하지 않아 거부한다. 요청자가 쓴 조직값은 서버 문서 원장을 대신하지 못한다. 95%는 이 목록의 구성 비율이지 허용 기준이 아니며, 이 정책에서 승인자는 조직 불일치를 해제할 권한을 받지 않았다. 20개는 추가 승인이 필요 없는 수량이지만 승인 기록을 더 붙여도 다른 필수 조건이 사라지지는 않는다.
ORG-B 문서를 빼면 판정 대상 목록 자체가 달라진다. 서버가 새 19개 목록·버전과 요청을 확정하여 현재 세션·역할·조직·단말 등 전체 조건을 새로 판정한다. 이 새 요청은 수량만 보면 두 명의 추가 승인이 필요 없지만, 이전 목록에 대한 결과를 새 목록의 결과인 것처럼 재사용할 수는 없다. 원 목록을 거부했다는 기록과 새 목록의 판정·실행 기록도 구별한다.
2. AC-E — 근거 나이는 판정 시각에 고정된 숫자가 아니다. 최초 나이는 1,000−941=59초로 시간 조건을 통과했다. 집행하려는 때에는 1,002−941=61초이므로 같은 근거가 더 이상 60초 미만 조건을 충족하지 않는다. 오래 대기한 작업에는 새 근거와 인가를 요구하며, 조회 실패를 이전 허용값으로 메우지 않고 보류·미반출로 처리한다. 최초 판정이 잘못되었다고 시간을 소급해 바꾸는 것이 아니라, 집행 시점에 필요한 상태가 달라졌다고 기록한다.
새 근거가 1,001초라면 1,002−1,001=1초이므로 그 시간 조건은 통과한다. 그러나 v4로 판정한 결과를 v5 실행 목록에 붙이면 요청·결과 대조에 실패한다. 최신 단말 값만으로 목록 버전 차이를 덮어쓰지 않고 같은 요청·목록·정책 버전으로 다시 판정한다. 시간 조건의 성공과 최종 반출 허용을 분리한다.
3. AC-Q — 요청마다의 성공을 기간 전체의 성공으로 더하지 않는다. 원 CT-A1만 보면 문서 40개씩을 반출하는 두 요청은 각각 허용될 수 있다. 일일 정책을 추가했는데 두 작업이 이전 100을 독립적으로 읽으면 각각 140≤150이라고 판단하고, 모두 실행한 합계는 100+40+40=180개가 되어 30개 초과한다.
같은 주체·기간의 확인과 예약을 한 원자적 경쟁 판정으로 수행하면 먼저 한 요청이 40개를 예약하여 합계가 140이 된다. 다음 요청은 140+40=180이므로 새 예약을 허용하지 않는다. 한 요청만 예약할 수 있고 남은 여유는 150−140=10개다. 어떤 요청이 먼저인가와 관계없이 같은 계산이 적용된다. 반출 완료 때에는 예약 40개를 완료 수량으로 옮겨 합계를 이중으로 늘리지 않는다.
실행 결과가 불명인 시간 초과만으로 예약을 취소하면 실제 반출이 이미 끝난 경우 합계를 작게 셀 수 있다. 같은 요청 ID의 실제 제공 여부를 대조할 때까지 불명 상태를 보존하고, 미실행 또는 취소 완료가 확인된 절차에 따라 예약을 해제한다. 재시도에도 새 예약을 무조건 덧붙이지 않는다. 이 계산은 정해진 기간·주체·수량의 모형이며 실제 분산 예약·반출 경로의 일관성을 입증한 것은 아니다. 이미 제공한 문서를 회수할 수 있다는 뜻도 아니다.