Установка модуля sql server powershell

SQLPS.exe

This is a utility that you should be able to open by typing it in the run prompt (Start > Run). A second option, right-click a node under Object Explorer, within SQL Server Management Studio (SSMS), and select “Start PowerShell”. The SQLPS utility’s main access point is using the provider “SQLSERVER:\” to browse SQL Server like a file directory. With that, based on the node you open SQLPS from will place you within that path of the provider. Under each “folder” you are in for the provider offers properties to read or set, and some methods to use for administration.

One thing you must remember when using this utility is the version of PS you operate under is 2.0, an obvious weakness. Example: I use on Windows 10 Operating System (OS) with PS version 5.0 and SQL Server 2012:

It is very important distinction to remember because a cmdlet (pronounced command-let) under version 5.0 may not show up at all in SQLPS.exe, or be missing new features that were added.

This method to accessing a SQL Server instance is for those one-liner situations, but will admit that SQLPS is rather slow to work with at times, so don’t get in too big of a rush. As an example, a common one-liner I use SQLPS utility for is when I am refreshing development environment and just want to set all the databases to SIMPLE recovery mode:

1 Get-ChildItem SQLSERVER\SQL\LOCALHOST\SQL12\Databases|foreach{$_.RecoveryModel=“SIMPLE”;$_.Alter()}

Using T-SQL

This section talks about using T-SQL to create Column Master Key and Column Encryption Key along with creating encrypted columns in a table. The following are the three tables that are very important to get the required key information to create Master and Column encryption keys.

Step 1: Create Column Master Key

To get the provider name and the key path details, query the system view sys.column_master_keys

1
2
3
4
5
6
7

 
SELECT

Name,

key_store_provider_name KeyStore,

key_path KeyPath

FROM sys.column_master_keys
 

Use the create column master key DDL to define the SQLShackAECMK master key

1
2
3
4
5
6
7

CREATE COLUMN MASTER KEY SQLShackAECMK  

WITH(

KEY_STORE_PROVIDER_NAME=’MSSQL_CERTIFICATE_STORE’,

KEY_PATH=’Current User/my/96B46286C49BEC6EC6D7CD31DBEE3B5A3B57E3E7′

);

 

Step 2: Create Column Encryption Key

To get encrypted_value and algorithm details, query the following system views sys.column_encryption_key_values and sys.column_encryption_keys

1
2
3
4
5
6
7
8
9
10
11
12
13
14

 
SELECT

NAME,

ENCRYPTED_VALUE,

ENCRYPTION_ALGORITHM_NAME ALGORITHM

FROM

sys.column_encryption_key_values CEKV

inner join

sys.column_encryption_keys CEK

ON

CEKV.column_encryption_key_id=CEK.column_encryption_key_id

WHERE

NAME=’SQLShack_CEK_1′

 

Use the create column encryption key DDL to create the SQLShackAECEK CEK key

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

CREATE COLUMN ENCRYPTION KEY SQLShackAECEK  

WITH VALUES

