Tip
Microsoft Fabric Data Warehouse는 데이터 레이크 기반의 엔터프라이즈 규모 관계형 웨어하우스로, 미래 대비 아키텍처, 기본 제공 AI 및 새로운 기능을 제공합니다. 데이터 웨어하우징이 처음이라면, Fabric Data Warehouse부터 시작하세요. 기존
이 문서에서는 전용 SQL 풀(이전의 SQL DW)을 보호하는 기본 사항을 안내합니다. 특히 이 문서에서는 전용 SQL 풀(이전의 SQL DW)을 사용하여 액세스를 제한하고, 데이터를 보호하고, 활동을 모니터링하기 위한 리소스를 시작합니다.
연결 보안
연결 보안은 방화벽 규칙 및 연결 암호화를 사용하여 데이터베이스에 대한 연결을 제한하고 보호하는 방법을 나타냅니다.
방화벽 규칙은 논리적 SQL 서버 와 해당 데이터베이스 모두에서 명시적으로 승인되지 않은 IP 주소의 연결 시도를 거부하는 데 사용됩니다. 애플리케이션 또는 클라이언트 컴퓨터의 공용 IP 주소에서 연결을 허용하려면 먼저 Azure Portal, REST API 또는 PowerShell을 사용하여 서버 수준 방화벽 규칙을 만들어야 합니다.
가장 좋은 방법은 서버 수준 방화벽을 통해 허용되는 IP 주소 범위를 최대한 제한해야 합니다. 로컬 컴퓨터에서 전용 SQL 풀(이전의 SQL DW)에 액세스하려면 네트워크 및 로컬 컴퓨터의 방화벽이 TCP 포트 1433에서 나가는 통신을 허용하는지 확인합니다.
전용 SQL 풀(이전의 SQL DW)은 서버 수준 IP 방화벽 규칙을 사용합니다. 데이터베이스 수준의 IP 방화벽 규칙을 지원하지 않습니다. 자세한 내용은 Azure SQL Database 방화벽 규칙을 참조하세요.
전용 SQL 풀(이전의 SQL DW)에 대한 연결은 기본적으로 암호화됩니다. 암호화를 사용하지 않도록 연결 설정을 수정하는 작업은 무시됩니다.
인증
인증은 데이터베이스에 연결할 때 ID를 증명하는 방법을 나타냅니다. 전용 SQL 풀(이전의 SQL DW)은 현재 사용자 이름 및 암호 및 Microsoft Entra ID를 사용하여 SQL Server 인증을 지원합니다.
데이터베이스에 대한 서버를 만들 때 사용자 이름과 암호를 사용하여 "서버 관리자" 로그인을 지정했습니다. 이러한 자격 증명을 사용하여 해당 서버의 모든 데이터베이스에 데이터베이스 소유자로 인증하거나 SQL Server 인증을 통해 "dbo"를 인증할 수 있습니다.
그러나 조직의 사용자는 다른 계정을 사용하여 인증하는 것이 가장 좋습니다. 이렇게 하면 애플리케이션에 부여된 권한을 제한하고 애플리케이션 코드가 SQL 삽입 공격에 취약한 경우 악의적인 활동의 위험을 줄일 수 있습니다.
SQL Server 인증된 사용자를 만들려면 서버 관리자 로그인을 사용하여 서버의 마스터 데이터베이스에 연결하고 새 서버 로그인을 만듭니다. master 데이터베이스에서 사용자를 만드는 것도 좋습니다. master에서 사용자를 만들면 사용자가 데이터베이스 이름을 지정하지 않고도 SSMS와 같은 도구를 사용하여 로그인할 수 있습니다. 또한 개체 탐색기를 사용하여 서버의 모든 데이터베이스를 볼 수 있습니다.
-- Connect to master database and create a login
CREATE LOGIN ApplicationLogin WITH PASSWORD = 'Str0ng_password';
CREATE USER ApplicationUser FOR LOGIN ApplicationLogin;
그런 다음 서버 관리자 로그인을 사용하여 전용 SQL 풀(이전의 SQL DW) 에 연결하고 사용자가 만든 서버 로그인에 따라 데이터베이스 사용자를 만듭니다.
-- Connect to the database and create a database user
CREATE USER ApplicationUser FOR LOGIN ApplicationLogin;
사용자에게 로그인 만들기 또는 새 데이터베이스 만들기와 같은 추가 작업을 수행할 수 있는 권한을 부여하려면 마스터 데이터베이스의 Loginmanager 역할 및 dbmanager 사용자에 할당합니다.
이러한 추가 역할 및 SQL Database 인증에 대한 자세한 내용은 Azure SQL Database에서 데이터베이스 및 로그인 관리를 참조하세요. Microsoft Entra ID를 사용하여 연결하는 방법에 대한 자세한 내용은 Microsoft Entra 인증을 사용하여 연결을 참조하세요.
승인
권한 부여는 인증 및 연결되면 데이터베이스 내에서 수행할 수 있는 작업을 나타냅니다. 권한 부여 권한은 역할 멤버 자격 및 권한에 따라 결정됩니다. 모범 사례로 사용자에게 필요한 최소 권한을 부여해야 합니다. 역할을 관리하려면 다음 저장 프로시저를 사용할 수 있습니다.
EXEC sp_addrolemember 'db_datareader', 'ApplicationUser'; -- allows ApplicationUser to read data
EXEC sp_addrolemember 'db_datawriter', 'ApplicationUser'; -- allows ApplicationUser to write data
연결하려는 서버 관리자 계정은 데이터베이스 내에서 모든 작업을 수행할 권한이 있는 db_owner 구성원입니다. 스키마 업그레이드 및 기타 관리 작업을 배포하기 위해 이 계정을 저장합니다. 애플리케이션에 필요한 최소 권한으로 애플리케이션에서 데이터베이스에 연결하려면 더 제한된 권한으로 "ApplicationUser" 계정을 사용합니다.
사용자가 데이터베이스 내에서 수행할 수 있는 작업을 추가로 제한하는 방법이 있습니다.
- 세분화된 사용 권한을 사용하면 데이터베이스의 개별 열, 테이블, 뷰, 스키마, 프로시저 및 기타 개체에서 수행할 수 있는 작업을 제어할 수 있습니다. 세분화된 사용 권한을 사용하여 가장 많은 제어 권한을 가지며 필요한 최소 권한을 부여합니다.
- db_datareader 및 db_datawriter 이외의 데이터베이스 역할을 사용하여 더 강력한 애플리케이션 사용자 계정 또는 덜 강력한 관리 계정을 만들 수 있습니다. 기본 제공 고정 데이터베이스 역할은 사용 권한을 쉽게 부여할 수 있지만 필요한 것보다 더 많은 권한을 부여할 수 있습니다.
- 저장 프로시저를 사용하여 데이터베이스에서 수행할 수 있는 작업을 제한할 수 있습니다.
다음 예제에서는 사용자 정의 스키마에 대한 읽기 권한을 부여합니다.
--CREATE SCHEMA Test
GRANT SELECT ON SCHEMA::Test to ApplicationUser
Azure Portal에서 또는 Azure Resource Manager API를 사용하여 데이터베이스 및 서버를 관리하는 것은 포털 사용자 계정의 역할 할당에 의해 제어됩니다. 자세한 내용은 Azure Portal을 사용하여 Azure 역할 할당을 참조하십시오.
행 수준 보안
Row-Level 보안을 사용하면 쿼리를 실행하는 사용자의 특성(예: 그룹 멤버 자격 또는 실행 컨텍스트)에 따라 데이터베이스 테이블의 행에 대한 액세스를 제어할 수 있습니다. Row-Level Security를 사용하여 사용자 지정 레이블 기반 보안 개념을 구현합니다. 자세한 내용은 행 수준 보안을 참조하세요.
암호화
TDE(투명한 데이터 암호화)는 미사용 데이터를 암호화하고 암호 해독하여 악의적인 활동의 위협으로부터 보호하는 데 도움이 됩니다. 데이터베이스를 암호화하면 애플리케이션을 변경하지 않고도 연결된 백업 및 트랜잭션 로그 파일이 암호화됩니다. TDE는 데이터베이스 암호화 키라는 대칭 키를 사용하여 전체 데이터베이스의 스토리지를 암호화합니다.
SQL Database에서 데이터베이스 암호화 키는 기본 제공 서버 인증서로 보호됩니다. 기본 제공 서버 인증서는 각 서버에 대해 고유합니다. Microsoft는 적어도 90일마다 이러한 인증서를 자동으로 회전합니다. 사용되는 암호화 알고리즘은 AES-256입니다. TDE에 대한 일반적인 설명은 투명한 데이터 암호화를 참조하세요.
Azure Portal 또는 T-SQL을 사용하여 데이터베이스를 암호화할 수 있습니다.
고객 관리형 키를 사용한 투명한 데이터 암호화(미사용 암호화)
암호화 키를 더 세부적으로 제어해야 한다면, Azure Synapse Analytics용 투명한 데이터 암호화는 고객 관리 키(CMK)를 지원합니다. 이 CMK는 논리 서버와 연결되며 해당 서버 내의 모든 데이터베이스에 대한 데이터베이스 암호화 키를 래핑합니다. CMK를 관리하여 규정 준수 또는 엄격한 보안 정책에 필요한 키 회전, 해지 및 감사를 제어할 수 있습니다.
전송 계층 보안(전송 중 암호화)
Azure Synapse Analytics는 이동 중인 데이터를 전송 계층 보안(TLS)으로 암호화하여 고객 데이터를 보호합니다. Azure Synapse Analytics는 항상 TLS 암호화된 연결을 강제하여 클라이언트와 서버 간 전송 중 모든 데이터가 암호화되도록 합니다.
구체적으로, Azure Synapse Analytics는 구성 플래그 ForceEncryption를 Yes로 설정합니다. 클라이언트와 드라이버는 이 서비스에 연결하려면 암호화된 연결을 지원해야 합니다. 연결할 수 있는 TDS 프로토콜의 가장 낮은 버전은 TDS 7.1입니다.
TDS 8.0 지원 SQL 드라이버가 있는 경우 모범 사례로 엄격한 연결 암호화를 사용합니다.
드라이버가 TDS 8.0을 지원하지 않는 경우 필수 암호화를 사용하고 서버 인증서를 신뢰하지 않습니다. 예를 들어 ADO.NET 드라이버를 사용하는 경우 연결 문자열을 사용하여 Encrypt=TrueTrustServerCertificate=False 이 작업을 수행합니다. Azure Portal에서 가져오는 연결 문자열은 이미 이러한 값으로 구성되었습니다.
프로덕션 환경에서 매개 변수 TrustServerCertificate를 True로 설정하지 마세요.
TrustServerCertificate=True는 허용 범위가 지나치게 넓어 중간자 공격을 방지하지 못합니다. 대신 클라이언트가 서버 인증서에 다른 도메인 이름이 필요한 경우 매개 변수를 HostNameInCertificate 사용하여 유효성 검사에 올바른 도메인 이름을 제공합니다.
Important
일부 타사 드라이버는 기본적으로 TLS를 사용하지 않거나 이전 버전의 TLS(1.2 이전 버전)를 사용하여 작동할 수 있습니다. 이 경우 서버가 데이터베이스에 연결할 수 있도록 허용합니다. 하지만 특히 민감한 데이터를 저장하는 경우, 이러한 드라이버와 애플리케이션의 연결을 허용할 때의 보안 위험을 평가해야 합니다.
다음 단계
다른 프로토콜을 사용하여 웨어하우스에 연결하는 자세한 내용 및 예제는 전용 SQL 풀에 연결(이전의 SQL DW)을 참조하세요.