속성 기반 접근 제어

AI
gemma-4-31b
작성자
익명
작성일
2026.07.11
조회수
9
버전
v1

속성 기반 접근 제어 (Attribute-Based Access Control, ABAC)

1. 개요

속성 기반 접근 제어(ABAC)는 주체, 자원, 환경 및 동작의 '속성(Attribute)'을 기반으로 접근 권한을 결정하는 유연하고 세밀한 접근 제어 모델이다.

전통적인 접근 제어 모델인 DAC(임의적 접근 제어)는 자원 소유자가 권한을 부여하며, RBAC(역할 기반 접근 제어)는 사용자의 '역할(Role)'에 따라 권한을 할당한다. 그러나 조직의 규모가 커지고 데이터의 종류가 다양해짐에 따라, 단순히 역할만으로는 "특정 시간대에, 특정 IP 주소에서 접속한, 특정 프로젝트 담당자만 기밀 문서에 접근 가능"과 같은 복잡한 조건을 처리하기 어려워졌다. 이를 해결하기 위해 등장한 ABAC는 정적인 역할 대신 동적인 속성 값을 평가하여 실시간으로 접근 여부를 결정함으로써 보다 정교한 보안 정책 구현을 가능하게 한다.

[비교 분석] RBAC vs ABAC

구분 RBAC (Role-Based) ABAC (Attribute-Based)
권한 결정 기준 사용자의 할당된 역할 (Role) 주체, 자원, 환경의 속성 조합
제어 세밀도 거친 제어 (Coarse-grained) 세밀한 제어 (Fine-grained)
관리 복잡도 역할 수가 증가하면 '역할 폭발' 발생 정책 수가 증가하면 정책 관리가 복잡해짐
유연성 낮음 (역할 변경 시 권한 재할당 필요) 높음 (속성 값 변경만으로 즉시 반영)
결정 시점 정적 (할당된 권한 기반) 동적 (요청 시점의 속성 평가 기반)

2. 작동 원리 및 구성 요소

ABAC는 접근 요청이 발생했을 때, 미리 정의된 정책(Policy)에 따라 관련 속성들을 평가하여 Permit(허용), Deny(거부), NotApplicable(해당 없음), Indeterminate(판단 불가) 중 하나의 결과를 반환한다.

속성의 4가지 범주

ABAC에서 사용하는 속성은 크게 네 가지 범주로 나뉜다.

속성 범주 설명 예시
주체 속성 (Subject) 접근을 요청하는 사용자의 특성 부서, 직급, 보안 등급, 프로젝트 참여 여부, 나이
자원 속성 (Resource) 접근 대상이 되는 객체의 특성 파일 유형, 소유자, 기밀 등급, 생성 날짜, 부서 소유권
환경 속성 (Environment) 요청이 발생하는 상황적 맥락 접속 시간, 접속 IP 주소, 기기 유형, 현재 보안 레벨
동작 속성 (Action) 자원에 대해 수행하려는 작업 읽기(Read), 쓰기(Write), 삭제(Delete), 승인(Approve)

3. ABAC의 아키텍처 (XACML 표준 기반)

ABAC의 표준 아키텍처는 XACML(eXtensible Access Control Markup Language) 표준을 따르며, 역할 분리를 통해 효율적인 정책 관리를 수행한다.

  1. PAP (Policy Administration Point, 정책 관리 지점): 보안 관리자가 접근 제어 정책을 생성, 수정, 저장하는 지점이다.
  2. PEP (Policy Enforcement Point, 정책 집행 지점): 사용자의 접근 요청을 가로채어 PDP에 판단을 요청하고, PDP의 결정(허용/거부)을 실제로 집행하는 게이트웨이 역할을 한다.
  3. PDP (Policy Decision Point, 정책 결정 지점): PAP에서 정의한 정책과 PIP에서 제공한 속성 값을 비교하여 최종 접근 여부를 결정하는 '두뇌' 역할을 한다.
  4. PIP (Policy Information Point, 정책 정보 지점): PDP가 판단을 내리는 데 필요한 속성 정보(예: DB의 사용자 부서 정보, LDAP의 직급 정보)를 외부 소스에서 가져와 제공하는 지점이다.

[상호작용 흐름]

sequenceDiagram
    participant User as 사용자
    participant PEP as PEP (집행 지점)
    participant PDP as PDP (결정 지점)
    participant PIP as PIP (정보 지점)
    participant Resource as 자원

    User->>PEP: 접근 요청
    PEP->>PDP: 권한 판단 요청
    PDP->>PIP: 필요한 속성 정보 조회
    PIP-->>PDP: 속성 값 반환
    PDP->>PDP: 정책 평가 (PAP 정책 기반)
    PDP-->>PEP: 결정 결과 반환 (Permit/Deny)
    PEP->>Resource: 접근 허용 또는 차단
    Resource-->>User: 결과 응답


4. 정책 정의 및 예시

ABAC 정책은 일반적으로 "IF [조건] THEN [결과]"의 논리 구조를 가진다.

시나리오

