SQL Server Management Studio を使用した Always Encrypted の構成Configure Always Encrypted using SQL Server Management Studio

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

この記事では、SQL Server Management Studio (SSMS) を使用して Always Encrypted を構成し、Always Encrypted を使用したデータベースを管理するためのタスクについて説明します。This article describes tasks for configuring Always Encrypted and managing databases that use Always Encrypted with SQL Server Management Studio (SSMS).

SSMS を使用して Always Encrypted を構成する場合、SSMS によって Always Encrypted のキーと機密データの両方が処理されます。結果、キーとデータは両方とも SSMS プロセス内ではプレーンテキストの形式で表示されます。When you use SSMS to configure Always Encrypted, SSMS handles both Always Encrypted keys and sensitive data, so both the keys and the data appear in plaintext inside the SSMS process. したがって、セキュリティで保護されたコンピューターで SSMS を実行することが重要です。Therefore, it is important you run SSMS on a secure computer. データベースが SQL Server でホストされている場合は、SQL Server インスタンスをホストするコンピューターとは異なるコンピューターで SSMS を実行する必要があります。If your database is hosted in SQL Server, make sure SSMS runs on a different computer than the computer hosting your SQL Server instance. Always Encrypted の主な目的は、データベース システムが侵害されても、暗号化された機密データが確実に保護されるようにすることにあるので、SQL Server コンピューター上でキーまたは機密データを処理する PowerShell スクリプトが実行されると、機能の効果が低下したり無効になったりするおそれがあります。As the primary goal of Always Encrypted is to ensure encrypted sensitive data is safe even if the database system gets compromised, executing a PowerShell script that processes keys or sensitive data on the SQL Server computer can reduce or defeat the benefits of the feature. 追加の推奨事項については、 Security Considerations for Key Management(キー管理でのセキュリティに関する考慮事項) を参照してください。For additional recommendations, see Security Considerations for Key Management.

SSMS では、データベースを管理する人 (DBA) と、暗号化された機密情報を管理していてプレーンテキスト データへのアクセス権を持つ人 (セキュリティ管理者かアプリケーション管理者または両者) との間でのロールの分離をサポートしていません。SSMS does not support role separation between those who manage the database (DBAs) and those who manage cryptographic secrets and have access to plaintext data (Security Administrators and/or Application Administrators). 組織でロールの分離が実施される場合は、PowerShell を使用して Always Encrypted を構成する必要があります。If your organization enforces role separation, you should use PowerShell to configure Always Encrypted. 詳細については、 Overview of Key Management for Always Encrypted (Always Encrypted でのキー管理の概要) と Configure Always Encrypted using PowerShell(PowerShell を使用した Always Encrypted の構成) を参照してください。For additional information, see Overview of Key Management for Always Encrypted and Configure Always Encrypted using PowerShell.

Always Encrypted ウィザードを使用した Always Encrypted の構成Configuring Always Encrypted using the Always Encrypted Wizard

Always Encrypted ウィザード は、選択したデータベースの列に対して目的の暗号化構成を設定することができる強力なツールです。The Always Encrypted Wizard is a powerful tool that allows you to set the desired encryption configuration for selected database columns. 現在の Always Encrypted の構成と目的のターゲット構成に応じて、ウィザードでは、列を暗号化したり、列の暗号化を解除したり (解読)、列を再暗号化したり (たとえば、列に対して構成された、新しい列暗号化キー、または現在のものとは異なる暗号化の種類を使用) できます。Depending on the current Always Encrypted configuration and the desired target configuration, the wizard can encrypt a column, decrypt it (remove encryption), or re-encrypt it (for example, using a new column encryption key or an encryption type that is different from the current type, configured for the column). ウィザードの 1 回の実行で、複数の列を構成することができます。Multiple columns can be configured in a single run of the wizard.

Always Encrypted に対してキーをプロビジョニングしていない場合は、ウィザードが自動的にキーを生成してくれます。If you have not provisioned any keys for Always Encrypted, the wizard will auto-generate them for you. 列マスター キーのキー ストアとして、つぎのどちらかを選択する必要があるだけです:Windows 証明書ストアまたは Azure Key Vault。You just need to pick a key store for your column master key: Windows Certificate Store or Azure Key Vault. ウィザードでは、キーの名前とメタデータ オブジェクトをデータベース内に自動的に生成します。The wizard will auto-generate names for keys and their metadata objects in the database. キーのプロビジョニング方法をより詳細に制御する必要がある場合 (および列マスター キーを格納したキー ストアの選択肢がもっと必要である場合) は、 [新しい列マスター キー] ダイアログと [新しい列の暗号化キー] ダイアログ (後で説明) を使用してキーをプロビジョニングしてから、ウィザードを開始してください。If you need more control for how your keys are provisioned (and more choices for a key store containing a column master key), you can use the New Column Master Key and New Column Encryption Key dialogs (described below) to provision keys before you start the wizard. Always Encrypted ウィザードでは、既存の列暗号化キーを選択できます。In the Always Encrypted Wizard, you can then pick the existing column encryption key.

このウィザードの使い方の詳細については、 Always Encrypted ウィザードを参照してください。For details of how to use the wizard, see Always Encrypted Wizard.

暗号化された列のクエリQuerying Encrypted Columns

このセクションでは、次の作業の方法について説明します。This section describes how to:

  • 暗号化された列に格納された暗号化テキスト値を取得する。Retrieve ciphertext values stored in encrypted columns.
  • 暗号化された列に格納されたプレーンテキスト値を取得する。Retrieve plaintext values stored in encrypted columns.
  • 暗号化された列をターゲットとするプレーンテキスト値を送信する (たとえば、 INSERT または UPDATE ステートメントや、 WHERE ステートメントの SELECT 句のルックアップ パラメーターとして)。Send plaintext values targeting encrypted columns (e.g. in INSERT or UPDATE statements and as a lookup parameters of WHERE clauses in SELECT statements).

暗号化された列に格納された暗号化テキスト値の取得Retrieving ciphertext values stored in encrypted columns

(値の暗号化を解除せずに) 暗号化テキストとして暗号化された列から値を取得する場合は、次のようにします。To retrieve values from an encrypted column as ciphertext (without decrypting the values):

  1. Always Encrypted が、 SELECT クエリを実行するクエリ エディター ウィンドウでデータベース接続に対して無効になっていることを確認します。Make sure Always Encrypted is disabled for the database connection for the Query Editor window, from which you are running your SELECT query. 以下の、「 データベース接続での Always Encrypted の有効化と無効化 」を参照してください。See Enabling and disabling Always Encrypted for a database connection below.
  2. SELECT クエリを実行します。Run a SELECT query. 暗号化された列から取得されたデータは、バイナリ (暗号化された) 値として返されます。Any data retrieved from encrypted columns will be returned as binary (encrypted) values.

Example
SSNPatients テーブルの暗号化された列であると仮定して、以下に示されているクエリでバイナリ暗号化テキスト値を取得します (Always Encrypted がデータベース接続で無効になっている場合)。Assuming SSN is an encrypted column in the Patients table, the query shown below will retrieve binary ciphertext values, if Always Encrypted is disabled for the database connection.

always-encrypted-ciphertext

暗号化された列に格納されたプレーンテキスト値の取得Retrieving plaintext values stored in encrypted columns

(値の暗号化を解除するために) プレーンテキストとして暗号化された列から値を取得する場合は、次のようにします。To retrieve values from an encrypted column as plaintext (to decrypt the values):

  1. Always Encrypted が、 SELECT クエリを実行するクエリ エディター ウィンドウでデータベース接続に対して有効になっていることを確認します。Make sure Always Encrypted is enabled for the database connection for the Query Editor window, from which you are running your SELECT query. これにより、.NET Framework Data Provider for SQL Server (SSMS で使用) に、暗号化された列から取得されたデータの暗号化を解除するよう指示されます。This will instruct the .NET Framework Data Provider for SQL Server (used by SSMS) to decrypt data retrieved from encrypted columns. 以下の、「 データベース接続での Always Encrypted の有効化と無効化 」を参照してください。See Enabling and disabling Always Encrypted for a database below.
  2. 暗号化された列に構成されているすべての列マスター キーにアクセスできることを確認します。Make sure you can access all column master keys configured for encrypted columns. たとえば、列マスター キーが証明書である場合、SSMS が実行されているコンピューターに証明書が展開されていることを確認する必要があります。For example, if your column master key is a certificate, you need to make sure the certificate is deployed on the machine, SSMS is running on. あるいは、列マスター キーが Azure Key Vault に格納されているキーの場合、キーにアクセスする権限があることを確認する必要があります (Azure へのサインインが求められる場合もあります)。Or, if your column master key is a key stored in Azure Key Vault, you need to make sure you have permissions to access the key (Also, you might be prompted to sign in to Azure.)
  3. SELECT クエリを実行します。Run a SELECT query. 暗号化された列から取得されたデータは、元のデータ型の値と同じプレーンテキストとして返されます。Any data retrieved from encrypted columns will be returned as plaintext as values of the original data types.

Example
SSN が char(11) テーブルで暗号化された Patients 列であると仮定して、以下に示されているクエリでプレーンテキスト値を返します (Always Encrypted がデータベース接続で有効になっている場合、および SSN 列に構成された列マスター キーにアクセスできる場合)。Assuming SSN is an encrypted char(11) column in the Patients table, the query, shown below, will return plaintext values, if Always Encrypted is enabled for the database connection and if you have access to the column master key configured for the SSN column.

always-encrypted-plaintext

暗号化された列をターゲットとするプレーンテキスト値の送信Sending plaintext values targeting encrypted columns