(

COLUMN_MASTER_KEY=SQLShackAECMK,

ALGORITHM=’RSA_OAEP’,

ENCRYPTED_VALUE=

0x016E000001630075007200720065006E00740075007300650072002F006D0079002F0039003600620034003
60032003800360063003400390062006500630036006500630036006400370063006400330031006400620065
00650033006200350061003300620035003700650033006500370082F6F9357AE51A486DFBA98D83B387CDE04
5DE8DD9630C1F55ED306BA559CA2BF3CA12C4926C30A0BF4F7C5A51D2F4ACA160B48577DFC21D81D2682F0C23
A1F0C1B95BADF1C587077F1312D7C511A690C9E74B80C0725C1BBBC84C7557892B8F4AF575774A6291B19A313
F5E1975AC4087162F3DECF5BD68F34A553DC39B42A6FC943219687A632FC308F19CDAAA9D0ED137C3CF64827F
713EBA58A33FA20C11FA8D917D3ED6572EFF6389477BD170EE9B9889D31185B0BD1BC98FFC88550EC854D8ECD
DD4D7F4BC30CD4482A5DDD90354986BC00C3D576A57A095226D9508863B71866688BE4B16F8FAA8BF3EC4E2CE
09C69A8317B8B32D887F85EB78F22892748CABEC8FA277412CF11C130E00E921E64F8D84D10BDE770E91B2A4D
0CE6FBB5BFF6196B9A6020E9F750DC7837BCA5E3E6C092169C00306B64B3FA3FF70AB409380144A5A3D711C47
C0C0D80484B4237A25F03406B1A42A43B68F56DED431FA53D17F7F1B799A1BFBFBEE078D3EAC087E127D86778
9BEE595AFAA8C249861AAD9316DEAF4C60552D69ED8E42E4D5E942A1EA62E156F3EF6652FFB0A047DF15FBD43
A44E7CFFB2F4BBFEC71FB8F34C59BBFF1ED05E834332F93C279233E3044DBB3DEB004DB8D67AF75B044CCEB7D
192E6471090ACE9067E8BBCEFFED40962555853E6EE0D90A37AD874FF1E42F621B39C5F22AA84BAE49DFD7B4E
F40EDE2A5E

);

 

Step 3: Create Encrypted Columns table

Use the create table DDL with a few additional configurations in the column definition

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

CREATE TABLE tbl_CustomerSQLShackDemoAE(

custName nvarchar(30)

COLLATE  Latin1_General_BIN2 ENCRYPTED WITH(

ENCRYPTION_TYPE=RANDOMIZED,

ALGORITHM=’AEAD_AES_256_CBC_HMAC_SHA_256′,

COLUMN_ENCRYPTION_KEY=SQLShackAECEK),

custSSN varchar(11)

COLLATE  Latin1_General_BIN2 ENCRYPTED WITH(

ENCRYPTION_TYPE=DETERMINISTIC,

ALGORITHM=’AEAD_AES_256_CBC_HMAC_SHA_256′,

COLUMN_ENCRYPTION_KEY=SQLShackAECEK),

custBirthDatedate

ENCRYPTED WITH(ENCRYPTION_TYPE=RANDOMIZED,

ALGORITHM=’AEAD_AES_256_CBC_HMAC_SHA_256′,

COLUMN_ENCRYPTION_KEY=SQLShackAECEK)NOTNULL,

CustAge intNULL,

);

 

That’s all.

Запуск PowerShell из агента SQL Server

Есть несколько типов шагов заданий агента SQL Server. Каждый тип связан с некоторой подсистемой, в которой реализуется определенная среда, например агент репликации или среда командной строки. Можно создавать скрипты Windows PowerShell, а затем использовать агент SQL Server, чтобы включить скрипты в задания, которые выполняются в запланированное время или в ответ на события агента SQL Server. Скрипты Windows PowerShell можно запускать либо с помощью шагов задания командной строки, либо с помощью шагов задания PowerShell.

  • Используйте шаги задания PowerShell для запуска подсистемой агента SQL Server служебной программы sqlps, запускающей PowerShell и импортирующей модуль sqlps. Если вы используете SQL Server 2019 или более поздней версии, мы рекомендуем использовать модуль в шаге задания Агента SQL.

  • Используйте шаг задания командной строки для запуска PowerShell.exe и укажите скрипт, импортирующий модуль sqlps .

Предупреждение, касающееся потребления памяти

Каждый шаг задания агента SQL Server, запускающий PowerShell с модулем sqlps, запускает процесс, которому требуется приблизительно 20 МБ памяти. Одновременный запуск большого числа шагов задания Windows PowerShell может иметь негативное влияние на производительность.

Задачи поставщика SQL Server

