매개변수화된 보안 뷰 개요

이 페이지에서는 SQL 뷰를 사용하여 애플리케이션 데이터 보안 및 행 수준 액세스 제어를 제공하고 애플리케이션 사용자가 액세스해야 하는 데이터만 볼 수 있도록 지원하는 PostgreSQL용 AlloyDB의 파라미터화된 보안 뷰에 대해 설명합니다.

파라미터화된 보안 뷰는 PostgreSQL 보안 뷰의 확장 프로그램으로, 뷰 정의에서 애플리케이션별 명명된 뷰 파라미터를 사용할 수 있습니다. 이 기능은 쿼리와 명명된 파라미터의 값을 사용하는 인터페이스를 제공합니다. 인터페이스는 이러한 값으로 쿼리를 실행하며, 이 값은 쿼리 실행 전반에 사용됩니다.

다음은 파라미터화된 보안 뷰의 예입니다.

CREATE VIEW secure_checked_items WITH (security_barrier) AS
       SELECT bag_id, timestamp, location
       FROM checked_items t
       WHERE customer_id = $@app_end_userid;

execute_parameterized_query 저장 프로시저를 사용하거나 EXECUTE .. WITH VIEW PARAMETERS 문을 실행하여 파라미터화된 보안 뷰를 쿼리할 수 있습니다. 자세한 내용은 AlloyDB 매개변수화된 보안 뷰를 사용하여 애플리케이션 데이터 보안 관리를 참고하세요.

매개변수화된 보안 뷰의 이점

파라미터화된 보안 뷰는 특히 자연어에서 변환된 쿼리와 같이 신뢰할 수 없는 소스의 임시 쿼리를 처리할 때 데이터베이스 수준에서 데이터 보안을 관리하는 데 적합합니다. 이러한 뷰는 세분화된 액세스 제어를 구현하는 유연한 방법을 제공합니다.

예를 들어 고객의 체크인된 수하물을 추적하는 애플리케이션을 생각해 보세요. 사용자 ID가 12345인 고객이 '내 가방은 어디에 있어?'라고 질문합니다. 이 시나리오에서 파라미터화된 보안 뷰는 다음을 보장합니다.

쿼리는 쿼리를 제출한 사용자가 액세스할 수 있는 행만 반환합니다(예: 사용자 ID 12345에 연결된 행).

보안 위험 완화

파라미터화된 보안 뷰는 최종 사용자가 데이터베이스에서 자연어 쿼리와 같은 신뢰할 수 없는 쿼리를 실행할 때 보안 위험을 완화하는 데 도움이 됩니다. 이러한 위험에는 다음이 포함됩니다.

  • 악성 프롬프트: 사용자가 기본 모델을 조작하여 모든 애플리케이션 데이터에 액세스하려고 시도할 수 있습니다.
  • 범위가 넓은 SQL 쿼리: 대규모 언어 모델 (LLM)은 의도가 좋은 사용자 쿼리에서도 민감한 데이터를 노출하는 SQL 쿼리를 생성할 수 있습니다.

파라미터화된 보안 뷰를 사용하면 개별 애플리케이션 사용자가 사용할 수 있는 행의 범위를 제한할 수 있습니다. 이 제어를 통해 사용자가 쿼리를 어떻게 작성하든 데이터 보안이 보장됩니다.

데이터 액세스 관리

파라미터화된 보안 뷰는 증가하는 많은 사용자의 데이터 액세스를 관리할 때 발생하는 일반적인 문제를 해결합니다.

  • 간소화된 사용자 관리: 파라미터화된 보안 뷰를 사용하면 각 최종 사용자에 대해 별도의 데이터베이스 사용자 또는 역할을 만들어야 할 수 있는 방법을 사용하는 대신 단일 데이터베이스 역할을 사용하여 모든 최종 사용자에게 서비스를 제공할 수 있습니다. 파라미터화된 보안 뷰를 사용하면 각 최종 사용자가 자신의 데이터에만 액세스해야 하는 애플리케이션의 사용자 및 연결 관리를 간소화할 수 있습니다.

    예를 들어 고객이 자신의 예약만 볼 수 있는 항공사 애플리케이션에서 최종 사용자 식별자로 파라미터화된 단일 파라미터화된 보안 뷰를 정의할 수 있습니다. 이 뷰를 사용하면 기본 테이블이 아닌 뷰에 대한 액세스 권한이 있는 단일 데이터베이스 역할이 모든 사용자를 처리할 수 있으므로 사용자 관리 및 데이터베이스 연결이 간소화됩니다.

  • 보안 적용 간소화: 파라미터화된 보안 뷰는 액세스 제어를 기본적으로 통합합니다. 뷰가 쿼리되면 뷰에 액세스하는 사용자와 관계없이 정의된 보안 매개변수가 일관되게 적용됩니다. 이 접근 방식은 기본 테이블의 기본 보안 정책이 추가 구성 없이 뷰에 자동으로 적용되지 않을 수 있는 상황과 대조됩니다.

행 수준 보안 (RLS) 정책과 같은 PostgreSQL의 기존 보안 메커니즘에 대한 자세한 내용은 행 보안 정책을 참고하세요.

보안 메커니즘

파라미터화된 보안 뷰는 다음 방법을 사용하여 애플리케이션 개발자에게 데이터 보안 및 행 액세스 제어를 제공합니다.

  • WITH (security barrier) 옵션을 사용하여 만든 뷰는 악의적으로 선택된 함수와 연산자가 뷰가 작업을 완료할 때까지 행에서 값을 전달받지 못하도록 하여 행 수준 보안을 제공합니다. WITH (security barrier) 절에 관한 자세한 내용은 규칙 및 권한을 참고하세요.
  • 명명된 뷰 파라미터를 사용한 파라미터화는 최종 사용자 인증과 같은 애플리케이션 수준 보안을 기반으로 애플리케이션에서 제공한 값으로 파라미터화된 데이터베이스의 제한된 뷰를 허용합니다.
  • 파라미터화된 뷰에 액세스하는 쿼리에 대한 추가 제한사항을 적용하는 것은 AI 자연어-SQL 생성으로 생성된 쿼리와 같이 최종 사용자의 신뢰할 수 없는 쿼리를 실행하는 애플리케이션에 유용합니다. 이렇게 하면 파라미터화된 보안 뷰에서 제공하는 보안 봉투를 이스케이프하고 리소스 사용량을 관리할 수 없습니다. 자세한 내용은 쿼리에 적용되는 제한사항을 참조하세요.

제한사항

  • AlloyDB의 모든 인스턴스에서 파라미터화된 뷰 플래그를 별도로 사용 설정해야 합니다. 기본 인스턴스에서 생성된 파라미터화된 뷰 객체는 읽기 풀 인스턴스와 리전 간 복제본에 전파됩니다. 하지만 parameterized_views.enabled 플래그 설정은 자동으로 적용되지 않으며 각 인스턴스에서 수동으로 설정해야 합니다. 자세한 내용은 시작하기 전에를 참조하세요.

    각 인스턴스에서 parameterized_views.enabled 플래그를 사용 설정하기 전에는 읽기 풀 인스턴스 또는 리전 간 복제본에서 파라미터화된 뷰를 쿼리할 수 없습니다.

다음 단계