Поделиться через


Использование шифрования

В SMO главный ключ службы представлен объектом ServiceMasterKey. На него ссылается свойство ServiceMasterKey объекта Server. Его можно сформировать заново с помощью метода Regenerate.

Главный ключ базы данных представлен объектом MasterKey. Свойство IsEncryptedByServer указывает, шифруется ли главный ключ базы данных с помощью главного ключа службы. Зашифрованная копия в базе данных master обновляется автоматически при любом изменении главного ключа базы данных.

С помощью метода DropServiceKeyEncryption можно отключить шифрование с использованием ключа службы и зашифровать главный ключ базы данных с использованием пароля. В таком случае потребуется явно открыть главный ключ базы данных перед доступом к хранящимся в нем закрытым ключам.

При подключении базы данных к экземпляру SQL Server необходимо либо указать пароль для ключа master базы данных, либо выполнить AddServiceKeyEncryption метод , чтобы сделать незашифрованную копию ключа master базы данных доступной для шифрования с помощью ключа master службы. Этот шаг рекомендуется, поскольку он позволяет избежать необходимости явно открывать главный ключ базы данных.

Метод Regenerate используется для повторного создания главного ключа базы данных. При повторном создании главного ключа базы данных все ключи, которые были зашифрованы главным ключом базы данных, расшифровываются, а затем шифруются с использованием нового главного ключа базы данных. Метод DropServiceKeyEncryption используется для удаления шифрования главного ключа базы данных с помощью главного ключа службы. Сущность AddServiceKeyEncryption используется для шифрования копии главного ключа с помощью главного ключа службы и сохраняется как в текущей базе данных, так и в базе данных master.

В SMO сертификаты представлены объектом Certificate. У объекта Certificate есть свойства, указывающие открытый ключ, имя субъекта, срок действия и сведения об издателе. Разрешение на доступ к сертификату управляется с помощью методов Grant, Revoke и Deny.

Пример

В следующем примере кода для создания приложения необходимо выбрать среду программирования, шаблон программирования и язык программирования. Дополнительные сведения см. в разделах Создание проекта SMO Visual Basic в Visual Studio .NET и Создание проекта SMO Visual C# в Visual Studio .NET.

Добавление сертификата на языке Visual Basic

В этом примере кода создается простой сертификат с паролем для шифрования. В отличие от других объектов у метода Create есть несколько перегруженных методов. Перегруженный метод, используемый в этом примере, создает новый сертификат с паролем для шифрования.

Добавление сертификата на языке Visual C#

В этом примере кода создается простой сертификат с паролем для шифрования. В отличие от других объектов у метода Create есть несколько перегруженных методов. Перегруженный метод, используемый в этом примере, создает новый сертификат с паролем для шифрования.

{  
            //Connect to the local, default instance of SQL Server.   
            {  
                Server srv = new Server();  
  
                //Reference the AdventureWorks2012 database.   
                Database db = srv.Databases["AdventureWorks2012"];  
  
                //Define a Certificate object variable by supplying the parent database and name in the constructor.   
                Certificate c = new Certificate(db, "Test_Certificate");  
  
                //Set the start date, expiry date, and description.   
                System.DateTime dt;  
                DateTime.TryParse("January 01, 2010", out dt);  
                c.StartDate = dt;  
                DateTime.TryParse("January 01, 2015", out dt);  
                c.ExpirationDate = dt;  
                c.Subject = "This is a test certificate.";  
                //Create the certificate on the instance of SQL Server by supplying the certificate password argument.   
                c.Create("pGFD4bb925DGvbd2439587y");  
            }  
        }   

Добавление сертификата в PowerShell

В этом примере кода создается простой сертификат с паролем для шифрования. В отличие от других объектов у метода Create есть несколько перегруженных методов. Перегруженный метод, используемый в этом примере, создает новый сертификат с паролем для шифрования.

# Set the path context to the local, default instance of SQL Server and get a reference to AdventureWorks2012  
CD \sql\localhost\default\databases  
$db = get-item AdventureWorks2012  
  
#Create a certificate
$c = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Certificate -ArgumentList $db, "Test_Certificate"  
$c.StartDate = "January 01, 2010"  
$c.Subject = "This is a test certificate."  
$c.ExpirationDate = "January 01, 2015"  
  
#Create the certificate on the instance of SQL Server by supplying the certificate password argument.  
$c.Create("pGFD4bb925DGvbd2439587y")

См. также:

Использование ключей шифрования