暗号化された列をターゲットとする値を送信するクエリ (暗号化された列に格納されている値を使用して挿入、更新またはフィルタリングするクエリなど) を実行する場合は、次のようにします。To execute a query that sends a value that targets an encrypted column, for example a query that inserts, updates or filters by a value stored in an encrypted column:

  1. Always Encrypted が、 SELECT クエリを実行するクエリ エディター ウィンドウでデータベース接続に対して有効になっていることを確認します。Make sure Always Encrypted is enabled for the database connection for the Query Editor window, from which you are running your SELECT query. これにより、.NET Framework Data Provider for SQL Server (SSMS で使用) に、暗号化された列をターゲットとするパラメーター化された Transact-SQL 変数 (以下を参照) を暗号化するよう指示されます。This will instruct the .NET Framework Data Provider for SQL Server (used by SSMS) to encrypt parameterized Transact-SQL variables (see below) targeting encrypted columns. 以下の、「 データベース接続での Always Encrypted の有効化と無効化 」を参照してください。See Enabling and disabling Always Encrypted for a database below.
  2. 暗号化された列に構成されているすべての列マスター キーにアクセスできることを確認します。Make sure you can access all column master keys configured for encrypted columns. たとえば、列マスター キーが証明書である場合、SSMS が実行されているコンピューターに証明書が展開されていることを確認する必要があります。For example, if your column master key is a certificate, you need to make sure the certificate is deployed on the machine, SSMS is running on. あるいは、列マスター キーが Azure Key Vault に格納されているキーの場合、キーにアクセスする権限があることを確認する必要があります (Azure へのサインインが求められる場合もあります)。Or, if your column master key is a key stored in Azure Key Vault, you need to make sure you have permissions to access the key (Also, you might be prompted to sign in to Azure.)
  3. クエリ エディター ウィンドウで Always Encrypted のパラメーター化が有効になっていることを確認してください。Ensure Parameterization for Always Encrypted is enabled for the Query Editor window. (SSMS バージョン 17.0 以降が必要です)。Transact-SQL 変数を宣言し、データベースに送信 (挿入、更新またはフィルタリング) する値で初期化します。(Requires at least SSMS version 17.0.) Declare a Transact-SQL variable and initialize it with a value, you want to send (insert, update or filter by) to the database. 詳細については、以下の「Always Encrypted のパラメーター化」を参照してください。See Parameterization for Always Encrypted below for details.

    注意

    Always Encrypted でサポートされる型変換のサブセットは限られているため、多くの場合、Transact-SQL 変数のデータ型が、ターゲットとなるターゲット データベース列の型と同じである必要があります。As Always Encrypted support a limited subset of type conversions, in many cases it is required that data type of a Transact-SQL variable is the same as the type of the target database column, it targets.

  4. データベースに Transact-SQL 変数の値を送信するクエリを実行します。Run your query sending the value of the Transact-SQL variable to the database. SSMS は変数をクエリ パラメーターに変換し、その値を暗号化してからデータベースに送信します。SSMS will convert the variable to a query parameter and it will encrypt its value before sending it to the database.

Example
SSNchar(11) テーブルの暗号化された Patients 列であると仮定して、以下のスクリプトで SSN 列の '795-73-9838' を含む行の検索を試み、 LastName 列の値を返します (Always Encrypted がデータベース接続で有効で、Always Encrypted のパラメーター化がクエリ エディター ウィンドウで有効で、 SSN 列に構成された列マスター キーにアクセスできる場合)。Assuming SSN is an encrypted char(11) column in the Patients table, the below script will attempt to find a row containing '795-73-9838' in the SSN column and return the value of the LastName column, providing Always Encrypted is enabled for the database connection, Parameterization for Always Encrypted is enabled for the Query Editor window, and you have access to the column master key configured for the SSN column.

always-encrypted-patients

データベース接続での Always Encrypted の有効化と無効化Enabling and disabling Always Encrypted for a database connection

データベース接続で Always Encrypted を有効にすると、以下の操作を透過的に試行するように、SQL Server Management Studio で使用される NET Framework Data Provider for SQL Server に指示されます。Enabling Always Encrypted for a database connection instructs the .NET Framework Data Provider for SQL Server, used by SQL Server Management Studio, to attempt to transparently:

  • 暗号化された列から取得され、クエリ結果に返される値の暗号化を解除する。Decrypt any values that are retrieved from encrypted columns and returned in query results.
  • 暗号化されたデータベース列をターゲットとするパラメーター化された Transact-SQL 変数の値を暗号化する。Encrypt the values of the parameterized Transact-SQL variables that target encrypted database columns.
    データベース接続で Always Encrypted を有効にするには、 Column Encryption Setting=Enabled [サーバーに接続] ダイアログの [追加のプロパティ] タブで を指定します。To enable Always Encrypted for a database connection, specify Column Encryption Setting=Enabled in the Additional Properties tab of the Connect to Server dialog.
    データベース接続で Always Encrypted を無効にするには、 Column Encryption Setting=Disabled [サーバーに接続] ダイアログの [追加のプロパティ] タブで を指定するか、 [列暗号化設定] の設定を単に削除します (既定値は [無効])。To disable Always Encrypted for a database connection, specify Column Encryption Setting=Disabled or simply remove the setting of Column Encryption Setting from the Additional Properties tab of the Connect to Server dialog (its default value is Disabled).

ヒント

既存のクエリ エディター ウィンドウで Always Encrypted の有効化と無効化を切り替えるには、次のようにします。To toggle between Always Encrypted being enabled and disabled for an existing Query Editor window:

  1. クエリ エディター ウィンドウの任意の場所をクリックします。Right-click anywhere in the Query Editor window.
  2. [接続] > [接続の変更...] の順に選択します。Select Connection > Change Connection ...,
  3. [オプション] をクリックします。Click Options >>,
  4. [追加のプロパティ] タブを選択し、Column Encryption Setting=Enabled を入力する (Always Encrypted の動作を有効にする) か、設定を削除します (Always Encrypted の動作を無効にする)。Select the Additional Properties tab and type Column Encryption Setting=Enabled (to enable the Always Encrypted behavior) or remove the setting (to disable the Always Encrypted behavior).
  5. [接続] をクリックします。Click Connect.

Always Encrypted のパラメーター化Parameterization for Always Encrypted

Always Encrypted のパラメーター化は、Transact-SQL 変数をクエリ パラメーター (SqlParameter クラスのインスタンス) に自動的に変換する、SQL Server Management Studio の機能です Parameterization for Always Encrypted is a feature in SQL Server Management Studio that automatically converts Transact-SQL variables into query parameters (instances of SqlParameter Class). (SSMS バージョン 17.0 以降が必要です)。これにより、基になる .NET Framework Data Provider for SQL Server は暗号化された列をターゲットとするデータを検出し、データベースに送信する前にそのデータを暗号化できます。(Requires at least SSMS version 17.0.) This allows the underlying .NET Framework Data Provider for SQL Server to detect data targeting encrypted columns, and to encrypt such data before sending it to the database.

パラメーター化しないと、.NET Framework Data Provider は、クエリ エディターで作成される各ステートメントを非パラメーター化クエリとして渡します。Without parameterization, the .NET Framework Data Provider passes each statement, you author in the Query Editor, as a non-parameterized query. クエリに、暗号化された列をターゲットとする Transact-SQL 変数またはリテラルが含まれている場合、.NET Framework Data Provider for SQL Server は、データベースにクエリを送信する前に、データを検出して暗号化することはできません。If the query contains literals or Transact-SQL variables that target encrypted columns, the .NET Framework Data Provider for SQL Server will not be able to detect and encrypt them, before sending the query to the database. その結果、(プレーンテキストのリテラル Transact-SQL 変数と暗号化された列の間で) 型が一致しないため、クエリは失敗します。As a result, the query will fail due to type mismatch (between the plaintext literal Transact-SQL variable and the encrypted column). たとえば、 SSN 列が暗号化されていると仮定して、パラメーター化せずに以下のクエリを正常に実行することはできません。For example, the following query will fail without parameterization, assuming the SSN column is encrypted.

DECLARE @SSN NCHAR(11) = '795-73-9838'
SELECT * FROM [dbo].[Patients]
WHERE [SSN] = @SSN

Always Encrypted のパラメーター化の有効化/無効化Enabling/Disabling Parameterization for Always Encrypted

既定では、Always Encrypted のパラメーター化は無効になっています。Parameterization for Always Encrypted is disabled by default.

現在のクエリ エディター ウィンドウで Always Encrypted のパラメーター化を有効化/無効化するには、次のようにします。To enable/disable Parameterization for Always Encrypted for the current Query Editor window:

  1. メイン メニューから [クエリ] を選択します。Select Query from the main menu.
  2. [クエリ オプション...] を選択します。Select Query Options....
  3. [実行] > [詳細] の順に移動します。Navigate to Execution > Advanced.
  4. [Always Encrypted のパラメーター化を有効にする] を選択または選択解除します。Select or unselect Enable Parameterization for Always Encrypted.
  5. [OK] をクリックします。Click OK.

今後のクエリ エディター ウィンドウで Always Encrypted のパラメーター化を有効化/無効化する場合は、次のようにします。To enable/disable Parameterization for Always Encrypted for future Query Editor windows:

  1. メイン メニューから [ツール] を選択します。Select Tools from the main menu.
  2. [オプション...] を選択します。Select Options....
  3. [クエリ実行] > [SQL Server] > [詳細] の順に移動します。Navigate to Query Execution > SQL Server > Advanced.
  4. [Always Encrypted のパラメーター化を有効にする] を選択または選択解除します。Select or unselect Enable Parameterization for Always Encrypted.
  5. [OK] をクリックします。Click OK.

Always Encrypted が有効な状態のデータベース接続を使用するクエリ エディター ウィンドウでクエリを実行する場合に、パラメーター化がクエリ エディター ウィンドウで有効になっていないと、有効にするよう求められます。If you execute a query in a Query Editor window that uses a database connection with Always Encrypted enabled, but parameterization is not enabled for the Query Editor window, you will be prompted to enable it.

