Share 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 privadas 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 AdventureWorks2008R2 database.
Dim db As Database
db = srv.Databases("AdventureWorks2008R2")
'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 = new Server();

                //Reference the AdventureWorks2008R2 database. 
                Database db = srv.Databases["AdventureWorks2008R2"];

                //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");
            }
        } 

Adicionando um certificado no PowerShell

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.

# Set the path context to the local, default instance of SQL Server and get a reference to AdventureWorks2008R2
CD \sql\localhost\default\databases
$db = get-item AdventureWorks2008R2

#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")
 

Consulte também

Conceitos