규칙 하나가 Permit, 다른 규칙이 Deny를 내렸다면 정책 엔진은 지정된 결합 알고리즘에 따라 최종 결정을 만듭니다. 이 두 결과만 있는 오류 없는 예에서 deny-overrides는 Deny를, permit-overrides는 Permit을 반환합니다. 규칙 결과만 보고 최종 인가를 말할 수는 없습니다.

NotApplicable은 적용되는 규칙이 없다는 결과이고 Indeterminate는 평가에 오류·불확정이 있는 결과이므로 서로 바꿔 쓰지 않습니다. 예시는 XACML의 결과 결합을 가르치기 위해 만든 가상 정책이며 특정 제품 엔진의 동작 증거가 아닙니다.

먼저 요청과 규칙 결과를 분리합니다

문서 열람 요청을 가정해 보겠습니다. 사용자 역할을 확인하는 규칙 R1은 ‘담당 역할이면 Permit’을 반환하고, 시간 제한 규칙 R2는 ‘허용 시간 밖이면 Deny’를 반환합니다. 지금의 요청은 R1에도 맞고 R2에도 맞는다고 둡니다. 그러면 각 규칙의 결과는 각각 Permit과 Deny입니다. 여기까지는 개별 규칙의 평가이며, 최종 결정은 아직 아닙니다.

XACML은 정책 안의 규칙 결과를 하나의 결정으로 만드는 규칙 결합 알고리즘을 정의합니다. 정책 집합끼리 결합하는 정책 결합 알고리즘과 규칙 결합 알고리즘도 구별해야 합니다. 아래 계산은 한 정책의 두 규칙을 결합하는 경우로 제한합니다. OASIS 표준은 결합 방식마다 결과 우선순위와 Indeterminate 처리 규칙을 정합니다.

같은 두 규칙 결과를 결합 방식에 따라 판정합니다
R1 역할R2 시간결합 알고리즘최종 결정
PermitDenydeny-overridesDeny
PermitDenypermit-overridesPermit

deny-overrides에서는 적용된 결과 중 Deny가 있으면 거부가 우선합니다. permit-overrides에서는 Permit이 있으면 허용이 우선합니다. 같은 R1·R2 결과인데 이름에 적힌 우선순위가 다르므로 결정도 반대입니다. 따라서 규칙을 몇 개 봤는지뿐 아니라 정책이 어떤 결합 알고리즘을 선택했는지 함께 읽어야 합니다. 결과를 실제 서비스의 권한으로 옮기기 전에 요청의 주체·객체·행위·환경 속성이 어떤 규칙을 만족했는지도 확인해야 합니다.

NotApplicable과 Indeterminate를 한데 묶지 않습니다

예를 들어 어떤 규칙도 요청과 맞지 않으면 NotApplicable이 나올 수 있습니다. 반면 규칙 평가 중 필요한 속성을 읽지 못하거나 오류가 생기면 Indeterminate 계열 결과가 나올 수 있습니다. 결합 알고리즘은 이 결과들을 구분해 처리하며, 알고리즘 변형에 따라 오류 결과를 Permit이나 Deny와 함께 비교하는 세부 규칙도 달라집니다. 위의 두 행은 오류가 없는 Permit과 Deny만 있다고 가정했으므로 복잡한 오류 표를 단순화해도 결론이 정확합니다.

  1. 요청의 주체, 객체, 행위, 필요하면 환경 조건을 고정합니다.
  2. 각 규칙을 별개로 평가해 Permit·Deny·NotApplicable·Indeterminate를 기록합니다.
  3. 평가 대상이 규칙인지 정책인지 확인합니다.
  4. 정책에 명시된 결합 알고리즘을 확인합니다.
  5. 그 알고리즘의 우선순위에 결과를 넣고 최종 결정을 계산합니다.
  6. 인증·속성 조회 오류가 있었다면 단순 Permit/Deny 표를 그대로 적용하지 않습니다.

NIST의 ABAC 설명은 인가가 주체·객체·요청된 행위와 때로 환경 속성을 정책·규칙과 대조해 결정된다고 설명합니다. 이는 어떤 값이 규칙 판단에 들어가는지를 보여 주는 모델입니다. 그러나 ABAC 개요가 XACML의 모든 결합 알고리즘을 대신하지는 않습니다. 구체적인 결과 우선순위는 인용한 XACML 표준에서 확인해야 합니다.

회상 연습: 결합 알고리즘 이름만 바꿔 봅니다

교육용 문제입니다. 같은 문서 요청에 역할 규칙이 Permit을, 시간 규칙이 Deny를 반환했습니다. 정책은 두 오류 없는 규칙을 결합합니다. deny-overrides와 permit-overrides에서 결과를 각각 쓰고, 적용 규칙이 하나도 없을 때의 NotApplicable과 혼동하지 말아야 하는 이유를 설명하세요.

deny-overrides는 Deny를 반환하고 permit-overrides는 Permit을 반환합니다. 결합 방식이 우선순위를 정하기 때문입니다. 두 규칙이 모두 요청에 적용되지 않은 결과인 NotApplicable은 Permit과 Deny가 충돌한 상황과 다릅니다. 실제 Indeterminate 결과가 있으면 해당 XACML 결합 알고리즘의 세부 표를 따라야 합니다.

정답을 가리고 확인해 보세요

이 글을 위해 만든 학습 예시이며 공식 기출문제나 판매 카드의 인용이 아닙니다.

오류 없는 규칙 평가 결과가 Permit 하나와 Deny 하나다. XACML의 deny-overrides와 permit-overrides는 각각 어떤 결과를 내는가?

정답과 해설 확인deny-overrides는 Deny를, permit-overrides는 Permit을 반환합니다.

각 알고리즘이 Permit·Deny 사이의 우선순위를 다르게 정합니다. NotApplicable과 Indeterminate가 포함된 조합은 단순한 두 결과 사례와 다르므로 XACML 표준의 해당 알고리즘을 확인해야 합니다. NIST SP 800-162는 ABAC가 주체·객체·행위·환경 속성과 정책을 대조하는 맥락을 지원합니다.