注意

Always Encrypted のパラメーター化が機能するのは、Always Encrypted が有効な状態のデータベース接続を使用するクエリ エディター ウィンドウのみです (「 データベース接続での Always Encrypted の有効化と無効化」を参照)。Parameterization for Always Encrypted works only in Query Editor windows that use database connections with Always Encrypted enabled (see Enabling and disabling Always Encrypted for a database). クエリ エディター ウィンドウで Always Encrypted が有効な状態ではないデータベース接続を使用すると、Transact-SQL 変数がパラメーター化されません。No Transact-SQL variables will be parameterized if the Query Editor window uses a database connection without Always Encrypted enabled.

Always Encrypted のパラメーター化のしくみHow Parameterization for Always Encrypted works

クエリ エディター ウィンドウでデータベース接続の Always Encrypted のパラメーター化と Always Encrypted の動作の両方が有効になっている場合、SQL Server Management Studio は、次の前提条件を満たす Transact-SQL 変数のパラメーター化を試みます。If both Parameterization for Always Encrypted and the Always Encrypted behavior in the database connection are enabled for a Query Editor window, SQL Server Management Studio will attempt parameterize Transact-SQL variables that meet the following pre-requisite conditions:

  • 同じステートメントで宣言され、初期化 (インライン初期化) されている。Are declared and initialized in the same statement (inline initialization). 別個の SET ステートメントを使用して宣言された変数はパラメーター化されません。Variables declared using separate SET statements will not be parameterized.
  • 単一のリテラルを使用して初期化されている。Are initialized using a single literal. 演算子または関数を含む式を使用して初期化された変数はパラメーター化されません。Variables initialized using expressions including any operators or functions will not be parameterized.

SQL Server Management Studio がパラメーター化する、変数の例を以下に示します。Below are examples of variable, SQL Server Management Studio will parameterize.

DECLARE @SSN char(11) = '795-73-9838';
   
DECLARE @BirthDate date = '19990104';
DECLARE @Salary money = $30000;

SQL Server Management Studio がパラメーター化を試みない変数の例を以下に示します。And, here are a few examples of variables SQL Server Management Studio will not attempt to parameterize:

DECLARE @Name nvarchar(50); --Initialization seperate from declaration
SET @Name = 'Abel';
   
DECLARE @StartDate date = GETDATE(); -- a function used instead of a literal
   
DECLARE @NewSalary money = @Salary * 1.1; -- an expression used instead of a literal

試行されたパラメーター化が正常に行われるようにするにはFor an attempted parameterization to succeed:

  • パラメーター化する変数の初期化で使用されるリテラルの型は、変数宣言の型と一致する必要があります。The type of the literal used for the initialization of the variable to be parametrized, must match the type in the variable declaration.
  • 変数の宣言された型が date 型または time 型である場合、以下の ISO 8601 に準拠した形式のいずれかを使用する文字列で変数を初期化する必要があります。If the declared type of the variable is a date type or a time type, the variable must be initialized using a string using one of the following ISO 8601-compliant formats.

パラメーター化エラーの原因となる Transact-SQL 変数宣言の例を以下に示します。Here are the examples of Transact-SQL variable declarations that will result in parameterization errors:

DECLARE @BirthDate date = '01/04/1999' -- unsupported date format   
   
DECLARE @Number int = 1.1 -- the type of the literal does not match the type of the variable   

SQL Server Management Studio では Intellisense を使用して、正常にパラメーター化できた変数と失敗したパラメーター化の試行 (およびその理由) を通知します。SQL Server Management Studio uses Intellisense to inform you which variables can be successfully parameterized and which parameterization attempts fail (and why).

クエリ エディターでは、正常にパラメーター化できた変数の宣言に警告の下線が付けられます。A declaration of a variable that can be successfully parameterized is marked with a warning underline in the Query Editor. 警告の下線が付いた宣言ステートメントにカーソルを置くと、パラメーター化プロセスの結果が表示されます。これには、結果の SqlParameter オブジェクト (変数に対応する) の次の主要なプロパティの値が含まれます:SqlDbTypeSizePrecisionScaleSqlValueIf you hover on a declaration statement that got marked with a warning underline, you will see the results of the parameterization process, including the values of the key properties of the resulting SqlParameter object (the variable is mapped to): SqlDbType, Size, Precision, Scale, SqlValue. また、 [エラー一覧] ビューの [警告] タブには、正常にパラメーター化されたすべての変数の完全な一覧も表示されます。You can also see the complete list of all variables that have been successfully parameterized in the Warning tab of the Error List view. [エラー一覧] ビューを開くには、メイン メニューから [ビュー] を選択し、 [エラー一覧] を選択します。To open the Error List view, select View from the main menu and then select Error List.

SQL Server Management Studio が変数のパラメーター化を試みたときに、パラメーター化が失敗した場合には、変数の宣言にエラーの下線が付けられます。If SQL Server Management Studio has attempted to parameterize a variable, but the parameterization has failed, the declaration of the variable will be marked with an error underline. エラーの下線が付けられた宣言ステートメントにカーソルを置くと、エラーに関する結果が表示されます。If you hover on the declaration statement that has been marked with an error underline, you will get the results about the error. また、 [エラー一覧] ビューの [エラー] タブで、すべての変数のパラメーター化エラーの完全な一覧を表示することもできます。You can also see the complete list of parameterization errors for all variables in the Error tab of the Error List view. [エラー一覧] ビューを開くには、メイン メニューから [ビュー] を選択し、 [エラー一覧] を選択します。To open the Error List view, select View from the main menu and then select Error List.

下のスクリーン ショットは、6 つの変数宣言の例を示しています。The below screenshot shows an example of six variable declarations. SQL Server Management Studio は、最初の 3 つの変数を正常にパラメーター化しています。SQL Server Management Studio successfully parameterized the first three variables. 最後の 3 つの変数はパラメーター化の前提条件を満たさなかったため、SQL Server Management Studio はそれらのパラメーター化を試行していません (宣言にはまったくマークが付けられていません)。The last three variables did not meet the pre-requisite conditions for parameterization, and therefore, SQL Server Management Studio did not attempt to parameterize them (their declarations are not marked in any way).

always-encrypted-parameter-warnings

次の別の例では、2 つの変数はパラメーター化の前提条件を満たしていますが、変数が正しく初期化されていないため、パラメーター化の試行は失敗しています。Another example below, shows two variables that meet pre-requisite conditions for parameterization, but the parameterization attempt has failed because the variables are incorrectly initialized.

always-encrypted-error

注意

Always Encrypted でサポートされる型変換のサブセットは限られているため、多くの場合、Transact-SQL 変数のデータ型が、ターゲットとなるターゲット データベース列の型と同じである必要があります。As Always Encrypted supports a limited subset of type conversions, in many cases it is required that the data type of a Transact-SQL variable is the same as the type of the target database column, it targets. たとえば、 SSN テーブル内の Patients 列の型が char(11)であると仮定して、 @SSN である、 nchar(11)変数の型が列の型と一致しないため、以下のクエリは失敗します。For example, assuming type of the SSN column in the Patients table is char(11), the below query will fail, as the type of the @SSN variable, which is nchar(11), does not match the type of the column.

DECLARE @SSN nchar(11) = '795-73-9838'
SELECT * FROM [dbo].[Patients]
WHERE [SSN] = @SSN;
Msg 402, Level 16, State 2, Line 5   
The data types char(11) encrypted with (encryption_type = 'DETERMINISTIC', 
encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', 
column_encryption_key_database_name = 'Clinic') collation_name = 'Latin1_General_BIN2' 
and nchar(11) encrypted with (encryption_type = 'DETERMINISTIC', 
encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', 
column_encryption_key_database_name = 'Clinic') are incompatible in the equal to operator.

注意

パラメーター化しないと、型変換を含め、クエリ全体が SQL Server/Azure SQL Database 内で処理されます。Without parameterization, the entire query, including type conversions, is processed inside SQL Server/Azure SQL Database. パラメーター化が有効になっている場合は、SQL Server Management Studio 内の .NET Framework でいくつかの型変換が実行されます。With parameterization enabled, some type conversions are performed by .NET Framework inside SQL Server Management Studio. .NET Framework 型システムと SQL Server 型システムには違いがある (float など、いくつかの型の精度が異なる) ため、パラメーター化を有効にして実行されたクエリでは、パラメーター化を有効にせずに実行されたクエリとは異なる結果が生成される場合があります。Due to differences between the .NET Framework type system and the SQL Server type system (e.g. different precision of some types, such as float), a query executed with parameterization enabled can produce different results than the query executed without parameterization enabled.

アクセス許可Permissions

暗号化テキストのデータを取得するクエリを含め、暗号化された列でクエリを実行するには、データベースでの VIEW ANY COLUMN MASTER KEY DEFINITIONVIEW ANY COLUMN ENCRYPTION KEY DEFINITION の権限が必要です。To run any queries against encrypted columns, including queries that retrieve data in ciphertext, you need the VIEW ANY COLUMN MASTER KEY DEFINITION and VIEW ANY COLUMN ENCRYPTION KEY DEFINITION permissions in the database.
これらの権限に加え、クエリ結果を暗号化解除する場合や、(Transact-SQL 変数をパラメーター化することで生成される) クエリ パラメーターを暗号化する場合には、ターゲット列を保護する列マスター キーにアクセスする必要もあります。In addition to the above permissions, to decrypt any query results or to encrypt any query parameters (produced by parameterizing Transact-SQL variables), you also need access to the column master key protecting the target columns:

  • 証明書ストア - ローカル コンピューター 列マスター キーとして使用される証明書への Read アクセス権を持っているか、コンピューターの管理者である必要があります。Certificate Store - Local computer You must have Read access to the certificate that is used a column master key, or be the administrator on the computer.
  • Azure Key Vault 列マスター キーが格納されている資格情報コンテナーに対する getunwrapKey、および verify の権限が必要です。Azure Key Vault You need the get, unwrapKey, and verify permissions on the vault containing the column master key.
  • キー ストア プロバイダー (CNG) キー ストアまたはキーを使用する際に入力を求められる可能性がある必要な権限と資格情報は、ストアと KSP の構成によって異なります。Key Store Provider (CNG) The required permission and credentials, you might be prompted for when using a key store or a key, depend on the store and the KSP configuration.
  • 暗号化サービス プロバイダー (CAPI) キー ストアまたはキーを使用する際に入力を求められる可能性がある必要な権限と資格情報は、ストアと CSP の構成によって異なります。Cryptographic Service Provider (CAPI) The required permission and credentials, you might be prompted for when using a key store or a key, depend on the store and the CSP configuration.

