다음을 통해 공유


최소 권한으로 Azure Arc 지원 SQL Server 운영

적용 대상: SQL Server

최소 권한의 정보 보안 원칙은 계정 및 애플리케이션에 필요한 데이터 및 작업에 대한 액세스 권한만 부여해야 한다는 사실을 확인합니다. Azure Arc에서 SQL Server를 사용하도록 설정하면 최소 권한으로 에이전트 확장 서비스를 실행할 수 있습니다. 이 문서에서는 최소 권한으로 에이전트 확장 서비스를 실행하는 방법을 설명합니다.

필요에 따라 최소 권한으로 실행되도록 서비스를 구성하려면 이 문서의 단계를 수행합니다. 현재 서비스는 최소 권한으로 자동 실행되지 않습니다.

SQL Server용 Azure 확장에 대한 Windows 서비스 계정 및 사용 권한 구성은 에이전트 확장 서비스에 대한 최소 권한 사용 권한을 설명합니다.

참고 항목

2024년 11월 릴리스 이후의 확장 기능이 있는 기존 서버에는 최소 권한 구성이 자동으로 적용됩니다. 이 애플리케이션은 점진적으로 발생합니다.

최소 권한의 자동 적용을 방지하려면 2024년 11월 릴리즈로 확장 업그레이드를 차단합니다.

최소 권한으로 실행되도록 에이전트 확장 서비스를 구성한 후에는 NT Service\SQLServerExtension 서비스 계정을 사용합니다.

NT Service\SQLServerExtension 계정은 로컬 Windows 서비스 계정입니다.

  • 최소 권한 옵션을 사용하는 경우 SQL Server용 Azure 확장에서 만들고 관리합니다.
  • Windows 운영 체제에서 SQL Server 서비스용 Azure 확장을 실행하는 데 필요한 최소 사용 권한 및 권한이 부여되었습니다. 구성을 읽고 저장하거나 로그를 작성하는 데 사용되는 폴더 및 디렉터리에만 액세스할 수 있습니다.
  • 필요한 최소 사용 권한이 있는 해당 서비스 계정에 대한 새 로그인을 사용하여 SQL Server에서 연결하고 쿼리할 수 있는 사용 권한이 부여되었습니다. 최소 사용 권한은 사용 가능한 기능에 따라 달라집니다.
  • 사용 권한이 더 이상 필요하지 않은 경우 업데이트됩니다. 예를 들어 기능을 사용하지 않도록 설정하거나, 최소 권한 구성을 사용하지 않도록 설정하거나, SQL Server용 Azure 확장을 제거하면 사용 권한이 취소됩니다. 해지하면 더 이상 필요하지 않은 사용 권한이 남아 있지 않게 됩니다.

필수 조건

이 구역에서는 이 문서의 예제를 완료하는 데 필요한 시스템 요구 사항 및 도구를 식별합니다.

시스템 요구 사항

최소 권한의 구성에는 다음이 필요합니다.

  • Windows Server 2012 이상
  • SQL Server 2012 이상
  • SQL Server 서비스 계정은 고정 서버 역할의 sysadmin 멤버여야 합니다.
  • 모든 데이터베이스는 온라인이고 업데이트 가능해야 합니다.

최소 권한 구성은 현재 Linux에서 지원되지 않습니다.

필수 구성 요소 – Azure Arc에서 활성화된 SQL Server에 나열된 기타 요구 사항이 계속 적용됩니다.

SQL Server 서비스 계정

기본적으로 SQL Server 서비스 계정은 고정 서버 역할의 sysadmin 멤버입니다.

필수 구성 요소에 나열된 대로 SQL Server 서비스 계정은 각 SQL Server 인스턴스에서 sysadmin 고정 서버 역할의 멤버여야 합니다. SQL Server용 Azure 확장에는 다음과 같이 NT AUTHORITY\SYSTEM 일시적으로 실행되는 프로세스가 있습니다Deployer.exe.

  • 기능을 사용하거나 사용하지 않도록 설정
  • SQL Server 인스턴스가 추가되거나 제거됨

