평가 로직 - Amazon Simple Notification Service

평가 로직

평가 시점의 목표는 권한 요청(grant request)을 허용 또는 거부할지를 결정하는 것입니다. 평가 로직에서는 몇 가지 기본 규칙을 따릅니다.

  • 기본적으로, 본인을 제외한 사람이 리소스를 사용하겠다고 요청하면 모두 거부됩니다.

  • 허용은 모든 기본 거부를 무시합니다.

  • 명시적 거부는 모든 허용을 무시합니다.

  • 정책이 평가되는 순서는 중요하지 않습니다.

그러한 결정이 내려지는 방법은 다음 순서도와 설명에서 자세히 다룹니다.


          평가 순서도
1

결정은 기본 거부에서 시작합니다.

2

그러면 적용 코드에서 리소스, 보안 주체, 작업, 조건을 고려하여 해당 요청에 적용 가능한 모든 정책을 평가합니다.

적용 코드에서 정책을 평가하는 순서는 중요하지 않습니다.

3

적용 코드는 이 모든 정책에서 해당 요청에 적용될 명시적 거부 명령을 찾습니다.

하나라도 찾으면 적용 코드는 "거부" 결정을 반환하고 프로세스가 종료됩니다. 이것이 명시적 거부입니다. 자세한 정보는 명시적 거부에서 확인하세요.

4

명시적 거부가 없을 경우 적용 코드는 해당 요청에 적용될 "허용" 명령을 찾습니다.

하나라도 찾으면 적용 코드는 "허용" 결정을 반환하고 프로세스가 완료됩니다. 서비스에서는 계속 요청을 처리합니다.

5

허용이 없을 경우 최종 결정은 "거부"입니다. 명시적 거부 또는 허용이 없으므로 기본 거부로 간주됩니다. 자세한 정보는 기본 거부에서 확인하세요.

명시적 거부와 기본 거부의 상호 작용

어떤 정책이 해당 요청에 직접적으로 적용되지 않을 경우 그 결과는 기본 거부입니다. 예를 들어, 사용자가 Amazon SNS 사용을 요청하지만 그 주제에 대한 정책에서 사용자의 AWS 계정이 전혀 언급되지 않은 경우 이 정책의 결과는 기본 거부입니다.

설명의 조건이 충족되지 않을 경우에도 정책의 결과는 기본 거부입니다. 설명의 모든 조건이 충족될 경우, 정책의 결과는 정책에 포함된 효과 요소의 값에 따라 허용 또는 명시적 거부가 됩니다. 정책에서는 어떤 조건이 충족되지 않을 때 해야 할 일을 지정하지 않으므로, 그러한 경우 결과는 기본 거부가 됩니다.

이를테면 남극 대륙에서 보내는 요청을 거부하고 싶습니다. 남극 대륙에서 오지 않은 요청만 허용하도록 정책을 작성합니다(정책 A1). 다음 다이어그램은 이 정책을 보여줍니다.


            남극 대륙에서 오지 않은 요청을 허용하는 정책

누군가가 미국에서 요청을 보낼 경우 남극 대륙에서 온 요청이 아니므로 조건을 충족합니다. 따라서 요청이 허용됩니다. 누군가가 남극 대륙에서 요청을 보낼 경우 조건을 충족하며 정책의 결과는 기본 거부가 됩니다.

다음 다이어그램처럼 정책을 다시 작성하여(정책 A2) 결과를 명시적 거부로 바꿀 수 있습니다. 이 정책은 남극 대륙에서 온 요청을 명시적으로 거부합니다.


            남극 대륙에서 온 요청을 거부하는 정책

누군가가 남극 대륙에서 요청을 보낼 경우 조건을 충족하므로 정책의 결과는 명시적 거부입니다.

기본 거부는 허용으로 재정의할 수 있지만 명시적 거부는 재정의할 수 없기 때문에 기본 거부와 명시적 거부를 반드시 구분해야 합니다. 예를 들어, 2010년 6월 1일에 도착하는 요청을 허용하는 또 다른 정책이 있다고 가정하겠습니다. 이 정책이 남극 대륙의 액세스를 제한하는 정책과 결합될 경우 종합적인 결과는 어떻게 됩니까? 날짜 기반 정책(정책 B)을 앞의 정책 A1 및 A2와 결합했을 때 종합적인 결과를 비교해보겠습니다. 시나리오 1은 정책 A1과 정책 B를, 시나리오 2에서는 정책 A2를 정책 B와 결합합니다. 다음 그림과 설명은 남극 대륙에서 보낸 요청이 2010년 6월 1일에 도착했을 때의 결과를 보여 줍니다.


            기본 거부 재정의

시나리오 1에서는 이 섹션에서 설명한 것처럼 정책 A1이 기본 거부를 반환합니다. 정책 B는 허용을 반환합니다. 이 정책의 정의에 따라 2010년 6월 1일에 도착한 요청을 허용하기 때문입니다. 정책 B의 허용은 정책 A1의 기본 거부를 무시하므로 이 요청은 허용됩니다.

시나리오 2에서는 앞서 이 섹션에서 설명한 것처럼 정책 A2가 명시적 거부를 반환합니다. 역시 정책 B는 허용을 반환합니다. 정책 A2의 명시적 거부가 정책 B의 허용을 무시하므로 요청은 거부됩니다.