Security first! SQL Server 2016 보안
가장안전한데이터베이스 built-in 80 70 69 60 50 43 49 40 30 20 34 29 22 20 15 18 22 10 0 6 4 5 3 0 1 0 0 2010 2011 2012 2013 2014 2015 3 SQL Server Oracle MySQL2 SAP HANA
상시암호화 ADO.NET 라이브러리가투명한클라이언트단의암호화제공 응용프로그램 신뢰구간 SQL Server SELECT Name FROM Patients WHERE SSN=@SSN SELECT Name FROM Patients WHERE SSN=@SSN @SSN='198-33-0987' Query 클라이언트단 향상된 ADO.NET 라이브러리 @SSN=0x7ff654ae6d Column Master Key 결과집합 Name Jim Gray 결과집합 Name Jim Gray dbo.patients Name Jane Doe 암호문 SSN 1x7fg655se2e 243-24-9812 Country USA Jim Gray 0x7ff654ae6d 198-33-0987 USA John Smith 0y8fj754ea2c 123-82-1095 USA Column Encryption Key
키관리 1. CEKs 와 CMK 생성 Column Encryption Key (CEK, 컬럼암호화키 ) Column Master Key (CMK, 컬럼마스터키 ) 2. CEK 암호화 암호화된 CEK 보안담당자 3. CMK 를안전하게저장 CMK Store: Certificate Store HSM Azure Key Vault CMK 4. 암호화된 CEK 를 DB 에저장 암호화된 CEK DB
상시암호화 - 작동예시 클라이언트 신뢰구간 CMK 저장소 SQL Server 비신뢰구간 using (SqlCommand cmd = new SqlCommand( "SELECT Name FROM Customers WHERE SSN = @SSN, conn)) { cmd.parameters.add(new SqlParameter( "@SSN", SqlDbType.VarChar, 11).Value = "111-22-3333"); SqlDataReader reader = cmd.executereader(); 평문 CEK 캐시 exec sp_describe_parameter_encryption @params = N'@SSN VARCHAR(11)', @tsql = N'SELECT * FROM Customers WHERE SSN = @SSN' Param @SSN Encryption Type/ Algo rithm DET/ AES 256 Encrypted CEK Value CMK Store P rovider Nam e CERTIFICATE_ STORE CMK Path Current User/ My/f2260 암호화된메타데이터 결과집합 ( 평문 ) Name 한기환 향상된 ADO.NET EXEC sp_execute_sql N'SELECT * FROM Customers WHERE SSN = @SSN', @params = N'@SSN VARCHAR(11)', @SSN=0x7ff654ae6d Param @Name Encryption Type/ Algo rithm Non-DET/ AES 256 Encrypted CEK Value Name 0x19ca706fbd9 CMK Store P rovider Nam e CERTIFICATE_ STORE CMK Path Current User/ My/f2260 결과집합 ( 암호문 ) 암호화된메타데이터
상시암호화의효과 데이터노출방지 민감한데이터를클리이언트단에서암호화. 사용된키는결코 DBMS 로보내지지않음. 암호화된데이터에쿼리 JOIN, Group by, distinct 등의등가비교지원. 응용프로그램의투명성 서버와클라이언트라이브러리향상으로최소한의응용프로그램변경. 민감한데이터를안전하게외부에저장할수있게됨높은권한을보유하거나비인가된사용자로부터데이터보호
행수준보안 행별권한확인으로데이터보호 한테이블내에서행수준의상세접근통제 다중사용자가동일테이블사용시비인가사용자의접근방지 다중사용자용응용프로그램에서연결필터링에적용 SQL Server Management Studio 나 Data Tools 를통한관리 디비와테이블의스키마바운드내에서강제수행 Customer 1 Customer 2 Customer 3 SQL Database
행수준보안의개념 조건자 (predicate) 함수 사용자정의된인라인테이블값함수 (itvf) 로보안로직적용임의로복잡하게정의하거나, 다른테이블과의조인을정의할수있음 보안조건자 특정테이블에조건자함수적용 (SEMIJOIN APPLY) 두개유형 : 필터조건자와블로킹조건자 보안정책 다중테이블에걸친보안관리를위한보안조건자모음 CREATE SECURITY POLICY mysecuritypolicy ADD FILTER PREDICATE dbo.fn_securitypredicate(wing, starttime, endtime) ON dbo.patients
행수준보안처리절차 1. 2. 3. 정책앱보안사용자관리자정책이 ( 예 : 필터간호사필터조건자와 ) 는환자적용을보안테이블위한정책을조회쿼리를 T-SQL 투명하게로생성재작성, 조건자를환자테이블에연결간호사 Database 정책관리자 보안정책 Filter Predicate: INNER JOIN 응용프로그램 SELECT * FROM Patients Patients CREATE FUNCTION dbo.fn_securitypredicate(@wing int) RETURNS TABLE WITH SCHEMABINDING AS return SELECT 1 as [fn_securitypredicate_result] FROM SELECT * StaffDuties FROM Patients d INNER JOIN Employees e SEMIJOIN ON (d.empid APPLY dbo.fn_securitypredicate(patients.wing); = e.empid) WHERE e.usersid = SUSER_SID() AND @wing = d.wing; SELECT CREATE Patients.* SECURITY POLICY FROM Patients, dbo.secpol StaffDuties ADD FILTER d PREDICATE INNER JOIN dbo.fn_securitypredicate(wing) Employees e ON (d.empid = e.empid) ON Patients WHERE WITH e.usersid (STATE = ON) = SUSER_SID() AND Patients.wing = d.wing;
행수준보안의효과 미세접근통제 다중테넌트디비를안전하게유지하여, 같은테이블을사용하는다른사용자의접근제한 응용프로그램투명성 RLS 는쿼리수행시투명하게동작하여, 앱을변경불필요 다른제품들에서도 RLS 사용가능 중앙집중식보안로직 강제로직은디비내에보관스키마 - 바운드테이블로더나은보안제공응용프로그램관리와복잡도감소 다중소비자용데이터를단일디비 / 테이블에저장하고, 동시에행수준읽기 & 쓰기를사용자실행정보기반으로제한
동적데이터마스킹 민감한데이터의남용예방 쿼리결과를정책기반으로실시간으로데이터마스킹 정의된사용자집합에대해테이블과컬럼수준에정책적용 다양한민감데이터종류 ( 예 : 신용카드번호, 주민등록번호 ) 에따른다중마스킹함수지원 ( 예 : full, partial) 4 가지마스크종류지원 : 기본, Email, 사용자정의문자, 무작위 (random) Azure SQL Database 는포탈에서쉽게구성 SQL Database SQL Server 2016 Table.CreditCardNo 4465-6571-7868-5796 4468-7746-3848-1978 4484-5434-6858-6550 실시간데이터마스킹 ; 부분마스킹
동적데이터마스킹처리절차 32 1 ) 보안동적앱사용자가담당자가데이터, 마스킹, Employee 정책이테이블에서테이블의, 쿼리결과에서민감한필요한컬럼에데이터민감한동적요청데이터를알아볼마스킹수정책을없게처리 T-SQL로정의 업무용앱 ALTER TABLE [Employee] ALTER COLUMN [SocialSecurityNumber] ADD MASKED WITH (FUNCTION = SSN() ) 업무용앱 ALTER TABLE [Employee] ALTER COLUMN [Email] ADD MASKED WITH (FUNCTION = EMAIL() ) ALTER TABLE [Employee] ALTER COLUMN [Salary] ADD MASKED WITH (FUNCTION = RANDOM(1,20000) ) GRANT UNMASK to admin1 보안담당자 SELECT [Name], [SocialSecurityNumber], [Email], [Salary] FROM [Employee] 다른로그인 관리자 1 로그인
동적데이터마스킹의효과 규제준수 민감한데이터보호 신속함 & 투명성 규제기관에서제안하는프라이버시요건을충족하기위해응용프로그램에꼭필요한요건 응응프로그램에서민감한데이터에접근하는비인가사용자나운영 DB 에접근하는개발자나 DBA 로부터데이터보호. 기반데이터는온전하게유지되는채로, 민감한데이터만언제어디서나마스킹된상태로노출 데이터의완전성에는영향을미치지않고, 특정테이블필드만노출을제한하는정책으로, 민감한데이터에대한접근제한
SQL Server 를 Azure 로확장 Cold 테이블을안전하게 Azure 로늘린후원격쿼리로처리 기능 온프레미스 Azure 대량운영테이블을온프렘에서 Azure 로늘이고, 단일테이블처럼처리하기 효과 Hot/ 활성데이터 소량의데이터이동과원격쿼리처리 Cold/ 마감데이터 Orders In-memory OLTP 테이블 Order history 늘어난테이블 온프렘 & 클라우드용 BI 통합
스트레치데이터베이스아키텍처 로컬 DB 로컬데이터 조건에맞는데이터 인터넷영역 원격끝점 원격데이터 Azure 동작방식 온프레미스 SQL Server 에서보호된연결된서버 (Linked Server) 생성 연결된서버정의내에원격끝점지정 이전이활성화되어있으면, 원격리소스를배포하고조건에맡는데이터이전 쿼리는로컬디비와원격끝점에대해수행
스트레치데이터베이스로저장소비용절감 상시암호화된스트레치 DB Microsoft Azure Denny Usher ox7ff654ae6d 3/18/2005 Order history Stretch to cloud Name SSN Date Customer data Philip Wenger cm61ba906fd 2/28/2005 Denny Usher ox7ff654ae6d Product data 3/18/2005 Alicia Hodge i2y36cg776rg 4/10/2005 Order History Alta Levy nx290pldo90l 4/27/2005 Dionne Hardin ypo85ba616rj 5/12/2005 Kristy Flowers bns51ra806fd 5/22/2005 Sara Wiley mci12hh906fj 6/07/2005 쿼리 앱
공통경험제공 @ 온프레미스, 클라우드 & 하이브리드 Microsoft 가유일!
기업용신규보안 상시암호화 행수준보안 하이브리드형핵심업무 스트레치데이터베이스
추가로향상된보안 DB 동작이성공 / 실패한경우모두감사 (Audit) OLTP 에서변경된레코드의이력을추적하는감사기능향상 인메모리 OLTP 테이블의저장소에도투명한데이터암호화 암축된상태로백업암호화지원
보안리소스 SQL Server 2016 향상된보안 https://msdn.microsoft.com/ko-kr/library/bb510411(v=sql.130).aspx#security MSDN 문서 https://msdn.microsoft.com/ko-kr/library/dn765131.aspx SQL Server 데이터베이스및 Azure SQL 데이터베이스보안센터 https://msdn.microsoft.com/ko-kr/bb510589.aspx SQL Server 보안블로그 ( 영문 ) http://blogs.msdn.com/b/sqlsecurity/