Encrypt and Decrypt Fields

支持的管道类型:

  •  Data Collector

Encrypt and Decrypt Fields处理器对字段值进行加密或解密。

您可以使用处理器来加密记录中的一个或多个字段。您还可以使用该处理器解密由另一个Encrypt and Decrypt Fields处理器加密的一个或多个字段。您不能使用处理器同时执行加密和解密。当您要执行两个任务时,请使用额外的处理器。

Encrypt and Decrypt Fields处理器使用Amazon AWS Encryption SDK加密和解密字段。在对字段进行加密时,处理器会对数据密钥和所有其他加密详细信息进行加密,并将加密的详细信息与加密的数据一起存储。在解密字段时,处理器提取加密的数据密钥和其他详细信息,解密密钥,然后使用它来解密数据。

您可以将Amazon AWS Key Management Service(KMS)用作处理器的密钥提供者,或者可以在处理器配置属性中提供数据密钥。使用Amazon AWS KMS时,您可以指定KMS密钥Amazon资源名称(ARN)。您可以使用IAM角色或AWS访问密钥对来连接到Amazon AWS。使用用户提供的密钥时,您可以指定Base64编码的密钥,还可以选择配置密钥ID。

对于这两种密钥提供程序类型,您都指定要使用的密码套件和帧大小。加密数据时,可以选择定义加密上下文并配置数据密钥缓存。

注意:解密由Encrypt and Decrypt Fields处理器加密的字段时,您需要使用加密数据的处理器所使用的相同密钥提供者、密码套件以及任何其他详细信息,例如加密上下文。

有关AWS加密数据结构的信息,请参阅AWS Encryption SDK文档

支持的数据类型

在加密字段时,Encrypt and Decrypt Fields处理器会将字段的数据类型包括在加密数据中。解密同一字段时,处理器将字段恢复为其原始数据类型。

Encrypt and Decrypt Fields处理器可以加密或解密字符串或字节数组数据。因此,您可以使用处理器来加密或解密可以转换为字符串或字节数组的数据。

您可以使用Encrypt and Decrypt Fields处理器来加密或解密以下数据类型:

  • Boolean
  • Byte
  • Byte Array
  • Character
  • Date
  • Datetime
  • Decimal
  • Double
  • Float
  • Integer
  • Long
  • Short
  • String
  • Time
  • Zoned Datetime

密钥提供者

当使用Encrypt and Decrypt Fields处理器时,请为该阶段指定密钥提供者。

您可以使用Amazon AWS Key Management System(KMS)作为密钥提供者,也可以使用自己的用户提供的密钥:

亚马逊AWS KMS
使用AWS KMS服务提供的主密钥。
需要配置KMS密钥ARN属性以标识客户主密钥(CMK)的Amazon资源名称(ARN)。有关查找关键ARN的信息,请参阅AWS KMS文档。
您可以选择使用AWS Access Key ID和Secret Access Key连接到AWS。
用户提供的密钥
需要指定一个Base64编码的主密钥。

您可以使用凭证功能凭证功能来访问受支持的凭证存储区中的密钥。您还可以使用base64EncodeString()函数对函数返回的字符串进行编码。

编码密钥的长度必须与所选密码期望的长度匹配。例如,当使用256位(32字节)密码套件时,密钥的长度必须为32个字节。

您可以选择包括在加密数据时要使用的字符串密钥ID。

AWS凭证

当您使用Amazon AWS KMS作为密钥提供者时,Data Collector必须将凭证传递给AWS。

使用以下方法之一来传递AWS凭证:

IAM角色
当Data Collector 在Amazon EC2实例上运行时,您可以使用AWS管理控制台为EC2实例配置IAM角色。Data Collector使用IAM实例配置文件凭证自动连接到AWS。
要使用IAM角色,请不要配置“Access Key ID”和“Secret Access Key”属性
有关将IAM角色分配给EC2实例的更多信息,请参阅Amazon EC2文档。
AWS访问密钥对
Data Collector未在Amazon EC2实例上运行或EC2实例不具有IAM角色时,您必须配置“Access Key ID”和“Secret Access Key”属性。
提示:为了保护敏感信息,例如访问密钥对,可以使用运行时资源或凭据存储。

密码套件

使用Encrypt and Decrypt Fields处理器时,可以指定要使用的密码套件。处理器使用选定的密码套件来加密或解密数据。

处理器提供以下密码套件:

  • ALG_AES_256_GCM_IV12_TAG16_HKDF_SHA384_ECDSA_P384(默认)
  • ALG_AES_192_GCM_IV12_TAG16_HKDF_SHA384_ECDSA_P384

  • ALG_AES_128_GCM_IV12_TAG16_HKDF_SHA256_ECDSA_P256

  • ALG_AES_256_GCM_IV12_TAG16_HKDF_SHA256(无签名)

  • ALG_AES_192_GCM_IV12_TAG16_HKDF_SHA256(无签名)

  • ALG_AES_128_GCM_IV12_TAG16_HKDF_SHA256(无签名)

  • ALG_AES_256_GCM_IV12_TAG16_NO_KDF(不建议)

  • ALG_AES_192_GCM_IV12_TAG16_NO_KDF(不建议)

  • ALG_AES_128_GCM_IV12_TAG16_NO_KDF(不建议)

有关AWS Encryption SDK如何支持密码套件的概述,请参阅AWS Encryption SDK文档。该文档还提供了有关密码套件的更多详细信息。

加密上下文

您可以指定要包含在加密数据中的加密上下文。加密上下文,也称为附加身份验证数据(AAD),是加密并包含在加密数据中的密钥值对。

(可选)将加密上下文用作附加工具,以防止篡改加密数据。

