Azure SQL Database 보안 기능 개요
· Version : Azure SQL
Microsoft Azure SQL Database는 클라우드 및 엔터프라이즈 애플리케이션용 관계형 데이터베이스 서비스를 제공한다. Azure SQL Database보안 전략은 아래 그림 처럼 계층형 심층 방어 방식을 따르며 외부에서 내부로 적용된다.
고객 데이터를 보호하기 위해 방화벽은 Azure Virtual Network 트래픽 출처 또는 IP 주소를 기준으로 액세스 권한이 명시적으로 부여될 때까지 네트워크에서 데이터베이스 서버에 액세스할 수 없도록 차단한다. Azure SQL Database 보안 기능의 자세한 내용은 Microsoft 공식 문서를 참고한다.
[네트워크 보안]
· IP 방화벽 규칙 : IP 방화벽 규칙은 각 요청이 시작된 IP 주소를 기준으로 하여 데이터베이스 액세스 권한을 부여한다.
· Virtual Network 방화벽 규칙 : 가상 네트워크 서비스 엔드포인트는 Azure 백본을 통해 가상 네트워크 연결을 확장하며, 트래픽이 생성되는 가상 네트워크 서브넷을 Azure SQL Database가 식별할 수 있도록 한다. 트래픽이 Azure SQL Database로 전송되도록 하려면 SQL 서비스 태그를 사용해 네트워크 보안 그룹을 통한 아웃바운드 트래픽을 허용한다. Azure SQL Database는 가상 네트워크 규칙을 통해 Virtual Network 내의 선택한 서브넷에서 전송된 통신만 수락할 수 있습니다.
[액세스 관리]
Azure 내에서 데이터베이스와 데이터베이스 서버를 관리하는 작업은 포털 사용자 계정의 역할 할당을 통해 제어된다. Azure SQL Database는 두 가지 인증 유형을 지원한다.
· SQL 인증 : SQL 데이터베이스 인증은 사용자 이름과 암호를 사용하여 Azure SQL Database에 연결할 때 사용자가 수행하는 인증을 지칭한다.
· Azure Active Directory 인증 : Azure Active Directory 인증은 Azure AD(Azure Active Directory)의 ID를 사용하여 Azure SQL Database 및 SQL Data Warehouse에 연결하는 메커니즘이다. 관리자는 Azure AD 인증을 통해 데이터베이스 사용자의 ID 및 권한과 기타 Microsoft 서비스를 중앙 위치 한 곳에서 관리할 수 있다. SQL Database를 사용한 Azure AD 인증을 사용하려면 서버 관리자 Active Directory 관리자를 만들어야 한다. Azure AD 인증에서는 관리 계정과 페더레이션된 계정이 모두 지원된다. 페더레이션된 계정은 Azure AD와 페더레이션된 고객 도메인용 Windows 사용자 및 그룹을 지원한다. 사용 가능한 추가 Azure AD 인증 옵션으로는 다단계 인증 및 조건부 액세스를 비롯한 SQL Server Management Studio용 Active Directory 유니버설 인증 연결이 있다.
[Authorization]
권한은 데이터베이스 역할에 사용자 계정을 추가 하 고 해당 역할에 데이터베이스 수준 사용 권한을 할당 하거나 사용자에 게 특정 개체수준 사용권한을 부여하여 제어 된다. 필요한 경우 작업 기능을 수행 하는 데 필요한 최소한의 권한만 가진 사용자를 역할에 추가 한다. 서버 관리자 계정은 기본적으로 db_owner 역할의 구성원이며, 관리 업무를 사용하는 소수의 사용자 에게만 부여 되어야 한다.
Azure SQL Database 응용 프로그램의 경우 EXECUTE AS 를 사용 하 여 호출 된 모듈의 실행 컨텍스트를 지정 하거나 제한 된 권한으로 응용 프로그램 역할을 사용한다. 이렇게 하면 데이터베이스에 연결 하는 응용 프로그램에 응용 프로그램에 필요한 최소한의 권한만 부여된다.
· 행 수준 보안 : 행 수준 보안을 통해 고객은 쿼리를 실행하는 사용자의 특성(예: 그룹 멤버 자격 또는 실행 컨텍스트)을 기반으로 하여 데이터베이스 테이블의 행에 대한 액세스를 제어할 수 있다.
[위협 보호]
· Azure Monitor 로그 및 Event Hubs의 SQL 감사 : SQL Database 감사는 데이터베이스 활동을 추적하며 고객이 소유한 Azure Storage 계정의 감사 로그에 데이터베이스 이벤트를 기록하여 보안 표준 규정 준수 상태를 유지할 수 있도록 지원한다. 사용자는 감사를 통해 진행 중인 데이터베이스 활동을 모니터링하고 이전 활동을 분석 및 조사하여 잠재적 위협이나 악용 의심 사례 및 보안 위반을 식별할 수 있다.
· Advanced Threat Protection : Advanced Threat Protection은 SQL Server 로그를 분석 하 여 비정상적인 동작을 감지 하 고 잠재적으로 유해한 데이터베이스 액세스 또는 악용 시도를 감지 한다.
[정보 보호 및 암호화]
· TLS(전송 계층 보안)(전송 중 암호화) : SQL Server는 모든 연결에 대해 항상 암호화 (SSL/TLS)를 적용 한다. 연결 문자열에서 Encrypt 또는 TrustServerCertificate의 설정에 관계 없이 모든 데이터가 클라이언트와 서버 간에 "전송 중"으로 암호화 된다.
· 투명한 데이터 암호화(미사용 데이터 암호화) : Azure SQL Database용 TDE(투명한 데이터 암호화)는 원시 파일이나 백업에 무단/오프라인으로 액세스할 수 없도록 미사용 데이터를 보호하기 위해 보안 계층을 추가한다. TDE는 AES 알고리즘을 사용하여 전체 데이터베이스를 암호화 한다. Azure에서는 새로 만드는 모든 SQL Database가 기본적으로 암호화되며, 기본 제공 서버 인증서를 통해 데이터베이스 암호화 키가 보호된다. 서비스에서 인증서 유지 관리 및 순환을 관리하므로 사용자 입력은 불필요하며, 암호화 키를 직접 제어하려는 고객은 Azure Key Vault에서 키를 관리할 수 있다.
· Azure Key Vault으로 키 관리 : 고객은 TDE( 투명한 데이터 암호화)용으로 지원되는 BYOK(Bring Your Own Key)를 활용해 Azure의 클라우드 기반 외부 키 관리 시스템인 Azure Key Vault를 사용하여 키 관리 및 순환을 직접 제어할 수 있다. 데이터베이스의 키 자격 증명 모음 액세스 권한이 철회되면 데이터베이스를 암호 해독하여 메모리로 읽어들일 수 없다. 중앙 키 관리 플랫폼을 제공하며 철저하게 모니터링되는 HSM(하드웨어 보안 모듈)을 활용하는 Azure Key Vault를 사용하면 키와 데이터 관리 작업을 분리하여 보안 규정 준수 요구 사항을 충족할 수 있다.
· Always Encrypted(사용 중인 데이터 암호화) : Always Encrypted는 신용 카드 번호, 주민 등록 번호 또는 확인이 필요한 데이터와 같이 특정 데이터베이스 열에 저장된 중요한 데이터를 액세스할 수 없도록 보호하는 기능이다. 데이터는 항상 암호화되므로 암호화 키 액세스 권한이 있는 클라이언트 애플리케이션에서 처리해야 하는 경우에만 암호화된 데이터의 암호가 해독된다. 암호화 키는 SQL에 표시되지 않으며 Windows 인증서 저장소 또는 Azure Key Vault에 저장할 수 있다.
· 동적 데이터 마스킹 : SQL Database 동적 데이터 마스킹에서는 권한이 없는 사용자에 대해 중요한 데이터를 마스킹해 표시함으로써 데이터 노출을 제한한다. 동적 데이터 마스킹은 Azure SQL Database에서 잠재적으로 중요한 데이터를 자동으로 검색하고 애플리케이션 계층에 미치는 영향을 최소화하면서 이러한 필드를 마스킹할 수 있는 실행 가능한 권장 사항을 제공한다. 이 기능은 지정된 데이터베이스 필드를 통해 쿼리의 결과 집합에 있는 중요한 데이터를 혼란스럽게 만들면서 작동하지만 데이터베이스의 데이터를 변경하지는 않는다.
[참고자료]
2019-10-16 / Sungwook Kang / http://sungwookkang.com/
Azure SQL Database, Azure TDE, Azure Security, Azure Network Security, Azure SQL Dynamic Data Masking
'SQL Server > SQL on Azure' 카테고리의 다른 글
Azure SQL Database 및 Azure SQL Data Warehouse에 대한 액세스 제어 및 권한 부여 (0) | 2019.11.09 |
---|---|
Azure SQL Database 및 Azure SQL Data Warehouse IP 방화벽 규칙 (0) | 2019.11.07 |
Azure SQL Database의 서버리스 구매 모델 (0) | 2019.10.15 |
Azure SQL에서 선택할 수 있는 다양한 배포 옵션 (0) | 2019.10.11 |
Azure SQL Database의 vCore 모델과 DTU 모델에서 마이그레이션 (0) | 2019.10.10 |