問題タブ [always-encrypted]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1762 参照

sql-server - Entity Framework と Azure Key Vault で Always Encrypted を使用する

Always Encryptedと Azure Key Vault に格納されている列マスター キーを使用して、Azure SQL Database のいくつかの列を暗号化しましたが、Entity Framework を使用してアプリケーションからそれらの列にアクセスするのに問題があります。

Azure Key Vault で Always Encrypted を使用するように SqlConnection を設定する方法を説明している最近のMSDN の記事古いブログ投稿があるので、通常の DbContextは、.DbConnection

問題は、IdentityDbContextそのコンストラクターを持たない を使用していることです。 を使用する唯一のコンストラクターDbConnectionも使用しますDbCompiledModel。これは、現時点で私の給与水準を超えています。

IdentityDbContextKey Vault を使用するためのセットアップ方法を説明できる人はいますか?

0 投票する
1 に答える
1013 参照

sql-server - SQL Server: 常に暗号化

Web には、このテクノロジの基本を示す多くの投稿があります。データはクライアント以外のあらゆる場所で暗号化され、列暗号化キー (CEK) を使用してクライアントがデータを暗号化または復号化します。

  1. CEK はクライアント マシンに保存されますか? アプリケーションの接続文字列で? クライアント(=従業員)から見えますか?たとえば、新しい秘書を雇った場合、彼は機密 (および暗号化された) データにアクセスできる必要があります。彼に新しいラップトップを渡し、読み取り/書き込み権限を付与し、新しいラップトップにアプリケーションをインストールします。他に何をしますか? CEKとは何かを彼に「伝える」?CEK をレジストリのどこかに保存しますか?

  2. 列マスター キー (CMK) の役割: 新しい CEK を作成し、紛失した場合にそれらを復元するには? システム全体の鍵を、許可された 1 人だけが保持できるようにするには?

0 投票する
3 に答える
7456 参照

asp.net - Always Encrypted 証明書は、IIS 7.5 Web サーバーのどこに配置しますか?

Always Encrypted を使用する SQL Server 2016 データベースがあります。最近公開された ASP.net Web サイトは、このデータベースからデータを取得しようとしましたが、取得すると次のエラーが発生します。

Error: Failed to decrypt column 'EnSSd'. Failed to decrypt a column encryption key using key store provider: 'MSSQL_CERTIFICATE_STORE'. The last 10 bytes of the encrypted column encryption key are: 'B8-48-B3-62-90-0B-1D-A6-7D-80'. Certificate with thumbprint '97B0D3A64CADBE86FE23559AEE2783317655FD0F' not found in certificate store 'My' in certificate location 'CurrentUser'. Verify the certificate path in the column master key definition in the database is correct, and the certificate has been imported correctly into the certificate location/store. Parameter name: masterKeyPath

これは、証明書がサーバー上の適切な場所に配置されていないことを意味することがわかりました。開発中は、個人証明書ストアの下の証明書スナップインに証明書を配置するだけでうまくいきましたが、サイトが公開されたので、Web サーバーで同じことを試みましたが、うまくいきませんでした (私たちはそれを理解しました)。しません)。

サイトで匿名認証が有効になっており、匿名ユーザー ID は IUSR です。ASP.NET の偽装は無効になっています。

証明書を入れる適切な場所はどこですか?


更新 - アプリケーション プール ID アカウントを証明書を作成したアカウントに変更することで機能するようになりました。また、証明書を Web サーバーの Current User-Personal リストに追加するときに使用されたアカウントでもありました。このアカウントは使用したくないので、証明書をどこに置くのが適切ですか?

0 投票する
1 に答える
1032 参照

ssms - 現在アクティブなビジュアル スタイルがないため、ビジュアル スタイル関連の操作でエラーが発生しました。(システム.Windows.フォーム)

Always Encrypted機能をテストするために、 SQL Server Management Studio 2016の最新バージョンをインストールしました。ここのメニューから開きます:

ここに画像の説明を入力

ただし、常に次のエラーをスローします。

ここに画像の説明を入力

その後、スタジオは機能しなくなります。

この動作の原因は何ですか?

0 投票する
1 に答える
760 参照

sql-server - SQL Server 2016 Always Encrypted の Microsoft ソフトウェア キー ストレージ プロバイダー

SQL Server 2016 の Always Encrypted 機能を評価しています。

