Шифрование базы данных с прозрачным шифрованием данных в Управляемый экземпляр SQL в azure Arc
В этой статье описывается, как включить прозрачное шифрование данных в базе данных, созданной в Управляемый экземпляр SQL включенной Azure Arc. В этой статье термин управляемый экземпляр относится к развертыванию Управляемый экземпляр SQL, включенной Azure Arc.
Необходимые компоненты
Прежде чем продолжить работу с этой статьей, необходимо включить Управляемый экземпляр SQL созданным ресурсом Azure Arc и подключиться к нему.
- Создание Управляемый экземпляр SQL с поддержкой Azure Arc
- Подключение к Управляемый экземпляр SQL в Azure Arc
Включение прозрачного шифрования данных для базы данных в Управляемом экземпляре
Включение прозрачного шифрования данных в Управляемом экземпляре выполняется так же, как и в локальной среде SQL Server. Выполните действия, описанные в руководстве по прозрачному шифрованию данных для SQL Server.
После создания необходимых учетных данных создавайте резервные копии любых новых учетных данных.
Резервное копирование учетных данных прозрачного шифрования данных
При резервном копировании учетных данных из управляемого экземпляра учетные данные хранятся в контейнере. Чтобы сохранить учетные данные в постоянном томе, укажите путь подключения в контейнере. Например, var/opt/mssql/data
. В следующем примере создается резервная копия сертификата из управляемого экземпляра:
Примечание.
Выполнение команды kubectl cp
из Windows может завершиться сбоем при использовании абсолютных путей Windows. Используйте относительные пути или команды, указанные ниже.
Сохраните резервную копию сертификата из контейнера в
/var/opt/mssql/data
.USE master; GO BACKUP CERTIFICATE <cert-name> TO FILE = '<cert-path>' WITH PRIVATE KEY ( FILE = '<private-key-path>', ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
Пример:
USE master; GO BACKUP CERTIFICATE MyServerCert TO FILE = '/var/opt/mssql/data/servercert.crt' WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key', ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
Копирование сертификата из контейнера в файловую систему.
kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-certificate-path> > <local-certificate-path>
Пример:
kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.crt > $HOME\sqlcerts\servercert.crt
- Копирование закрытого ключа из контейнера в файловую систему.
kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-private-key-path> > <local-private-key-path>
Пример:
kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.key > $HOME\sqlcerts\servercert.key
Удаление сертификата и закрытого ключа из контейнера.
kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
Пример:
kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
Восстановление учетных данных для прозрачного шифрования данных в управляемый экземпляр
Как описано выше, для восстановления учетных данных необходимо скопировать их в контейнер и затем выполнить соответствующий запрос T-SQL.
Примечание.
Выполнение команды kubectl cp
из Windows может завершиться сбоем при использовании абсолютных путей Windows. Используйте относительные пути или команды, указанные ниже.
- Копирование сертификата из файловой системы в контейнер.
type <local-certificate-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-certificate-path>
Пример:
type $HOME\sqlcerts\servercert.crt | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.crt
- Копирование закрытого ключа из файловой системы в контейнер.
type <local-private-key-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-private-key-path>
Пример:
type $HOME\sqlcerts\servercert.key | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.key
Создание сертификата с использованием путей к файлам из
/var/opt/mssql/data
.USE master; GO CREATE CERTIFICATE <certicate-name> FROM FILE = '<certificate-path>' WITH PRIVATE KEY ( FILE = '<private-key-path>', DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
Пример:
USE master; GO CREATE CERTIFICATE MyServerCertRestored FROM FILE = '/var/opt/mssql/data/servercert.crt' WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key', DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
Удаление сертификата и закрытого ключа из контейнера.
kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
Пример:
kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"