Описание задачи Статья
Описано, как использовать командлеты Windows PowerShell для перехода по узлам пути и получения в каждом узле списка объектов этого узла. Перемещение путей SQL Server PowerShell
Описано, как использовать методы и свойства объектов SMO для получения отчета и выполнения работы над объектом, представленным узлом пути. Кроме того, описано, как получить список методов и свойств объектов SMO для этого узла. Работа с путями SQL Server PowerShell
Описывает, как преобразовать универсальное имя ресурса объекта SMO в путь поставщика SQL Server. Преобразование URNs в пути поставщика SQL Server
Описано, как открывать соединения проверки подлинности SQL Server с использованием поставщика SQL Server . По умолчанию поставщик использует соединения проверки подлинности Windows, установленные с помощью учетных данных той учетной записи Windows, которая используется в сеансе Windows PowerShell. Управление проверкой подлинности в PowerShell ядра СУБД

Подключение к SQL Server и получение сведений о сервере

Теперь мы используем PowerShell в Windows для подключения к вашему экземпляру SQL Server на Linux и просмотра некоторых свойств сервера.

Скопируйте следующие команды и вставьте их в командную строку PowerShell. При запуске этих команд в PowerShell будут выполнены следующие действия:

  • отображение диалогового окна с запросом на ввод имени узла и IP-адреса экземпляра;
  • Откройте диалоговое окно Запрос учетных данных Windows PowerShell, в котором необходимо ввести соответствующие сведения. для подключения к экземпляру SQL Server на Linux вы можете использовать свои имя пользователя SQL и пароль SQL;
  • использование командлета Get-SqlInstance для подключения к серверу и просмотра некоторых свойств.

При необходимости можно заменить переменную IP-адресом или именем узла вашего экземпляра SQL Server.

В PowerShell должны отображаться данные примерно следующего вида:

Примечание

Если эти значения не отображаются, скорее всего, подключение к целевому экземпляру SQL Server установить не удалось. Убедитесь в том, что эти же данные можно использовать для подключения из SQL Server Management Studio. Затем ознакомьтесь с .

Using SSMS

  • Use the Object Explorer to locate the database – SQLShackAlwaysEncrypted
  • Go to the Security tab
  • Select the Always Encrypted Keys option

  • Right-click and select New Column Master Key….
  • Enter the name of the Master Key SQLShackDemoCertificate
  • Specify Key store, (Windows Certificates Store in this case) for the current user or local machine certificate store, or the Azure Key Vault and then select a certificate from the list. You can even one by clicking the Generate certificate option.
  • Click OK

The above steps create a self-signed certificate and load it into the store.

Now, we need to distribute the certificate to all the client machines by using the Export and Import Certificates method.

Now, select New Column Encryption Keys.

  • Enter the name of the column encryption key SQLShackDemoCEK
  • Use the drop-down and select the Column Master Key SQLShackDemoCertificate
  • Click OK
  • Verify the Always Encrypted Keys

We have successfully completed the configuration. Now, it’s time to apply the encryption settings to the column(s) by browsing the table and selecting the needed column(s) for encryption.

  • Browse the Columns tab
  • Right-click the column and select Encrypt Column
  • Select the Encryption Type: Select either of the available options, since Always Encrypted supports two types of encryption: Randomized and Deterministic
  • Use the drop-down, and select the Column Encryption Key, which is already tied with the Column Master Key
  • Click Next

Click Next

Click default Proceed to finish radio button

Verify the summary of settings and click Finish

Validate the results

Query the table and view the encrypted column. In the below screenshot, the Servername column is encrypted.

In order to decrypt the column, the following settings should be enabled in the SSMS client

First, add Column Encryption Setting = Enabled in the Additional Connection Parameters in the SSMS Connect to Server window.

Now, query the table for the encrypted values

And voila!

Использование поставщика SQL Server для PowerShell

В качестве альтернативы для подключения к экземпляру SQL Server можно использовать поставщик SQL Server PowerShell. Этот поставщик позволяет работать с экземпляром SQL Server из командной строки так же, как с древовидной структурой в обозревателе объектов. По умолчанию этот поставщик представлен как диск PSDrive с именем , который можно использовать для подключения к экземплярам SQL Server и навигации по ним, к которым есть доступ у вашей учетной записи домена. Дополнительные сведения о настройке проверки подлинности Active Directory для SQL Server в Linux см. в разделе .

