SSISを使用して、Azure Key Vaultのキーストレージで常に暗号化されたデータを使用するSQL Serverからデータを取得および復号化できましたか? )?SQL Serverを常にSSISとAzure Key Vaultで暗号化する
アズールキーのVaultへのアクセスを設定するので、プログラムSqlClient
にプロバイダを登録することを伴う、私は思っていた:
をSSISスクリプトタスクは、後続のADO.NETデータフロータスクと同じアプリケーションドメイン/コンテクストを共有しています、次のようにそれは、セットアップをSqlClient
プロバイダにアクセスする必要がありますよう:
var provs = new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>();
provs.Add(SqlColumnEncryptionAzureKeyVaultProvider.ProviderName, azureKeyVaultProvider);
SqlConnection.RegisterColumnEncryptionKeyStoreProviders(providers);
はまた、スクリプトでの作業の.NET 4.5にデフォルトはなく、常に暗号化機能は、4.6.1でのみ使用可能です。スクリプトエディタでフレームワークを設定しようとすると、プロジェクトを再オープンすると常に4.5にリセットされます。
これを設定するには、Key Vault &すべての依存関係アセンブリをGACに登録する必要があります。
UPDATE 5月5日2017 @Josh Gのおかげで、私はこの95%をODBCドライバを使用して稼働させることができました。
Error: 0x384 at Broker, ODBC Source [12]: Open Database Connectivity (ODBC) error occurred. state: 'CE202'. Native Error Code: 0. [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]The keystore provider AZURE_KEY_VAULT failed to decrypt the ECEK https://keyvault.vault.azure.net:443/keys/CMKAuto1/mykey with RSA_OAEP.
Error: 0x384 at Broker, ODBC Source [12]: Open Database Connectivity (ODBC) error occurred. state: 'CE269'. Native Error Code: 0. [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Error 12038 sending request to https://mykeyvault.vault.azure.net:443 Error: 0x384 at Broker, ODBC Source [12]: Open Database Connectivity (ODBC) error occurred. state: 'CE263'. Native Error Code: 0. [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Error verifying signature of ECEK.
4.6.1が付着していないが、私にはバグのように思えます。私の推測/希望は、プロジェクトがコンパイル/保存されたときにSSISパッケージにシリアル化されたアセンブリが正しいフレームワークを使用していたことです。そうでなければ、タスクは無効なバイトコードを持ちます。データフローのOOB ADO.NET Sourceコンポーネントはデータの解読方法を知らず、カスタムスクリプトコンポーネントを作成してアクセスする必要があります。私はAEインスタンスやAzureキーストアを持っていません。多くの仮定があります。 – billinkc
OOB ADOはWindows Cert Storeで動作するので、上記のスニペットがkeyvaultで動作することを期待しています。 –