다음을 통해 공유


SQL Server on Windows: Machine Learning Services에 대한 격리 변경 사항

적용 대상: SQL Server 2019(15.x) 이상 - Windows만 해당 및 SQL Server 2022(16.x) - Windows만 해당

이 문서에서는 SQL Server 2019에 처음 도입된 SQL Server on Windows에서 사용되는 Machine Learning Services의 격리 메커니즘 변경 내용을 설명합니다. 이러한 변경은 SQLRUserGroup, 방화벽 규칙, 파일 사용 권한 및 묵시적 인증에 영향을 줍니다.

자세한 내용은 Windows용 SQL Server Machine Learning Services를 설치하는 방법을 참조하세요.

격리 메커니즘 변경

Windows에서 SQL 설치 프로그램은 외부 프로세스에 대한 격리 메커니즘을 변경합니다. 이 변경 내용은 로컬 작업자 계정을 Windows에서 실행되는 클라이언트 애플리케이션에 대한 격리 기술인 AppContainer로 바꿉니다.

수정의 결과로 관리자에 대한 특정 작업 항목이 없습니다. 새 서버 또는 업그레이드된 서버에서 sp_execute_external_script로 실행된 모든 외부 스크립트 및 코드는 새 격리 모델을 자동으로 따릅니다.

요약하면 이 릴리스의 주요 차이점은 다음과 같습니다.

  • SQLRUserGroup(SQL 제한 사용자 그룹)의 로컬 사용자 계정은 더 이상 외부 프로세스를 실행하기 위해 생성되거나 사용되지 않습니다. AppContainer가 대체합니다.
  • SQLRUserGroup 멤버 자격이 변경되었습니다. 멤버 자격은 여러 로컬 사용자 계정 대신, SQL Server 실행 패드 서비스 계정으로만 구성됩니다. R 및 Python 프로세스는 이제 AppContainer를 통해 격리된 실행 패드 서비스 ID에서 실행됩니다.

격리 모델이 변경되었지만 설치 마법사 및 명령줄 매개 변수는 이전 버전의 SQL Server와 동일하게 유지됩니다. 설치에 대한 도움말은 SQL Server 2016-2019 Machine Learning Services 설치 또는 Windows에 SQL Server 2022 Machine Learning Services(Python 및 R) 설치를 참조하세요.

AppContainer 격리 정보

이전 릴리스의 SQLRUserGroup에는 외부 프로세스를 격리하고 실행하는 데 사용되는 로컬 Windows 사용자 계정 풀(MSSQLSERVER00-MSSQLSERVER20)이 포함되어 있습니다. 외부 프로세스가 필요한 경우 SQL Server 실행 패드 서비스는 사용 가능한 계정을 가져와 프로세스를 실행하는 데 사용합니다.

SQL Server 2019부터 SQL 설치 프로그램은 더 이상 로컬 작업자 계정을 생성하지 않습니다. 대신, 격리는 AppContainer를 통해 처리됩니다. 런타임에 저장 프로시저 또는 쿼리에 포함된 스크립트나 코드가 감지되면 SQL Server는 확장별 시작 관리자를 요청하여 실행 패드를 호출합니다. 실행 패드는 해당 ID를 사용하여 프로세스에서 적절한 런타임 환경을 호출하고, 이를 포함할 AppContainer를 인스턴스화합니다. 이러한 변경은 로컬 계정 및 암호 관리가 더 이상 필요하지 않기 때문에 유용합니다. 또한 로컬 사용자 계정이 금지된 설치에서 로컬 사용자 계정 종속성을 제거하면 이 기능을 사용할 수 있습니다.

SQL Server에서 구현되므로 AppContainer는 내부 메커니즘입니다. 프로세스 모니터에서 AppContainer의 물리적 증거는 표시되지 않지만 설치 프로그램에서 프로세스의 네트워크 호출 수행을 방지하기 위해 만든 아웃바운드 방화벽 규칙에 표시될 수 있습니다.

설치 프로그램에서 만든 방화벽 규칙

