다음을 통해 공유


두 서버에서 동일한 대칭 키 만들기

이 항목에서는 Transact-SQL을 사용하여 SQL Server 2014의 두 서버에서 동일한 대칭 키를 만드는 방법을 설명합니다. 암호 텍스트의 암호를 해독하려면 암호화하는 데 사용된 키가 필요합니다. 암호화와 암호 해독이 모두 단일 데이터베이스에서 발생하는 경우 키는 데이터베이스에 저장되며 암호화 및 암호 해독 모두에 대해 사용 권한에 따라 사용할 수 있습니다. 그러나 암호화 및 암호 해독이 별도의 데이터베이스 또는 별도의 서버에서 발생하는 경우 한 데이터베이스에 저장된 키를 두 번째 데이터베이스에서 사용할 수 없습니다.

이 항목에서

시작하기 전에

한계 및 제한사항

  • 대칭 키를 만들 때 대칭 키는 인증서, 암호, 대칭 키, 비대칭 키 또는 PROVIDER 중 하나 이상을 사용하여 암호화해야 합니다. 키에는 각 유형에 대해 두 개 이상의 암호화가 포함될 수 있습니다. 즉, 여러 인증서, 암호, 대칭 키 및 비대칭 키를 동시에 사용하여 단일 대칭 키를 암호화할 수 있습니다.

  • 데이터베이스 마스터 키의 공개 키 대신 암호를 사용하여 대칭 키를 암호화한 경우 TRIPLE_DES 암호화 알고리즘이 사용됩니다. 따라서 AES와 같은 강력한 암호화 알고리즘을 사용하여 만든 키는 더 약한 알고리즘으로 보호됩니다.

안전

권한

데이터베이스에 대한 ALTER ANY SYMMETRIC KEY 권한이 필요합니다. AUTHORIZATION이 지정된 경우, 데이터베이스 사용자에 대한 IMPERSONATE 권한이 필요하거나 애플리케이션 역할에 대한 ALTER 권한이 필요합니다. 인증서 또는 비대칭 키를 통한 암호화의 경우에는 해당 인증서 또는 비대칭 키에 대한 VIEW DEFINITION 권한이 필요합니다. Windows 로그인, SQL Server 로그인 및 애플리케이션 역할만 대칭 키를 소유할 수 있습니다. 그룹 및 역할은 대칭 키를 소유할 수 없습니다.

Transact-SQL 사용

서로 다른 두 서버에 동일한 대칭 키 만들기

  1. 개체 탐색기에서 데이터베이스 엔진인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 CREATE MASTER KEY, CREATE CERTIFICATE 및 CREATE SYMMETRIC KEY 문을 실행하여 키를 만드세요.

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My p@55w0Rd';  
    GO  
    CREATE CERTIFICATE [cert_keyProtection] WITH SUBJECT = 'Key Protection';  
    GO  
    CREATE SYMMETRIC KEY [key_DataShare] WITH  
        KEY_SOURCE = 'My key generation bits. This is a shared secret!',  
        ALGORITHM = AES_256,   
        IDENTITY_VALUE = 'Key Identity generation bits. Also a shared secret'  
        ENCRYPTION BY CERTIFICATE [cert_keyProtection];  
    GO  
    
  4. 별도의 서버 인스턴스에 연결하고, 다른 쿼리 창을 열고, 위의 SQL 문을 실행하여 두 번째 서버에서 동일한 키를 만드세요.

  5. 첫 번째 서버에서 아래의 OPEN SYMMETRIC KEY 문과 SELECT 문을 먼저 실행하여 키를 테스트합니다.

    OPEN SYMMETRIC KEY [key_DataShare]   
        DECRYPTION BY CERTIFICATE cert_keyProtection;  
    GO  
    SELECT encryptbykey(key_guid('key_DataShare'), 'MyData' )  
    GO  
    -- For example, the output might look like this: 0x2152F8DA8A500A9EDC2FAE26D15C302DA70D25563DAE7D5D1102E3056CE9EF95CA3E7289F7F4D0523ED0376B155FE9C3  
    
  6. 두 번째 서버에서 이전 SELECT 문의 결과를 다음 코드의 @blob 값으로 붙여넣고 다음 코드를 실행하여 중복 키가 암호 텍스트를 해독할 수 있는지 확인하세요.

    OPEN SYMMETRIC KEY [key_DataShare]   
        DECRYPTION BY CERTIFICATE cert_keyProtection;  
    GO  
    DECLARE @blob varbinary(8000);  
    SET @blob = SELECT CONVERT(varchar(8000), decryptbykey(@blob));  
    GO  
    
  7. 두 서버에서 대칭 키를 닫습니다.

    CLOSE SYMMETRIC KEY [key_DataShare];  
    GO  
    

자세한 내용을 보려면 다음을 참조하십시오: