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 está sendo anexado a uma instância de SQL Server, você deve fornecer a senha para o banco de dados master chave ou executar o AddServiceKeyEncryption método para tornar uma cópia não criptografada do banco de dados master chave disponível para criptografia com o serviço master chave. 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 de banco de dados através da chave mestra de serviço. AddServiceKeyEncryption faz com que uma cópia da chave mestra seja criptografada usando a chave mestra de serviço e armazenada no banco de dados atual e no banco de dados 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 Criar um projeto de SMO do Visual Basic no Visual Studio .NET e Criar um projeto de 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.
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 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");
}
}
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 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")