Azure Synapse 작업 영역에 대한 액세스 제어를 설정하는 방법

이 문서에서는 Microsoft Azure Synapse 작업 영역에 대한 액세스를 제어하는 방법을 설명합니다. 이를 위해 Azure 역할, Azure Synapse 역할, SQL 권한 및 Git 권한의 조합을 사용합니다.

이 가이드에서는 작업 영역을 설정하고 기본 액세스 제어 시스템을 구성합니다. 이 정보는 다양한 형식의 Synapse 프로젝트에서 사용할 수 있습니다. 필요한 경우 보다 세밀한 제어를 위한 고급 옵션도 찾을 수 있습니다.

조직의 역할 및 페르소나를 보안 그룹과 정렬하여 Synapse 액세스 제어를 단순화할 수 있습니다. 이를 통해 사용자를 추가 및 제거하여 보안 그룹에 대한 액세스를 관리할 수 있습니다.

이 연습을 시작하기 전에 Azure Synapse 액세스 제어 개요를 읽고 Synapse Analytics에서 사용하는 액세스 제어 메커니즘을 숙지합니다.

액세스 제어 메커니즘

참고 항목

이 가이드의 방법은 보안 그룹을 만드는 것입니다. 이러한 보안 그룹에 역할을 할당할 때 작업 영역에 대한 액세스를 제어하려면 해당 그룹 내의 멤버 자격만 관리하면 됩니다.

Synapse 작업 영역을 보호하기 위해 다음 항목을 구성합니다.

  • 보안 그룹: 액세스 요구 사항이 비슷한 사용자를 그룹화합니다.
  • Azure 역할: SQL 풀, Apache Spark 풀 및 통합 런타임 생성 및 관리, ADLS Gen2 스토리지에 액세스할 수 있는 사용자를 제어합니다.
  • Synapse 역할: 게시된 코드 아티팩트에 대한 액세스를 제어하고, Apache Spark 컴퓨팅 리소스 및 통합 런타임을 사용합니다.
  • SQL 사용 권한: SQL 풀에 대한 관리 및 데이터 평면 액세스를 제어합니다.
  • Git 사용 권한: 작업 영역에 Git 지원을 구성하는 경우 소스 제어에서 코드 아티팩트에 액세스할 수 있는 사용자를 제어합니다.

Synapse 작업 영역을 보호하는 단계

이 문서는 지침을 단순화하기 위해 표준 이름을 사용합니다. 표준 이름을 원하는 이름으로 바꿉니다.

설정 표준 이름 설명
Synapse 작업 영역 workspace1 Azure Synapse 작업 영역의 이름입니다.
ADLSGEN2 계정 storage1 작업 영역에 사용할 ADLS 계정입니다.
컨테이너 container1 작업 영역에서 기본적으로 사용하게 될 storage1의 컨테이너입니다.
Microsoft Entra ID 테넌트 contoso Microsoft Entra ID 테넌트 이름입니다.
서비스 주체 SERVICEPRINCIPAL Microsoft Entra ID 테넌트의 서비스 주체입니다.

1단계: 보안 그룹 설정

세분화된 옵션을 사용하여 작업 영역에 대한 액세스를 제어하여 개발자에게 전체 작업 영역이 아닌 개별 리소스에 대한 액세스 권한을 부여하는 것이 좋습니다. 시냅스 RBAC에 대해 자세히 알아봅니다.

작업 영역에 대해 다음과 같은 보안 그룹을 만듭니다.

  • workspace1_SynapseAdministrators: 작업 영역을 완벽하게 제어해야 하는 사용자를 위한 그룹입니다. 처음에는 이 보안 그룹에 자신을 추가합니다.
  • workspace1_SynapseContributors: 코드를 개발, 디버그 및 서비스에 게시해야 하는 개발자를 위한 그룹입니다.
  • workspace1_SynapseComputeOperators: Apache Spark 풀 및 통합 런타임을 관리 및 모니터링해야 하는 사용자를 위한 그룹입니다.
  • workspace1_SynapseCredentialUsers: 작업 영역 MSI(관리되는 서비스 ID) 자격 증명을 사용하여 오케스트레이션 파이프라인을 디버그 및 실행하고 파이프라인 실행을 취소해야 하는 사용자를 위한 그룹입니다.

작업 영역 범위에서 잠시 후에 해당 그룹에 Synapse 역할을 할당합니다.

다음과 같이 이 보안 그룹도 만듭니다.

  • workspace1_SQLAdmins: 작업 영역의 SQL 풀에서 SQL Active Directory 관리 권한이 필요한 사용자를 위한 그룹입니다.