当用于加密数据时,也需要加密上下文来解密数据。

数据密钥缓存

默认情况下,Encrypt and Decrypt Fields处理器会为每个加密操作生成一个新的数据密钥。在安全考虑允许的情况下,可以启用缓存和重用数据密钥以提高管道性能。

在启用数据密钥缓存之前,请考虑可能的安全后果。这篇AWS博客文章描述了一些要考虑的问题。有关数据密钥缓存如何工作的详细信息,请参阅AWS Encryption SDK文档。

启用数据密钥缓存时,可以配置以下属性:

  • Cache Capacity
  • Max Data Key Age
  • Records per Data Key
  • Bytes per Data Key

加密和解密记录

通过将记录序列化为单个字段,然后再将其传递给处理器,可以使用Encrypt and Decrypt Fields处理器来加密或解密整个记录。

您可以使用Data Generator处理器将记录序列化到记录的根字段。配置Data Generator处理器时,可以指定用于序列化记录的数据格式。使用基于文本的格式(例如JSON)来生成字符串字段,或者使用二进制格式(例如Avro)来生成字节数组字段。

配置Encrypt and Decrypt Fields处理器

配置Encrypt and Decrypt Fields处理器以加密或解密字段值。
  1. 在“Properties”面板的“General选项卡上,配置以下属性:
    一般属性 描述
    Name 阶段名。
    Description 可选说明。
    Required Fields 必须包含用于将记录传递到阶段的记录的数据的字段。

    提示:您可能包括阶段使用的字段。

    根据为管道配置的错误处理,处理不包括所有必填字段的记录。

    Preconditions 必须评估为TRUE的条件才能使记录进入处理阶段。单击 添加以创建其他前提条件。

    根据为该阶段配置的错误处理,处理不满足所有前提条件的记录。

    On Record Error 该阶段的错误记录处理:

    • Discard-放弃记录。
    • To Error-将记录发送到管道以进行错误处理。
    • Stop Pipeline-停止管道。对集群管道无效。
  2. 在“Action选项卡上,配置以下属性:
    动作属性 描述
    Mode 处理器执行的操作:对指定字段中的数据进行加密或解密。
    Fields 要加密的字段的字段路径。

    提示:要加密整个记录,可以在管道中的较早位置使用Data Generator处理器将记录序列化为单个字段。
  3. 在“Key Provider选项卡上,配置以下属性:
    密钥提供者属性 描述
    Master Key Provider 用于编码或解码数据的数据密钥提供者:

    • Amazon AWS KMS-使用Amazon AWS Key Management Service中的数据密钥。
    • 用户提供的密钥-使用Base64编码的用户提供的密钥。
    Cipher 用于编码或解码数据的密码套件:

    • ALG_AES_256_GCM_IV12_TAG16_HKDF_SHA384_ECDSA_P384(默认)
    • ALG_AES_192_GCM_IV12_TAG16_HKDF_SHA384_ECDSA_P384

    • ALG_AES_128_GCM_IV12_TAG16_HKDF_SHA256_ECDSA_P256

    • ALG_AES_256_GCM_IV12_TAG16_HKDF_SHA256(无签名)

    • ALG_AES_192_GCM_IV12_TAG16_HKDF_SHA256(无签名)

    • ALG_AES_128_GCM_IV12_TAG16_HKDF_SHA256(无签名)

    • ALG_AES_256_GCM_IV12_TAG16_NO_KDF(不建议)

    • ALG_AES_192_GCM_IV12_TAG16_NO_KDF(不建议)

    • ALG_AES_128_GCM_IV12_TAG16_NO_KDF(不建议)

    Frame Size 帧大小(以字节为单位)。用于将数据分为多个帧进行加密。

    要将数据分为多个帧,请指定要使用的帧大小。要使用单个帧,请输入0。

    默认值为4096。使用此默认值时,将在单个帧中加密少于4096字节的数据。

    Access Key ID

    AWS访问密钥ID。

    在将Amazon AWS KMS用作密钥提供者并且不将IAM角色与IAM实例配置文件凭证一起使用时,这是必需的。

    仅适用于Amazon AWS KMS密钥提供者。

    Secret Access Key AWS秘密访问密钥。

    使用Amazon AWS KMS作为密钥提供者并且不将IAM角色与IAM实例配置文件凭证一起使用时是必需的。

    仅适用于Amazon AWS KMS密钥提供者。

    KMS Key ARN KMS密钥的Amazon资源名称(ARN)。

    有关查找关键ARN的信息,请参阅AWS KMS文档。

    使用Amazon AWS KMS密钥提供程序时是必需的。

    Base64 Encoded Key 使用用户提供的密钥时要使用的Base64编码数据密钥。

    您可以使用凭证功能来访问受支持的凭证存储区中的密钥。您还可以使用base64EncodeString()函数对函数返回的字符串进行编码。

    编码密钥的长度必须与所选密码期望的长度匹配。例如,当使用256位(32字节)密码套件时,密钥的长度必须为32个字节。

    Key ID 使用用户提供的密钥时,除了Base64编码的密钥外,还将使用一个可选的密钥ID。

    使用字符串值。

    Encryption Context (AAD) 用作加密上下文的密钥值对,也称为其他经过身份验证的数据。
    Data Key Caching 启用缓存和重用数据密钥。在安全考虑允许的情况下,用于提高性能。
    Cache Capacity 要缓存在内存中的最大密钥数。
    Max Data Key Age 淘汰数据密钥之前可以使用数据密钥的最大秒数。
    Max Records per Data Key 淘汰数据密钥之前,数据密钥可以加密的最大字段数。
    Max Bytes per Data Key 淘汰数据密钥之前,数据密钥可用于加密的最大字节数。