詳細については、 列マスター キーの作成と格納 (Always Encrypted) を参照してください。For more information, see Create and Store Column Master Keys (Always Encrypted).

列マスター キーのプロビジョニング (新しい列マスター キー)Provisioning Column Master Keys (New Column Master Key)

[新しい列マスター キー] ダイアログでは、列マスター キーを生成することも、キー ストア内の既存のキーを選択することもできます。さらに、作成または選択したキーに対して列マスター キーのメタデータをデータベースに作成することができます。The New Column Master Key dialog allows you to generate a column master key or pick an existing key in a key store, and create column master key metadata for the created or selected key in the database.

  1. オブジェクト エクスプローラーを使用し、データベースの下の [セキュリティ]、[Always Encrypted キー] の順にアクセスします。Using Object Explorer, navigate to the Security>Always Encrypted Keys folder under your database.

  2. [列マスター キー] フォルダーを右クリックし、[新しい列マスター キー...] を選択します。Right click on the Column Master Keys folder and select New Column Master Key....

  3. [新しい列マスター キー] ダイアログで、列マスター キーのメタデータ オブジェクトの名前を入力します。In the New Column Master Key dialog, enter the name of the column master key metadata object.

  4. キー ストアを選択します。Select a key store:

    • 証明書ストア - 現在のユーザー - Windows 証明書ストアでの現在のユーザーの証明書ストアの場所を示します。これは個人的なストアです。Certificate Store - Current User - indicates the Current User certificate store location in the Windows Certificate Store, which is your personal store.
    • 証明書ストア - ローカル コンピューター - Windows 証明書ストアでのローカル コンピューターの証明書ストアの場所を示します。Certificate Store - Local computer - indicates the Local computer certificate store location in the Windows Certificate Store.
    • Azure Key Vault - Azure にサインインする必要があります ([サインイン] をクリックします)。Azure Key Vault - you will need to sign in to Azure (click Sign in). サインインすると、Azure サブスクリプションのいずれかとキー資格情報コンテナーを選択できるようになります。Once you sign in, you will be able to pick one of your Azure subscriptions and a key vault.
    • キー ストア プロバイダー (CNG) - Cryptography Next Generation (CNG) API を実装するキー ストア プロバイダー (KSP) を介してアクセスできるキー ストアを示します。Key Store Provider (CNG) - indicates a key store that is accessible via a key store provider (KSP) that implements the Cryptography Next Generation (CNG) API. 通常、この種のストアは、ハードウェア セキュリティ モジュール (HSM) となります。Typically, this type of a store is a hardware security module (HSM). このオプションを選択したら、KSP を選択する必要があります。After you select this option, you will need to pick a KSP. 既定では、Microsoft ソフトウェア キー ストア プロバイダー が選択されます。Microsoft Software Key Store Provider is selected by default. HSM に格納されている列マスター キーを使用する場合は、デバイス用の KSP を選択します (ダイアログを開く前に、コンピューターにインストールし、構成しておく必要があります)。If you want to use a column master key stored in an HSM, select a KSP for your device (it must be installed and configured on the computer before you open the dialog).
    • 暗号化サービス プロバイダー (CAPI) - 暗号化 API (CAPI) を実装する暗号化サービス プロバイダー (CSP) を介してアクセスできるキー ストアです。Cryptographic Service Provider (CAPI) - a key store that is accessible via a cryptographic service provider (CSP) that implements the Cryptography API (CAPI). 通常、そのようなストアは、ハードウェア セキュリティ モジュール (HSM) です。Typically, such a store is a hardware security module (HSM). このオプションを選択したら、CSP を選択する必要があります。After you select this option, you will need to pick a CSP. HSM に格納されている列マスター キーを使用する場合は、デバイス用の CSP を選択します (ダイアログを開く前に、コンピューターにインストールし、構成しておく必要があります)。If you want to use a column master key stored in an HSM, select a CSP for your device (it must be installed and configured on the computer before you open the dialog).

    注意

    CAPI は非推奨の API であるため、既定では暗号化サービス プロバイダー (CAPI) オプションは無効になります。Since CAPI is a deprecated API, the Cryptographic Service Provider (CAPI) option is disabled by default. これを有効にするには、Windows レジストリの [HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\sql13\Tools\Client\Always Encrypted] キーの下に CAPI Provider Enabled DWORD 値を作成し、これを 1 に設定します。You can enable by creating the CAPI Provider Enabled DWORD value under the [HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\sql13\Tools\Client\Always Encrypted] key in Windows Registry, and setting it to 1. キー ストアで CNG がサポートされていない場合は、CAPI ではなく CNG を使用する必要があります。You should use CNG instead of CAPI, unless your key store does not support CNG.

    上記キー ストアの詳細については、 Create and Store Column Master Keys (Always Encrypted)(列マスター キーの作成と格納 (Always Encrypted)) を参照してください。For more information about the above key stores, see Create and Store Column Master Keys (Always Encrypted).

  5. キー ストアにある既存のキーを選択するか、あるいは [キーの生成] ボタンまたは [証明書の生成] ボタンをクリックしてキー ストアにキーを作成します。Pick an existing key in your key store, or click the Generate Key or Generate Certificate button, to create a key in the key store.

  6. [OK] をクリックします。新しいキーが一覧に表示されます。Click OK and the new key will show up in the list.

SQL Server Management Studio により、データベースに列マスター キーのメタデータが作成されます。SQL Server Management Studio will create metadata for your column master key in the database. ダイアログでこれを実現するには、 CREATE COLUMN MASTER KEY (Transact-SQL) ステートメントを生成し発行します。The dialog achieves this by generating and issuing a CREATE COLUMN MASTER KEY (Transact-SQL) statement.

列暗号化キーのプロビジョニング (新しい列暗号化キー)Provisioning Column Encryption Keys (New Column Encryption Key)

[新しい列の暗号化キー] ダイアログでは、列暗号化キーを生成し、それを列マスター キーで暗号化し、データベースに列暗号化キーのメタデータを作成することができます。The New Column Encryption Key dialog allows you to generate a column encryption key, encrypt it with a column master key, and create the column encryption key metadata in the database.

  1. オブジェクト エクスプローラーを使用して、データベースの下にあるフォルダーを [セキュリティ]、[Always Encrypted キー] の順に移動します。Using Object Explorer, navigate to the Security/Always Encrypted Keys folder under your database.
  2. [列暗号化キー] フォルダーを右クリックし、[新しい列の暗号化キー...] を選択します。Right click on the Column Encryption Keys folder and select New Column Encryption Key....
  3. [新しい列の暗号化キー] ダイアログで、列暗号化キーのメタデータ オブジェクトの名前を入力します。In the New Column Encryption Key dialog, enter the name of the column encryption key metadata object.
  4. データベースの列マスター キーを表すメタデータ オブジェクトを選択します。Select a metadata object that represents your column master key in the database.
  5. [OK] をクリックします。Click OK.

SQL Server Management Studio では、新しい列暗号化キーを生成し、選択した列マスター キーのメタデータをデータベースから取得します。SQL Server Management Studio will generate a new column encryption key and then it will retrieve the metadata for the column master key you selected from the database. 次に SQL Server Management Studio は、列マスター キーのメタデータを使用することで、該当する列マスター キーを含むキー ストアと交信して、列暗号化キーを暗号化します。SQL Server Management Studio will then use the column master key metadata to contact the key store containing your column master key and encrypt the column encryption key. 最後に、新しい列暗号化キーのメタデータがデータベースに作成されます。Finally, the metadata for the new column encryption key will be created in the database. ダイアログでこれを実現するには、 CREATE COLUMN ENCRYPTION KEY (Transact-SQL) ステートメントを生成し発行します。The dialog achieves this by generating and issuing a CREATE COLUMN ENCRYPTION KEY (Transact-SQL) statement.

アクセス許可Permissions

ダイアログで、列暗号化キーのメタデータを作成し、列マスター キーのメタデータにアクセスするには、 ALTER ANY ENCRYPTION MASTER KEY および VIEW ANY COLUMN MASTER KEY DEFINITION データベース権限が必要です。You need the ALTER ANY ENCRYPTION MASTER KEY and VIEW ANY COLUMN MASTER KEY DEFINITION database permissions in the database for the dialog to create the column encryption key metadata and to access column master key metadata. キー ストアにアクセスして、列マスター キーを使用するには、キー ストアとキーの両方、またはそのいずれかに対する権限が必要な場合があります。To access a key store and use the column master key, you might require permissions on the key store or/and the key:

  • 証明書ストア - ローカル コンピューター - 列マスター キーとして使用される証明書への読み取りアクセス権を持っているか、コンピューターの管理者である必要があります。Certificate Store - Local computer - you must have Read access to the certificate that is used as a column master key, or be the administrator on the computer.
  • Azure Key Vault - 列マスター キーが格納されている資格情報コンテナーに対して getunwrapKeywrapKeysign、および verify の権限が必要です。Azure Key Vault - you need the get, unwrapKey, wrapKey, sign, and verify permissions on the vault containing the column master key.
  • キー ストア プロバイダー (CNG) - キー ストアまたはキーを使用する際には、ストアと KSP の構成に応じて、必要な権限と資格情報を入力するよう求められる場合があります。Key Store Provider (CNG) - you might be prompted for the required permission and credentials when using a key store or a key, depending on the store and the KSP configuration.
  • 暗号化サービス プロバイダー (CAPI) - キー ストアまたはキーを使用する際には、ストアと CSP の構成に応じて、必要な権限と資格情報を入力するよう求められる場合があります。Cryptographic Service Provider (CAPI) - you might be prompted for the required permission and credentials when using a key store or a key, depending on the store and the CSP configuration.

