使用 Azure Arc 所啟用的 SQL 受控執行個體上的透明資料加密來加密資料庫
本文說明如何在 Azure Arc 所啟用的 SQL 受控執行個體中建立的資料庫上啟用透明資料加密。在本文中,「受控執行個體」一詞是指 Azure Arc 所啟用的 SQL 受控執行個體部署。
必要條件
在繼續進行本文之前,您必須建立 Azure Arc 所啟用的 SQL 受控執行個體資源,並連線到該資源。
在受控執行個體中的資料庫上開啟透明資料加密
在受控執行個體中開啟透明資料加密,會遵循與內部部署 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"