내보내기(0) 인쇄
모두 확장
이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

보안 지침 및 제한 사항(Windows Azure SQL 데이터베이스)

이 항목에서는 보안과 관련된 Microsoft Windows Azure SQL 데이터베이스 지침과 제한 사항에 대해 설명합니다. SQL 데이터베이스의 보안을 관리할 때 다음 사항을 고려하십시오.

방화벽

Windows Azure SQL 데이터베이스 서비스는 TCP 포트 1433을 통해서만 사용할 수 있습니다. 컴퓨터에서 SQL 데이터베이스에 액세스하려면 방화벽이 TCP 포트 1433에서 보내는 TCP 통신을 허용해야 합니다.

SQL 데이터베이스 서버에 처음으로 연결하려면 먼저 Windows Azure Platform Management 포털을 사용하여 SQL 데이터베이스 방화벽을 구성해야 합니다. 컴퓨터나 Windows Azure에서 SQL 데이터베이스 서버로 연결을 시도할 수 있도록 서버 수준 방화벽 설정을 만들어야 합니다. SQL 데이터베이스 서버에서 특정 데이터베이스에 대한 액세스를 제어하려고 할 경우에도 해당 데이터베이스에 대해 데이터베이스 수준 방화벽 규칙을 만듭니다. 자세한 내용은 Windows Azure SQL 데이터베이스 방화벽을 참조하십시오.

암호화 및 인증서 유효성 검사

Windows Azure SQL 데이터베이스와 응용 프로그램 간의 모든 통신에는 항상 SSL 암호화가 필요합니다. 클라이언트 응용 프로그램에서 연결 시 인증서의 유효성을 검사하지 않는 경우 Windows Azure SQL 데이터베이스 연결이 "메시지 가로채기(man-in-the-middle)" 공격에 노출되기 쉽습니다. 

응용 프로그램 코드 또는 도구를 사용하여 인증서의 유효성을 검사하려면 암호화된 연결을 명시적으로 요청하고 서버 인증서를 신뢰하지 않습니다. 응용 프로그램 코드 또는 도구에서 암호화된 연결을 요청하지 않은 경우에도 암호화된 연결을 수신하게 됩니다. 그러나 서버 인증서의 유효성을 검사할 수 없으므로 "메시지 가로채기(man in the middle)" 공격에 노출될 수 있습니다.

ADO.NET 응용 프로그램 코드를 사용하여 인증서의 유효성을 검사하려면 데이터베이스 연결 문자열에서 Encrypt=TrueTrustServerCertificate=False를 설정합니다. 자세한 내용은 방법: ADO.NET을 사용하여 Windows Azure SQL 데이터베이스에 연결를 참조하십시오.

또한 SQL Server Management Studio는 인증서 유효성 검사를 지원합니다. 서버에 연결 대화 상자의 연결 속성 탭에서 연결 암호화를 클릭합니다. 

note참고
SQL Server Management Studio는 SQL Server 2008 R2 이전 버전의 Windows Azure SQL 데이터베이스을 지원하지 않습니다.

SQLCMD는 SQL Server 2008 이상에서 Windows Azure SQL 데이터베이스를 지원하지만 SQL Server 2008 R2 이전 버전에서는 인증서 유효성 검사를 지원하지 않습니다. SQL Server 2008 R2에서 시작하는 SQLCMD를 통해 인증서의 유효성을 검사하려면 -C 옵션 대신 -N 명령줄 옵션을 사용합니다. SQLCMD에서는 -N 옵션을 사용하여 암호화된 연결을 요청합니다. SQLCMD는 -C 옵션을 사용하지 않아서 서버 인증서를 명시적으로 신뢰하지 않으므로 강제로 인증서의 유효성을 검사합니다.

보충 기술 정보는 TechNet Wiki 사이트에서 Windows Azure SQL 데이터베이스 연결 보안 문서를 참조하십시오.

인증

Windows Azure SQL 데이터베이스은 SQL Server 인증만 지원합니다. Windows 인증(통합 보안)은 지원되지 않습니다. 따라서 Windows Azure SQL 데이터베이스에 연결할 때마다 자격 증명(로그인 및 암호)을 제공해야 합니다. SQL Server 인증에 대한 자세한 내용은 SQL Server 온라인 도움말의 인증 모드 선택을 참조하십시오.

성능상의 이유로 Windows Azure SQL 데이터베이스에서 암호를 다시 설정하면 연결 풀링으로 인해 연결이 재설정되더라도 연결이 다시 인증되지 않습니다. 이는 온-프레미스 SQL Server 동작과 다릅니다. 암호를 변경한 경우 요청이 실패하고 세션 연결이 끊어져서 세션이 종료됩니다. 새 암호를 사용하여 인증하려면 KILL 명령을 사용하여 세션을 종료하고 다시 연결합니다. Kill에 대한 자세한 내용은 KILL(Windows Azure SQL 데이터베이스)을 참조하십시오.

로그인 및 사용자