詳細については、 列マスター キーの作成と格納 (Always Encrypted) を参照してください。For more information, see Create and Store Column Master Keys (Always Encrypted).

列マスター キーの回転Rotating Column Master Keys

列マスター キーの回転は、既存の列マスター キーを新しい列マスター キーに置き換える処理です。The rotation of a column master key is the process of replacing an existing column master key with a new column master key. キーの回転は、キーが侵害されている場合に、または必須の暗号化キーを定期的に回転することを求めた組織のポリシーまたはコンプライアンス規定に準拠するために、行うことが必要な場合があります。You may need to rotate a key if it has been compromised, or in order to comply with your organization's policies or compliance regulations that mandate cryptographic keys must be rotated on a regular basis. 列マスター キーの回転では、現在の列マスター キーで保護された列暗号化キーを暗号化解除し、新しい列マスター キーを使用して列暗号化キーを再度暗号化し、キーのメタデータを更新するという処理が必要です。A column master key rotation involves decrypting column encryption keys that are protected with the current column master key, re-encrypting them using the new column master key, and updating the key metadata. 詳細については、「 Overview of Key Management for Always Encrypted(Always Encrypted のキー管理の概要)」を参照してください。For more information, see Overview of Key Management for Always Encrypted.

ステップ 1: 新しい列マスター キーをプロビジョニングするStep 1: Provision a new column master key

前述の「列マスター キーのプロビジョニング」セクションの手順に従って、新しい列マスター キーをプロビジョニングします。Provision a new column master key, by following the steps in the Provisioning Column Master Keys section above.

ステップ 2:新しい列マスター キーで列暗号化キーを暗号化するStep 2: Encrypt column encryption keys with the new column master key

列マスター キーは、通常、1 つまたは複数の列暗号化キーを保護します。A column master key typically protects one or more column encryption keys. 列暗号化キーを列マスター キーにより暗号化すると、各列暗号化キーの暗号化された値がデータベースに格納されます。Each column encryption key has an encrypted value stored in the database, that is the product of encrypting the column encryption key with the column master key. この手順では、回転する列マスター キーで保護されている各列暗号化キーを新しい列マスター キーで暗号化し、新しい暗号化された値をデータベースに格納します。In this step, encrypt each of the column encryption keys that are protected with the column master key you are rotating, with the new column master key, and store the new encrypted value in the database. 結果的に、回転の影響を受けた各列暗号化キーには暗号化された値が 2 つ含まれることになります。1 つは既存の列マスター キーにより暗号化された値、もう 1 つは新しい列マスター キーで暗号化された値です。As a result, each column encryption key that is affected by the rotation will have two encrypted values: one value encrypted with the existing column master key, and a new value encrypted with the new column master key.

  1. オブジェクト エクスプローラー[セキュリティ]、[Always Encrypted キー]、[列マスター キー] フォルダーの順に移動し、回転する列マスター キーを探します。Using Object Explorer, navigate to the Security>Always Encrypted Keys>Column Master Keys folder and locate the column master key you are rotating.
  2. 列マスター キーを右クリックし、[回転] を選択します。Right-click on the column master key and select Rotate.
  3. [列マスター キーの回転] ダイアログの [ターゲット] フィールドで、手順 1 で作成した、新しい列マスター キーの名前を選択します。In the Column Master Key Rotation dialog, select the name of your new column master key, you created in Step 1, in the Target field.
  4. 既存の列マスター キーで保護された、列暗号化キーの一覧を確認します。Review the list of column encryption keys, protected by the existing column master keys. これらのキーは、回転の影響を受けます。These keys will be affected by the rotation.
  5. [OK] をクリックします。Click OK.

SQL Server Management Studio では、古い列マスター キーで保護された列暗号化キーのメタデータと、古い列マスター キーおよび新しい列マスター キーのメタデータを取得します。SQL Server Management Studio will obtain the metadata of the column encryption keys that are protected with the old column master key, and the metadata of the old and the new column master keys. 次に、SSMS では、列マスター キーのメタデータを使用することで、古い列マスター キーが格納されたキー ストアにアクセスし、列暗号化キーを暗号化解除します。Then, SSMS will use the column master key metadata to access the key store containing the old column master key and decrypt the column encryption key(s). さらに、SSMS では、新しい列マスター キーを保持しているキー ストアにアクセスして、列暗号化キーの暗号化された値セットを新たに作成し、その新しい値をメタデータに追加します ( ALTER COLUMN ENCRYPTION KEY (Transact-SQL) ステートメントの生成および発行)。Subsequently, SSMS will access the key store holding the new column master key to produce a new set of encrypted values of the column encryption keys, and then it will add the new values to the metadata (generating and issuing ALTER COLUMN ENCRYPTION KEY (Transact-SQL) statements).

注意

古い列マスター キーで暗号化されたそれぞれの列暗号化キーが他の列マスター キーで暗号化されていないことを確認します。Make sure each of the column encryption keys, encrypted with the old column master key, is not encrypted with any other column master key. つまり、回転の影響を受けるすべての列暗号化キーに、データベースの暗号化された値が 1 つだけ含まれている必要があります。In other words, each column encryption key, impacted by the rotation, must have exactly one encrypted value in the database. 影響を受ける列暗号化キーのいずれかに複数の暗号化された値が含まれている場合、回転を続行する前にその値を削除する必要があります (列暗号化キーの暗号化された値を削除する方法は、 "手順 4" を参照してください)。If any affected column encryption key has more than one encrypted value, you need to remove the value before you can proceed with the rotation (see Step 4 on how to remove an encrypted value of a column encryption key).

ステップ 3:新しい列マスター キーでアプリケーションを構成するStep 3: Configure your applications with the new column master key

この手順では、回転している列マスター キーで保護されたデータベース列 (つまり、回転されている列マスター キーで暗号化される列暗号化キーで暗号化されたデータベース列) に対してクエリを実行するすべてのクライアント アプリケーションが、新しい列マスター キーにアクセスできるようにする必要があります。In this step you need to make sure that all your client applications that query database columns protected with the column master key that you are rotating can access the new column master key (i.e. database columns encrypted with a column encryption key that is encrypted with the column master key, being rotated). この手順は、新しい列マスター キーが格納されているキー ストアの種類によって異なります。This step depends on the type of key store your new column master key is in. 例 :For example:

  • 新しい列マスター キーが Windows 証明書ストアに格納された証明書である場合、データベースの列マスター キーのキー パスに指定された場所と同じ証明書ストアの場所 ([現在のユーザー] または [ローカル コンピューター]) に証明書を展開する必要があります。If the new column master key is a certificate stored in Windows Certificate Store, you need to deploy the certificate to the same certificate store location (Current User or Local computer) as the location specified in the key path of your column master key in the database. アプリケーションが、証明書にアクセスできる必要があります。The application needs to be able to access the certificate:
    • 証明書が、"現在のユーザー" の証明書ストアに格納されている場合、証明書をアプリケーションの Windows ID (ユーザー) の [現在のユーザー] ストアにインポートする必要があります。If the certificate is stored in the Current User certificate store location, the certificate needs to be imported into the Current User store of the application's Windows identity (user).
    • 証明書が "ローカル コンピューター" の証明書ストアに格納されている場合、アプリケーションの Windows ID に証明書へのアクセス許可が必要です。If the certificate is stored in the Local computer certificate store location, the application's Windows identity must have permission to access the certificate.
  • 新しい列マスター キーが Microsoft Azure Key Vault に格納されている場合は、アプリケーションが Azure を認証でき、キーにアクセスできるように実装する必要があります。If the new column master key is stored in Microsoft Azure Key Vault, the application must be implemented so that it can authenticate to Azure and has permission to access the key.

詳細については、「 Create and Store Column Master Keys (Always Encrypted)(列マスター キーの作成と格納 (Always Encrypted))」を参照してください。For details, see Create and Store Column Master Keys (Always Encrypted).

注意

回転のこの時点では、古い列マスター キーと新しい列マスター キーの両方が有効であり、これらを使ってデータにアクセスすることができます。At this point in the rotation, both the old column master key and the new column master key are valid and can be used to access the data.

ステップ 4:古い列マスター キーで暗号化された列暗号化キーの値をクリーンアップするStep 4: Clean up column encryption key values encrypted with the old column master key

新しい列マスター キーを使用するようにすべてのアプリケーションを構成したら、 "古い" 列マスター キーで暗号化された列暗号化キーの値をデータベースから削除します。新しい列マスター キーを使用するようにすべてのアプリケーションを構成したら、古い列マスター キーで暗号化された列暗号化キーの値をデータベースから削除します。Once you have configured all your applications to use the new column master key, remove the values of column encryption keys that are encrypted with the old column master key from the database. 古い値を削除することで、次の回転を行うことができます (ただし、回転される列マスター キーで保護されたすべての列暗号化キーに、必ず暗号化された値が 1 つ必要です)。Removing old values will ensure you are ready for the next rotation (remember, each column encryption key, protected with a column master key to be rotated, must have exactly one encrypted value).