Также вы можете использовать проверку подлинности SQL в поставщике SQL Server PowerShell. Для этого с помощью командлета создайте новый диск PSDrive и укажите учетные данные для подключения.

В приведенном ниже примере показано, как создать новый диск PSDrive с использованием проверки подлинности SQL.

Чтобы убедиться в том, что диск был создан, выполните командлет .

Создав новый диск PSDrive, вы можете начать работу с ним.

Выходные данные могут выглядеть следующим образом: Вы можете заметить, что выходные данные аналогичны тому, что SQL Server Management Studio (SSMS) отобразит в узле «Базы данных». В нем представлены пользовательские, а не системные базы данных.

Чтобы просмотреть все базы данных в вашем экземпляре, можно использовать командлет Get-SqlDatabase.

Selecting Deterministic or Randomized Encryption

Always Encrypted supports two types of encryption: randomized and deterministic

  • Deterministic encryption
    • The same encrypted Key for a given value is generated, every time.
    • Binary2 sort order collation must be used to setup deterministic encryption on a column.
    • Heuristically studying the patterns of the contents of the column could reveal the contents, thereby making it more susceptible to hacking
  • Randomized encryption
    • This method is more robust and secure, and the patterns are less likely to be predictable due to its random generation of the key for a given value.
    • The limitation with this type of encryption is that searching, join, group and, indexing is not possible

In an age of centralized or remote management of data, it is important that the enterprises add an abstraction layer to their data. This way, those who manage the data on a day-to-day basis, such as database administrators are not able to view or use the data. At the same time, those in the enterprise who own the data, have complete access to the data, even though they may not necessarily manage it.

Apart from being the layer of abstraction, Always Encrypted also ensures encryption of data during transit, thereby protecting it from sniffers—typically those involved in attacks such as Man in the Middle.

Установка или обновление модуля SqlServer

Чтобы установить модуль SqlServer из коллекции PowerShell, запустите сеанс PowerShell и выполните команду .

При работе с Windows PowerShell можно выполнить , чтобы установить модуль только для текущего пользователя без необходимости повышения прав.

Установка модуля SqlServer для всех пользователей

Чтобы установить модуль SqlServer для всех пользователей, выполните приведенную ниже команду в сеансе PowerShell с повышенными правами, запущенном от имени администратора:

Просмотр установленных версий модуля SqlServer

Выполните следующую команду, чтобы просмотреть установленные версии модуля SqlServer.

Просмотр версии модуля SqlServer, загруженного в текущем сеансе:

Перезапись предыдущей версии модуля SqlServer

Вы можете перезаписать предыдущую версию с помощью команды .

Примечание

PowerShell всегда использует последний установленный модуль.

Обновление установленной версии модуля SqlServer

Если доступны обновленные версии модуля SqlServer, можно установить более новую версию с помощью следующей команды:

Вы можете использовать команду , чтобы установить последнюю версию модуля SQLServer PowerShell, но это не приведет к удалению предыдущих версий. Эта команда устанавливает более новую версию параллельно, чтобы вы могли экспериментировать с последней версией, но по-прежнему иметь предыдущие модули.

Однако если вы не хотите сохранять старые версии модуля, можно удалить предыдущие версии с помощью команды .

Если установлено более одной версии, можно вывести их список с помощью следующей команды:

Чтобы удалить предыдущие версии, выполните следующую команду:

Предварительные версии модуля SqlServer

Предварительные (или preview) версии модуля SqlServer могут быть доступны в коллекции PowerShell.

Важно!

Их можно найти и установить с помощью обновленных командлетов Find-Module и Install-Module, которые входят в модуль PowerShellGet, передав параметр -AllowPrerelease. Чтобы использовать эти командлеты, установите модуль PowerShellGet, а затем откройте новый сеанс.

Установка конкретной предварительной версии модуля SqlServer

Чтобы установить конкретную предварительную версию модуля, укажите при установке конкретный номер версии.

Используйте для этого следующую команду:

