ALTER COLUMN ENCRYPTION KEY (Transact-SQL)ALTER COLUMN ENCRYPTION KEY (Transact-SQL)

適用対象: ○SQL Server (2016 以降) ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2016) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

データベースでは、追加、または暗号化された値を削除する列の暗号化キーを変更します。Alters a column encryption key in a database, adding or dropping an encrypted value. CEK は、対応する列マスター キーのローテーションで最大 2 つの値を持つことができます。A CEK can have up to two values, which allows for the rotation of the corresponding column master key. CEK は、Always Encrypted (Database Engine) 機能を使って列を暗号化するときに使われます。A CEK is used when encrypting columns using the Always Encrypted (Database Engine) feature. CEK 値を追加する前を使用して、値の暗号化に使用された列のマスター_キーを定義する必要があります SQL Server Management StudioSQL Server Management Studio または CREATE MASTER KEY ステートメントです。Before adding a CEK value, you must define the column master key that was used to encrypt the value by using SQL Server Management StudioSQL Server Management Studio or the CREATE MASTER KEY statement.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

ALTER COLUMN ENCRYPTION KEY key_name   
    [ ADD | DROP ] VALUE   
    (  
        COLUMN_MASTER_KEY = column_master_key_name   
        [, ALGORITHM = 'algorithm_name' , ENCRYPTED_VALUE =  varbinary_literal ]   
    ) [;]  

引数Arguments

key_namekey_name
変更する列の暗号化キー。The column encryption key that you are changing.

column_master_key_namecolumn_master_key_name
列の暗号化キー (CEK) を暗号化するために使用される列マスター キー (CMK) の名前を指定します。Specifies the name of the column master key (CMK) used for encrypting the column encryption key (CEK).

algorithm_namealgorithm_name
値を暗号化するために使用する暗号化アルゴリズムの名前です。Name of the encryption algorithm used to encrypt the value. システム プロバイダーのアルゴリズムは、RSA_OAEP である必要があります。The algorithm for the system providers must be RSA_OAEP. 列の暗号化キーの値を削除するときに、この引数は有効ではありません。This argument is not valid when dropping a column encryption key value.

varbinary_literalvarbinary_literal
CEK BLOB は、暗号化キーを指定されたマスターで暗号化されます。The CEK BLOB encrypted with the specified master encryption key. 列の暗号化キーの値を削除するときに、この引数は有効ではありません。This argument is not valid when dropping a column encryption key value.

警告

ありませんプレーン テキスト CEK 値で渡す次のステートメント。Never pass plaintext CEK values in this statement. そうと、この機能のメリットを構成します。Doing so will comprise the benefit of this feature.

RemarksRemarks

通常、1 つだけの暗号化された値は、列の暗号化キーが作成されます。Typically, a column encryption key is created with just one encrypted value. 列のマスター_キーが必要な場合は、(現在列マスター_キーのニーズに新しい列のマスター_キーに置き換えられます) を回転する、列の暗号化キーの新しい値を追加する列の新しいマスター_キーで暗号化します。When a column master key needs to be rotated (the current column master key needs to be replaced with the new column master key), you can add a new value of the column encryption key, encrypted with the new column master key. このワークフローにより、クライアント アプリケーションが新しい列マスター キーを使用できるようになるまでの間、クライアント アプリケーションが列暗号化キーを使用して暗号化されたデータにアクセスできるようになります。This workflow allows you to ensure client applications can access data encrypted with the column encryption key, while the new column master key is being made available to client applications. 常に暗号化するには、新しいマスター_キーにアクセスできない、列の古いマスター_キーで暗号化された列の暗号化のキー値を使用して機密データにアクセスできるクライアント アプリケーションでのドライバーを有効になっています。An Always Encrypted enabled driver in a client application that does not have access to the new master key, will be able to use the column encryption key value encrypted with the old column master key to access sensitive data. 暗号化アルゴリズム、常に暗号化のサポートでは、256 ビットをプレーン テキストの値が必要です。The encryption algorithms, Always Encrypted supports, require the plaintext value to have 256 bits. 列のマスター キーを押しながらキー ストアをカプセル化するキー ストア プロバイダーを使用して、暗号化された値を生成する必要があります。An encrypted value should be generated using a key store provider that encapsulates the key store holding the column master key.

列マスター キーは、次の理由でローテーションされます。Column master keys are rotated for following reasons:

  • 法令に遵守するためにキーを定期的にローテーションする必要があります。Compliance regulations may require keys are periodically rotated.
  • 列マスター キーのセキュリティが侵害されたためにローテーションする必要があります。A column master key is compromised, and it needs to be rotated for security reasons.
  • サーバー側のセキュリティで保護されたエンクレーブと列の暗号化キーの共有を有効または無効にします。To enable or disable sharing column encryption keys with a secure enclave on the server side. たとえば、現在使用中の列マスター キーがエンクレーブ計算をサポートしていない場合 (ENCLAVE_COMPUTATIONS プロパティで定義されていない場合)、お使いの列マスター キーで暗号化されている列暗号化キーを使用して保護されている列でエンクレーブ計算を有効にしたい場合、ENCLAVE_COMPUTATIONS プロパティで列マスター キーを新しいキーと置き換える必要があります。For example, if your current column master key does not support enclave computations (has not been defined with the ENCLAVE_COMPUTATIONS property) and you want to enable enclave computations on columns protected with a column encryption key that your column master key encrypts, you need to replace the column master key with the new key with the ENCLAVE_COMPUTATIONS property. 詳細については、「セキュア エンクレーブを使用する Always Encrypted」を参照してください。For more information, see Always Encrypted with secure enclaves.

