PEP 구현 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

PEP 구현

정책 적용 지점(PEP)은 평가를 위해 정책 결정 지점(PDP)으로 전송되는 권한 부여 요청을 수신할 책임이 있습니다. PEP는 데이터 및 리소스를 보호해야 하는 애플리케이션 또는 권한 부여 로직이 적용되는 애플리케이션의 모든 위치에 있을 수 있습니다. PEPs는 PDPs. PEP는 권한 부여 결정을 요청하고 평가하는 데만 책임이 있으며 권한 부여 로직이 필요하지 않습니다. PEPs PDPs와 달리 SaaS 애플리케이션에서 중앙 집중화할 수 없습니다. 이는 애플리케이션 및 액세스 포인트 전체에서 권한 부여 및 액세스 제어를 구현해야 하기 때문입니다. PEPs APIs, 마이크로서비스, 프런트엔드 백엔드(BFF) 계층 또는 액세스 제어가 필요하거나 필요한 애플리케이션의 모든 지점에 적용할 수 있습니다. 애플리케이션에서 PEPs를 만연하게 하면 여러 지점에서 권한 부여를 자주 독립적으로 확인할 수 있습니다.   

PEP를 구현하려면 첫 번째 단계는 애플리케이션에서 액세스 제어 적용이 수행되어야 하는 위치를 결정하는 것입니다. 애플리케이션에 PEPs 통합할 위치를 결정할 때이 원칙을 고려하세요. 

애플리케이션이 API를 노출하는 경우 해당 API에 대한 권한 부여 및 액세스 제어가 있어야 합니다.

이는 마이크로서비스 지향 아키텍처 또는 서비스 지향 아키텍처에서 APIs가 서로 다른 애플리케이션 함수 간의 구분자 역할을 하기 때문입니다. 애플리케이션 함수 간에 액세스 제어를 논리적 체크포인트로 포함하는 것이 좋습니다. SaaS 애플리케이션의 각 API에 액세스하려면 PEPs를 사전 조건으로 포함하는 것이 좋습니다. 애플리케이션의 다른 지점에서 권한 부여를 통합할 수도 있습니다. 모놀리식 애플리케이션에서는 애플리케이션 자체의 로직 내에 PEPs를 통합해야 할 수 있습니다. PEPs 포함해야 하는 단일 위치는 없지만 API 원칙을 시작점으로 사용하는 것이 좋습니다.

권한 부여 결정 요청

PEP는 PDP에 권한 부여 결정을 요청해야 합니다. 요청은 여러 형식을 취할 수 있습니다. 권한 부여 결정을 요청하는 가장 쉽고 액세스하기 쉬운 방법은 PDP(OPA 또는 Verified Permissions)에서 노출되는 RESTful API에 권한 부여 요청 또는 쿼리를 보내는 것입니다. Verified Permissions를 사용하는 경우 AWS SDK를 사용하여 권한 부여 결정을 검색하여 IsAuthorized 메서드를 호출할 수도 있습니다. 이 패턴에서 PEP의 유일한 함수는 권한 부여 요청 또는 쿼리에 필요한 정보를 전달하는 것입니다. 이는 API에서 받은 요청을 PDP에 입력으로 전달하는 것만큼 간단할 수 있습니다. PEPs. 예를 들어, API를 사용하는 대신 Go 프로그래밍 언어로 작성된 애플리케이션과 로컬로 OPA PDP를 라이브러리로 통합할 수 있습니다.

권한 부여 결정 평가

PEPs 권한 부여 결정의 결과를 평가하기 위한 로직이 포함되어야 합니다. PDPs APIs로 노출되면 권한 부여 결정이 JSON 형식일 가능성이 높으며 API 직접 호출로 반환됩니다. PEP는이 JSON 코드를 평가하여 수행 중인 작업이 승인되었는지 확인해야 합니다. 예를 들어 PDP가 부울 허용 또는 거부 권한 부여 결정을 제공하도록 설계된 경우 PEP는 단순히이 값을 확인한 다음 허용에 대해 HTTP 상태 코드 200을 반환하고 거부에 대해 HTTP 상태 코드 403을 반환할 수 있습니다. API에 액세스하기 위한 사전 조건으로 PEP를 통합하는 이러한 패턴은 SaaS 애플리케이션 전체에서 액세스 제어를 구현하기 위한 쉽고 매우 효과적인 패턴입니다. 더 복잡한 시나리오에서는 PEP가 PDP에서 반환한 임의의 JSON 코드를 평가할 책임이 있을 수 있습니다. PDP가 반환하는 권한 부여 결정을 해석하는 데 필요한 로직을 포함하도록 PEP를 작성해야 합니다. PEP는 애플리케이션의 여러 위치에서 구현될 가능성이 높으므로 PEP 코드를 원하는 프로그래밍 언어로 재사용 가능한 라이브러리 또는 아티팩트로 패키징하는 것이 좋습니다. 이렇게 하면 재작업을 최소화하면서 애플리케이션의 어느 시점에서든 PEP를 쉽게 통합할 수 있습니다.