Utilizar el cifrado

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

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 se adjunta una base de datos a una instancia de SQL Server, debe proporcionar la contraseña para la clave maestra de base de datos o ejecutar el AddServiceKeyEncryption método para hacer una copia sin cifrar de la clave maestra de base de datos 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 mediante 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, Revoke y Deny .

Ejemplo

Para los siguientes ejemplos 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 Crear un proyecto SMO de Visual C# en Visual Studio .NET.

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 AdventureWorks2022 database.   
                Database db = srv.Databases["AdventureWorks2022"];  
  
                //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 AdventureWorks2022  
CD \sql\localhost\default\databases  
$db = get-item AdventureWorks2022  
  
#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 también

Uso de claves de cifrado