Создание шага задания командной строки

Создание шага задания CmdExec

Разверните раздел Агент SQL Server, создайте задание или щелкните правой кнопкой мыши существующее задание и выберите Свойства. Дополнительные сведения о создании заданий см. в разделе Создание заданий.

В диалоговом окне Свойства задания выберите страницу Шаги и щелкните Создать.

В диалоговом окне Новый шаг задания введите имя шагазадания.

В списке Тип выберите Операционная система (CmdExec) .

В списке Выполнять как выберите учетную запись-посредник с учетными данными, используемыми в задании. По умолчанию шаги задания CmdExec выполняются под учетной записью службы агента SQL Server.

В поле Код завершения процесса успешной команды введите значение от 0 до 999999.

В поле Команда введите команды, которые начинаются с PowerShell.exe с параметрами, указывающими скрипт PowerShell для запуска. Эти примеры аналогичны синтаксису для выполнения команд PowerShell из командной строки Windows. Все возможные варианты синтаксиса см. можно просмотреть, введя .
Пример 1. Запуск простого командлета.

Пример 2. Выполнение запроса с помощью SQLCmd.exe к текущему серверу (в примере используется замена токена Агента SQL).

Пример 3. Запуск скрипта PowerShell (с использованием , имени исполняемого файла в PowerShell 7.0, который должен быть установлен на сервере)

Обратите внимание, что путь к скрипту является локальным для сервера, на котором работает Агент SQL.

Откройте страницу Дополнительно, чтобы задать следующие параметры шага задания: какие действия будут предприняты в случае успешного или неуспешного выполнения шага задания, сколько раз агенту SQL Server пытаться его выполнить и в какой файл агент SQL Server может записывать результат выполнения шага задания. Только члены предопределенной роли сервера sysadmin могут записывать выходные данные шага задания в файл операционной системы.

Retrieving Your Data

After you do all that you are probably wondering how you output that data so you can see it? The data itself resides in a collection of tables within the Table property of your DataSet object. Now depending on the version of .NET you are working with you might actually need to specify the index of the collection (e.g. Tables), but this is generally only required in older versions below .NET 4.0.

1
2
3

$data.Tables

<# or #>

$data.Tables

If the procedure or T-SQL script you are executing contains more than one dataset this collection will only contain the first result set returned by SQL Server.

A visual of the whole command:

The last thing you will want to remember for just proper coding practice is to close the connection once you are done. Just call the Close() method to close out your connection to the SQL Server instance.

Create SQL Server database and assign an owner

Surprisingly, Microsoft does not provide a cmdlet out of the box to create a database, so there are two main routes you can follow to get a database up and running without a prior backup. Both are fairly simple. Creating a new blank database is accomplished with either of the following commands:

Run straight SQL against your instance to create the database:

Alternatively, using SQL Server Management Objects (SMO) objects to do the heavy lifting:

If you do have a database backup you would like to restore rather than creating a blank database, the Restore-SqlDatabase cmdlet is your friend:

Now that your database is in place, let’s change the database owner to :

Иерархия SQL Server в PowerShell

Продукты, в которых модели данных или модели объектов можно представить в иерархическом виде, используют для представления таких иерархий поставщики Windows PowerShell. Иерархия отображается при помощи диска и структуры пути, похожей на ту, которая используется в файловой системе Windows.

Каждый поставщик Windows PowerShell реализует один или несколько дисков. Каждый диск является корневым узлом в иерархии связанных объектов. В поставщике SQL Server PowerShell реализован диск «SQLSERVER:». Поставщик также определяет набор основных папок для диска SQLSERVER:. Каждая папка и вложенные в нее папки представляют набор объектов, к которым можно получить доступ с помощью модели управляющих объектов SQL Server . Если выделена вложенная папка в пути, начинающемся с одной из этих папок, можно использовать методы из связанной объектной модели для выполнения действий с объектом, который представлен вложенной папкой. Папки Windows PowerShell, реализуемые поставщиком SQL Server, перечислены в следующей таблице.

