次の方法で共有


Azure Arc 対応 SQL Managed Instance で透過的データ暗号化を使用してデータベースを暗号化する

この記事では、Azure Arc 対応 SQL Managed Instance に作成されたデータベースに対する透過的データ暗号化を有効にする方法について説明します。この記事では、"マネージド インスタンス" という用語は、Azure Arc 対応 SQL Managed Instance のデプロイを指します。

前提条件

この記事を進める前に、Azure Arc 対応 SQL Managed Instance リソースを作成し、それに接続しておく必要があります。

マネージド インスタンスのデータベースに対して透過的データ暗号化を有効にする

マネージド インスタンスで透過的データ暗号化を有効にするには、オンプレミスの SQL Server と同じ手順を行います。 SQL Server の透過的データ暗号化ガイドで説明されている手順に従います。

必要な資格情報を作成した後、新しく作成した資格情報をバックアップします。

透過的データ暗号化の資格情報をバックアップする

マネージド インスタンスから資格情報をバックアップすると、資格情報はコンテナー内に格納されます。 永続ボリュームに資格情報を格納するには、コンテナー内のマウント パスを指定します。 たとえば、var/opt/mssql/data のようにします。 次の例では、マネージド インスタンスから証明書をバックアップします。

Note

kubectl cp コマンドを Windows から実行する場合、Windows の絶対パスを使用するとコマンドが失敗することがあります。 相対パスまたは以下に示すコマンドを使用します。

  1. コンテナーから /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>');
    
  2. コンテナーからファイル システムに証明書をコピーします。

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
  1. コンテナーからファイル システムに秘密キーをコピーします。
 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
  1. コンテナーから証明書と秘密キーを削除します。

    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 を実行します。

Note

kubectl cp コマンドを Windows から実行する場合、Windows の絶対パスを使用するとコマンドが失敗することがあります。 相対パスまたは以下に示すコマンドを使用します。

  1. ファイル システムからコンテナーに証明書をコピーします。
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
  1. ファイル システムからコンテナーに秘密キーをコピーします。
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
  1. /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>' );
    
  2. コンテナーから証明書と秘密キーを削除します。

    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"
    

透過的なデータ暗号化