Deployer.exe 는 SQL Server 서비스 계정을 가장하여 SQL Server에 연결하고 사용하거나 사용하지 않도록 설정된 기능에 따라 서버 및 데이터베이스 역할에서 사용 권한을 추가하거나 제거하여 SQL Server용 Azure 확장에서 필요한 최소 권한을 사용하도록 합니다. 이러한 권한을 수정하려면 SQL Server 서비스 계정이 서버 역할의 sysadmin 멤버여야 합니다.

SQL Server 서비스 계정이 항상 sysadmin 서버 역할의 멤버가 아니도록 더 많은 제어를 사용하여 이 프로세스를 관리하려면 다음 단계를 수행합니다.

  1. Sysadmin 서버 역할에 SQL Server 서비스 계정을 일시적으로 추가합니다.
  2. Deployer.exe 사용 권한이 설정되도록 한 번 이상 실행할 수 있습니다.
  3. sysadmin 역할에서 SQL Server 서비스 계정을 제거합니다.

필요한 최소 권한을 부여할 수 있도록 Deployer.exe 기능을 사용하거나 사용하지 않도록 설정하거나 SQL Server 인스턴스를 추가할 때마다 이 절차를 반복합니다.

도구

이 문서의 단계를 완료하려면 다음 도구가 필요합니다.

최소 권한 사용

  1. Azure CLI로 로그인합니다.

    az login
    
  2. arcdata 확장 버전을 확인합니다.

    az extension list -o table
    

    결과에 지원되는 버전 arcdata이 포함된 경우 다음 단계로 건너뜁니다.

    필요하다면 arcdata Azure CLI 확장을 설치하거나 업데이트합니다.

    확장을 설치하기 위해:

    az extension add --name arcdata
    

    확장을 업데이트하려면

    az extension update --name arcdata
    
  3. Azure CLI를 사용하여 최소 권한을 사용하도록 설정합니다.

    최소 권한을 사용하려면 LeastPrivilege 기능 플래그를 true로 설정합니다. 이 작업을 완료하려면 <resource-group><machine-name>에 대한 업데이트된 값을 사용하여 다음 명령을 실행합니다.

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group <resource-group> --machine-name <machine-name>
    

    예를 들어 다음 명령은 myrg로 명명된 리소스 그룹에서 myserver라고 이름이 지정된 서버에 대해 최소 권한을 사용하도록 설정합니다.

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group myrg --machine-name myserver 
    

최소 권한 구성 확인

Azure Arc 지원 SQL Server가 최소 권한으로 실행되도록 구성되어 있는지 확인하려면 다음을 수행합니다.

  1. Windows 서비스에서 Microsoft SQL Server 확장 서비스 서비스를 찾습니다. 해당 서비스가 서비스 계정 NT Service\SqlServerExtension로 실행되고 있는지 확인합니다. 

  2. 서버에서 작업 스케줄러를 열고, 이름이 SqlServerExtensionPermissionProvider인 이벤트 기반 작업이 Microsoft\SqlServerExtension 아래에서 만들어졌는지 확인합니다.

    참고 항목

    2024년 7월 릴리스 이전에는 SqlServerExtensionPermissionProvider가 예약된 작업입니다. 매 시간마다 실행됩니다.

    서버에서 작업 스케줄러를 열고 SqlServerExtensionPermissionProvider 이름으로 예약된 작업이 Microsoft\SqlServerExtension 아래에서 만들어지는지 검사합니다.

  3. SQL Server Management Studio를 열고 NT Service\SqlServerExtension 이름이 지정된 로그인을 검사합니다. 계정에 다음 사용 권한이 할당되었는지 확인합니다.

    • SQL 연결
    • 데이터베이스 상태 보기
    • 서버 상태 보기
  4. 다음 쿼리를 사용하여 사용 권한을 확인합니다.

    서버 수준 사용 권한을 확인하려면 다음 쿼리를 실행합니다.

    EXECUTE AS LOGIN = 'NT Service\SqlServerExtension'  
    SELECT * FROM fn_my_permissions (NULL, 'SERVER");
    

    데이터베이스 수준 권한을 확인하려면 데이터베이스 중 하나의 이름으로 <database name>을 바꾸고 다음 쿼리를 실행합니다.

    EXECUTE AS LOGIN = 'NT Service\SqlServerExtension'  
    USE <database name>; 
    SELECT * FROM fn_my_permissions (NULL, 'database");