Utilizar el cifrado
En SMO, el objeto ServiceMasterKey representa la clave maestra de servicio. La propiedad ServiceMasterKey del objeto Server hace referencia a esto. Se puede regenerar utilizando el método Regenerate.
El objetoMasterKey representa la clave maestra de la base de datos. La propiedad IsEncryptedByServer indica si se cifra la clave maestra de base de datos utilizando la clave maestra de servicio. La copia cifrada en la base de datos maestra se actualiza automáticamente siempre que se cambia la clave maestra de base de datos.
Es posible quitar el cifrado de la clave de servicio utilizando el método DropServiceKeyEncryption y cifrar la clave maestra de base de datos con una contraseña. En esa situación, tendrá que abrir explícitamente la clave maestra de base de datos antes de tener acceso a las claves privadas que ha protegido.
Cuando una base de datos se adjunta a una instancia de SQL Server, debe proporcionar la contraseña para la clave maestra de base de datos o ejecutar el método AddServiceKeyEncryption para hacer que una copia no cifrada de la clave maestra de base de datos esté disponible para el cifrado con la clave maestra de servicio. Se recomienda este paso para evitar la necesidad de abrir explícitamente la clave maestra de base de datos.
El método Regenerate regenera la clave maestra de base de datos. Si se vuelve a generar la clave maestra de base de datos, todas las claves cifradas con ella se descifran y, a continuación, vuelve a cifrarlas con la nueva clave maestra de base de datos. El método DropServiceKeyEncryption quita el cifrado de la clave maestra de base de datos por la clave maestra de servicio. AddServiceKeyEncryption hace que se cifre una copia de la clave maestra utilizando la clave maestra de servicio y la almacena en la base de datos actual y en la base de datos maestra.
En SMO, el objeto Certificate representa los certificados. El objeto Certificate tiene propiedades que especifican la clave pública, el nombre del asunto, el período de validez e información sobre el emisor. El permiso para tener acceso al certificado se controla utilizando los métodos Grant, Deny y Revoke.
Ejemplo
Para el siguiente ejemplo de código, deberá seleccionar el entorno de programación, la plantilla de programación y el lenguaje de programación en los que crear su aplicación. Para obtener más información, vea Cómo crear un proyecto de Visual Basic SMO en Visual Studio .NET y Cómo crear un proyecto de Visual C# SMO en Visual Studio .NET.
Agregar un certificado en Visual Basic
En el ejemplo de código se crea un certificado simple con una contraseña de cifrado. A diferencia de otros objetos, el método Create tiene varias sobrecargas. La sobrecarga utilizada en el ejemplo crea un nuevo certificado con una contraseña de cifrado.
'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")
Agregar un certificado en Visual C#
En el ejemplo de código se crea un certificado simple con una contraseña de cifrado. A diferencia de otros objetos, el método Create tiene varias sobrecargas. La sobrecarga utilizada en el ejemplo crea un nuevo certificado con una contraseña de cifrado.
{
//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");
}
}
Agregar un certificado en PowerShell
En el ejemplo de código se crea un certificado simple con una contraseña de cifrado. A diferencia de otros objetos, el método Create tiene varias sobrecargas. La sobrecarga utilizada en el ejemplo crea un nuevo certificado con una contraseña de cifrado.
# 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")