기본적으로 SQL Server는 방화벽 규칙을 만들어 아웃바운드 연결을 사용하지 않도록 설정합니다. 이전에는 이러한 규칙이 로컬 사용자 계정을 기준으로 했습니다. 이 경우 설치 프로그램은 해당 멤버에 대한 네트워크 액세스를 거부하는 SQLRUserGroup에 대한 아웃바운드 규칙을 하나 만들었습니다(각 작업자 계정은 규칙에 적용되는 로컬 주체로 나열됨).

AppContainer로 전환하는 과정에서 AppContainer SID를 기준으로 새로운 방화벽 규칙이 생성되었습니다. 각 규칙은 SQL Server 설치 프로그램에서 만든 20개의 AppContainer 각각에 해당합니다. 방화벽 규칙 이름에 대한 명명 규칙은 SQL Server 인스턴스 MSSQLSERVER에서 AppContainer-00에 대한 네트워크 액세스 차단입니다. 여기서 00은 AppContainer의 번호(기본적으로 00-20)이고 MSSQLSERVER는 SQL Server 인스턴스의 이름입니다.

참고

네트워크 호출이 필요한 경우 Windows 방화벽에서 아웃바운드 규칙을 사용하지 않도록 설정할 수 있습니다.

파일 권한

기본적으로 외부 Python 및 R 스크립트에는 작업 디렉터리에 대한 읽기 권한만 있습니다.

Python 또는 R 스크립트가 다른 디렉터리에 액세스해야 하는 경우 NT Service\MSSQLLaunchpad 서비스 사용자 계정과 이 디렉터리에 있는 ALL APPLICATION PACKAGES에 대한 읽기 및 실행 및/또는 쓰기 권한을 제공해야 합니다.

액세스 권한을 부여하려면 아래 단계를 수행합니다.

  1. 파일 탐색기에서 작업 디렉터리로 사용할 폴더를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
  2. 보안을 선택하고 편집...을 클릭하여 권한을 변경합니다.
  3. 추가...를 클릭합니다.
  4. 찾을 위치 선택에서 로컬 컴퓨터 이름을 확인합니다.
  5. 선택할 개체 이름 입력ALL APPLICATION PACKAGES를 입력하고 이름 확인을 클릭합니다. 확인을 클릭합니다.
  6. 허용 열 아래에서 읽기 및 실행을 선택합니다.
  7. 쓰기 권한을 부여하려면 허용 열 아래에서 쓰기를 선택합니다.
  8. 확인확인을 차례로 클릭합니다.

프로그램 파일 권한

이전 릴리스와 마찬가지로 SQLRUserGroup은 SQL Server Binn, R_SERVICES PYTHON_SERVICES 디렉터리에서 실행 파일에 대한 읽기 및 실행 권한을 계속 제공합니다. 이 릴리스에서 SQLRUserGroup의 유일한 구성원은 SQL Server 실행 패드 서비스 계정입니다. 실행 패드 서비스가 R 또는 Python 실행 환경을 시작하면 프로세스가 실행 패드 서비스로 실행됩니다.

암시적 인증

이전처럼, 스크립트나 코드에서 신뢰할 수 있는 인증을 사용하여 데이터 또는 리소스를 검색하기 위해 SQL Server에 다시 연결해야 하는 암시적 인증에는 여전히 추가 구성이 필요합니다. 추가 구성에는 단일 구성원이 여러 작업자 계정이 아닌 단일 SQL Server 실행 패드 서비스 계정인 SQLRUserGroup에 대한 데이터베이스 로그인을 만드는 작업이 포함됩니다. 이 작업에 대한 자세한 정보는 데이터베이스 사용자로 SQLRUserGroup 추가를 참조하세요.

SQL Server 설치 프로그램의 일부로 현재 기본 R_SERVICESPYTHON_SERVICES에 대한 바로 가기 링크가 생성됩니다. 이 링크를 만들지 않으려면 폴더로 이어지는 계층 구조에 '모든 애플리케이션 패키지' 읽기 권한을 부여하는 것이 대안입니다.

참고 항목