Папка Пространство имен объектной модели SQL Server Объекты
Microsoft.SqlServer.Management.SmoMicrosoft.SqlServer.Management.Smo.AgentMicrosoft.SqlServer.Management.Smo.BrokerMicrosoft.SqlServer.Management.Smo.Mail Объекты базы данных, такие как таблицы, представления и хранимые процедуры.
Microsoft.SqlServer.Management.DmfMicrosoft.SqlServer.Management.Facets Объекты управления на основе политик, такие как политики и аспекты.
Microsoft.SqlServer.Management.RegisteredServersMicrosoft.SqlServer.Management.Smo.RegSvrEnum Зарегистрированные объекты серверов, такие как группы серверов и зарегистрированные серверы.
Microsoft.SqlServer.Management.Utility Вспомогательные объекты, такие как управляемые экземпляры компонента Компонент Database Engine.
Microsoft.SqlServer.Management.Dac Объекты приложения уровня данных, такие как пакеты DAC, и операции, такие как развертывание DAC.
Microsoft.SqlServer.Management.Collector Объекты сборщика данных, такие как наборы элементов сбора и хранилища конфигураций.
Microsoft.SqlServer.Management.IntegrationServices Службы Integration Services , как проекты, пакеты и среды.
Microsoft.SqlServer.Management.XEvent Расширенные события SQL Server
Microsoft.SqlServer.Management.XEventDbScoped Расширенные события SQL Server
Microsoft.AnalysisServices Службы Analysis Services , такие как кубы, агрегаты и измерения.

Например, папку SQLSERVER:\SQL можно использовать, чтобы начинать пути, которые могут представлять любой объект, поддерживаемый объектной моделью SMO. Начальная область пути SQLSERVER:\SQL — SQLSERVER:\SQLComputerName\InstanceName. Узлы после имени экземпляра поочередно указывают коллекции объектов (такие как Базы данных или Представления) и имена объектов (наподобие AdventureWorks2012). Схемы не представляются в качестве классов объектов. Если указывается узел для объекта верхнего уровня в схеме, такого как таблица или представление, необходимо указать имя объекта в формате ИмяСхемы.ИмяОбъекта.

В следующем примере показан путь к таблице «Vendor» в схеме «Purchasing» базы данных AdventureWorks2012 на экземпляре по умолчанию компонента Компонент Database Engine на локальном компьютере.

Дополнительные сведения об иерархии модели объектов SMO см. в разделе SMO Object Model Diagram.

Узлы коллекций в пути связаны с классом коллекций в связанной объектной модели. Узлы имен объектов связаны с классом объектов в связанной модели объектов, как показано в следующей таблице.

путь Класс SMO
DatabaseCollection
Database

Соединение с базой данных

Некоторые командлеты постоянного шифрования работают с данными или метаданными в базе данных и требуют сначала выполнить соединение с базой данных. При настройке постоянного шифрования с помощью модуля SqlServer подключиться к базе данных можно двумя рекомендуемыми способами:

  1. Подключение с помощью командлета Get-SqlDatabase.
  2. Подключение с помощью поставщика SQL Server PowerShell.

Использование Get-SqlDatabase

Командлет Get-SqlDatabase позволяет подключиться к базе данных в SQL Server или в базе данных SQL Azure. Он возвращает объект базы данных, который затем можно передать с помощью параметра InputObject командлета, который подключается к базе данных.

Использование поставщика SQL Server PowerShell

Поставщик SQL Server PowerShell отображает иерархию объектов SQL Server в виде путей, похожих на пути файловой системы. Используя SQL Server PowerShell, вы можете переходить по путям с помощью псевдонимов Windows PowerShell по аналогии с переходом по путям файловой системы с помощью команд. После перехода к целевому экземпляру и базе данных последующие командлеты будут использоваться в этой базе данных, как показано в следующем примере.

Примечание

Этот способ подключения к базе данных работает только для SQL Server (не поддерживается в базе данных SQL Azure).

Кроме того, можно указать путь к базе данных с помощью универсального параметра Path , а не переходить к базе данных.

