SQL Server의 인증(ADO.NET)

업데이트: November 2007

SQL Server에서는 Windows 인증 모드와 혼합 모드의 두 가지 인증 모드를 지원합니다.

  • Windows 인증은 기본 인증이며 흔히 통합 보안이라고 하는데, 그 이유는 이 SQL Server 보안 모델이 Windows와 긴밀하게 통합되기 때문입니다. 이 보안 모델에서는 특정 Windows 사용자 및 그룹 계정에 SQL Server에 로그인할 수 있는 권한을 부여합니다. 이미 인증된 Windows 사용자는 추가 자격 증명을 제공할 필요가 없습니다.

  • 혼합 모드에서는 Windows 인증과 SQL Server 인증을 모두 지원하며 사용자 이름 및 암호 쌍이 SQL Server 내에서 유지 관리됩니다.

보안 정보:

가급적 Windows 인증을 사용하는 것이 좋습니다. Windows 인증은 일련의 암호화된 메시지를 사용하여 SQL Server에서 사용자를 인증합니다. SQL Server 로그인을 사용하는 경우 SQL Server 로그인 이름과 암호가 네트워크를 통해 전달되므로 Windows 인증에 비해 보안이 떨어집니다.

Windows 인증을 사용하는 경우 사용자가 Windows에 이미 로그온되어 있으므로 SQL Server에 별도로 로그온할 필요가 없습니다. 다음 SqlConnection.ConnectionString은 사용자 이름이나 암호를 제공할 필요가 없는 Windows 인증을 지정합니다.

"Server=MSSQL1;Database=AdventureWorks;Integrated Security=true;
참고:

로그인은 데이터베이스 사용자와는 다른 개념입니다. 따라서 로그인이나 Windows 그룹을 데이터베이스 사용자나 역할에 매핑하는 작업을 별도로 수행해야 합니다. 그런 다음 데이터베이스 개체에 액세스할 수 있도록 사용자나 역할에 권한을 부여합니다.

인증 시나리오

일반적으로 Windows 인증은 다음과 같은 환경에서 가장 적합합니다.

  • 도메인 컨트롤러가 있는 경우

  • 응용 프로그램과 데이터베이스가 동일한 컴퓨터에 있는 경우

  • SQL Server Express의 인스턴스를 사용하는 경우

SQL Server 로그인은 대개 다음과 같은 환경에서 사용합니다.

  • 작업 그룹이 있는 경우

  • 사용자가 신뢰할 수 없는 여러 도메인에서 연결하는 경우

  • ASP.NET과 같은 인터넷 응용 프로그램

참고:

Windows 인증을 지정하더라도 SQL Server 로그인이 비활성화되지는 않습니다. 따라서 높은 수준의 권한이 있는 SQL Server 로그인은 ALTER LOGIN DISABLE Transact-SQL 문을 사용하여 비활성화해야 합니다.

로그인 유형

SQL Server 2000에서는 세 가지 유형의 로그인을 지원합니다.

  • 로컬 Windows 사용자 계정 또는 신뢰할 수 있는 도메인 계정. SQL Server는 Windows를 통해 Windows 사용자 계정을 인증합니다.

  • Windows 그룹. Windows 그룹에 권한을 부여하면 해당 그룹에 속한 모든 Windows 사용자 로그인에도 동일한 권한이 부여됩니다.

  • SQL Server 로그인. SQL Server에서는 사용자 이름과 암호 해시를 모두 master 데이터베이스에 저장하고, 내부 인증 방법을 사용하여 로그인 시도가 유효한지 검사합니다.

참고:

SQL Server 2005에서는 코드 서명에만 사용되는 인증서 또는 비대칭 키에서 만들어진 로그인도 지원됩니다. 이러한 로그인은 SQL Server에 연결하는 데 사용할 수 없습니다.

혼합 모드 인증

불가피하게 혼합 모드 인증을 사용하는 경우 SQL Server 로그인을 만들어야 합니다. 이 로그인은 SQL Server에 저장됩니다. 그런 다음 런타임에 SQL Server 사용자 이름과 암호를 제공해야 합니다.

보안 정보:

SQL Server는 sa("system administrator"의 약어)라는 SQL Server 로그인으로 설치됩니다. 따라서 sa 로그인에는 강력한 암호를 지정해야 하고 응용 프로그램에는 sa 로그인을 사용하지 않아야 합니다. sa 로그인은 전체 서버에 대해 취소할 수 없는 관리 자격 증명을 가지는 sysadmin 고정 서버 역할에 매핑됩니다. 따라서 공격자가 sa(시스템 관리자)로 액세스할 경우 입을 수 있는 피해는 상상을 초월합니다. Windows BUILTIN\Administrators 그룹(로컬 관리자 그룹)의 모든 멤버는 기본적으로 sysadmin 역할의 멤버이지만 이 역할에서 멤버를 제거할 수 있습니다.

SQL Server 2005에는 Windows Server 2003 이상 버전에서 실행되는 경우 SQL Server 로그인에 사용할 수 있는 Windows 암호 정책 메커니즘이 도입되었습니다. 암호 복잡성 정책은 추측 가능한 암호의 수를 늘림으로써 무차별 암호 대입 공격(Brute Force Attack)을 막기 위해 만들어졌습니다. SQL Server 2005에서는 SQL Server 내에서 사용되는 암호에 Windows Server 2003의 복잡성 및 만료 정책을 적용할 수 있습니다.

보안 정보:

사용자 입력의 연결 문자열 연결로 인해 문자열 삽입 공격에 노출될 수 있습니다. SqlConnectionStringBuilder를 사용하면 런타임에 구문상 유효한 연결 문자열을 만들 수 있습니다. 자세한 내용은 연결 문자열 작성기(ADO.NET)를 참조하십시오.

외부 리소스

자세한 내용은 다음 리소스를 참조하십시오.

리소스

설명

보안 주체(SQL Server 2008 온라인 설명서)

SQL Server 2008의 로그인 및 기타 보안 주체에 대해 설명합니다.

보안 주체(SQL Server 2005 온라인 설명서)

SQL Server 2005의 로그인 및 기타 보안 주체에 대해 설명합니다.

Logins(SQL Server 2000 온라인 설명서)

Server 2000의 로그인 및 인증에 대해 설명합니다.

참고 항목

개념

SQL Server의 응용 프로그램 보안 시나리오(ADO.NET)

기타 리소스

ADO.NET 응용 프로그램 보안

데이터 소스에 연결(ADO.NET)

연결 문자열(ADO.NET)