CMK を保存するオプションの 1 つは、Windows 証明書ストア、つまり User/LocalMachine です。他のマシンが暗号化されていない形式のデータにアクセスできるようにする場合は、同じ証明書を他のマシンにインポートする必要があります。これはすべてかなり単純で、簡単に実行できました。

ここで、CMK を作成して「Microsoft Software Key Storage Provider」に保存しました。

この CMK を他のマシンにインポートするにはどうすればよいですか?

0 投票する
2 に答える
152 参照

sql-server-2012 - テーブル内のいくつかの列のデータ暗号化

.NET と SQL Server 2012 を使用してアプリケーションを構築しています。現在、正常に動作しています。いくつかの新しい変更のために、テーブル内のいくつかの機密列を暗号化し、SQL Azure に移行したいと考えています。

グーグルで、SQL Server 2016に新しい機能があることがわかりました-「常に暗号化」には、.NET 4.6およびSSMSバージョンが13.0以上である必要があります

現在 SQL Server 2012 を使用していますが、Azure への移行中に常に暗号化機能を利用する方法はありますか? これに関する回避策/代替案/ポインタがあれば役立ちます。

0 投票する
2 に答える
1246 参照

sql-server-2016 - Always Encrypted を使用して列を取得すると、SSRS 2016 の Tablix にデータが表示されない

今後の大規模なソリューションのプロトタイプに取り組んでおり、Always Encrypted を使用して特定の機密データベース列を暗号化したいと考えています。

私のセットアップは次のとおりです。データベースサーバー:SQL Server 2016がインストールされていますアプリケーションサーバー:データベースサーバーエンジンを指すReporting Server 2016がインストールされています。IIS、.Net 4.6.2 などもすべてセットアップされます。

また、Management Studio から接続に「列暗号化設定 = 有効」を追加しても、DBA が暗号化されたデータを読み取れないように環境がセットアップされます。そのため、CMK と CEK がデータベース サーバー データベースにインストールされている間に、私の証明書はアプリケーション サーバーにインストールされます。

Application Server にインストールされた Web アプリから暗号化されたデータを問題なく表示でき、DBA は暗号化されたデータをデータベースから直接読み取ることができないため、環境が適切に設定されていると想定しています。

説明したように、アプリケーション サーバーに SSRS 2016 をインストールしましたが、データベース サーバー上の暗号化された列を持つデータベースを指しています。もちろん、Report Builder を使用して (テスト目的で) 基本的なダンプ レポートを作成しましたが、暗号化されたデータが表示されないことを除いて、すべて正常に機能します。SSRS テーブルでは空白のままです。暗号化された列は単なる基本的な nvarchar(200) です

データソース接続文字列に、「列暗号化設定 = 有効」を追加しました。それがないと、レポートは予想どおり #Error を表示します。ですから、これも必要だと思います。

また、クエリ デザイナーから暗号化された列を読み取ることができることに気付きました。データソースから 'Column Encryption Setting = Enabled' を削除すると、記憶が正しければクエリ デザイナーに VarBinary が表示されます。もちろん、アプリケーション サーバー上で Report Builder と Query Designer を直接操作しています。

SSRS を Always Encrypted で使用する方法に関するチュートリアルを検索しようとしましたが、何も見つかりませんでした。私が見つけたのは、SSRS が Always Encrypted をサポートしている投稿のコメントだけです。

誰かが私が間違っていることや欠けていることを教えてもらえますか?

前もって感謝します。

0 投票する
3 に答える
19732 参照

c# - オペランド タイプの衝突: varchar は、暗号化されたデータベースに挿入しようとしている varchar(50) と互換性がありません

私は取得していSqlExceptionます:

オペランド型の衝突: varchar は、(encryption_type = 'DETERMINISTIC'、encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256'、column_encryption_key_name = 'CEK_Auto1'、column_encryption_key_database_name = 'PB') で暗号化された varchar(50) と互換性がありません。クライアントからメタデータを受け取りました。バッチの呼び出し中にエラーが発生したため、クライアントは sp_describe_parameter_encryption を呼び出して再試行することにより、パラメーター暗号化メタデータを更新できます。

私のC#コード:

そして私のストアドプロシージャ:

暗号化されていないフィールドにデータを挿入しても問題ありません。

この記事を見つけました

http://dataap.org/sql-2016-ctp/column-level-encryption-using-always-encrypted-in-sql-server-2016/

私の問題は似ていますが、解決策が見つかりません。