Partilhar via


Usando a criptografia

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Banco de Dados SQL no Microsoft Fabric

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 do SQL Server, você deve fornecer a senha para a chave mestra do banco de dados ou executar o AddServiceKeyEncryption método para disponibilizar uma cópia não criptografada da chave mestra do banco de dados para criptografia com a chave mestra de 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 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 os exemplos 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 SMO do Visual C# no Visual Studio .NET.

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

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

Confira também

Usando chaves de criptografia