Aracılığıyla paylaş


PowerShell kullanarak Always Encrypted'ı yapılandırma

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

SqlServer PowerShell modülü, hem Azure SQL Veritabanı'nda hem de SQL Server'da Always Encrypted yapılandırmaya yönelik cmdlet'ler sağlar.

Always Encrypted'ı Yapılandırmak için PowerShell Kullanırken Dikkat Edilmesi Gereken Güvenlik Konuları

Always Encrypted'ın birincil amacı şifrelenmiş hassas verilerin güvenli olduğundan emin olmak olduğundan, veritabanı sistemi tehlikeye girmiş olsa bile, SQL Server bilgisayarında anahtarları veya hassas verileri işleyen bir PowerShell betiğini yürütmek özelliğin avantajlarını azaltabilir veya yenebilir. Güvenlikle ilgili daha fazla öneri için bkz. Anahtar Yönetimi için GüvenlikLe İlgili Önemli Noktalar.

PowerShell'i, rol ayrımı ile ve rol ayrımı olmadan Always Encrypted anahtarlarını yönetmek için kullanabilir, anahtar deposundaki gerçek şifreleme anahtarlarına kimlerin erişimi olduğu ve veritabanına kimlerin erişimi olduğu üzerinde denetim sağlayabilirsiniz.

Daha fazla öneri için bkz. Anahtar Yönetimi için Güvenlik Konuları.

Önkoşullar

Güvenli bir bilgisayara, SQL Server örneğinizin barındırıldığı bilgisayar OLMAYAN bir bilgisayara, SqlServer PowerShell modülü 22.0.50 veya daha üstü bir sürümünü yükleyin. Modül doğrudan PowerShell galerisinden yüklenebilir. Daha fazla bilgi için indirme yönergelerine bakın.

SqlServer modülünü içeri aktarma

SqlServer modülünü yüklemek için:

  1. Uygun betik yürütme ilkesini ayarlamak için Set-ExecutionPolicy cmdlet'ini kullanın.
  2. SqlServer modülünü içeri aktarmak için Import-Module cmdlet'ini kullanın.

Bu örnek, SqlServer modülünü yükler.

# Import the SQL Server Module.  
Import-Module "SqlServer" -MinimumVersion 22.0.50

Veritabanına bağlanma

Always Encrypted cmdlet'lerinden bazıları veritabanındaki verilerle veya meta verilerle çalışır ve önce veritabanına bağlanmanızı gerektirir. SqlServer modülünü kullanarak Always Encrypted'ı yapılandırırken veritabanına bağlanmak için önerilen iki yöntem vardır:

  1. Get-SqlDatabase cmdlet'ini kullanarak bağlanın.
  2. SQL Server PowerShell Sağlayıcısı kullanarak bağlanın.

Get-SqlDatabase'i kullanma

Get-SqlDatabase cmdlet'i SQL Server'daki veya Azure SQL Veritabanı'ndaki bir veritabanına bağlanmanızı sağlar. Veritabanına bağlanan bir cmdlet'in InputObject parametresi aracılığıyla aktarabileceğiniz bir veritabanı nesnesi döndürür.

SQL Server PowerShell kullanma

# Import the SqlServer module
Import-Module "SqlServer" -MinimumVersion 22.0.50

# Connect to your database
# Set the valid server name, database name and authentication keywords in the connection string
$serverName = "<Azure SQL server name>.database.windows.net"
$databaseName = "<database name>"
$connStr = "Server = " + $serverName + "; Database = " + $databaseName + "; Authentication = Active Directory Integrated"
$database = Get-SqlDatabase -ConnectionString $connStr

# List column master keys for the specified database.
Get-SqlColumnMasterKey -InputObject $database

Alternatif olarak, boruları kullanabilirsiniz:

$database | Get-SqlColumnMasterKey

SQL Server PowerShell Sağlayıcısını Kullanma

SQL Server PowerShell Sağlayıcısı, dosya sistemi yollarına benzer yollarda SQL Server nesnelerinin hiyerarşisini kullanıma sunar. SQL Server PowerShell ile, genellikle dosya sistemi yollarında gezinmek için kullandığınız komutlara benzer Windows PowerShell diğer adlarını kullanarak yollarda gezinebilirsiniz. Hedef örneğe ve veritabanına geçtiğinizde, sonraki cmdlet'ler aşağıdaki örnekte gösterildiği gibi bu veritabanını hedefler.

