SQL Azure: SQL Azure 보안

보안은 호스팅형 솔루션에도 똑같이 가장 중요한 부분이지만 도구와 방법은 확실히 다릅니다.

Joshua Hoffman

클라우드 컴퓨팅은 최근 IT 인프라의 중요한 속성이 되었습니다. 구내 컴퓨팅도 여전히 중요한 역할을 유지하고 있지만 호스팅형 솔루션은 민첩한 조직에게 중요한 뛰어난 확장성, 탄력성 및 비용 절감 효과에 힘입어 도입이 확산되고 있습니다. 특히 데이터 관리 분야에서는 이러한 현상이 더욱 두드러집니다.

SQL Azure는 클라우드 플랫폼의 좋은 예입니다. SQL Azure는 데이터를 저장, 관리, 분석하기 위한 강력하면서도 친숙한 인프라이며 클라우드 컴퓨팅의 장점도 제공합니다. 공유된 호스팅형 인프라는 직접 비용과 간접 비용을 모두 줄이는 데 도움이 되고 사용량에 따른 비용 청구 모델은 효율성을 높여 주며 고가용성과 내결함성도 기본적으로 제공됩니다.

클라우드 컴퓨팅에는 수많은 이점이 있지만 SQL Azure와 같은 클라우드 기반 솔루션으로 데이터를 마이그레이션할 경우 보안을 비롯한 IT 관리 개념에 대한 접근 방법이 바뀌게 됩니다. 보안 모델은 다를 수 있지만 액세스 제어 방법, 인증 및 암호화를 포함하여 최대한의 데이터 보안을 확보하기 위해 많은 요소들을 고려해야 한다는 점은 마찬가지입니다.

SQL Azure 시작

SQL Azure는 처음 접하는 경우에도 간단히 시작할 수 있습니다. 특히 SQL Server Management Studio(SQL Server 2008 R2 버전부터 SQL Azure 인스턴스를 관리하는 데도 사용할 수 있음)와 같은 기존 SQL Server 관리 도구에 이미 익숙하다면 더욱 쉽습니다.

첫 번째 단계는 Microsoft 온라인 서비스 고객 포털을 방문하여 Windows Azure 플랫폼용 계정을 설정하는 것입니다. 그러면 Windows Azure, SQL Azure 및 Windows Azure AppFabric(개발자에게 조직 및 네트워크 경계를 넘어 응용 프로그램과 서비스에 연결할 수 있는 수단을 제공)을 포함한 Windows Azure 서비스에 액세스할 수 있습니다.

계정을 설정하면 sql.azure.com을 방문하여 SQL Azure 제어판에 액세스할 수 있습니다. New Database Server(새 데이터베이스 서버)를 클릭하여 새 SQL Azure 인스턴스를 만듭니다.

네트워크 액세스 제어

SQL Azure 방화벽은 데이터를 보호하기 위해 여러분이 특정 컴퓨터에 대해 액세스 권한을 부여할 때까지 데이터베이스에 대한 모든 액세스를 차단합니다. SQL Azure 방화벽을 통한 액세스는 원래의 IP 주소를 기반으로 이루어집니다. Windows Azure Platform Management 포털을 통해(그림 1 참조) 또는 저장 프로시저로 마스터 데이터베이스에서 직접 이를 관리할 수 있습니다.

다음 단계에 따라 SQL Azure 방화벽 규칙을 구성하십시오.

  1. Windows Azure Platform Management 포털에 로그인합니다.
  2. 왼쪽 창에서 Database(데이터베이스)를 클릭합니다.
  3. 왼쪽 창에서 가입을 확장하고 방화벽 규칙을 구성하려는 SQL Azure 서버를 클릭합니다.
  4. Firewall Rules(방화벽 규칙)를 클릭하면 규칙이 나열됩니다.
  5. Add(추가)를 클릭하여 새 방화벽 규칙을 만듭니다. 다른 Windows 서비스에서 이 SQL Azure 서버에 액세스하도록 허용하려면 “Allow other Windows Azure services to access this server(다른 Windows Azure 서비스에서 이 서버에 액세스하도록 허용)”를 선택합니다. IP 범위 “0.0.0.0 – 0.0.0.0”으로 규칙이 만들어집니다. 샘플 프로세스를 사용하여 규칙을 업데이트 및 삭제할 수 있습니다.

참고: 모든 방화벽 규칙에는 고유한 이름이 있어야 합니다(대/소문자 구분하지 않음).

그림 1 SQL Azure에서 방화벽 규칙 구성

SQL 저장 프로시저를 사용하여 방화벽 규칙을 구성하는 방법은 T-SQL을 사용하여 방화벽 규칙 변경을 참조하십시오.

SQL Azure 서비스는 TCP 포트 1433을 통해 사용할 수 있습니다. 기존 방화벽 정책에 따라 이 포트를 통한 아웃바운드 액세스를 허용하도록 클라이언트 컴퓨터를 구성해야 할 수 있습니다. 이 프로세스에 대한 자세한 내용은 클라이언트 측 방화벽 구성을 참조하십시오.

SQL 인증

SQL Azure의 인증 방법은 기존 SQL Server 인증을 기반으로 합니다. Windows 인증(통합 보안)은 지원하지 않습니다. SQL Azure에 연결할 때마다 자격 증명을 제공해야 합니다.

