SQL Server 로그 전달에 대한 보안 구성

이 문서에서는 SQL Server 로그 전달에 대한 보안을 구성하는 방법을 설명하고 SQL Server 로그 전달에 대한 보안을 구성할 때 발생할 수 있는 문제에 대한 정보를 제공합니다.

원래 제품 버전: SQL Server
원래 KB 번호: 321247

요약

이 문서에서는 로그 전달에 대한 보안을 구성하는 방법에 대한 정보를 제공합니다. SQL Server 시작 계정부터 트랜잭션 로그 백업이 있는 네트워크 공유에 대한 사용 권한 공유에 이르기까지 SQL Server 로그 전달에 대한 보안을 구성할 때 고려해야 할 몇 가지 문제가 있습니다. 이러한 문제는 이 문서에 설명되어 있습니다.

도메인 계정

도메인에 SQL Server 배치한 경우 도메인 계정을 사용하여 SQL Server 서비스를 시작하는 것이 좋습니다. Windows 클러스터링에서 가상 서버로 실행되도록 SQL Server 구성하려는 경우 도메인 계정을 사용해야 합니다. 도메인 계정은 암호 변경 시 최소한의 유지 관리 혜택을 제공합니다. 그러나 SQL Server 작업 그룹에 있는 서버에 있는 경우 도메인 계정으로 SQL을 시작하지 못할 수 있습니다.

로컬 네트워크 계정

SQL Server 사용하여 로컬로 만든 네트워크 계정으로 시작할 수 있습니다. SQL Server 프로세스에 필요한 네트워크 액세스가 필요한 상황에서 로그 전달을 사용하도록 SQL Server 구성한 경우 네트워크 통과 보안을 사용할 수 있습니다. 통과 보안을 사용하면 SQL Server 액세스하는 모든 컴퓨터에 로컬로 구성된 동일한 암호와 적절한 권한이 있는 동일한 네트워크 계정이 있어야 합니다. 또한 SQL Server 프로세스가 두 번째 컴퓨터에서 리소스를 요청하면 동일한 계정(요청 SQL Server 서비스가 시작된)이 동일한 암호로 존재하는 경우 기존 네트워크 보안이 무시됩니다. 두 번째 컴퓨터의 계정이 SQL Server 호출하여 요청된 작업을 수행할 수 있는 충분한 권한으로 구성된 경우 작업이 성공합니다.

로컬 시스템 계정

로컬 시스템 계정에서 시작하도록 SQL Server 구성할 수도 있습니다. LocalSystem 계정의 암호를 수정하면 시스템 안정성에 중요한 일부 서비스가 실패할 수 있습니다. 이 계정은 해당 계정이 있는 컴퓨터에 로컬입니다. 즉, SQL Server 서비스에서 사용하는 보안 컨텍스트가 로컬입니다. 로컬 네트워크 계정 섹션에 설명된 대로 LocalSystem 계정에서 SQL Server 시작할 때 네트워크 통과 보안을 사용할 수 없습니다. 다른 컴퓨터의 LocalSystem 계정에 대한 암호가 다르기 때문입니다. 네트워크 리소스 액세스가 필요한 경우 이 계정에서 SQL Server 시작하면 작업이 완료되지 않을 가능성이 큽 있습니다.

네트워크 계정이 SQL Server 및 SQL Server 에이전트 서비스를 성공적으로 시작하고 실행하는 데 필요한 최소한의 권한에 대한 자세한 내용은 Windows 서비스 계정 설정을 참조하세요.

SQL Server 보안 모델 이해

보안에 미치는 영향을 완전히 이해하려면 Microsoft가 2000년 SQL Server 구현한 보안 모델을 이해하는 것이 중요합니다. 로그인을 만들면 MASTER 데이터베이스의 syslogins 테이블에 추가됩니다. 새로 추가된 이 로그인에 대한 액세스 권한이 제공되는 각 데이터베이스에 대해 해당 데이터베이스의 sysusers 테이블에 추가됩니다. 테이블과 sysusers 테이블 간의 syslogins 매핑은 SID 필드에 있습니다.