列暗号化キーについての情報を表示するには、sys.columns (Transact-SQL)sys.column_encryption_keys (Transact-SQL)sys.column_encryption_key_values (Transact-SQL) を使います。Use sys.columns (Transact-SQL), sys.column_encryption_keys (Transact-SQL) and sys.column_encryption_key_values (Transact-SQL) to view information about column encryption keys.

アクセス許可Permissions

データベースに対する ALTER ANY COLUMN ENCRYPTION KEY 権限が必要です。Requires ALTER ANY COLUMN ENCRYPTION KEY permission on the database.

使用例Examples

A.A. 列の暗号化キーの値を追加します。Adding a column encryption key value

次の例と呼ばれる列の暗号化キーを変更する MyCEKです。The following example alters a column encryption key called MyCEK.

ALTER COLUMN ENCRYPTION KEY MyCEK  
ADD VALUE  
(  
    COLUMN_MASTER_KEY = MyCMK2,   
    ALGORITHM = 'RSA_OAEP',   
    ENCRYPTED_VALUE = 0x016E000001630075007200720065006E00740075007300650072002F006D0079002F0064006500650063006200660034006100340031003000380034006200350033003200360066003200630062006200350030003600380065003900620061003000320030003600610037003800310066001DDA6134C3B73A90D349C8905782DD819B428162CF5B051639BA46EC69A7C8C8F81591A92C395711493B25DCBCCC57836E5B9F17A0713E840721D098F3F8E023ABCDFE2F6D8CC4339FC8F88630ED9EBADA5CA8EEAFA84164C1095B12AE161EABC1DF778C07F07D413AF1ED900F578FC00894BEE705EAC60F4A5090BBE09885D2EFE1C915F7B4C581D9CE3FDAB78ACF4829F85752E9FC985DEB8773889EE4A1945BD554724803A6F5DC0A2CD5EFE001ABED8D61E8449E4FAA9E4DD392DA8D292ECC6EB149E843E395CDE0F98D04940A28C4B05F747149B34A0BAEC04FFF3E304C84AF1FF81225E615B5F94E334378A0A888EF88F4E79F66CB377E3C21964AACB5049C08435FE84EEEF39D20A665C17E04898914A85B3DE23D56575EBC682D154F4F15C37723E04974DB370180A9A579BC84F6BC9B5E7C223E5CBEE721E57EE07EFDCC0A3257BBEBF9ADFFB00DBF7EF682EC1C4C47451438F90B4CF8DA709940F72CFDC91C6EB4E37B4ED7E2385B1FF71B28A1D2669FBEB18EA89F9D391D2FDDEA0ED362E6A591AC64EF4AE31CA8766C259ECB77D01A7F5C36B8418F91C1BEADDD4491C80F0016B66421B4B788C55127135DA2FA625FB7FD195FB40D90A6C67328602ECAF3EC4F5894BFD84A99EB4753BE0D22E0D4DE6A0ADFEDC80EB1B556749B4A8AD00E73B329C95827AB91C0256347E85E3C5FD6726D0E1FE82C925D3DF4A9  
);  
GO  
  

B.B. 列の暗号化キーの値を削除します。Dropping a column encryption key value

次の例と呼ばれる列の暗号化キーを変更する MyCEK 値を削除することによりします。The following example alters a column encryption key called MyCEK by dropping a value.

ALTER COLUMN ENCRYPTION KEY MyCEK  
DROP VALUE  
(  
    COLUMN_MASTER_KEY = MyCMK  
);  
GO  

参照See Also

CREATE COLUMN ENCRYPTION KEY (Transact-SQL) CREATE COLUMN ENCRYPTION KEY (Transact-SQL)
DROP COLUMN ENCRYPTION KEY (Transact-SQL) DROP COLUMN ENCRYPTION KEY (Transact-SQL)
CREATE COLUMN MASTER KEY (Transact-SQL) CREATE COLUMN MASTER KEY (Transact-SQL)
Always Encrypted (データベース エンジン) Always Encrypted (Database Engine)
sys.column_encryption_keys (Transact-SQL) sys.column_encryption_keys (Transact-SQL)
sys.column_encryption_key_values (Transact-SQL) sys.column_encryption_key_values (Transact-SQL)
sys.columns (Transact-SQL)sys.columns (Transact-SQL)