이 페이지에서는 Azure Databricks가 Lakeguard를 사용하여 공유 컴퓨팅 환경에서 사용자 격리를 적용하고 전용 컴퓨팅에서 세분화된 액세스 제어를 적용하는 방법을 설명합니다.
레이크가드란?
Lakeguard는 여러 사용자가 동일한 컴퓨팅 리소스를 안전하고 비용 효율적으로 공유할 수 있도록 코드 격리 및 데이터 필터링을 적용하고, 권한 있는 컴퓨터 액세스를 제공하는 컴퓨팅에서 세분화된 액세스 제어를 사용하여 데이터에 액세스할 수 있도록 하는 Databricks의 기술 세트입니다.
Lakeguard는 어떻게 작동하나요?
표준 클래식 컴퓨팅, 서버리스 컴퓨팅 및 SQL 웨어하우스와 같은 공유 컴퓨팅 환경에서 Lakeguard는 Spark 엔진 및 다른 사용자로부터 사용자 코드를 격리합니다. 이 디자인을 사용하면 많은 사용자가 사용자, Spark 드라이버 및 실행기 간에 엄격한 경계를 유지하면서 동일한 컴퓨팅 리소스를 공유할 수 있습니다.
클래식 Spark 아키텍처
다음 이미지는 기존 Spark 아키텍처에서 사용자 애플리케이션이 기본 머신에 대한 권한 있는 액세스 권한이 있는 JVM을 공유하는 방법을 보여 줍니다.
Lakeguard 아키텍처
Lakeguard는 보안 컨테이너를 사용하여 모든 사용자 코드를 격리합니다. 이렇게 하면 사용자 간에 엄격한 격리를 유지하면서 동일한 컴퓨팅 리소스에서 여러 워크로드를 실행할 수 있습니다.
Spark 클라이언트 격리
Lakeguard는 두 가지 주요 구성 요소를 사용하여 Spark 드라이버와 서로 클라이언트 애플리케이션을 격리합니다.
Spark Connect: Lakeguard는 Spark Connect(Apache Spark 3.4에서 도입됨)를 사용하여 드라이버에서 클라이언트 애플리케이션을 분리합니다. 클라이언트 애플리케이션과 드라이버는 더 이상 동일한 JVM 또는 클래스 경로를 공유하지 않습니다. 이렇게 분리하면 무단 데이터 액세스를 방지할 수 있습니다. 또한 이 디자인은 쿼리에 행 또는 열 수준 필터가 포함된 경우 오버페치로 인한 데이터에 사용자가 액세스하지 못하도록 합니다.
비고
Spark Connect는 분석 및 이름 확인을 실행 시간으로 연기하여 코드의 동작을 변경할 수 있습니다. Spark Connect와 Spark 클래식 비교를 참조하세요.
컨테이너 샌드박싱: 각 클라이언트 애플리케이션은 자체 격리된 컨테이너 환경에서 실행됩니다. 이렇게 하면 사용자 코드가 다른 사용자의 데이터 또는 기본 컴퓨터에 액세스할 수 없습니다. 샌드박싱은 컨테이너 기반 격리 기술을 사용하여 사용자 간에 보안 경계를 만듭니다.
UDF 격리
기본적으로 Spark 실행기는 UDF를 격리하지 않습니다. 이러한 격리가 부족하면 UDF가 파일을 작성하거나 기본 컴퓨터에 액세스할 수 있습니다.
Lakeguard는 Spark 실행기에서 UDF를 포함한 사용자 정의 코드를 다음과 같이 격리합니다.
- Spark 실행기에서 실행 환경을 샌드박싱합니다.
- UDF에서 송신 네트워크 트래픽을 격리하여 무단 외부 액세스를 방지합니다.
- 사용자가 필요한 라이브러리에 액세스할 수 있도록 클라이언트 환경을 UDF 샌드박스에 복제합니다.
이 격리는 표준 컴퓨팅의 UDF 및 서버리스 컴퓨팅 및 SQL 웨어하우스의 Python UDF에 적용됩니다.