workspace1_SQLAdmins 그룹은 SQL 풀을 만들 때 SQL 권한을 구성합니다.

이 5개 그룹은 기본 설정에 충분합니다. 나중에 보안 그룹을 추가하여 보다 전문화된 액세스가 필요한 사용자를 처리하거나 개별 리소스에 대한 액세스만 제한할 수 있습니다.

참고 항목

개별 Synapse 사용자는 Azure Portal에서 Microsoft Entra ID를 사용하여 그룹 멤버 자격을 볼 수 있습니다. 이를 통해 부여된 역할을 결정할 수 있습니다.

2단계: ADLS Gen2 스토리지 계정 준비

Synapse 작업 영역은 다음을 위해 기본 스토리지 컨테이너를 사용합니다.

  • Spark 테이블용 백업 데이터 파일 스토리지
  • Spark 작업의 실행 로그
  • 설치하기로 선택한 라이브러리 관리

스토리지에 대한 다음 정보를 식별합니다.

  • 작업 영역에 사용할 ADLS Gen2 계정입니다. 이 문서에서는 storage1이라고 하겠습니다. storage1은 작업 영역의 "주" 스토리지 계정으로 간주됩니다.

  • Synapse 작업 영역에서 기본적으로 사용할 storage1 내의 컨테이너입니다. 이 문서에서는 container1이라고 하겠습니다.

  • 액세스 제어(IAM) 를 선택합니다.

  • 추가>를 선택하여 역할 할당 추가 페이지를 엽니다.

  • 다음 역할을 할당합니다. 세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

    설정
    역할 Storage Blob 데이터 Contributor
    다음에 대한 액세스 할당 SERVICEPRINCIPAL
    멤버 workspace1_SynapseAdministrators, workspace1_SynapseContributors 및 workspace1_SynapseComputeOperators

    Azure Portal에서 역할 할당 페이지 추가

3단계: Synapse 작업 영역 만들기 및 구성

Azure Portal에서 Synapse 작업 영역을 만듭니다.

  • 구독 선택

  • Azure 소유자 역할이 있는 리소스 그룹을 선택하거나 만듭니다.

  • workspace1 작업 영역 이름 지정

  • 스토리지 계정으로 storage1 선택

  • "파일 시스템"으로 사용할 컨테이너로 container1 선택.

  • Synapse Studio에서 workspace1 열기

  • Synapse Studio에서 관리>Access Control로 이동합니다. 작업 영역 범위에서 다음과 같이 보안 그룹에 Synapse 역할을 할당합니다.

    • Synapse 관리자 역할을 workspace1_SynapseAdministrators에 할당
    • Synapse 참여자 역할을 workspace1_SynapseContributors에 할당
    • Synapse 컴퓨팅 연산자 역할을 workspace1_SynapseComputeOperators에 할당

4단계: 기본 스토리지 컨테이너에 작업 영역 MSI 액세스 권한 부여

파이프라인을 실행하고 시스템 작업을 수행하려면 Azure Synapse에서 작업 영역에 대한 기본 ADLS Gen2 계정의 container1에 대한 액세스 권한이 있는 MSI(관리되는 서비스 ID)가 필요합니다. 자세한 내용은 Azure Synapse 작업 영역 관리 ID를 참조하세요.

  • Azure Portal을 엽니다.

  • 스토리지 계정, storage1, container1을 차례로 찾습니다.

  • 액세스 제어(IAM) 를 선택합니다.

  • 역할 할당 추가 페이지를 열려면 추가>역할 할당 추가를 선택합니다.

  • 다음 역할을 할당합니다. 세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

    설정
    역할 Storage Blob 데이터 Contributor
    다음에 대한 액세스 할당 MANAGEDIDENTITY
    멤버 관리 ID 이름

    참고 항목

    관리 ID 이름은 작업 영역 이름이기도 합니다.

    Azure Portal에서 역할 할당 페이지 추가

5단계: Synapse 관리자에게 작업 영역에 대한 Azure 기여자 역할 부여

SQL 풀, Apache Spark 풀 및 통합 런타임을 만들려면 사용자에게 최소한 작업 영역에 대한 Azure 기여자 역할이 필요합니다. 또한 기여자 역할을 통해 사용자는 일시 중지 및 크기 조정을 비롯한 리소스를 관리할 수 있습니다. Azure Portal 또는 Synapse Studio를 사용하여 SQL 풀, Apache Spark 풀 및 통합 런타임을 만들려면 리소스 그룹 수준에서 기여자 역할이 필요합니다.

  • Azure Portal을 엽니다.

  • 작업 영역, workspace1 찾기

  • 액세스 제어(IAM) 를 선택합니다.

  • 역할 할당 추가 페이지를 열려면 추가>역할 할당 추가를 선택합니다.

  • 다음 역할을 할당합니다. 세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

    설정
    역할 기여자('권한 있는 관리자 역할' 아래에 나열됨)
    액세스 할당 대상: SERVICEPRINCIPAL
    멤버 workspace1_SynapseAdministrators

    Azure Portal에서 역할 할당 페이지 추가