Windows Azure SQL 데이터베이스에서 로그인 및 사용자를 관리할 때 몇 가지 제한 사항이 있습니다.

  • 서버 수준 보안 주체 로그인의 경우 다음과 같은 제한 사항이 적용됩니다.

    • 서버 수준 보안 주체 로그인과 일치하는 master 데이터베이스의 사용자를 변경하거나 삭제할 수 없습니다.

    • 서버 수준 보안 주체 로그인이 master 데이터베이스의 두 데이터베이스 서버 역할 dbmanagerloginmanager의 멤버가 아니더라도 두 역할에 허용된 모든 사용 권한을 갖습니다.

note참고
이 로그인은 서버 프로비전 중에 만들어지며 SQL Server 인스턴스의 sa 로그인과 비슷합니다. 서버 프로비전에 대한 자세한 내용은 Windows Azure SQL 데이터베이스 프로비전 모델을 참조하십시오.

모든 로그인에 대해 다음과 같은 제한 사항이 적용됩니다.

  • 기본 언어는 미국 영어입니다.

  • master 데이터베이스에 액세스하려면 모든 로그인을 master 데이터베이스의 사용자 계정에 매핑해야 합니다.

  • 연결 문자열에서 데이터베이스를 지정하지 않은 경우 기본적으로 master 데이터베이스에 연결됩니다.

  • CREATE/ALTER/DROP LOGINCREATE/ALTER/DROP DATABASE 문을 실행할 경우 master 데이터베이스에 연결해야 합니다.

  • ADO.NET 응용 프로그램에서 CREATE/ALTER/DROP LOGINCREATE/ALTER/DROP DATABASE 문을 실행할 때 매개 변수가 있는 명령을 사용할 수 없습니다. 자세한 내용은 명령 및 매개 변수(ADO.NET)를 참조하십시오.

  • CREATE/ALTER/DROP DATABASECREATE/ALTER/DROP LOGIN 문을 실행할 때 Transact-SQL 일괄 처리에 해당 문만 있어야 합니다. 그렇지 않으면 오류가 발생합니다. 예를 들어 Transact-SQL은 데이터베이스가 있는지 여부를 확인하여, 있을 경우 데이터베이스를 제거하도록 DROP DATABASE 문을 호출합니다. 일괄 처리에 DROP DATABASE 문만 있는 것이 아니므로 이 Transact-SQL을 실행하면 오류가 발생합니다.

IF EXISTS (SELECT [name]
           FROM   [sys].[databases]
           WHERE  [name] = N'database_name')
     DROP DATABASE [database_name];
go
  • CREATE USER 문을 실행할 때 FOR/FROM LOGIN 옵션을 사용할 경우 Transact-SQL 일괄 처리에 해당 문만 있어야 합니다.

  • ALTER USER 문을 실행할 때 WITH LOGIN 옵션을 사용할 경우 Transact-SQL 일괄 처리에 해당 문만 있어야 합니다.

  • 서버 수준 보안 주체 로그인과 master 데이터베이스의 dbmanager 데이터베이스 역할의 멤버만 CREATE DATABASEDROP DATABASE 문을 실행할 권한을 갖습니다.

  • 서버 수준 보안 주체 로그인과 master 데이터베이스의 loginmanager 데이터베이스 역할의 멤버만 CREATE LOGIN, ALTER LOGINDROP LOGIN 문을 실행할 권한을 갖습니다.

  • 데이터베이스 역할 소유자가 해당 데이터베이스 역할에서 다른 데이터베이스 사용자를 추가하거나 제거하려고 하면 다음 오류가 발생할 수 있습니다. User or role 'Name' does not exist in this database. 이 오류는 사용자를 소유자에게 표시할 수 없기 때문에 발생합니다. 이 문제를 해결하려면 역할 소유자에게 사용자에 대한 VIEW DEFINITION 권한을 허용합니다.

최선의 구현 방법

SQL 데이터베이스 응용 프로그램의 보안 위협에 대한 취약성을 줄이려면 다음 사항을 고려하십시오.

  • 항상 최신 업데이트를 사용하십시오. SQL 데이터베이스에 연결할 때 항상 최신 버전의 도구 및 라이브러리를 사용하여 보안 취약성을 방지하십시오. 지원되는 도구 및 라이브러리에 대한 자세한 내용은 일반 보안 지침 및 제한 사항(Windows Azure SQL 데이터베이스)를 참조하십시오.

  • TCP 포트 1433에 대한 인바운드 연결 차단: 응용 프로그램에서 Windows Azure SQL 데이터베이스과 통신하는 데 TCP 포트 1433에 대한 아웃바운드 연결만 필요합니다. 컴퓨터의 다른 응용 프로그램에서 인바운드 통신이 필요하지 않은 경우 방화벽을 통해 TCP 포트 1433의 인바운드 연결을 계속 차단합니다.

  • 삽입 공격 취약성 방지: 응용 프로그램이 SQL 삽입 공격에 취약하지 않도록 가급적 매개 변수가 있는 쿼리를 사용합니다. 또한 코드를 신중하게 검토하고 철저하게 테스트한 이후에 응용 프로그램을 배포하십시오.

참고 항목

이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft. All rights reserved.