사용자 데이터베이스를 다른 서버로 이동하면 SID 값이 이전 서버에서 이월됩니다. 두 번째 서버의 로그인이 동일한 SID 값으로 만들어지지 않거나 SID 값이 일치하지 않아 보안이 부적절하게 구성된 경우 데이터베이스 보안이 중단됩니다.

자세한 내용은 SQL Server 실행 중인 서버 간에 데이터베이스를 이동할 때 사용 권한 문제를 resolve 방법을 참조하세요.

보안 요구 사항

  • 백업 공유

    트랜잭션 로그 백업을 보유하도록 구성된 네트워크 공유를 구성하여 로그 전달을 위해 구성된 보조 서버에서 SQL Server 서비스가 시작되는 계정에 대한 읽기/변경 권한을 갖도록 합니다.

    트랜잭션 로그 백업을 보유하도록 구성된 네트워크 공유는 로그 전달을 위해 구성된 보조 서버에서 SQL Server 서비스가 시작되는 계정에 대한 읽기/변경 권한을 갖도록 구성해야 합니다. 이 공유는 보조 서버의 복사 작업에서 액세스하여 트랜잭션 로그 백업을 해당 보조 서버의 로컬 폴더에 복사합니다. 그런 다음 로드 작업은 로컬 폴더에서 이러한 백업을 로드합니다.

  • 도메인 간 로그 전달

    SQL Server 실행하는 컴퓨터가 다중 도메인 환경에 배치되는 경우 로그 전달과 관련된 모든 도메인 간에 양방향 트러스트를 설정하는 것이 좋습니다. 그러나 도메인 간에 트러스트를 설정할 수 없는 경우 로그 전달에 네트워크 통과 보안을 사용할 수 있습니다. SQL Server 관련 서비스에 대한 LocalSystem 네트워크 계정 시작 옵션을 설명하는 이 문서의 섹션을 참조하세요.

  • 모니터 서버에 연결하기 위한 인증 모드 선택

    Windows 인증 또는 SQL 인증(주 및 보조 서버별)을 선택하여 모니터 서버에 연결하고 모니터 테이블을 업데이트할 수 있습니다. 로그 전달을 설정하는 동안 또는 로그 전달을 설정하고 작동한 후에 이를 선택할 수 있습니다. 기본적으로 SQL Server Windows 인증 사용합니다. 그러나 SQL 인증을 선택하면 새 SQL 로그인 log_shipping_monitor_probe 주 서버, 보조 서버 및 모니터 서버에 만들어집니다. 이 용도로 SQL 인증을 선택하는 경우 SQL 및 Windows 인증 옵션을 사용하도록 SQL Server 구성합니다.

대기 데이터베이스에 대한 보조 서버의 보안 구성

대기 모드에서 보조 데이터베이스를 구성하는 경우 읽기 전용 상태로 이 데이터베이스에 액세스할 수 있습니다. 이 모드에서 보조 데이터베이스를 복원하면 오프라인 보고서를 실행할 수 있는 수단을 제공하여 프로덕션 시스템에서 일부 작업을 오프로드할 수 있습니다. 그러나 읽기 전용 기능을 지원하려면 대기 데이터베이스에서 보조 서버에 동일한 보안 설정을 적용해야 할 수 있습니다. 데이터베이스가 대기 상태이므로 보안을 구성하기 위해 수정할 수도 없습니다. 이 경우 보조 서버에서 동일한 SID 값으로 모든 SQL Server 로그인을 만들어야 합니다. Windows 로그인은 여러 도메인을 사용하는 경우에도 Windows GUID가 전역적으로 고유하기 때문에 동일한 SID를 자동으로 유지합니다.

다른 서버에서 동일한 SID를 사용하여 SQL 로그인을 만드는 방법에 대한 자세한 내용은 SQL Server 게스트가 비활성화된 경우 대기 데이터베이스에서 SQL 로그인에 대한 액세스 권한을 부여하는 방법을 참조하세요.

