다음을 통해 공유


서버리스 SQL 풀에서 동기화된 개체에 대한 액세스 제어를 설정하는 방법

Azure Synapse Analytics에서 Spark 데이터베이스테이블은 서버리스 SQL 풀과 공유됩니다. Spark를 사용하여 만든 Lake 데이터베이스, ParquetCSV 지원 테이블은 서버리스 SQL 풀에서 자동으로 사용할 수 있습니다. 이 기능을 사용하면 서버리스 SQL 풀을 사용하고 Spark 풀을 사용하여 준비된 데이터를 탐색하고 쿼리할 수 있습니다. 아래 다이어그램에서는 이 기능을 활용하는 개략적인 아키텍처 개요를 볼 수 있습니다. 먼저 Azure Synapse Pipelines 온-프레미스(또는 기타) 스토리지에서 Azure Data Lake Storage로 데이터를 이동합니다. 이제 Spark는 데이터를 보강하고 데이터베이스 및 서버리스 Synapse SQL과 동기화되는 테이블을 만들 수 있습니다. 나중에 사용자는 보강된 데이터를 기반으로 임시 쿼리를 실행하거나 Power BI에 제공할 수 있습니다.

Enrich in Spark, serve with SQL diagram.

전체 관리자 액세스(sysadmin)

이러한 데이터베이스와 테이블이 Spark에서 서버리스 SQL 풀로 동기화되면 서버리스 SQL 풀의 이러한 외부 테이블을 사용하여 동일한 데이터에 액세스할 수 있습니다. 그러나 서버리스 SQL 풀의 개체는 Spark 풀 개체와의 일관성을 유지하기 때문에 읽기 전용입니다. 이러한 제한으로 인해 Synapse SQL 관리자 또는 Synapse 관리자 역할이 있는 사용자만 서버리스 SQL 풀에서 이러한 개체에 액세스할 수 있습니다. 관리자가 아닌 사용자가 동기화된 데이터베이스/테이블에서 쿼리를 실행하려고 하면 다음과 같은 오류가 발생합니다. External table '<table>' is not accessible because content of directory cannot be listed.(기본 스토리지 계정의 데이터에 액세스할 수 있음에도 불구하고)

서버리스 SQL 풀의 동기화된 데이터베이스는 읽기 전용이므로 수정할 수 없습니다. 사용자를 만들거나 다른 권한을 부여하려고 하면 실패합니다. 동기화된 데이터베이스를 읽으려면 권한 있는 서버 수준 권한(예: sysadmin)이 있어야 합니다. 이런 제한은 Dataverse용 Azure Synapse Link 및 레이크 데이터베이스 테이블을 사용할 때 서버리스 SQL 풀의 외부 테이블에도 있습니다.

동기화된 데이터베이스에 대한 비관리자 액세스

데이터를 읽고 보고서를 작성해야 하는 사용자에게는 일반적으로 전체 관리자 액세스 권한(sysadmin)이 없습니다. 이런 사용자는 일반적으로 기존 테이블을 사용하여 데이터를 읽고 분석하기만 하면 되는 데이터 분석가입니다. 새 개체를 만들 필요가 없습니다.

최소한의 사용 권한을 가진 사용자는 다음을 수행할 수 있어야 합니다.

  • Spark에서 복제된 데이터베이스에 연결
  • 외부 테이블을 통해 데이터 선택 및 기본 ADLS 데이터에 액세스

아래 코드 스크립트를 실행하면 관리자가 아닌 사용자가 모든 데이터베이스에 연결할 수 있는 서버 수준 권한을 가질 수 있습니다. 또한 사용자가 테이블 또는 뷰와 같은 모든 스키마 수준 개체의 데이터를 볼 수 있습니다. 데이터 액세스 보안은 스토리지 계층에서 관리할 수 있습니다.

-- Creating Azure AD login (same can be achieved for Azure AD app)
    CREATE LOGIN [login@contoso.com] FROM EXTERNAL PROVIDER;
    go;
    
    GRANT CONNECT ANY DATABASE to [login@contoso.com];
    GRANT SELECT ALL USER SECURABLES to [login@contoso.com];
    GO;

참고 항목

이러한 문은 모두 서버 수준 권한이므로 master 데이터베이스에서 실행해야 합니다.

로그인을 만들고 권한을 부여한 후 사용자는 동기화된 외부 테이블 위에서 쿼리를 실행할 수 있습니다. 이 완화는 Microsoft Entra 보안 그룹에도 적용할 수 있습니다.

특정 스키마를 통해 개체에 대한 보안을 더 많이 관리하고 특정 스키마에 대한 액세스를 잠글 수 있습니다. 이 해결 방법을 사용하려면 추가 DDL이 필요합니다. 이 시나리오에서는 ADLS의 Spark 테이블 데이터를 가리키는 새 서버리스 데이터베이스, 스키마 및 뷰를 만들 수 있습니다.

스토리지 계정의 데이터에 대한 액세스는 Microsoft Entra 사용자/그룹에 대한 일반 Storage Blob 데이터 소유자/읽기 권한자/기여자 역할 또는 ACL을 통해 관리할 수 있습니다. 서비스 주체(Microsoft Entra 앱)의 경우 ACL 설정을 사용해야 합니다.

참고 항목

  • 데이터 위에 OPENROWSET을 사용하는 것을 금지하려면 DENY ADMINISTER BULK OPERATIONS to [login@contoso.com];을 사용할 수 있습니다. 자세한 내용은 DENY 서버 권한을 참조하세요.
  • 특정 스키마 사용을 금지하려면 DENY SELECT ON SCHEMA::[schema_name] TO [login@contoso.com];을 사용할 수 있습니다. 자세한 내용은 DENY 스키마 권한을 참조하세요.

다음 단계

자세한 내용은 SQL 인증을 참조하세요.