古い列マスター キーをアーカイブまたは削除する前に古い値をクリーンアップするもう 1 つの理由は、パフォーマンスに関係します。暗号化された列にクエリを実行すると、Always Encrypted が有効なクライアント ドライバーで、古い値と新しい値の 2 つの暗号化を解除しなければならない場合があるからです。Another reason to clean up the old value before archiving or removing the old column master key, is performance-related: when querying an encrypted column, an Always Encrypted-enabled client driver might need to attempt to decrypt two values: the old value and the new one. ドライバーは、アプリケーションの環境で 2 つの列マスター キーのどちらが有効かを認識しません。このため、ドライバーは暗号化された値を両方ともサーバーから取得します。The driver does not know which of the two column master keys is valid in the application's environment so the driver will retrieve both encrypted values from the server. 使用できない列マスター キー (ストアから削除されている古い列マスター キーなど) で暗号化されていることにより一方の値の暗号化の解除が失敗すると、ドライバーは新しい列マスター キーを使用してもう一方の値の暗号化を解除しようとします。If decrypting one of the values fails, because it is protected with the column master key is that not available (e.g. it is the old column master key that has been removed from the store), the driver will attempt to decrypt another value using the new column master key.

警告

対応する列マスター キーがアプリケーションで使用できるようになる前に列暗号化キーの値を削除すると、データベース列をアプリケーションが暗号化解除できなくなります。If you remove the value of a column encryption key before its corresponding column master key has been made available to an application, the application will no longer be able to decrypt the database column.

  1. オブジェクト エクスプローラーで、[セキュリティ]、[Always Encrypted キー] フォルダーの順に移動し、交換する既存の列マスター キーを探します。Using Object Explorer, navigate to the Security>Always Encrypted Keys folder and locate the existing column master key you want to replace.
  2. 既存の列マスター キーを右クリックし、[クリーンアップ] を選択します。Right-click on your existing column master key and select Cleanup.
  3. 削除される列暗号化キーの値の一覧を確認します。Review the list of column encryption key values to be removed.
  4. [OK] をクリックします。Click OK.

SQL Server Management Studio では、 ALTER COLUMN ENCRYPTION KEY (Transact-SQL) ステートメントを発行して、古い列マスター キーで暗号化された列暗号化キーの暗号化された値を削除します。SQL Server Management Studio will issue ALTER COLUMN ENCRYPTION KEY (Transact-SQL) statements to drop encrypted values of column encryption keys that are encrypted with the old column master key.

ステップ 5:古い列マスター キーのメタデータを削除するStep 5: Delete metadata for your old column master key

データベースから古い列マスター キーの定義を削除する場合は、次の手順を使用します。If you choose to remove the definition of the old column master key from the database, use the below steps.

  1. オブジェクト エクスプローラー[セキュリティ]、[Always Encrypted キー]、[列マスター キー] フォルダーの順に移動し、データベースから削除する古い列マスター キーを探します。Using Object Explorer, navigate to the Security>Always Encrypted Keys>Column Master Keys folder and locate the old column master key to be removed from the database.
  2. 古い列マスター キーを右クリックし、[削除] を選択します Right-click on the old column master key and select Delete. ( DROP COLUMN MASTER KEY (Transact-SQL) ステートメントが生成および発行され、列マスター キーのメタデータが削除されます)。(This will generate and issue a DROP COLUMN MASTER KEY (Transact-SQL) statement to remove the column master key metadata.)
  3. [OK] をクリックします。Click OK.

注意

回転の後、古い列マスター キーは完全に削除しないを強くお勧めします。It is highly recommended you do not permanently delete the old column master key after the rotation. そこで、古い列マスター キーを現在のキー ストアに保存するか、セキュリティで保護された別の場所にアーカイブします。Instead, you should keep the old column master key in its current key store or archive it in another secure place. バックアップ ファイルからデータベースを復元して、新しい列マスター キーを構成する前の時点まで戻る場合は、古いキーでデータにアクセスする必要があります。If you restore your database from a backup file to a point in time before the new column master key was configured, you will need the old key to access the data.

アクセス許可Permissions

列マスター キーを回転するには、次のデータベース権限が必要です。Rotating a column master key requires the following database permissions:

  • ALTER ANY COLUMN MASTER KEY - 新しい列マスター キーのメタデータを作成し、古い列マスター キーのメタデータを削除するのに必要です。ALTER ANY COLUMN MASTER KEY - required to create metadata for the new column master key and deleting the metadata for the old column master key.
  • ALTER ANY COLUMN ENCRYPTION KEY - 列暗号化キーのメタデータを変更するのに必要です (新しい暗号化された値の追加)。ALTER ANY COLUMN ENCRYPTION KEY - required to modify column encryption key metadata (add new encrypted values).
  • VIEW ANY COLUMN MASTER KEY DEFINITION - 列マスター キーのメタデータにアクセスして読み取るのに必要です。VIEW ANY COLUMN MASTER KEY DEFINITION - required to access and read the metadata of the column master keys.
  • VIEW ANY COLUMN ENCRYPTION KEY DEFINITION - 列暗号化キーの列メタデータにアクセスして読み取るのに必要です。VIEW ANY COLUMN ENCRYPTION KEY DEFINITION - required to access and read the metadata of the column encryption keys.

また、キー ストアにある古い列マスター キーと新しい列マスター キーの両方にアクセスできることも必要です。You also need to be able to access both the old column master key and the new column master key in their key stores. キー ストアにアクセスして、列マスター キーを使用するには、キー ストアとキーの両方、またはそのいずれかに対する権限が必要な場合があります。To access a key store and use a column master key, you might require permissions on the key store or/and the key:

  • 証明書ストア – ローカル コンピューター - 列マスター キーとして使用される証明書への読み取りアクセス権を持っているか、コンピューターの管理者である必要があります。Certificate Store - Local computer - you must have Read access to the certificate that is used a column master key, or be the administrator on the computer.
  • Azure Key Vault - 列マスター キーが格納されている資格情報コンテナーに対する creategetunwrapKeywrapKeysign、および verify 権限が必要です。Azure Key Vault - you need the create, get, unwrapKey, wrapKey, sign, and verify permissions on the vault containing the column master key(s).
  • キー ストア プロバイダー (CNG) - キー ストアまたはキーを使用する際には、ストアと KSP の構成に応じて、必要な権限と資格情報を入力するよう求められる場合があります。Key Store Provider (CNG) - you might be prompted for the required permission and credentials when using a key store or a key, depending on the store and the KSP configuration.
  • 暗号化サービス プロバイダー (CAPI) - キー ストアまたはキーを使用する際には、ストアと CSP の構成に応じて、必要な権限と資格情報を入力するよう求められる場合があります。Cryptographic Service Provider (CAPI) - you might be prompted for the required permission and credentials when using a key store or a key, depending on the store and the CSP configuration.

詳細については、 列マスター キーの作成と格納 (Always Encrypted) を参照してください。For more information, see Create and Store Column Master Keys (Always Encrypted).

列暗号化キーの回転Rotating Column Encryption Keys

列暗号化キーを回転するには、回転するキーで暗号化されたすべての列のデータを暗号化解除し、新しい列暗号化キーを使用してデータを再度暗号化する必要があります。Rotating a column encryption key involves decrypting the data in all columns that are encrypted with the key to be rotated out, and re-encrypting the data using the new column encryption key.

注意

回転するキーで暗号化された列を含むテーブルが大きい場合、列暗号化キーの回転には長い時間がかかることがあります。Rotating a column encryption key can take a very long time if the tables containing columns encrypted with the key being rotated are large. データが再暗号化されている間、アプリケーションは影響を受けるテーブルへの書き込みを行うことができません。While the data is being re-encrypted, your applications cannot write to the impacted tables. したがって、組織で列暗号化キーを回転する場合は、慎重に計画を立てる必要があります。Therefore, your organization needs to plan a column encryption key rotation very carefully. 列暗号化キーを回転するには、Always Encrypted ウィザードを使用します。To rotate a column encryption key, use the Always Encrypted Wizard.

  1. データベースのウィザードを開きます。それには、データベースを右クリックして [タスク] をポイントし、 [列の暗号化] をクリックします。Open the wizard for your database: right-click your database, point to Tasks, and then click Encrypt Columns.
  2. [概要] ページの内容を確認し、 [次へ] をクリックします。Review the Introduction page, and then click Next.
  3. [列の選択] ページで、テーブルを展開し、古い列暗号化キーで現在暗号化されている列で、置換する列をすべて特定します。On the Column Selection page, expand the tables and locate all columns you want to replace that are currently encrypted with the old column encryption key.
  4. 古い列暗号化キーで暗号化されたそれぞれの列について、 [暗号化キー] を新しい自動生成キーに設定します。For each column encrypted with the old column encryption key, set Encryption Key to a new auto-generated key. 注: あるいは、ウィザードを実行する前に、新しい列暗号化キーを作成しておくこともできます。前述の「列暗号化キーのプロビジョニング」セクションを参照してください。Note: Alternatively, you can create a new column encryption key before running the wizard - see the Provisioning Column Encryption Keys section above.
  5. [マスター キーの構成] ページで、新しいキーを格納する場所を選択し、マスター キー ソースを選択し、 [次へ] をクリックします。On the Master Key Configuration page, select a location to store the new key, and select a master key source, and then click Next. 注: 既存の列暗号化キーを使用する (自動生成されたものではなく) 場合、このページで実行するアクションはありません。Note: If you are using an existing column encryption key (not an auto-generated one), there is no action to perform on this page.
  6. [検証] ページで、スクリプトをすぐに実行するか PowerShell スクリプトを作成するかを選択し、 [次へ] をクリックします。On the Validation page, choose whether to run the script immediately or create a PowerShell script, and then click Next.
  7. [概要] ページで、選択したオプションを確認し、完了したら [完了] をクリックしてウィザードを閉じます。On the Summary page, review the options you have selected, and then click Finish and close the wizard when completed.
  8. オブジェクト エクスプローラー[セキュリティ]、[Always Encrypted キー]、[列暗号化キー] フォルダーの順に移動し、データベースから削除する古い列暗号化キーを探します。Using Object Explorer, navigate to the Security/Always Encrypted Keys/Column Encryption Keys folder and locate your old column encryption key, to be removed from the database. キーを右クリックし、 [削除] をクリックします。Right-click on the key and select Delete.