Introduction

PowerShell (aka Posh or just PS) is becoming more and more of a tool for operational support and some deployment scenarios. If you need to pull or place data into SQL Server, PS can be a handy way of doing it in both one-off and automated work.

There are a number of ways to connect to SQL Server via PS. In this article I wanted to go over the options that are available to you. If you have used PS for any number of months or years, you know there tends to be multiple ways of performing a task. So it goes without saying if you are building out scripts to use in production to test, test, and test…then test it one more time.

Вопросы безопасности при использовании PowerShell для настройки Always Encrypted

Так как основной задачей функции постоянного шифрования является обеспечение целостности зашифрованных конфиденциальных данных даже в случае нарушения безопасности системы базы данных, выполнение скрипта PowerShell, обрабатывающего ключи или конфиденциальные данные на сервере SQL Server, может снизить или вообще отменить эффект действия функции. Дополнительные рекомендации по безопасности см. в разделе (Вопросы безопасности для управления ключами).

PowerShell можно использовать для управления ключами Always Encrypted с разделением ролей и без разделения ролей, чтобы контролировать пользователей, имеющих доступ к фактическим ключам шифрования в хранилище ключей и доступ к базе данных.

Дополнительные рекомендации по безопасности см. в разделе (Вопросы безопасности для управления ключами).

Справочник по командлетам постоянного шифрования

Для постоянного шифрования доступны приведенные ниже командлеты PowerShell

Командлет Описание
Add-SqlAzureAuthenticationContext Выполняет проверку подлинности в Azure и получает маркер проверки подлинности.
Add-SqlColumnEncryptionKeyValue Добавляет новое зашифрованное значение для существующего объекта ключа шифрования столбца в базе данных.
Complete-SqlColumnMasterKeyRotation Завершает смену главного ключа столбца.
Get-SqlColumnEncryptionKey Возвращает все объекты ключа шифрования столбца, определенные в базе данных, или возвращает один объект ключа шифрования столбца с указанным именем.
Get-SqlColumnMasterKey Возвращает объекты главного ключа столбца, определенные в базе данных, или возвращает один объект главного ключа столбца с указанным именем.
Invoke-SqlColumnMasterKeyRotation Инициирует смену главного ключа столбца.
New-SqlAzureKeyVaultColumnMasterKeySettings Создает объект SqlColumnMasterKeySettings, описывающий асимметричный ключ, который хранится в хранилище ключей Azure.
New-SqlCngColumnMasterKeySettings Создает объект SqlColumnMasterKeySettings, описывающий асимметричный ключ, который хранится в хранилище ключей, поддерживающем API CNG.
New-SqlColumnEncryptionKey Создает объект ключа шифрования столбца в базе данных.
New-SqlColumnEncryptionKeyEncryptedValue Выводит зашифрованное значение ключа шифрования столбца.
New-SqlColumnEncryptionSettings Создает объект SqlColumnEncryptionSettings, который инкапсулирует сведения о шифровании одного столбца, включая CEK и тип шифрования.
New-SqlColumnMasterKey Создает объект главного ключа столбца в базе данных.
New-SqlColumnMasterKeySettings Создает объект SqlColumnMasterKeySettings для главного ключа столбца с указанным поставщиком и путем к ключу.
New-SqlCspColumnMasterKeySettings Создает объект SqlColumnMasterKeySettings, описывающий асимметричный ключ, который хранится в хранилище ключей с поставщиком CSP, поддерживающим CAPI.
Remove-SqlColumnEncryptionKey Удаляет объект ключа шифрования столбца из базы данных.
Remove-SqlColumnEncryptionKeyValue Удаляет зашифрованное значение из существующего объекта ключа шифрования столбца в базе данных.
Remove-SqlColumnMasterKey Удаляет объект главного ключа столбца из базы данных.
Set-SqlColumnEncryption Шифрует, расшифровывает или повторно шифрует указанные столбцы в базе данных.

Overview of the Always Encrypted Feature