Not

Bu veritabanına bağlanma yöntemi yalnızca SQL Server için çalışır (Azure SQL Veritabanı'nda desteklenmez).

# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# Navigate to the database in the remote instance.
cd SQLSERVER:\SQL\servercomputer\DEFAULT\Databases\yourdatabase
# List column master keys in the above database.
Get-SqlColumnMasterKey

Alternatif olarak, veritabanına gitmek yerine genel Path parametresini kullanarak bir veritabanı yolu belirtebilirsiniz.

# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# List column master keys for the specified database.
Get-SqlColumnMasterKey -Path SQLSERVER:\SQL\servercomputer\DEFAULT\Databases\yourdatabase

PowerShell Kullanarak Always Encrypted Özelliği ile Görevler

Always Encrypted Cmdlet Referansı

Always Encrypted için aşağıdaki PowerShell cmdlet'leri kullanılabilir:

CMDLET Açıklama
Add-SqlAzureAuthenticationContext Azure'da kimlik doğrulaması gerçekleştirir ve bir kimlik doğrulama belirteci alır.
Add-SqlColumnEncryptionKeyValue Veritabanındaki mevcut bir sütun şifreleme anahtarı nesnesi için yeni bir şifrelenmiş değer ekler.
Complete-SqlColumnMasterKeyRotation Sütun ana anahtarının döndürmesini tamamlar
Get-SqlColumnEncryptionKey Veritabanında tanımlanan tüm sütun şifreleme anahtarı nesnelerini döndürür veya belirtilen ada sahip bir sütun şifreleme anahtarı nesnesi döndürür.
Get-SqlColumnMasterKey Veritabanında tanımlanan sütun ana anahtar nesnelerini döndürür veya belirtilen ada sahip bir sütun ana anahtar nesnesi döndürür.
Invoke-SqlColumnMasterKeyRotation Bir sütun ana anahtarının döndürülmesini başlatır.
New-SqlAzureKeyVaultColumnMasterKeySettings Azure Key Vault'ta depolanan asimetrik anahtarı açıklayan bir SqlColumnMasterKeySettings nesnesi oluşturur.
New-SqlCngColumnMasterKeySettings Şifreleme Yeni Nesil (CNG) API'sini destekleyen bir anahtar deposunda depolanan asimetrik anahtarı açıklayan bir SqlColumnMasterKeySettings nesnesi oluşturur.
New-SqlColumnEncryptionKey Veritabanında bir sütun şifreleme anahtarı nesnesi oluşturur.
New-SqlColumnEncryptionKeyEncryptedValue Bir sütun şifreleme anahtarının şifrelenmiş değerini üretir.
New-SqlColumnEncryptionSettings CEK ve şifreleme türü dahil olmak üzere tek bir sütunun şifrelemesi hakkındaki bilgileri kapsülleyen bir SqlColumnEncryptionSettings nesnesi oluşturur.
New-SqlColumnMasterKey Veritabanında bir sütun ana anahtar nesnesi oluşturur.
New-SqlColumnMasterKeySettings Belirtilen sağlayıcı ve anahtar yoluna sahip bir sütun ana anahtarı için bir SqlColumnMasterKeySettings nesnesi oluşturur.
New-SqlCspColumnMasterKeySettings Şifreleme API'sini (CAPI) destekleyen bir Şifreleme Hizmet Sağlayıcısı (CSP) ile bir anahtar deposunda depolanan asimetrik anahtarı açıklayan bir SqlColumnMasterKeySettings nesnesi oluşturur.
Remove-SqlColumnEncryptionKey Sütun şifreleme anahtarı nesnesini veritabanından kaldırır.
Remove-SqlColumnEncryptionKeyValue Veritabanındaki mevcut bir sütun şifreleme anahtarı nesnesinden şifrelenmiş bir değeri kaldırır.
Remove-SqlColumnMasterKey Veritabanından sütun ana anahtar nesnesini kaldırır.
Set-SqlColumnEncryption Veritabanında belirtilen sütunları şifreler, şifrelerini çözer veya yeniden şifreler.