QVD 暗号化
QVD ファイル内の機密情報を顧客提供のキーペアで暗号化して、データへのアクセスを制御することができます。暗号化キーは証明書によって管理されます。証明書は QlikView Distribution Service (QDS) を実行するユーザーの証明書ストアに格納する必要があります。
暗号化は、暗号化が有効になっていて証明書の拇印が追加されている settings.ini ファイルで構成されます。QVD 暗号化はデフォルトでは有効になっていません。
エンジンは拇印を読み取ってから、Windows CNG キー ストアからキーを取得します。次に、エンジンはデータの暗号化に使用される新しいデータ暗号化キー (DEK) を生成します。
以下は暗号化されています:
- データ (テーブルと項目)
QVD ヘッダーは暗号化されません。暗号化パラメーターは、追加のメタデータとして QVD ヘッダーに格納されます。
Qlik Sense および QlikView の古いバージョンは、暗号化された QVD ファイルを読み取るときにエラーを返します。
暗号化証明書の概要
暗号化キーは、証明書を使用して管理するのが最適です。証明書は QlikView Distribution Service (QDS) を実行するユーザーの証明書ストアに格納する必要があります。
暗号化証明書は、暗号化キーの周りのシェルとして機能します。証明書の有効期限が切れている場合でもキーを取得できるため、有効期限が切れた暗号化証明書を更新する必要はありません。
暗号化キー
暗号化ソリューションでは、2 種類のキーを使用します。
- データ暗号化キー
- キー暗号化キー
データ暗号化キー
データ暗号化キー (DEK) は、データの AES-256 暗号化用に自動生成されたキーです。暗号化されたオブジェクトごとに新しいキーが生成されます。
キー暗号化キー
キー暗号化キー (KEK) は、データ暗号化キーの安全な非対称暗号化のための秘密キーと公開キーのペアです。公開キーはデータの暗号化に使用され、秘密キーは公開キーで暗号化されたデータの復号化に使用されます。
キーの暗号化に使用されるキーは、settings.ini ファイルで指定されます。Microsoft Cryptography Next Generation(CNG)Key Storage Provider に格納されています。これは、Windows 証明書ストアに格納されている証明書に含まれています。
QVD 暗号化の使用
これは、QlikView で QVD 暗号化機能を使用するための一般的なワークフローです。
- 暗号化証明書を作成: Windows PowerShell を使用して暗号化証明書を作成
- QVD 暗号化を有効にし、キーを指定: QVD 暗号化の有効化
- マルチノード展開の場合、暗号化証明書をエクスポート: Windows PowerShell を使用して暗号化証明書をエクスポート
- マルチノード展開の場合、すべてのノードで暗号化証明書をインポート: Windows PowerShell を使用して暗号化証明書をインポート
Qlik Sense と共有する QVD ファイルの暗号化
QlikView と Qlik Sense Enterprise on Windows の両方で使用する QVD ファイルがある場合は、両製品で同じサムプリントが定義されていることを確認します。
QVD 暗号化の有効化
Qlik associative engine は、settings.ini ファイルで暗号化キーの拇印を定義することによって構成されます。enableEncryptQvd=1 を定義してQVD暗号化を有効にします。次に、証明書から 拇印 項目の値をコピーし、settings.ini の encryptionKeyThumbprint 項目に貼り付けます。
次の手順を実行します。
- 証明書マネージャ ツール (certmgr.msc) を開きます。
- 証明書を見つけます。
- 証明書を右クリックして [Open] (開く) を選択します。
-
[詳細] タブで、[拇印] 項目を選択し、値をコピーします。
-
適切な settings.ini ファイルを見つけます。
QlikView Desktop の場合、settings.ini ファイルは C:\Users\<user>\AppData\Roaming\QlikTech\QlikView にあります。
QlikView Server の場合、settings.ini ファイルは C:\Windows\System32\config\systemprofile\AppData\Roaming\QlikTech\QlikViewBatch にあります。
-
settings.ini ファイルで、QVD 暗号化を有効にします: enableEncryptQvd=1。次に、拇印値を encryptionKeyThumbprint 項目に貼り付けます。
enableEncryptQvd=1 encryptionKeyThumbprint=563888bb6aea55eb0d33d9d8b909e0d2ef26ffbd -
Settings.ini ファイルを保存します。
QlikView は、スペースなしの 40 桁の 16 進文字列形式の Secure Hash Algorithm 1 (SHA-1) 拇印を受け入れます。
証明書の拇印に、56 38 88 bb 6a ea 55 eb 0d 33 d9 d8 b9 09 e0 d2 ef 26 ff bd のように、スペースが含まれている場合、次のように encryptionKeyThumbprint 項目に入力します。
QVD が新しいキーで保存されるまで、古いキーを含む証明書をサーバーに保存してください。
暗号化証明書の管理
証明書の管理に使用できるツールは多数ありますが、このドキュメントでは、Windows PowerShell と Microsoft Management Console を使用した証明書の作成と配布に焦点を当てています。
他のツールを使用する場合、要件は次のとおりです。
- RSAキーが使用される
- キーは CNG KeyStorageProvider に格納される
- 証明書は、エンジンを実行しているユーザーの証明書ストアに格納される
Windows PowerShell を使用して暗号化証明書を作成
証明機関 (CA) によって発行された証明書を使用する必要はありません。独自の自己署名証明書を発行して署名することもできます。作成する暗号化証明書は、QlikView Distribution Service (QDS) を実行するユーザーの証明書ストアに格納する必要があります。
新しい暗号化証明書を作成するには、New-SelfSignedCertificate コマンドレットを使用して自己署名証明書を作成します。
構文: Windows Server 2016 以降
構文: Windows Server 2012 R2
New-SelfSignedCertificate コマンドレット パラメーター Windows Server 2016 以降
Windows Server 2016 以降の PowerShell を使用して証明書を作成する場合、少なくとも次のパラメーターを定義する必要があります。
-Subject
新しい証明書の件名に表示される文字列を指定します。このコマンドレットは、等号を含まない値の前に CN= を付けます。複数のサブジェクトの相対識別名 (RDN とも呼ばれる) の場合、各件名の相対識別名をコンマ (,) で区切ります。相対識別名の値にコンマが含まれている場合は、各件名相対識別名をセミコロン (;) で区切ります。
-Subject <Certifcate name>
-KeyAlgorithm
新しい証明書に関連付けられる非対称キーを作成するアルゴリズムの名前を指定します。RSA である必要があります。
-KeyAlgorithm RSA
-KeyLength
新しい証明書に関連付けられているキーの長さをビット単位で指定します。
-KeyLength <Key length, e.g.4096>
-Provider
このコマンドレットが証明書の作成に使用する KSP または CSP の名前を指定します。Microsoft Software Key Storage Provider である必要があります。
-Provider "Microsoft Software Key Storage Provider"
-KeyExportPolicy
証明書に関連付けられている秘密キーのエクスポートを管理するポリシーを指定します。このパラメーターの許容値は次のとおりです。
- Exportable
- ExportableEncrypted (既定値)
- NonExportable
-KeyExportPolicy ExportableEncrypted
-CertStoreLocation
新しい証明書を格納する証明書ストアを指定します。現在のパスが Cert:\CurrentUser または Cert:\CurrentUser\My の場合、デフォルトのストアは Cert:\CurrentUser\My です。それ以外の場合は、このパラメーターに Cert:\CurrentUser\My を指定する必要があります。
-CertStoreLocation "cert:\CurrentUser\My"
New-SelfSignedCertificate コマンドレット パラメーター Windows Server 2012 R2
Windows Server 2012 R2 の PowerShell を使用して証明書を作成する場合、少なくとも次のパラメーターを定義する必要があります。
-DnsName
証明書の件名の別名拡張に含める 1 つ以上の文字列を指定します。最初の DNS 名は、件名と発行者名としても保存されます。
-DnsName <Certifcate name>
-CertStoreLocation
新しい証明書を格納する証明書ストアを指定します。現在のパスが Cert:\CurrentUser または Cert:\CurrentUser\My の場合、デフォルトのストアは Cert:\CurrentUser\My です。それ以外の場合は、このパラメーターに Cert:\CurrentUser\My を指定する必要があります。
-CertStoreLocation "cert:\CurrentUser\My"
New-SelfSignedCertificate 既定値 Windows Server 2012 R2
Windows Server 2012 R2 の New-SelfSignedCertificate コマンドレットには、次の既定値が適用されます。
- キー アルゴリズム: RSA
- キーの長さ: 2048
- 拡張キー使用法 (EKU): クライアント認証とサーバー認証
- キー使用法: デジタル署名、キー暗号化 (a0)
- 有効期間: 1 年
例: PowerShell for Windows Server 2016 以降を使用してデータ暗号化証明書を作成する
この例では、test というユーザーが、件名が MyTestCert で、キーの長さが 4096 ビットの自己署名のエクスポート可能な暗号化証明書を作成しています。証明書は Cert:\CurrentUser\My に格納されます。
Microsoft PowerShell で次のコマンドを入力します。
PS C:\Users\test> New-SelfSignedCertificate -Subject MyTestCert -KeyAlgorithm RSA -KeyLength 4096 -Provider "Microsoft Software Key Storage Provider" -KeyExportPolicy ExportableEncrypted -CertStoreLocation "cert:\CurrentUser\My"
結果:
証明書が作成されると、Microsoft PowerShell に次のように表示されます。
Windows PowerShell を使用して暗号化証明書をエクスポート
暗号化証明書をエクスポートするには、Export-PfxCertificate コマンドレットを使用します。
構文:
Export-PfxCertificate cmdlet parameters
証明書をエクスポートするときは、少なくとも次のパラメータを定義する必要があります。
-cert
エクスポートする証明書へのパスを指定します。
-cert cert:\currentuser\My\<certificate thumbprint>
-FilePath
エクスポートする PFX ファイルのパスを指定します。
-FilePath <FileName>.pfx
-Password
エクスポートされた PFX ファイルを保護するために使用されるパスワードを指定します。パスワードは安全な文字列の形式にする必要があります。このパラメーターを指定しないと、エラーが表示されます。
-Password <Password or variable>
例: データ暗号化証明書のエクスポート
この例では、test というユーザーが、以前に作成した暗号化証明書を PFX ファイルにエクスポートします。
-
まず、プレーン テキストのパスワード文字列の安全な文字列を作成し、$mypwd 変数に格納します。彼は ConvertTo-SecureString コマンドレットを使用しています。
Microsoft PowerShell で次のコマンドを入力します。
PS C:\Users\test> $mypwd = ConvertTo-SecureString -String "MyPassword" -Force -AsPlainText
-
次に、Export-PfxCertificate コマンドレットを使用して、拇印 563888bb6aea55eb0d33d9d8b909e0d2ef26ffbd で暗号化証明書を実際にエクスポートします。前のステップで作成されたパスワード変数は、エクスポートされた PFX ファイルを保護するために呼び出されます。Microsoft PowerShell で次のコマンドを入力します。
PS C:\Users\test> Export-PfxCertificate -cert cert:\currentuser\My\563888bb6aea55eb0d33d9d8b909e0d2ef26ffbd -Filepath MyTestCert.pfx -Password $mypwd
結果:
証明書がエクスポートされると、Microsoft PowerShell に次のように表示されます。
Microsoft Management Console を使用した暗号化証明書のバックアップ
常に証明書のバックアップが必要です。証明書がサーバーから失われた場合、またはハード ディスクに障害が発生した場合、暗号化されたアプリを開くことができない場合があります。 必要な限り、証明書のバックアップを安全に保管するのはユーザーの責任です。
証明書をバックアップするときのエクスポートと同じ手順を使用できます。Windows PowerShell を使用して暗号化証明書をエクスポート を参照してください。
暗号化証明書をバックアップするもう 1 つの方法は、Microsoft Management Console でそれを行うことです。以下の例は、Microsoft Management Console を使用して、SSL 証明書を秘密キーでエクスポートまたはバックアップする方法を示しています。
次の手順を実行します。
- SSL 証明書がインストールされている Windows サーバーで、Microsoft Management Console を開きます。Windows の検索メニューで mmc と入力して開きます。
- Console ウィンドウで、[ファイル] > [スナップインの追加/削除] をクリックします。
- [スナップインの追加または削除] ウィンドウで、左側の [利用可能なスナップイン] ペインから [証明書] を選択し、[追加 >] をクリックします。
- ダイアログで、[ユーザー アカウント] を選択し、[次へ] をクリックします。
- [スナップインの追加と削除] ウィンドウで、[OK] をクリックします。
-
Console ウィンドウの左側の [Console Root] ペインで、[証明書 (現在のユーザー)] を展開し、エクスポートまたはバックアップする証明書を見つけます。
- 中央のペインで、エクスポートまたはバックアップする証明書を右クリックし、[すべてのタスク] > [エクスポート] をクリックします。
- 証明書のエクスポート ウィザードの [証明書のエクスポート ウィザードへようこそ] ページで、[次へ] をクリックします。
- [秘密キーのエクスポート] ページで、[はい、秘密キーをエクスポートします] を選択して、[次へ] をクリックします。
-
[ファイル形式のエクスポート] ページで、[Personal Information Exchange – PKCS #12 (.PFX)] を選択し、[可能であれば、証明書パスにすべての証明書を含める] をオンにします。
警告メモ[正常にエクスポートされた場合、秘密キーを削除] を選択しないでください。[次へ] をクリックします。
-
[セキュリティ] ページで、[パスワード] ボックスをオンにし、パスワードを作成して確認します。
情報メモこのパスワードは、秘密キーを使用して証明書をインポートまたは復元するときに必要になります。次に、[グループまたはユーザー名] ボックスをオンにします。該当する場合は、秘密キーを使用して証明書へのアクセスを割り当てる Active Directory ユーザーまたはグループ アカウントを選択します。次に [追加] をクリックします。
[次へ] をクリックします。
-
[エクスポートするファイル] ページで、[参照] をクリックしてバックアップ ファイルの保存場所とファイル名を指定し、[保存] をクリックします。
[エクスポートするファイル] ページに戻り、[次へ] をクリックします。
- [証明書のエクスポート ウィザードの完了] ページで、設定が正しいことを確認し、[完了] をクリックします。
- エクスポートが成功したことを示すメッセージが表示され、秘密キー付きの SSL 証明書が選択した場所に保存されます。
Windows PowerShell を使用して暗号化証明書をインポート
他のマシンなどに暗号化証明書をインポートするには、Import-PfxCertificate コマンドレットを使用します。
構文:
Import-PfxCertificate cmdlet parameters
証明書をインポートするときは、少なくとも次のパラメータを定義する必要があります。
-CertStoreLocation
証明書がインポートされるストアのパスを指定します。このパラメーターが指定されていない場合、現在のパスが宛先ストアとして使用されます。
-CertStoreLocation cert:\currentuser\My
FilePath
PFX ファイルのパスを指定します。
-FilePath <FileName>.pfx
-Exportable
オプション。
インポートした秘密キーをエクスポートできるかどうかを指定します。このパラメーターが指定されていない場合、秘密キーはエクスポートできません。
-Exportable
-Password
インポートされた PFX ファイルのパスワードを安全な文字列の形式で指定します。
-Password $mypwd
例: データ暗号化証明書のインポート
この例では、test2 というユーザーが、以前に PFX ファイルにエクスポートされた拇印 563888BB6AEA55EB0D33D9D8B909E0D2EF26FFBD の暗号化証明書をインポートします。
-
まず、プレーン テキストのパスワード文字列の安全な文字列を作成し、$mypwd 変数に格納します。彼は ConvertTo-SecureString コマンドレットを使用しています。
Microsoft PowerShell で次のコマンドを入力します。
PS C:\Users\test2> $mypwd = ConvertTo-SecureString -String "MyPassword" -Force -AsPlainText
-
次に、Import-PfxCertificate コマンドレットを使用して、PFX ファイルの実際のインポートを続行します。前のステップで作成されたパスワード変数は、PFX ファイルにアクセスするために呼び出されます。Microsoft PowerShell で次のコマンドを入力します。
PS C:\Users\test2> Import-PfxCertificate -CertStoreLocation cert:\currentuser\My -FilePath MyTestCert.pfx -Exportable -Password $mypwd
結果:
証明書がエクスポートされると、Microsoft PowerShell に次のように表示されます。
Microsoft Management Console を使用した暗号化証明書の復元
証明書を復元するときのインポートと同じ手順を使用できます。Windows PowerShell を使用して暗号化証明書をインポート を参照してください。
Microsoft Management Console を使用した暗号化証明書のバックアップ で説明されているように、Microsoft Management Console を使用して証明書をバックアップした場合は、以下の例に従って SSL 証明書を復元します。
次の手順を実行します。
- SSL 証明書をインストールする Windows サーバーで、Microsoft Management Console を開きます。Windows の検索メニューで mmc と入力して開きます。
- Console ウィンドウで、[ファイル] > [スナップインの追加/削除] をクリックします。
- [スナップインの追加または削除] ウィンドウで、左側の [利用可能なスナップイン] ペインから [証明書] を選択し、[追加 >] をクリックします。
- ダイアログで、[ユーザー アカウント] を選択し、[次へ] をクリックします。
- [スナップインの追加と削除] ウィンドウで、[OK] をクリックします。
-
Console ウィンドウの左側の [Console Root] ペインで、[証明書 (現在のユーザー)] を展開し、[個人] フォルダを右クリックして、[すべてのタスク] > [インポート] を選択します。
- [証明書のインポート ウィザードへようこそ] ウィンドウで、[次へ] をクリックします。
-
[インポートするファイル] ページで、[参照] をクリックしてインポートする PFX ファイルを見つけて選択し、[次へ] をクリックします。
情報メモデフォルトでは、X.509 証明書 (*.cert,*.crt) ファイル タイプのみを検索するように設定されているため、ファイル エクスプローラー ウィンドウのファイル タイプ ドロップダウンで [すべてのファイル (*.*)] を選択してください。 -
[秘密キーの保護] ページで、SSL 証明書がエクスポートまたはバックアップされたときに作成されたパスワードを入力します。
次に、[このキーをエクスポート可能としてマークする] チェックボックスをオンにします。つまり、必要に応じて SSL 証明書をバックアップまたはエクスポートできます。
次に、[すべての拡張プロパティを含める] チェックボックスもオンにします。
[次へ] をクリックします。
-
[証明書ストア] ページで、[すべての証明書を次のストアに配置する] を選択し、[参照] をクリックします。
[証明書ストアの選択] ウィンドウで、[個人] を選択して [OK] をクリックします。
[証明書ストア] ページに戻り、[次へ] をクリックします。
- [証明書のインポート ウィザードの完了] ページですべての設定が正しいことを確認し、[完了] をクリックします。
- インポートが成功したことを示すメッセージが表示され、秘密キー付きの SSL 証明書が個人ストア (フォルダ) に保存されます。