Always Encrypted feature is a handshake mechanism used to encrypt and decrypt data. Encryption here is achieved using certificates, and can be done only by users with access to the relevant certificates. To make a database column Always Encrypted, you must specify the encryption algorithm and the cryptographic keys that are used to protect the data. Always Encrypted needs two keys:

  1. Column Encryption Key (CEK)
  2. Column Master Key (CMK)

A Column Encryption Key is used to protect and encrypt data in a column. A Column Master Key is used to protect the (one or more) column encryption keys. The information about the Column Master Key is stored in external key stores like:

  • Hardware Security Module (HSM): A hardware device specially designed to securely store sensitive data

Configuring Always Encrypted

To set up Always Encrypted, we need to generate the following:

  1. Key metadata
  2. Encryption properties of the selected database columns, and/or encrypting the data that may already exist in columns that need to be encrypted.

However, not all of these are supported in T-SQL. Therefore, we need to use client-side tools, such as the SQL Server Management Studio or PowerShell to accomplish these tasks.

Task SSMS PowerShell T-SQL
Prototyping Column Master Key and Column Encryption Key Yes Yes No
Registering the Master key and Column Encryption Key metadata Yes Yes Yes
Table creation with column encryption Yes Yes Yes
Defining column encryption on an existing database columns Yes Yes No

Создание пользовательского диска

Создание и использование пользовательского диска

  1. Используйте New-PSDrive для определения пользовательского диска. Используйте параметр Root для указания пути, представляемого именем пользовательского диска.

  2. Используйте имя пользовательского диска в таких командлетах перехода по пути, как Set-Location.

Пример пользовательского диска (PowerShell)

В приведенном ниже примере создается виртуальный диск AWDB, сопоставленный с узлом для развернутой копии образца базы данных AdventureWorks2012. Виртуальный диск затем используется для перехода к таблице в базе данных.

SQL Server Management Objects (SMO)

SMO is a pain to some, but once you learn how to research the SMO namespace in MSDN your eyes can be opened to the possibilities. SMO is most commonly seen used to perform administration task against SQL Server instance(s). You can use this to do a check of the configuration instance where you may do a comparison of the settings to your standard configuration or for audit situations. It offers some flexibility over executing the equivalent T-SQL via Invoke-Sqlcmd, if there is an option via T-SQL.

You can also execute T-SQL through SMO if you wish and there is one benefit using this method over the .NET method. The benefit you get is executing T-SQL statements that may include the “GO” batch separator. Using the .NET method errors when it hits the first “GO” in a script, because it is not true SQL syntax. This can be useful in deployments where someone may have scripted out the objects via SSMS, which will put in the “GO” statement. If you happen to have gotten a long script, or a zipped file that contains hundreds of scripts, utilizing SMO in this situation saves a good bit of headache.

SQLPS Module

Importing the SQLPS module into a PS session provides the same access using the utility does, but allows you to operate in the PS version of the OS you operate under. In SQL Server 2008 and 2008 R2 you will load the SQLPS as a snap-in (Add-PSSnapin), then with SQL Server 2012 and up it is imported (Import-Module).

When you import the module it will load the SQLSERVER:\ provider and change your location to that path. You will also have access to the cmdlets offered in the module, which these are also accessible via the utility. You can get a list of those cmdlets using the Get-Command:

The most commonly known cmdlet out of this module is, Invoke-Sqlcmd. This is generally thought of as a PS replacement for the old sqlcmd command-line utility, that to date is still available in currently supported versions of SQL Server. You utilize this cmdlet to execute any T-SQL query that you want against one or multiple instances. The advantage you get using Invoke-Sqlcmd over the command-line utility is the power of handling output in PS. The output from the cmdlet is created as a DataTable (System.Data.DataRow is the exact type).

Just passing the full command to Get-Member will show the TypeName:

You will also see in the output that if you properly named your columns in your SELECT statement they show up as properties in that array. You can leverage the data conversions available in PS such as ConvertTo-Csv, or even ConvertTo-HTML if you needed to build an HTML report.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: