2단원: 명명 표준 정책 만들기 및 적용

적용 대상:SQL Server

일부 유형의 정책 기반 관리 정책은 향후 정책 준수를 적용하는 트리거를 만들 수 있습니다. 이 단원에서는 테이블에 명명 표준을 적용하는 정책을 만듭니다. 그런 다음 정책을 위반하는 테이블을 만들어 정책을 테스트합니다.

전제 조건

이 자습서를 완료하려면 SQL Server Management Studio, SQL Server를 실행하는 서버에 대한 액세스 권한이 필요합니다.

Finance 데이터베이스 만들기

  1. Management Studio에서 쿼리 창을 열고 다음 문을 실행합니다.

    CREATE DATABASE Finance ;  
    GO  
    
  2. 개체 탐색기에서 데이터베이스를 클릭한 다음 F5 키를 눌러 데이터베이스 목록을 새로 고칩니다.

Finance 테이블 조건 만들기

  1. 개체 탐색기에서 관리, 정책 관리를 차례로 확장하고 조건을 마우스 오른쪽 단추로 클릭한 다음 새 조건을 클릭합니다.

New condition

  1. 새 조건 만들기 대화 상자의 이름 상자에 재무 테이블을 입력합니다.

    1. 패싯 목록에서 여러 부분으로 구성된 이름을 선택합니다.
    2. 영역의 필드 상자에서 @Name;을 선택하고 연산자 상자에서 [좋아요]를 선택하고 상자에 모든 테이블 이름을 강제로 문자 핀틀로 시작하도록 입력 'fintbl%' 합니다.
    3. 설명 페이지에서 Finance table names must begin with fintbl을 입력한 다음 확인 을 클릭하여 조건을 만듭니다.

    Finance tables condition

재무 이름 정책 만들기

  1. 개체 탐색기에서 정책을 마우스 오른쪽 단추로 클릭한 다음 새 정책을 클릭합니다.

New policy

  1. 새 정책 만들기 대화 상자의 이름 상자에 Finance Name을 입력합니다.

    1. 검사 조건 목록에서 재무 테이블을 선택합니다. 다중 파트 이름 영역에 있습니다.
    2. 반대 영역에는 이 정책을 적용할 수 있는 데이터베이스 개체 목록이 표시됩니다. 모든 테이블에 대한 확인란을 선택합니다.
    3. 사용 목록을 선택합니다. 사용 상자는 요청 시 정책에 적용되지 않습니다.
    4. 평가 모드 목록에서 변경 시: 방지를 선택합니다. 이렇게 하면 Finance 데이터베이스에 데이터베이스 트리거를 만들어 정책을 적용합니다.
    5. 서버 제한 목록에서 없음을 선택합니다.
    6. 설명 페이지에서 'Finance 데이터베이스의 테이블 이름에 'fintbl%'이 포함되어야 합니다.' 설명을 추가합니다.
    7. 일반 페이지로 돌아가서 모든 데이터베이스 영역에서 [모든 항목]을 확장한 다음 [새로 만들기] 조건을 클릭합니다.

    Create new Finance Name policy

  2. 새 조건 만들기 대화 상자의 이름 상자에 Finance Database를 입력합니다.

    1. 상자에서 @Name = 'Finance'를 포함하도록 식을 완성한 다음 확인을 클릭하여 조건 페이지를 닫습니다.

    Create new 'finance database' condition

    참고 항목

    확인 단추를 사용하려면 값 상자에서 탭해야 할 수 있습니다.

  3. 확인을 선택합니다.

재무 정책 범주 만들기

  1. 개체 탐색기에서 관리를 확장하고 정책 관리를 마우스 오른쪽 단추로 클릭한 다음 범주 관리를 클릭합니다.

Manage categories

  1. 정책 범주 관리 대화 상자의 이름에서 빈 상자에 Finance 를 입력한 다음 데이터베이스 구독 위임의 선택을 취소합니다. 데이터베이스 구독 위임 은 인스턴스의 모든 데이터베이스가 이 정책 범주에 속하는 정책을 구독하도록 강제합니다. 이 단원에서는 Finance 데이터베이스만 Finance Name 정책을 구독해야 합니다.

    Manage policy categories

  2. 확인을 선택합니다.

재무 정책 범주 구독

  1. 개체 탐색기에서 데이터베이스를 확장하고 Finance를 마우스 오른쪽 단추로 클릭한 다음 정책을 가리키고 범주를 클릭합니다.

Finance policy categories

  1. 재무 범주에 대한 구독 확인란을 선택합니다.

Subscribed to finance policy

  1. 확인을 선택합니다.

재무 이름 정책의 적용 테스트

  1. Management Studio에서 쿼리 창을 엽니다. Finance Name 정책을 위반하는 테이블을 만들려고 하는 다음 문을 실행합니다. 테이블 이름이 fintbl 문자로 시작되지 않으므로 테이블이 정책을 위반합니다.

    USE Finance ;  
    GO  
    CREATE TABLE NewTable  
    (Col1 int) ;  
    GO    
    

    정책은 테이블을 만들지 못하게 하고 정책 이름을 제공하는 정보 메시지를 반환합니다.

  Policy 'Finance Name' has been violated by 'SQLSERVER:\SQL\SQL\SQL2017\Databases\Finance\Tables\dbo.NewTable'.
  This transaction will be rolled back.
  Policy condition: '@Name LIKE 'fintbl%''
  Policy description: 'Tables names in the Finance database must contain 'fintbl%''.
  Additional help: '' : ''
  Statement: 'CREATE TABLE NewTable  
      (Col1 int)'.
  Msg 515, Level 16, State 2, Procedure msdb.sys.sp_syspolicy_execute_policy, Line 69 [Batch Start Line 2]
  Cannot insert the value NULL into column 'target_query_expression', table 'msdb.dbo.syspolicy_policy_execution_history_details_internal'; column does not allow nulls. INSERT fails.
  The statement has been terminated.
  1. 유효한 이름을 제공하려면 다음과 같이 코드를 수정하고 문을 다시 실행합니다.

    USE Finance ;  
    GO  
    CREATE TABLE fintblNewTable  
    (Col1 int) ;  
    GO    
    

    이번에는 테이블이 만들어집니다.

전체 서버에 정책 적용

  1. 현재 Finance 데이터베이스만 Finance 정책 범주를 구독합니다. 전체 서버에 정책 범주를 적용하는 것이 더 간단한 경우가 많습니다. 개체 탐색기에서 관리를 확장하고 정책 관리를 마우스 오른쪽 단추로 클릭한 다음 범주 관리를 클릭합니다.

  2. 정책 범주 관리 대화 상자에서 Finance 범주를 찾고 Finance 범주에 대해 데이터베이스 구독 위임 확인란을 선택합니다.

  3. 확인을 선택합니다. 이제 Finance 범주가 모든 데이터베이스에 적용되지만 만든 조건은 Finance Name 정책을 Finance 데이터베이스로 제한합니다. 여러 서버에 올바르게 적용되는 방식으로 복잡한 조건 조합을 사용하여 정책을 대상으로 지정하는 방법을 보여 줍니다.

요약

이 자습서에서는 정책 기반 관리 조건, 정책 및 정책 그룹을 만드는 방법과 필터를 적용하고 정책 기반 관리 대상의 준수를 확인하는 방법을 보여 줍니다.

다음

이 자습서는 완료되었습니다. 시작 부분으로 돌아가려면 자습서: 정책 기반 관리를 사용하여 서버 관리를 방문하세요.

자습서 목록은 SQL Server 2016 자습서를 참조하세요.

참고 항목

정책 기반 관리를 사용하여 서버 관리