6단계: SQL Active Directory 관리자 역할 할당

작업 영역 작성자는 작업 영역의 SQL Active Directory 관리자로 자동 할당됩니다. 단일 사용자 또는 그룹에만 이 역할을 부여할 수 있습니다. 이 단계에서는 작업 영역의 SQL Active Directory 관리자를 workspace1_SQLAdmins 보안 그룹에 할당합니다. 이렇게 하면 작업 영역의 모든 SQL 풀 및 데이터베이스에 대한 높은 권한의 관리자 액세스 권한이 그룹에 부여됩니다.

  • Azure Portal을 엽니다.
  • workspace1 로 이동합니다.
  • 설정 아래에서 Microsoft Entra ID 선택
  • 관리자 설정을 선택하고 workspace1_SQLAdmins를 선택합니다.

참고 항목

6단계는 선택 사항입니다. workspace1_SQLAdmins 그룹에 권한이 낮은 역할을 부여하도록 선택할 수 있습니다. db_owner 또는 다른 SQL 역할을 할당하려면 각 SQL 데이터베이스에서 스크립트를 실행해야 합니다.

7단계: SQL 풀에 대한 액세스 권한 부여

기본적으로 작업 영역의 서버리스 SQL 풀에 대한 SQL db_owner 역할도 Synapse 관리자에게 부여됩니다.

다른 사용자의 SQL 풀에 대한 액세스는 SQL 권한으로 제어됩니다. SQL 권한을 할당하려면 만들기 후 각 SQL 데이터베이스에서 SQL 스크립트를 실행해야 합니다. 다음은 이러한 스크립트를 실행해야 하는 예입니다.

  1. 사용자에게 서버리스 SQL 풀, '기본 제공' 및 해당 데이터베이스에 대한 액세스 권한을 부여합니다.

  2. 사용자에게 전용 SQL 풀 데이터베이스에 대한 액세스 권한을 부여합니다. 예 SQL 스크립트는 이 문서의 뒷부분에 포함되어 있습니다.

  3. 전용 SQL 풀 데이터베이스에 대한 액세스 권한을 부여하기 위해 작업 영역 생성자 또는 workspace1_SynapseAdministrators 그룹의 모든 구성원이 스크립트를 실행할 수 있습니다.

  4. 서버리스 SQL 풀, '기본 제공'에 대한 액세스 권한을 부여하기 위해 workspace1_SQLAdmins 그룹 또는 workspace1_SynapseAdministrators 그룹의 모든 구성원이 스크립트를 실행할 수 있습니다.

SQL 풀에 대해 다음 단계를 수행하여 모든 SQL 데이터베이스에 대한 액세스 권한을 부여할 수 있습니다. 작업 영역 범위 권한 구성 섹션은 규칙의 예외이며 사용자에게 작업 영역 수준에서 시스템 관리자 역할을 할당할 수 있습니다.

7a단계: 서버리스 SQL 풀, 기본 제공

이 섹션의 스크립트 예를 사용하여 사용자에게 개별 데이터베이스 또는 서버리스 SQL 풀 Built-in의 모든 데이터베이스에 액세스할 수 있는 권한을 부여할 수 있습니다.

참고 항목

스크립트 예에서 alias를 액세스 권한이 부여된 사용자 또는 그룹의 별칭으로 바꿉니다. 도메인을 사용 중인 회사 도메인으로 바꿉니다.

데이터베이스 범위 권한 구성

다음 예에 설명된 단계에 따라 사용자에게 단일 서버리스 SQL 데이터베이스에 대한 액세스 권한을 부여할 수 있습니다.

  1. 로그인을 만듭니다. master 데이터베이스 컨텍스트로 변경합니다.

    --In the master database
    CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
    
  2. 데이터베이스에서 사용자를 만듭니다. 컨텍스트를 데이터베이스로 변경합니다.

    -- In your database
    CREATE USER alias FROM LOGIN [alias@domain.com];
    
  3. 데이터베이스에서 지정된 역할의 멤버로 사용자를 추가합니다(이 경우 db_owner 역할).

    ALTER ROLE db_owner ADD member alias; -- Type USER name from step 2
    

작업 영역 범위 권한 구성

