Azure SQL Database 및 Azure SQL Data Warehouse IP 방화벽 규칙
· Version : Azure SQL
Azure SQL Database 및 Azure SQL Data Warehouse IP 방화벽 규칙에 대해서 살펴본다. 여기에서 설명되는 내용은 Azure SQL Database Management Instance에 적용되지 않으니 혼돈하지 않도록 한다.
인터넷 및 Azure 환경에서 SQL Server 또는 SQL Database에 연결하기 전에 방화벽을 통과해야한다. 크게 서버 수준 IP 방화벽 규칙과 데이터베이스 수준의 IP 방화벽 규칙이 있다. 가능하면 항상 데이터베이스 수준 IP 방화벽 규칙을 사용 하는 것이 좋다. 이 방법을 사용하면 보안을 강화하 고 데이터베이스의 이식성을 높일 수 있다. 관리자에 대해서도 서버 수준 IP 방화벽 규칙을 사용을 권장한다. 동일한 액세스 요구사항을 가진 데이터베이스가 많고 각 데이터베이스를 개별적으로 구성하지 않으려는 경우에도 데이터베이스 수준의 IP 방화벽 규칙을 사용 한다.
[서버 수준 IP 방화벽 규칙]
클라이언트는 규칙에 따라 전체 Azure SQL Server, 즉 동일한 SQL Database 서버 내의 모든 데이터베이스에 액세스 할 수 있다. 규칙은 master 데이터베이스에 저장 된다. Azure SQL Server에 대해 최대 128개의 서버 수준 IP 방화벽 규칙을 사용할 수 있다. Azure Portal, PowerShell 또는 Transact-SQL 문을 사용하여 서버수준 IP 방화벽 규칙을 구성할 수 있다.
· 포털 또는 PowerShell을 사용 하려면 구독 소유자 또는 구독 참가자 여야한다.
· Transact-SQL을 사용 하려면 서버 수준 보안 주체 로그인 또는 Azure Active Directory 관리자로 SQL Database 인스턴스에 연결해야 한다. 먼저 Azure 수준 사용 권한이 있는 사용자가 서버 수준 IP 방화벽 규칙을 만들어야 한다.
[데이터베이스 수준 IP 방화벽 규칙]
클라이언트는 규칙에 따라 동일한 SQL Database 서버 내의 특정(보안) 데이터베이스에 액세스 할 수 있다. 각 데이터베이스(master 데이터베이스 포함)에 대 한 규칙을 만들어 개별 데이터베이스에 저장한다.
· 서버 수준 방화벽을 구성한 후에만 Transact-SQL 문을 사용하여 master 및 사용자 데이터베이스에 대한 데이터베이스 수준 IP 방화벽 규칙을 만들고 관리할 수 있다.
· 서버 수준 IP 방화벽 규칙의 범위를 벗어나는 데이터베이스 수준 IP 방화벽 규칙의 IP 주소 범위를 지정하면 데이터베이스 수준 범위에서 IP 주소가 있는 클라이언트만 데이터베이스에 액세스 할 수 있다.
· 데이터베이스에 대해 최대 128개의 데이터베이스 수준 IP 방화벽 규칙을 가질 수 있다. 데이터베이스 수준 IP 방화벽 규칙을 구성 하는 명령은sp_set_database_firewall_rule (Azure SQL Database)를 사용한다.
[인터넷으로 통한 데이터베이스 서버 연결]
컴퓨터에서 인터넷을 통해 데이터베이스 서버에 연결 하려고 하면 먼저 방화벽은 연결에서 요청하는 데이터베이스에 대한 데이터베이스 수준 IP 방화벽 규칙에 대해 요청의 원래 IP 주소를 확인한다. 주소가 데이터베이스 수준 IP 방화벽 규칙에 지정 된 범위 내에 있는 경우 해당 규칙을 포함 하는 SQL database에 대해 연결이 가능하다. 주소가 데이터베이스 수준 IP 방화벽 규칙의 범위 내에 없는 경우 방화벽은 서버 수준 IP 방화벽 규칙을 확인한다. 주소가 서버 수준 IP 방화벽 규칙의 범위 내에 있는 경우 연결이 허용된다. 서버 수준 IP 방화벽 규칙은 Azure SQL Server에 있는 모든 SQL Database에 적용된다. 주소가 데이터베이스 수준 또는 서버 수준 IP 방화벽 규칙의 범위에 포함 되지 않은 경우 연결 요청이 실패한다. 로컬 컴퓨터에서 SQL Database에 액세스 하려면 네트워크와 로컬 컴퓨터의 방화벽이 TCP 포트 1433에서 나가는 통신을 허용 하는지 확인 한다.
[Azure 내부에서 데이터베이스 서버 연결]
Azure 내에서 호스트 되는 응용 프로그램이 SQL server에 연결할 수 있도록 하려면 Azure 연결을 사용 하도록 설정 해야 한다. Azure의 응용 프로그램이 데이터베이스 서버에 연결 하려고 하면 방화벽은 Azure 연결이 허용 되는지 확인한다. 시작 및 끝 IP 주소가 0.0.0.0 과 같은 방화벽 설정은 Azure 연결이 허용 됨을 나타낸다. 연결이 허용 되지 않으면 요청이 SQL Database 서버에 도달 하지 않는다. 이 옵션은 다른 고객의 구독에서 연결을 포함하여 Azure의 모든 연결을 허용 하도록 방화벽을 구성한다. 이 옵션을 선택 하는 경우 로그인 및 사용자 권한이 권한 있는 사용자만 액세스할 수 있도록 제한 해야한다.
[IP 방화벽 규칙 만들기 및 관리]
· Azure Portal에서 방화벽 규칙 생성
· Transact-SQL을 사용한 IP 방화벽 규칙 관리
View or SP |
Level |
Description |
sys.firewall_rules |
서버 |
현재 서버 수준 IP 방화벽 규칙을 표시 |
sp_set_firewall_rule |
서버 |
서버 수준 IP 방화벽 규칙을 생성 및 업데이트 |
sp_delete_firewall_rule |
서버 |
서버 수준 IP 방화벽 규칙을 제거 |
sys.database_firewall_rules |
데이터베이스 |
현재 데이터베이스 수준 IP 방화벽 규칙을 표시 |
sp_set_database_firewall_rule |
데이터베이스 |
데이터베이스 수준 IP 방화벽 규칙을 생성 및 업데이트 |
sp_delete_database_firewall_rule |
데이터베이스 |
데이터베이스 수준 IP 방화벽 규칙을 제거 |
아래 예시는 기존 규칙을 검토ㅠㅏ고 Contoso서버에서 IP주소 범위를 사용하도록 설정하고 IP 방화벽 규칙을 삭제한다.
SELECT * FROM sys.firewall_rules ORDER BY name; |
아래 예시는 서버 수준 IP 방화벽 규칙을 추가한다.
EXECUTE sp_set_firewall_rule @name = N'ContosoFirewallRule', @start_ip_address = '192.168.1.1', @end_ip_address = '192.168.1.10' |
아래 예시는 서버 수준의 IP 방화벽 규칙을 삭제한다.
EXECUTE sp_delete_firewall_rule @name = N'ContosoFirewallRule' |
[참고자료]
2019-11-06 / Sungwook Kang / http://sungwookkang.com/
Azure SQL Database, Azure SQL Data Warehouse, Azure 방화벽, Azure Database 방화벽, Azure Security
'SQL Server > SQL on Azure' 카테고리의 다른 글
Azure SQL Database 및 Azure SQL Data Warehouse에 대한 액세스 제어 및 권한 부여 (0) | 2019.11.09 |
---|---|
Azure SQL Database 보안 기능 개요 (0) | 2019.10.17 |
Azure SQL Database의 서버리스 구매 모델 (0) | 2019.10.15 |
Azure SQL에서 선택할 수 있는 다양한 배포 옵션 (0) | 2019.10.11 |
Azure SQL Database의 vCore 모델과 DTU 모델에서 마이그레이션 (0) | 2019.10.10 |