역할 변경을 수행할 때 보안 구성

로그 전달을 위한 역할 변경 절차에는 보조 서버를 주 서버로 인수하도록 승격하는 작업이 포함됩니다. 주 서버가 온라인 상태가 되거나 없으면 이 작업을 수행할 수 있습니다. 역할 변경의 일부로 실행되는 최대 4개의 저장 프로시저가 있습니다. 이러한 저장 프로시저 sp_resolve_logins 중 하나인 는 주 데이터베이스로 사용할 수 있게 되기 직전에 대기 데이터베이스에 있는 로그인에 대한 SID 값을 수정하는 데 도움이 됩니다.

이 저장 프로시저 .bcp 의 일부로 이전 주 서버의 syslogins 테이블 파일이 임시 테이블에 로드됩니다. 이 임시 테이블에 있는 각 로그인은 보조 서버의 MASTER 데이터베이스에 있는 테이블과 보조 데이터베이스의 테이블과 sysusers 비교 syslogins 됩니다. 테이블에 이름이 같고 보조 데이터베이스의 테이블에 있는 것과 동일한 SID를 가진 로그인이 있는 syslogins 임시 테이블의 각 로그인에 sysusers 대해 SID는 테이블에 있는 것과 일치하도록 를 사용하여 sp_change_users_login (보조 데이터베이스에서 syslogins ) 수정됩니다.

이 저장 프로시저를 사용하는 보안 구성에는 다음이 필요합니다.

  • SQL 로그인은 보조 서버에 이미 만들어져야 합니다. 이렇게 하려면 SQL Server 온라인 설명서 항목: 로그 전달 역할 변경을 설정하고 수행하는 방법에 설명된 로그인 DTS 전송 작업을 사용합니다.

  • 주 서버에서 테이블의 syslogins 파일을 제공해야 .bcp 합니다. 오래된 파일이 로그인을 수정하지 못할 수 sp_resolve_logins 있으므로 이 파일은 최신 파일이어야 합니다.

보조 데이터베이스의 로그인을 실제로 수정하려면 sp_resolve_logins 다음 세 가지 조건을 충족해야 합니다.

  1. 테이블 파일의 로그인 .bcp 이름은 주 서버의 sysloginssyslogins 테이블 이름과 일치해야 합니다.

  2. SID 값은 파일 로그인 .bcp 과 보조 데이터베이스의 sysusers 테이블 간에 일치해야 합니다.

  3. 보조 데이터베이스의 SID 값은 보조 서버의 MASTER 데이터베이스에 있는 테이블의 syslogins SID 값과 달라야 합니다.

Q303722 설명한 대로 SQL Server 로그인을 만드는 경우 모든 로그인이 이미 테이블(보조 서버의 MASTER 데이터베이스)과 sysusers 테이블(보조 데이터베이스의 MASTER 데이터베이스)에 동일한 SID 값을 syslogins 제공했기 때문에 이 저장 프로시저를 실행할 필요가 없습니다.

질문과 대답

  • 질문: 로그 전달이 보조 서버에 보안 관련 변경 내용을 자동으로 전파하나요?

    답변: 예. 시스템 테이블에 대한 모든 변경 내용은 기록된 작업이므로 보조 서버(또는 서버)로 자동으로 전파됩니다.

  • 질문: 동일한 SID를 사용하여 보조 서버에 두 개의 로그인을 가질 수 있나요? 동일한 SQL Server 컴퓨터를 사용하여 여러 서버에서 여러 대기 데이터베이스를 유지 관리하기 때문에 이 항목이 필요합니다.

    답변: 아니요. SQL Server 보안 모델은 동일한 SID를 가진 두 개의 로그인을 허용하지 않습니다. 여러 서버에서 로그 전달을 사용하는 동안 SID에 충돌이 발생하는 경우 이 문제를 해결하는 유일한 방법은 주 서버에 충돌하는 로그인을 삭제한 다음 보조 서버에 없는 SID를 사용하여 만드는 것입니다.