BigQuery 向けの GoogleSQL では、AES-SIV を使用して BigQuery と Cloud Data Loss Prevention(Cloud DLP) の間で相互運用性のある暗号化と復号を可能にする次の DLP 関数がサポートされています。
関数リスト
名前 | 概要 |
---|---|
DLP_DETERMINISTIC_ENCRYPT
|
DLP 互換のアルゴリズムでデータを暗号化します。 |
DLP_DETERMINISTIC_DECRYPT
|
DLP で暗号化されたデータを復号します。 |
DLP_KEY_CHAIN
|
Cloud Key Management Service でラップされるデータ暗号鍵を取得します。 |
DLP_DETERMINISTIC_ENCRYPT
DLP_DETERMINISTIC_ENCRYPT(key, plaintext, context)
DLP_DETERMINISTIC_ENCRYPT(key, plaintext, context, surrogate)
説明
この関数は、key
と context
からデータ暗号鍵を取得し、plaintext
を暗号化します。必要に応じて、surrogate
を使用して暗号化結果を先頭に追加できます。
定義
key
:DLP_KEY_CHAIN
によって返される、シリアル化されたBYTES
値。Cloud KMS では、key
をENABLED
に設定する必要があります。ラップされた鍵を生成する方法については、gcloud kms encrypt をご覧ください。plaintext
: 暗号化するSTRING
値。context
: ユーザー指定のSTRING
値。データ暗号鍵を取得するために Cloud KMS 鍵とともに使用されます。詳細については、CryptoDeterministicConfig:context をご覧ください。surrogate
: 出力の先頭に追加できるSTRING
値。
戻りデータの型
STRING
例
SELECT
DLP_DETERMINISTIC_ENCRYPT(
DLP_KEY_CHAIN(
'gcp-kms://projects/my_project/locations/us-central1/keyRings/keyringtest/cryptoKeys/testkey',
b'\123\044\290\876....'),
plaintext,
'',
'test') AS results
/*--------------------------------------*
| results |
+--------------------------------------+
| AXDEwUnZsTf/NzxoHaC8AZXcawWuma7L39A= |
*--------------------------------------*/
DLP_DETERMINISTIC_DECRYPT
DLP_DETERMINISTIC_DECRYPT(key, ciphertext, context)
DLP_DETERMINISTIC_DECRYPT(key, ciphertext, context, surrogate)
説明
この関数は、key
と context
から導出された暗号鍵を使用して ciphertext
を復号します。必要に応じて、surrogate
を使用して復号結果を先頭に追加できます。
定義
key
:DLP_KEY_CHAIN
が返すシリアル化されたBYTES
値。Cloud KMS では、key
をENABLED
に設定する必要があります。ラップされた鍵を生成する方法については、gcloud kms encrypt をご覧ください。ciphertext
: 復号するSTRING
の値。context
: データ暗号鍵を導出するために Cloud KMS 鍵とともに使用されるSTRING
値。詳細については、CryptoDeterministicConfig:context をご覧ください。surrogate
: 出力の先頭に追加できるSTRING
値。
戻りデータの型
STRING
例
SELECT
DLP_DETERMINISTIC_DECRYPT(
DLP_KEY_CHAIN(
'gcp-kms://projects/myproject/locations/us-central1/keyRings/keyringtest/cryptoKeys/testkey',
b'\123\044\290\876....'),
'your_surrogate(36)AdFnA6r5doSDWxPwW/W4vBaa4iOvDagC8z8=',
'',
'your_surrogate') AS results
/*-----------*
| results |
+-----------+
| plaintext |
*-----------*/
DLP_KEY_CHAIN
DLP_KEY_CHAIN(kms_resource_name, wrapped_key)
説明
DLP の決定的暗号化関数の key
引数の代わりに、この関数を使用できます。この関数では、クエリに plaintext
鍵を含めずに AES-SIV 暗号化関数を使用できます。
定義
kms_resource_name
: Cloud KMS 鍵へのリソースパスを含むSTRING
リテラル。kms_resource_name
をNULL
にはできません。この関数が実行されるのと同じ Cloud リージョンに存在する必要があります。この引数は、DLP_DETERMINISTIC_DECRYPT
関数とDLP_DETERMINISTIC_ENCRYPT
関数でデータ暗号鍵を導出するために使用されます。Cloud KMS 鍵は次のようになります。gcp-kms://projects/my-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-crypto-key
wrapped_key
: ユーザーが選択したシークレット テキストを表すBYTES
リテラル。このシークレット テキストは 16、24、32 バイトにできます。ラップされた鍵を生成する方法については、gcloud kms encrypt をご覧ください。
戻りデータの型
STRUCT
例
SELECT
DLP_DETERMINISTIC_ENCRYPT(
DLP_KEY_CHAIN(
'gcp-kms://projects/my_project/locations/us-central1/keyRings/keyringtest/cryptoKeys/testkey',
b'\123\044\290\876....'),
plaintext,
'',
'test') AS results
/*--------------------------------------*
| results |
+--------------------------------------+
| AXDEwUnZsTf/NzxoHaC8AZXcawWuma7L39A= |
*--------------------------------------*/