OPA 문서 모델을 사용한 테넌트 격리 - AWS 권장 가이드

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

OPA 문서 모델을 사용한 테넌트 격리

OPA는 문서를 사용하여 결정을 내립니다. 이러한 문서에는 테넌트별 데이터가 포함될 수 있으므로 테넌트 데이터 격리를 유지하는 방법을 고려해야 합니다. OPA 문서는 기본 문서와 가상 문서로 구성됩니다. 기본 문서에는 외부 세계의 데이터가 포함됩니다. 여기에는 OPA에 직접 제공된 데이터, OPA 요청에 대한 데이터, 입력으로 OPA에 전달될 수 있는 데이터가 포함됩니다. 가상 문서는 정책에 따라 계산되며 OPA 정책 및 규칙을 포함합니다. 자세한 내용은 OPA 설명서를 참조하세요.

다중 테넌트 애플리케이션을 위해 OPA에서 문서 모델을 설계하려면 먼저 OPA에서 결정을 내리는 데 필요한 기본 문서 유형을 고려해야 합니다. 이러한 기본 문서에 테넌트별 데이터가 포함된 경우이 데이터가 테넌트 간 액세스에 실수로 노출되지 않도록 조치를 취해야 합니다. 다행히도 대부분의 경우 OPA에서 결정을 내리는 데 테넌트별 데이터가 필요하지 않습니다. 다음 예제는 입력 문서에 표시된 대로 테넌트가 API를 소유한지 여부와 사용자가 테넌트의 멤버인지 여부에 따라 API에 대한 액세스를 허용하는 가상 OPA 문서 모델을 보여줍니다.

기본 OPA 문서 모델

이 접근 방식에서 OPA는 어떤 테넌트가 API를 소유하는지에 대한 정보를 제외하고 테넌트별 데이터에 액세스할 수 없습니다. 이 경우 OPA가 액세스 결정을 내리는 데 사용하는 유일한 정보는 사용자의 테넌트와의 연결 및 테넌트의 APIs와의 연결이므로 OPA가 테넌트 간 액세스를 용이하게 하는 것에 대한 우려는 없습니다. 각 테넌트는 독립 리소스의 소유권을 가지므로 이러한 유형의 OPA 문서 모델을 사일로화된 SaaS 모델에 적용할 수 있습니다.

그러나 많은 RBAC 권한 부여 접근 방식에서는 테넌트 간 정보 노출 가능성이 있습니다. 다음 예제에서 가상 OPA 문서 모델은 사용자가 테넌트의 멤버인지 여부와 사용자가 API에 액세스할 수 있는 올바른 역할을 가지고 있는지 여부에 따라 API에 대한 액세스를 허용합니다.

테넌트 간 사용 사례를 위한 OPA 문서 모델

이 모델은에서 여러 테넌트의 역할 및 권한data.tenant1.user_roles과 권한 부여 결정을 내리기 위해 이제 OPA에 액세스할 수 data.tenant2.user_roles 있어야 하므로 테넌트 간 액세스 위험이 있습니다. 테넌트 격리 및 역할 매핑의 프라이버시를 유지하려면이 데이터가 OPA 내에 있으면 안 됩니다. RBAC 데이터는 데이터베이스와 같은 외부 데이터 소스에 있어야 합니다. 또한 사전 정의된 역할을 특정 권한에 매핑하는 데 OPA를 사용해서는 안 됩니다. 이렇게 하면 테넌트가 자신의 역할과 권한을 정의하는 것이 어렵기 때문입니다. 또한 권한 부여 로직을 견고하게 만들고 지속적인 업데이트가 필요합니다. RBAC 데이터를 OPA 의사 결정 프로세스에 안전하게 통합하는 방법에 대한 지침은이 안내서 뒷부분의 테넌트 격리 및 데이터 프라이버시에 대한 권장 사항 섹션을 참조하세요.

테넌트별 데이터를 비동기 기본 문서로 저장하지 않으면 테넌트 격리를 OPA에서 쉽게 유지할 수 있습니다. 비동기 기본 문서는 메모리에 저장되고 OPA에서 주기적으로 업데이트할 수 있는 데이터입니다. OPA 입력과 같은 다른 기본 문서는 동기식으로 전달되며 결정 시에만 사용할 수 있습니다. 예를 들어 쿼리에 대한 OPA 입력의 일부로 테넌트별 데이터를 제공하는 것은 테넌트 격리 위반으로 간주되지 않습니다. 해당 데이터는 결정을 내리는 과정에서 동기식으로만 사용할 수 있기 때문입니다.