アクセス許可Permissions

列暗号化キーを回転するために必要なデータベース権限:ALTER ANY COLUMN MASTER KEY - 新しい自動生成の列暗号化キーを使用する場合に必要です (新しい列マスター キーとその新しいメタデータも生成されます)。Rotating a column encryption key requires the following database permissions: ALTER ANY COLUMN MASTER KEY - required if you use a new auto-generated column encryption key (a new column master key and its new metadata will also be generated). ALTER ANY COLUMN ENCRYPTION KEY - 新しい列暗号化キーのメタデータを追加するのに必要です。ALTER ANY COLUMN ENCRYPTION KEY -required to add metadata for the new column encryption key. VIEW ANY COLUMN MASTER KEY DEFINITION - 列マスター キーのメタデータにアクセスして読み取るのに必要です。VIEW ANY COLUMN MASTER KEY DEFINITION - required to access and read the metadata of the column master keys. VIEW ANY COLUMN ENCRYPTION KEY DEFINITION - 列暗号化キーの列メタデータにアクセスして読み取るのに必要です。VIEW ANY COLUMN ENCRYPTION KEY DEFINITION - required to access and read the metadata of the column encryption keys.

また、新しい列暗号化キーと古い列暗号化キーの両方の列マスター キーにアクセスできることも必要です。You also need to be able to access column master keys for both the new and the old column encryption key. キー ストアにアクセスして、列マスター キーを使用するには、キー ストアとキーの両方、またはそのいずれかに対する権限が必要な場合があります。To access a key store and use a column master key, you might require permissions on the key store or/and the key:

  • 証明書ストア – ローカル コンピューター - 列マスター キーとして使用される証明書への読み取りアクセス権を持っているか、コンピューターの管理者である必要があります。Certificate Store - Local computer - you must have the Read access to the certificate that is used a column master key, or be the administrator on the computer.
  • Azure Key Vault - 列マスター キーが格納されている資格情報コンテナーに対する get、unwrapKey、および verify の権限が必要です。Azure Key Vault - you need the get, unwrapKey, and verify permissions on the vault containing the column master key.
  • キー ストア プロバイダー (CNG) - キー ストアまたはキーを使用する際には、ストアと KSP の構成に応じて、必要な権限と資格情報を入力するよう求められる場合があります。Key Store Provider (CNG) - you might be prompted for the required permission and credentials when using a key store or a key, depending on the store and the KSP configuration.
  • 暗号化サービス プロバイダー (CAPI) - キー ストアまたはキーを使用する際には、ストアと CSP の構成に応じて、必要な権限と資格情報を入力するよう求められる場合があります。Cryptographic Service Provider (CAPI) - you might be prompted for the required permission and credentials when using a key store or a key, depending on the store and the CSP configuration.

詳細については、 列マスター キーの作成と格納 (Always Encrypted) を参照してください。For more information, see Create and Store Column Master Keys (Always Encrypted).

データベースまたは DACPAC で Always Encrypted が使用されている場合に DAC アップグレード操作を実行するPerforming DAC Upgrade Operations when Database or DACPAC uses Always Encrypted

DAC 操作 は、暗号化された列がスキーマに含まれている DACPAC ファイルとデータベースに対してサポートされています。DAC operations are supported on DACPAC files and databases with schemas containing encrypted columns. DAC のアップグレード操作には、特別な考慮事項が適用されます。SSMS など、さまざまなツールで DAC のアップグレード操作を実行する方法については、「データ層アプリケーションのアップグレード」を参照してください。Special considerations apply to the DAC upgrade operation - see Upgrade a Data-tier Application on how to perform a DAC upgrade operation in various tools, including SSMS.

DACPAC を使用してデータベースをアップグレードする場合、DACPAC またはターゲット データベースのいずれかに暗号化された列が含まれていると、次の条件がすべて満たされた場合に、アップグレード操作によってデータの暗号化操作をトリガーします。When you upgrade a database using a DACPAC and either the DACPAC or the target database has encrypted columns, the upgrade operation will trigger a data encryption operation if all of the following conditions are met:

  • データベースにデータを含む列が含まれています。The database contains a column with data.
  • DACPAC にも同じ列が存在します。The same column exists in the DACPAC.
  • データベース内の列の暗号化の構成が、DACPAC 内の対応する列の構成と異なります。The encryption configuration of the column in the database is different than the configuration the corresponding column in the DACPAC. 詳細については、次の表を参照してください。Please, see the below table for details.
条件Condition 操作Action
列は、DACPAC では暗号化され、データベースでは暗号化されていません。The column is encrypted in the DACPAC and it is not encrypted in the database. 列のデータは暗号化されます。The data in the column will be encrypted.
列は、DACPAC では暗号化されておらず、データベースでは暗号化されています。The column is not encrypted in the DACPAC and it is encrypted in the database. 列のデータは暗号化解除されます (列の暗号化は解除されます)。The data in the column will be decrypted (the encryption will be removed for the column).
DACPAC とデータベースの両方で列は暗号化されていますが、DACPAC の列で使用される暗号化の種類および/または列暗号化キーは、データベースの対応する列の場合と異なっています。The column is encrypted both in the DACPAC and the database, but the column in the DACPAC uses a different encryption type or/and a different column encryption key than the corresponding column in the database. 列のデータは暗号化解除され、DACPAC の暗号化の構成に一致するように再び暗号化されます。The data in the column will be decrypted and then re-encrypted to match the encryption configuration in the DACPAC.

注意