SQL Azure에 새 데이터베이스 서버를 만들면 서버 수준 보안 주체 로그인 및 암호를 만들 수 있도록 권한이 상승됩니다. 이는 SQL Server 시스템 관리자 계정에 해당합니다. Database Manager for SQL Azure 또는 SQL Server Management Studio 2008 R2를 통해 T-SQL을 사용하여 추가 로그인을 만들 수 있습니다.

CREATE LOGIN 명령을 사용하여 마스터 데이터베이스를 통해 로그인을 만들고 삭제합니다. 예를 들어 Database Manager for SQL Azure 또는 SQL Server Management Studio를 사용하여 마스터 데이터베이스에 연결하고 다음 쿼리를 실행합니다.

--create a login named "testlogin"
CREATE LOGIN testlogin WITH password='Passw0rd!';

그림 2의 명령을 사용하여 기존 로그인에 대해 쿼리할 수 있습니다.

그림 2 Database Manager for SQL Azure를 사용하여 SQL Server 로그인 쿼리

로그인을 만들면 이러한 로그인과 연결된 데이터베이스 수준 사용자를 만들고, 각 사용자에게 특정 데이터베이스 수준 권한을 할당할 수 있습니다. 특정 데이터베이스에 대한 사용자를 만들려면 적절한 데이터베이스에 연결하고 다음 명령을 실행합니다.

CREATE USER testuser FROM LOGIN testlogin;

그러면 다음 명령을 사용하여 권한을 할당할 수 있습니다.

EXEC sp_addrolemember 'db_datareader', 'testuser';

전체 역할 목록은 데이터베이스 수준 역할을 참조하십시오. CREATE/ALTER/DROP LOGIN 문 또는 CREATE/ALTER/DROP USER 문(FOR/FROM LOGIN 옵션 사용)을 실행할 경우 이러한 각 문은 T-SQL 배치의 유일한 문이어야 합니다. 그렇지 않을 경우 오류가 발생합니다.

연결 암호화

SQL Azure는 TDS(테이블 형식 데이터 스트림)를 사용하여 SSL 연결을 통해 데이터를 전송합니다. SQL Azure는 암호화되지 않은 연결을 지원하지 않으며 인증 기관에서 발급한 서명된 인증서를 가집니다. 이러한 요소들은 모두 안전하게 데이터를 전송하고 MTM(Man-in-The-Middle) 공격을 방지하는 데 도움이 됩니다.

암호화 핸드셰이크는 TDS 프로토콜의 PRELOGIN 스트림에서 수행됩니다. SQL Server Management Studio 및 ADO.NET을 통한 응용 프로그램을 포함하여 SQL Azure와 통신하는 모든 클라이언트에서 이를 요구합니다.

SQL Server Management Studio에서 연결을 암호화하려면 다음 단계에 따르십시오.

  1. SQL Server Management Studio를 엽니다.
  2. 개체 탐색기에서 연결, 데이터베이스 엔진을 차례로 클릭합니다.
  3. 서버에 연결에서 연결 속성을 클릭합니다.
  4. 연결 암호화를 선택합니다(그림 3 참조).

그림 3 SQL Server Management Studio에서 SQL Azure에 대한 연결 암호화

ADO.NET 응용 프로그램 코드를 사용하여 인증서의 유효성을 검사하려면 데이터베이스 연결 문자열에서 Encrypt=TrueTrustServerCertificate=False를 설정합니다.

데이터 암호화

SQL Azure는 SQL Server에서 지원하는 표준 데이터 암호화 메커니즘을 현재 지원하지 않습니다. 여기에는 투명한 데이터 암호화, 비대칭 키, 대칭 키 및 Transact-SQL 함수(예: ENCRYPTBYPASSPHRASE 및 DECRYPTBYPASSPHRASE, CREATE/ALTER/DROP DATABASE ENCRYPTION KEY 또는 CREATE/ALTER/DROP MASTER KEY)가 포함됩니다.

SQL Azure의 경우 응용 프로그램 수준에서 암호화 또는 해독해야 합니다. 즉, SQL Azure로 데이터를 보내거나 SQL Azure에서 데이터를 검색할 때 데이터 암호화 및 해독은 응용 프로그램에서 담당합니다.

특정 응용 프로그램 및 데이터를 클라우드에 호스팅하기 시작하면 데이터 보안에 대해 인식해야 합니다. 클라우드 기반 보안 아키텍처에도 여러분이 관여해야 합니다. 보안은 항상 필요한 것입니다. 클라우드 컴퓨팅 플랫폼에서 바뀐 것은 그 방법일 뿐입니다. 이 주제에 대한 자세한 내용은SQL Azure 보안 지침 및 제한 사항을 참조하십시오.

계정 및 연결 관리에 대한 최선의 방법을 따르면 데이터를 클라우드로 마이그레이션하는 데 따르는 이점을 모두 얻을 수 있습니다. 중요한 비즈니스 정보의 보안을 타협하지 않아도 됩니다.

Joshua Hoffman

Joshua Hoffman은 TechNet Magazine의 전 편집장입니다*. 현재 독립적인 저자이자 컨설턴트로 활동하면서 고객에게 기술과 청중 지향 마케팅에 대해 조언하고 있습니다. Hoffman은 시장 조사 커뮤니티의 성장 및 향상을 위한 사이트인 ResearchAccess.com의 편집장으로도 활동 중이며 뉴욕 시에 거주하고 있습니다.*

관련 콘텐츠