Compartilhar via


Usando a criptografia

No SMO, a chave mestra do serviço é representada pelo objeto ServiceMasterKey. Isso é referenciado pela propriedade ServiceMasterKey do objeto Server. Ela pode ser regenerada através do método Regenerate.

A chave mestra do banco de dados é representada pelo objeto MasterKey. A propriedade IsEncryptedByServer indica se a chave mestra do banco de dados é criptografada ou não pela chave mestra do serviço. A cópia criptografada no banco de dados mestre é atualizada automaticamente sempre que a chave mestra do banco de dados é alterada.

É possível descartar a criptografia chave do serviço através do método DropServiceKeyEncryption e criptografar a chave mestra do banco de dados com uma senha. Nessa situação, você precisará abrir a chave mestra do banco de dados explicitamente para poder acessar chaves particulares protegidas.

Quando um banco de dados estiver sendo anexado a uma instância do SQL Server, forneça a senha para a chave mestra do banco de dados ou execute o método AddServiceKeyEncryption para fazer uma cópia não criptografada da chave mestra do banco de dados disponível para criptografia com a chave mestra do serviço. Essa etapa é recomendada para evitar a necessidade de abrir a chave mestra do banco de dados explicitamente.

O método Regenerate regenera a chave mestra do banco de dados. Quando a chave mestra do banco de dados é regenerada, todas as chaves criptografadas com a chave mestra do banco de dados são descriptografadas e, depois, criptografadas com a nova chave mestra do banco de dados. O método DropServiceKeyEncryption remove a criptografia da chave mestra do banco de dados através da chave mestra do serviço. O AddServiceKeyEncryption resulta na criptografia de uma cópia da chave mestra através da chave mestra do serviço e no armazenamento nos bancos de dados atual e mestre.

No SMO, certificados são representados pelo objeto Certificate. O objeto Certificate tem propriedades que especificam a chave pública, o nome do assunto, o período de validade e informações sobre o emissor. A permissão para acessar o certificado é controlada através dos métodos Grant, Revoke e Deny.

Exemplo

Para o exemplo de código a seguir, selecione o ambiente de programação, o modelo de programação e a linguagem de programação para criar seu aplicativo. Para obter mais informações, consulte Como criar um projeto SMO do Visual Basic no Visual Studio .NET e Como criar um projeto SMO do Visual C# no Visual Studio .NET.

Adicionando um certificado no Visual Basic

O exemplo de código cria um certificado simples com uma senha de criptografia. Diferente de outros objetos, o método Create possui várias sobrecargas. A sobrecarga usada no exemplo cria um novo certificado com uma senha de criptografia.

'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks database.
Dim db As Database
db = srv.Databases("AdventureWorks")
'Define a Certificate object variable by supplying the parent database and name in the constructor.
Dim c As Certificate
c = New Certificate(db, "Test_Certificate")
'Set the start date, expiry date, and description.
c.StartDate = DateValue("January 01, 2007")
c.Subject = "This is a test certificate."
c.ExpirationDate = DateValue("January 01, 2008")
'Create the certificate on the instance of SQL Server by supplying the certificate password argument.
c.Create("pGFD4bb925DGvbd2439587y")

Adicionando um certificado no Visual Basic C#

O exemplo de código cria um certificado simples com uma senha de criptografia. Diferente de outros objetos, o método Create possui várias sobrecargas. A sobrecarga usada no exemplo cria um novo certificado com uma senha de criptografia.

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

Consulte também

Conceitos