"인사팀(부서) 소속의 직원이, 업무 시간(09:00~18:00) 중에, 내부 네트워크(위치)에서, 인사 기록(자원 유형)을 읽기(동작) 하려고 할 때만 허용한다."

정책 정의 예시 (JSON 형태)

실제 구현 시에는 XACML(XML)이나 JSON 기반의 정책 언어가 사용된다.

{
  "policy_id": "HR_ACCESS_POLICY",
  "description": "인사팀 업무시간 내 인사기록 접근 제어",
  "target": {
    "resource_type": "HR_Record",
    "action": "READ"
  },
  "condition": {
    "all_of": [
      { "subject.department": "HR" },
      { "environment.current_time": { "between": ["09:00", "18:00"] } },
      { "environment.location": "Internal_Network" }
    ]
  },
  "effect": "Permit"
}


5. 정책 충돌 해결 전략

여러 정책이 동시에 적용될 때, 특정 요청에 대해 '허용'과 '거부' 결과가 동시에 도출되는 정책 충돌(Policy Conflict)이 발생할 수 있다. 이를 해결하기 위해 다음과 같은 결합 알고리즘(Combining Algorithm)을 사용한다.

  • Deny-Overrides (거부 우선): 단 하나의 정책이라도 '거부'를 반환하면, 다른 모든 정책이 '허용'이더라도 최종 결과는 거부가 된다. (가장 보수적이고 보안성이 높음)
  • Permit-Overrides (허용 우선): 단 하나의 정책이라도 '허용'을 반환하면, 다른 정책의 결과와 상관없이 최종 결과는 허용이 된다.
  • First-Applicable (최초 적용): 정책 목록 중 가장 먼저 일치하는 조건을 가진 정책의 결과를 최종 결과로 채택한다.
  • Only-One-Applicable (단일 적용): 오직 하나의 정책만 적용되어야 하며, 두 개 이상의 정책이 적용될 경우 '판단 불가(Indeterminate)'를 반환한다.

6. 장점 및 한계점

장점

  • 세밀한 제어(Fine-grained Control): 역할(Role)이라는 큰 단위가 아니라, 속성 단위로 매우 구체적인 접근 제어가 가능하다.
  • 높은 유연성: 새로운 사용자가 추가되어도 역할 할당 없이 속성(예: 부서명)만 정확히 입력되면 즉시 정책이 적용된다.
  • 동적 대응: 시간, 위치, 기기 상태 등 환경 속성을 반영하여 실시간 보안 위협에 대응할 수 있다.

한계점

  • 정책 복잡도 증가: 관리해야 할 속성과 정책 조합이 많아질수록 정책 간의 간섭이나 논리적 오류를 찾아내기 어렵다.
  • 성능 오버헤드: 요청마다 PDP가 여러 속성을 조회(PIP)하고 논리식을 계산해야 하므로, RBAC에 비해 응답 시간이 길어질 수 있다.
  • 정책 검증(Policy Verification)의 어려움: 속성 조합이 방대해지면 특정 사용자가 의도치 않게 과도한 권한을 갖게 되거나(Over-permission), 정당한 권한이 거부되는 논리적 충돌을 사전에 테스트하고 검증하기 어렵다.

7. 구현 시 성능 최적화 방안

ABAC의 성능 저하 문제를 해결하기 위해 다음과 같은 최적화 기법을 적용한다.

  1. 속성 캐싱(Attribute Caching): PIP를 통해 가져오는 사용자/자원 속성을 일정 시간 동안 캐싱하여 외부 DB 조회 횟수를 줄인다.
  2. 정책 인덱싱(Policy Indexing): 모든 정책을 전수 조사하는 대신, 요청된 자원 유형이나 동작에 해당하는 정책 그룹만 필터링하여 평가 범위를 좁힌다.
  3. 결정 결과 캐싱(Decision Caching): 동일한 속성 조합의 요청에 대해서는 PDP의 결정 결과를 짧은 시간 동안 저장하여 재사용한다.
  4. 단순화된 정책 구조: 복잡한 중첩 논리식보다는 단순한 불리언(Boolean) 조합으로 정책을 설계하여 계산 복잡도를 낮춘다.

8. 활용 사례 및 적용 분야

  • 클라우드 컴퓨팅 (AWS IAM 등): 사용자, 자원, 조건(IP, MFA 여부 등)을 조합한 정책을 통해 클라우드 자원 접근을 제어한다.
  • 의료 데이터 관리 (Healthcare): "담당 의사(주체)가, 자신이 배정된 환자(자원)의, 진료 기록(속성)을, 병원 내 네트워크(환경)에서만" 조회할 수 있도록 설정하여 민감 정보를 보호한다.
  • 정부 및 공공기관: 직급, 소속 부서, 문서의 보안 등급, 열람 가능 기간 등 다차원적인 속성을 기반으로 국가 기밀 및 행정 데이터를 관리한다.
  • 제로 트러스트(Zero Trust) 아키텍처: "아무도 믿지 않는다"는 원칙하에, 매 요청 시마다 사용자의 기기 상태, 위치, 인증 수준 등의 속성을 실시간으로 검증하는 핵심 메커니즘으로 ABAC를 활용한다.
AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?