データベースまたは DACPAC の列に対して構成された列マスター キーが Azure Key Vault に格納されている場合は、Azure にサインインするように求められます (まだサインインしていない場合)。If the column master key configured for the column in the database or the DACPAC is stored in Azure Key Vault, you will be prompted to sign in to Azure (if you're not already signed in).

アクセス許可Permissions

DACPAC またはターゲット データベースで Always Encrypted がセットアップされている場合に DAC アップグレード操作を実行するには、DACPAC 内のスキーマとターゲット データベースのスキーマとの違いに応じて、次に示す権限の一部またはすべてが必要な場合があります。To perform a DAC upgrade operation if Always Encrypted is setup in the DACPAC or in the target database, you might need some or all of the below permissions, depending on the differences between the schema in the DACPAC and the target database schema.

ALTER ANY COLUMN MASTER KEYALTER ANY COLUMN ENCRYPTION KEYVIEW ANY COLUMN MASTER KEY DEFINITIONVIEW ANY COLUMN ENCRYPTION KEY DEFINITIONALTER ANY COLUMN MASTER KEY, ALTER ANY COLUMN ENCRYPTION KEY, VIEW ANY COLUMN MASTER KEY DEFINITION, VIEW ANY COLUMN ENCRYPTION KEY DEFINITION

アップグレード操作によってデータ暗号化操作がトリガーされる場合、影響を受ける列に対して構成された列マスター キーにアクセスできることも必要です。If the upgrade operation triggers a data encryption operation, you also need to be able to access column master keys configured for the impacted columns:

  • 証明書ストア – ローカル コンピューター - 列マスター キーとして使用される証明書への読み取りアクセス権を持っているか、コンピューターの管理者である必要があります。Certificate Store - Local computer - you must have Read access to the certificate that is used a column master key, or be the administrator on the computer.
  • Azure Key Vault - 列マスター キーが格納されている資格情報コンテナーに対する creategetunwrapKeywrapKeysign、および verify 権限が必要です。Azure Key Vault - you need the create, get, unwrapKey, wrapKey, sign, and verify permissions on the vault containing the column master key.
  • キー ストア プロバイダー (CNG) - キー ストアまたはキーを使用する際には、ストアと KSP の構成に応じて、必要な権限と資格情報を入力するよう求められる場合があります。Key Store Provider (CNG) - you might be prompted for the required permission and credentials when using a key store or a key, depending on the store and the KSP configuration.
  • 暗号化サービス プロバイダー (CAPI) - キー ストアまたはキーを使用する際には、ストアと CSP の構成に応じて、必要な権限と資格情報を入力するよう求められる場合があります。Cryptographic Service Provider (CAPI) - you might be prompted for the required permission and credentials when using a key store or a key, depending on the store and the CSP configuration.

詳細については、 列マスター キーの作成と格納 (Always Encrypted) を参照してください。For more information, see Create and Store Column Master Keys (Always Encrypted).

暗号化された列を含むデータベースを BACPAC を使用して移行するMigrating Databases with Encrypted Columns using BACPAC

データベースをエクスポートすると、暗号化された列に格納されているすべてのデータが取得され、結果として生成された BACPAC に入れられます (暗号化された形式で)。When you export a database, all data stored in encrypted columns are retrieved and put into the resulting BACPAC (in encrypted form). 生成された BACPAC には、Always Encrypted キーのメタデータも含まれます。The resulting BACPAC also contains the metadata for Always Encrypted keys.

BACPAC をデータベースにインポートすると、BACPAC からの暗号化されたデータがデータベースに読み込まれ、Always Encrypted キーのメタデータが再び作成されます。When you import the BACPAC into a database, the encrypted data from the BACPAC is loaded into the database and Always Encrypted key metadata is re-created.

ソース データベース (エクスポートしたデータベース) に格納されている暗号化されたデータを変更または取得するように構成されたアプリケーションがある場合、特別なことをしなくても、そのアプリケーションでターゲット データベース内の暗号化されたデータに対してクエリを実行することができます。これは両方のデータベースのキーが同じであるためです。If you have an application that is configured to modify or retrieve the encrypted data stored in the source database (the one you exported), you do not need to do anything special to enable the application to query the encrypted data in the target database, as the keys in both databases are the same.

アクセス許可Permissions

ソース データベースに対して ALTER ANY COLUMN MASTER KEY および ALTER ANY COLUMN ENCRYPTION KEY 権限が必要です。You need ALTER ANY COLUMN MASTER KEY and ALTER ANY COLUMN ENCRYPTION KEY on the source database. ターゲット データベースに対して ALTER ANY COLUMN MASTER KEYALTER ANY COLUMN ENCRYPTION KEYVIEW ANY COLUMN MASTER KEY DEFINITION、および VIEW ANY COLUMN ENCRYPTION 権限が必要です。You need ALTER ANY COLUMN MASTER KEY, ALTER ANY COLUMN ENCRYPTION KEY, VIEW ANY COLUMN MASTER KEY DEFINITION, and VIEW ANY COLUMN ENCRYPTION on the target database.

SQL Server インポートおよびエクスポート ウィザードを使用して暗号化された列を含むデータベースを移行するMigrating Databases with Encrypted Columns using SQL Server Import and Export Wizard

SQL Server インポートおよびエクスポート ウィザード を使用すると、BACPAC ファイルの場合に比べて、暗号化された列に格納されたデータをデータ移行中に処理する方法をより詳細に制御することができます。Compared to using BACPAC files, the SQL Server Import and Export Wizard gives you more control over how the data stored in encrypted columns are handled during the data migration.

  • データ ソースが Always Encrypted を使用したデータベースである場合は、データ ソース接続を構成して、エクスポート操作中に、暗号化された列に格納されたデータが暗号化解除されるようにすることも、暗号化されたまま維持されるようにすることもできます。If your data source is a database using Always Encrypted, you can configure your data source connection so that the data stored in encrypted columns is decrypted during the export operation, or remains encrypted.
  • データ ターゲットが Always Encrypted を使用したデータベースである場合は、暗号化された列をターゲットとするデータが暗号化解除されるようにデータ ターゲット接続を構成することができます。If your data target is a database using Always Encrypted, you can configure your data target connection so that the data targeting encrypted columns is encrypted.

暗号化解除 (データ ソースの場合) または暗号化 (データ ターゲットの場合) を有効にするには、 .Net Framework Data Provider for SqlServer を使用するようにデータ ソース/ターゲットを構成する必要があるほか、Column Encryption Setting 接続文字キーワードを Enabledに設定する必要があります。To enable decryption (for the data source) or encryption (for the data target), you need to configure your data source/target connection to use the .Net Framework Data Provider for SqlServer and you need to set the Column Encryption Setting connection string keywords to Enabled.

次の表では、考えられる移行シナリオを示し、さらに、これらのシナリオが Always Encrypted と共にデータ ソースとデータ ターゲットの接続構成にどのように関係するのかを説明します。The below table lists possible migration scenarios and how they relate to Always Encrypted along with the data source and data target configuration for each connection.

シナリオScenario ソース接続構成Source Connection Configuration ターゲット接続構成Target Connection Configuration
移行時にデータを暗号化する (データはデータ ソースにプレーンテキストとして保存されており、データ ターゲットの暗号化された列に移行されます)。Encrypt data on migration (the data is stored as plaintext in the data source, and is migrated to encrypted columns in the data target). データ プロバイダー/ドライバー: "任意"Data provider/driver: any

Column Encryption Setting = DisabledColumn Encryption Setting = Disabled

(.Net Framework Data Provider for SqlServer および .NET Framework 4.6 以降が使用される場合)(if .Net Framework Data Provider for SqlServer and .NET Framework 4.6 or later are used.)
データ プロバイダー/ドライバー: .Net Framework Data Provider for SqlServer (.NET Framework 4.6 以降が必要)Data provider/driver: .Net Framework Data Provider for SqlServer (.NET Framework 4.6 or later required)

Column Encryption Setting = EnabledColumn Encryption Setting = Enabled
移行時にデータを暗号化解除する (データは、データ ソースの暗号化された列に格納されており、プレーンテキストの形式でデータ ターゲットに移行されます。データ ターゲットがデータベースである場合、ターゲット列は暗号化されません)。Decrypt data on migration (the data is stored in encrypted columns in the data source, and it is migrated in plaintext to the data target; if the data target is a database, the target columns are not encrypted).

注: 暗号化された列を含むターゲット テーブルは、移行の前に存在する必要があります。Note: the target tables with encrypted columns must exist prior to the migration.
データ プロバイダー/ドライバー: .Net Framework Data Provider for SqlServer (.NET Framework 4.6 以降が必要)Data provider/driver: .Net Framework Data Provider for SqlServer (.NET Framework 4.6 or later required)

[追加のプロパティ]Column Encryption Setting=Enabled
データ プロバイダー/ドライバー: "任意"Data provider/driver: any

Column Encryption Setting = DisabledColumn Encryption Setting = Disabled

(.Net Framework Data Provider for SqlServer および .NET Framework 4.6 以降が使用される場合)(if .Net Framework Data Provider for SqlServer and .NET Framework 4.6 or later are used.)
移行時にデータを再暗号化する (データは、データ ソースの暗号化された列に格納されており、プレーンテキストの形式でデータ ターゲットに移行され、別種の暗号化の列暗号化キーを使用する列に格納されます)。Re-encrypt data on migration (the data is stored in encrypted columns in the data source, and it is migrated in plaintext to the data target to the columns that use different encryption types of column encryption keys).

注: 暗号化された列を含むターゲット テーブルは、移行の前に存在する必要があります。Note: the target tables with encrypted columns must exist prior to the migration.
データ プロバイダー/ドライバー: .Net Framework Data Provider for SqlServer (.NET Framework 4.6 以降が必要)Data provider/driver: .Net Framework Data Provider for SqlServer (.NET Framework 4.6 or later required)

[追加のプロパティ]Column Encryption Setting=Enabled
データ プロバイダー/ドライバー: .Net Framework Data Provider for SqlServer (.NET Framework 4.6 以降が必要)Data provider/driver: .Net Framework Data Provider for SqlServer (.NET Framework 4.6 or later required)

[追加のプロパティ]Column Encryption Setting=Enabled
暗号化を解除することなく、暗号化されたデータを移動します。Move encrypted data without decrypting it.

注: 暗号化された列を含むターゲット テーブルは、移行の前に存在する必要があります。Note: the target tables with encrypted columns must exist prior to the migration.
データ プロバイダー/ドライバー: "任意"Data provider/driver: any
Column Encryption Setting = DisabledColumn Encryption Setting = Disabled

(.Net Framework Data Provider for SqlServer および .NET Framework 4.6 以降が使用される場合)(if .Net Framework Data Provider for SqlServer and .NET Framework 4.6 or later are used.)
データ プロバイダー/ドライバー: "任意"Data provider/driver: any
Column Encryption Setting = DisabledColumn Encryption Setting = Disabled

(.Net Framework Data Provider for SqlServer および .NET Framework 4.6 以降が使用される場合)(if .Net Framework Data Provider for SqlServer and .NET Framework 4.6 or later are used.)

ユーザーは、ALLOW_ENCRYPTED_VALUE_MODIFICATIONS を ON に設定する必要があります。The user must have ALLOW_ENCRYPTED_VALUE_MODIFICATIONS set to ON.

詳細については、 Always Encrypted で保護された機微なデータの移行を参照してください。For details, see Migrate Sensitive Data Protected by Always Encrypted.

アクセス許可Permissions

データ ソースに格納されたデータを 暗号化 または 暗号化解除 するには、ソース データベースの VIEW ANY COLUMN MASTER KEY DEFINITION および VIEW ANY COLUMN ENCRYPTION KEY DEFINITION 権限が必要です。To encrypt or decrypt data stored in the data source, you need the VIEW ANY COLUMN MASTER KEY DEFINITION and VIEW ANY COLUMN ENCRYPTION KEY DEFINITION permissions in the source database.

暗号化または暗号化解除するデータを格納する列に対して構成された列マスター キーへのアクセス権も必要です。You also need access to column master keys, configured for the columns, storing data you are encrypted or decrypting:

  • 証明書ストア – ローカル コンピューター - 列マスター キーとして使用される証明書への読み取りアクセス権を持っているか、コンピューターの管理者である必要があります。Certificate Store - Local computer - you must have the Read access to the certificate that is used a column master key, or be the administrator on the computer.
  • Azure Key Vault - 列マスター キーが格納されている資格情報コンテナーに対して get、unwrapKey、wrapKey、sign、および verify の権限が必要です。Azure Key Vault - you need the get, unwrapKey, wrapKey, sign, and verify permissions on the vault containing the column master key.
  • キー ストア プロバイダー (CNG) - キー ストアまたはキーを使用する際に入力を求められる可能性がある必要な権限と資格情報は、ストアと KSP の構成によって異なります。Key Store Provider (CNG) - the required permission and credentials, you might be prompted for when using a key store or a key, depend on the store and the KSP configuration.
  • 暗号化サービス プロバイダー (CAPI) - キー ストアまたはキーを使用する際に入力を求められる可能性がある必要な権限と資格情報は、ストアと CSP の構成によって異なります。Cryptographic Service Provider (CAPI) - the required permission and credentials, you might be prompted for when using a key store or a key, depend on the store and the CSP configuration. 詳細については、 列マスター キーの作成と格納 (Always Encrypted) を参照してください。For more information, see Create and Store Column Master Keys (Always Encrypted).

参照See Also