작업 영역의 모든 서버리스 SQL 풀에 대한 모든 권한을 부여할 수 있습니다. master 데이터베이스에서 이 예의 스크립트를 실행합니다.

CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
ALTER SERVER ROLE sysadmin ADD MEMBER [alias@domain.com];

7b단계: 전용 SQL 풀 구성

단일 전용 SQL 풀 데이터베이스에 대한 액세스 권한을 부여할 수 있습니다. Azure Synapse SQL 스크립트 편집기에서 다음 단계를 사용합니다.

  1. 다음 명령을 실행하여 데이터베이스에 사용자를 만듭니다. 연결 대상 드롭다운에서 대상 데이터베이스를 선택합니다.

    --Create user in the database
    CREATE USER [<alias@domain.com>] FROM EXTERNAL PROVIDER;
    -- For Service Principals you would need just the display name and @domain.com is not required
    
  2. 다음과 같이 사용자에게 데이터베이스에 액세스할 수 있는 역할을 부여합니다.

    --Grant role to the user in the database
    EXEC sp_addrolemember 'db_owner', '<alias@domain.com>';
    

Important

db_datareaderdb_datawriter 데이터베이스 역할은 db_owner 권한을 부여하지 않으려는 경우 읽기/쓰기 권한을 제공할 수 있습니다. 그러나 Spark 사용자가 Spark에서 SQL 풀로 직접 읽고 쓰려면 db_owner 권한이 필요합니다.

사용자를 만든 후 쿼리를 실행하여 서버리스 SQL 풀이 스토리지 계정을 쿼리할 수 있는지 확인할 수 있습니다.

8단계: 보안 그룹에 사용자 추가

이제 액세스 제어 시스템의 초기 구성이 완료되었습니다.

이제 설정한 보안 그룹에 사용자를 추가 및 제거하여 액세스를 관리할 수 있습니다. 사용자를 Azure Synapse 역할에 수동으로 할당할 수 있지만 이렇게 하면 권한이 일관되지 않게 설정됩니다. 대신 보안 그룹에 사용자만 추가하거나 제거합니다.

9단계: 네트워크 보안

작업 영역을 보호하는 최종 단계로, 작업 영역 방화벽을 사용하여 네트워크 액세스를 보호해야 합니다.

10단계: 완료

작업 영역이 완전히 구성되었으며 보안이 설정되었습니다.

고급 시나리오 지원

이 가이드에서는 기본 액세스 제어 시스템을 설정하는 방법을 중점적으로 설명합니다. 다른 보안 그룹을 생성하고 이러한 그룹에 보다 구체적인 범위에서 보다 세분화된 역할을 할당하여 고급 시나리오를 지원할 수 있습니다. 다음과 같은 사례를 고려해 보세요.

CI/CD를 비롯한 고급 개발 시나리오를 위해 작업 영역에 대한 Git 지원 사용. Git 모드에서 Git 사용 권한 및 Synapse RBAC는 사용자가 작업 분기에 대한 변경 내용을 커밋할 수 있는지 여부를 결정합니다. 서비스에 게시하는 작업은 협업 분기에서만 수행됩니다. 작업 분기에서 업데이트를 개발하고 디버그해야 하지만 라이브 서비스에 변경 내용을 게시할 필요가 없는 개발자를 위한 보안 그룹을 만드는 것을 고려해 보세요.

특정 리소스에 대한 개발자 액세스를 제한합니다. 특정 리소스에만 액세스해야 하는 개발자를 위해 다른 세분화된 보안 그룹을 만듭니다. 특정 Spark 풀, 통합 런타임 또는 자격 증명으로 범위가 지정된 적절한 Azure Synapse 역할을 그룹에 할당합니다.

연산자가 코드 아티팩트에 액세스하지 못하도록 제한합니다. Synapse 계산 리소스 및 로그의 작동 상태를 모니터링해야 하지만 코드에 액세스하거나 서비스에 업데이트를 게시할 필요가 없는 운영자를 위한 보안 그룹을 생성합니다. 특정 Spark 풀 및 통합 런타임에 컴퓨팅 연산자 역할 범위를 이러한 그룹에 할당합니다.

로컬 인증 사용 안 함 Microsoft Entra 인증만 허용하면 SQL 풀과 같은 Azure Synapse 리소스에 대한 액세스를 중앙에서 관리할 수 있습니다. 작업 영역 내의 모든 리소스에 대한 로컬 인증은 작업 영역을 만드는 동안 또는 그 후에 비활성화할 수 있습니다. Microsoft Entra 전용 인증에 대한 자세한 내용은 Azure Synapse Analytics에서 로컬 인증 사용 안 함을 참조하세요.