シークレット管理¶
Confluent Platform のシークレット機能を使用すると、パスワードや API トークンなどの機密情報を保管および管理できます。多くの場合、コンプライアンス要件により、機密データを平文としてファイルに保管しないことが求められます。この機密データには、構成パラメーター ssl.key.password
、ssl.keystore.password
、ssl.truststore.password
などのパスワードや、構成ファイル内の他の機密データなどが含まれます。シークレットは confluent secret コマンドで管理します。
confluent secret を実行すると、構成ファイルが変更され、シークレットプロバイダーから構成を取得するように構成解決システムに指示するコードが追加されます。暗号化されたシークレットを含む別ファイル(シークレットファイル)も作成されます。
シークレットでは "エンベロープ暗号化" が使用されます。これは、セキュアな手法で機密データを保護するための標準的な方法です。ユーザーが指定したマスターパスフレーズが、暗号化のソルト値とともに使用され、マスター暗号化キーが導出されます。このマスター暗号化キーは、個別のデータ暗号化キーを生成するために使用されます。
マスター暗号化キーとデータ暗号化キーは、構成ファイル内の機密データを暗号化するために使用されます。これらのキーは、後でサービスによって復号化できます。許可されていないユーザーが構成ファイルにアクセスしても、暗号化された値を見ることはできず、マスター暗号化キーが分からなければ復号化できません。
参考
シークレットの使用方法に関するチュートリアルについては、「チュートリアル: シークレットの保護」を参照してください。
制限¶
Confluent のシークレットは、以下のファイルの暗号化には使用できません。
JAAS ファイル。また、JAAS 構成で参照されているファイルを暗号化することもできません。ただし、プロパティファイル内で宣言されている JAAS 構成パラメーターは暗号化できます。詳細については、「JAAS 構成パラメーターの暗号化」の例を参照してください。
password.properties
ファイル(パスワードファイル内の認証情報を確認してユーザーを認証する Jetty PropertyFileLoginModule によって参照されます)zookeeper.properties
ファイル任意の librdkafka ベースのクライアント。librdkafka ベースのクライアントを暗号化するには、独自のソースライブラリ内にあるソリューションを使用する必要があります。
systemd の
override.conf
ファイル内のパスワード機密性の保持に Confluent CLI を使用する場合、暗号化するプロパティ値にバックスラッシュがエスケープされずに含まれていると、
Error: properties: Line xxx: invalid unicode literal
というエラーが発生します。xxx
はバックスラッシュのある行です。Confluent Platform 構成ファイルに値を入力するときや Confluent CLI を使用するときは、バックスラッシュ文字をエスケープする必要があります。たとえば、パスワードプロパティの値が
1\o/-r@c6pD
であり、有効なバックスラッシュ文字が含まれている場合、server.properties
ファイルには1\\o/-r@c6pD
として入力する必要があります。
クイックスタート¶
- 前提条件
- Confluent CLI をインストールしておく必要があります。
security.properties
ファイルを保管するためのディレクトリを作成します。以下に例を示します。mkdir /usr/secrets/
パスフレーズに基づいてマスター暗号化キーを生成します。
通常、パスフレーズはパスワードよりもずっと長く、単語を組み合わせた文字列として簡単に覚えることができます(
Data in motion
など)。パスフレーズは、コマンドラインから平文で指定するか、ファイルに保管することができます。ベストプラクティスは、このパスフレーズをファイルに入力してから CLI に渡すことです(--passphrase @<passphrase.txt>
として指定)。ファイルを使用することで、ログ履歴にパスフレーズがプレーンテキストで表示される状況を回避できます。シークレットファイルの保存場所として、ローカルホスト上の場所を選択します(Confluent Platform サービスの実行場所ではありません)。シークレットファイルには、マスター暗号化キー、データ暗号化キー、構成パラメーターの暗号化済みシークレットが、暗号化に使用された暗号などのメタデータとともに含まれています。
confluent secret master-key generate \ --local-secrets-file /usr/secrets/security.properties \ --passphrase @<passphrase.txt>
出力は以下のようになります。
Save the master key. It cannot be retrieved later. +------------+----------------------------------------------+ | Master Key | abC12DE+3fG45Hi67J8KlmnOpQr9s0Tuv+w1x2y3zab= | +------------+----------------------------------------------+
マスターキーを保存します。後で取得することはできません。
マスターキーを環境変数にエクスポートするか、bash スクリプトに追加します。
重要
環境変数が設定されていない場合、後続の confluent secret コマンドは失敗します。
export CONFLUENT_SECURITY_MASTER_KEY=abC12DE+3fG45Hi67J8KlmnOpQr9s0Tuv+w1x2y3zab=
指定された構成パラメーターを暗号化します。
このステップでは、
--config-file
で指定した構成ファイルに--config
で指定されているプロパティを暗号化します。プロパティ値が構成ファイルから読み取られ、暗号化されて、--local-secrets-file
で指定されているローカルシークレットファイルに書き込まれます。プロパティ値の代わりに、構成ファイルに指示を書き込むと、構成解決システムが実行時にシークレット値を取得できます。--remote-secrets-file
で指定したファイルパスは、構成の指示に書き込まれます。この値により、実行時に解決システムがシークレットファイルを検出できる場所が特定されます。シークレットコマンドを一元的に実行して、シークレットファイルを各ノードに配布する場合は、シークレットファイルの最終的なパスを--remote-secrets-file
に指定します。各ノードでシークレットコマンドを実行する場合、remote-secrets-file
の値は、--local-secrets-file
で指定されている場所に一致する必要があります。注釈
--local-secrets-file
フラグを使用して更新を指定すると、security.properties
ファイルが変更されます。--local-secrets-file
を指定する各ブローカーでは、security.properties
ファイルを別の場所に保管して、その場所を--remote-secrets-file
で指定することもできます。たとえば、ブローカーを暗号化する場合を考えます。
--local-secrets-file
では、Confluent CLI が暗号化パラメーターを追加または変更するファイルを指定します。これにより、security.properties
ファイルが変更されます。--remote-secrets-file
では、ブローカーが参照するsecurity.properties
ファイルの場所を指定します。
--config
フラグが指定されていない場合、文字列password
を含むプロパティはすべて、構成キーで暗号化されます。encrypt
を実行するときは、コンマを使用して複数のキーを指定します(例:--config "config.storage.replication.factor,config.storage.topic"
)。add
コマンドまたはupdate
コマンドを使用する場合には、このオプションを使用できません。次の例のコマンドを使用して、パラメーター
config.storage.replication.factor
およびconfig.storage.topic
を暗号化します。confluent secret file encrypt --config-file /etc/kafka/connect-distributed.properties \ --local-secrets-file /usr/secrets/security.properties \ --remote-secrets-file /usr/secrets/security.properties \ --config "config.storage.replication.factor,config.storage.topic"
security.properties
ファイルにも同様のエントリがあります。この例には、暗号化済みのconfig.storage.replication.factor
パラメーターが示されています。config.storage.replication.factor = ${securepass:/usr/secrets/security.properties:connect-distributed.properties/config.storage.replication.factor}
暗号化された構成パラメーターを復号化します。
confluent secret file decrypt \ --local-secrets-file /usr/secrets/security.properties \ --config-file /etc/kafka/connect-distributed.properties \ --output-file decrypt.txt
復号化されたパラメーターが表示されます。この例には、復号化済みの
ssl.key.password
パラメーターが示されています。config.storage.replication.factor=1
ちなみに
security.properties
ファイルの詳細については、「プロパティファイルリファレンス」を参照してください。
本稼働環境¶
このワークフローを実用化するには、オーケストレーションツールを拡張して、これを宛先のホストに配布します。これらのホストには、Kafka ブローカー、Connect ワーカー、Schema Registry インスタンス、ksqlDB サーバー、Control Center の他、パスワード暗号化を使用するあらゆるサービスが含まれます。confluent secret コマンドは、任意のシークレットディストリビューションモデルに合わせて柔軟に使用できます。シークレットの生成と構成の変更は、宛先の各ホストで直接行うことも、すべてを 1 つのホストで処理してから、シークレットデータを宛先のホストに配布することもできます。以下はシークレットデータを配布するタスクです。
- 構成ファイルがパスワードで保護されているすべてのホスト環境に、マスター暗号化キーをエクスポートします。
- シークレットファイルを配布: 作業中のローカルホストから宛先のホストの
/path/to/security.properties
に、シークレットファイル/path/to/security.properties
をコピーします。 - 必要な構成ファイルの変更を伝播: 構成パラメーターにシークレットのタプルが含まれるように、すべてのホストの構成ファイルをアップデートします。
使用例¶
confluent secret コマンドの使用例を以下に示します。
重要
Confluent CLI をインストールしておく必要があります。
ファイルからのリモート暗号化構成の追加¶
このコマンド では、新しい暗号化された構成パラメーター(--config
)を指定されたファイル(--config-file
)に追加します。暗号化されたシークレットは、ローカルシークレットファイル(--local-secrets-file
)に保管されます。
ちなみに
各構成パラメーターを改行文字で区切ることにより、キーと値のペアを複数指定できます(例: --config "ssl.keystore.password = sslPassword \n ssl.truststore.password = password"
)。config group.id
を含めて、キー/値ペアを含めなかった場合(空のリストを送信した場合)は、出力エラーが発生します。
confluent secret file add --config-file /etc/kafka/connect-distributed.properties \
--local-secrets-file /usr/secrets/security.properties \
--remote-secrets-file /usr/secrets/security.properties \
--config group.id=connect-cluster
このコマンドを実行した後、プロパティファイルは次のようになります。
group.id = ${securepass:/usr/secrets/security.properties:connect-distributed.properties/group.id}
シークレット構成でのプレフィックスの使用¶
シークレット config.providers
は、client.*
などのプレフィックスには伝播されません。このため、シークレットでプレフィックスを使用する場合は、config.providers
と config.providers.securepass.class
を指定する必要があります。
client.config.providers=securepass
client.config.providers.securepass.class=io.confluent.kafka.security.config.provider.SecurePassConfigProvider
Control Center
セキュアな Control Center インスタンスと通信する各コンポーネントには、プレフィックスによって固有の構成が設定されている必要があります。Confluent Control Center シークレット構成の config.providers
と config.providers.securepass.class
を構成する場合は、次のように指定します。
confluent.controlcenter.streams.client.config.providers=securepass
confluent.controlcenter.streams.client.config.providers.securepass.class=io.confluent.kafka.security.config.provider.SecurePassConfigProvider
Confluent Control Center が複数の Kafka クラスターと通信する場合は、次のように指定します。
confluent.controlcenter.kafka.<name>.client.config.providers=securepass
confluent.controlcenter.kafka.<name>.client.config.providers.securepass.class=io.confluent.kafka.security.config.provider.SecurePassConfigProvider
JAAS 構成パラメーターの暗号化¶
すべての Confluent Platform コンポーネントでは、組み込み JAAS 構成がサポートされており、これによって JAAS 構成を安全に指定できます。シークレットでも、組み込み JAAS 構成の使用がサポートされます。この構成方法により、シークレットの JAAS 構成のセキュリティレベルをより細かく設定できます。たとえば、組み込み JAAS 構成を使用する場合は、プロパティファイルを使用する場合のようにシークレットの JAAS 構成全体を暗号化するのではなく、パスワードのみを暗号化できます。この方法を使うと、シークレット構成の詳細はログに記録されますが、パスワードは記録されません。
シークレットでは、ブローカーの場合のような、実行時に渡される静的な JAAS の構成ファイルの使用がサポートされていません。
注釈
- ZooKeeper クライアントの JAAS 構成は、機密性の保持でサポートされていません。
- JAAS を暗号化するための Confluent CLI のシークレット暗号化コマンドを使用して、同じ JAAS 構成で複数のパスワードを暗号化することはできません。
JAAS 構成に対する操作を実行する前に、事前定義されたパスで構成キーを指定する必要があります(<entry name>/<LoginModule>/<key>
)。
以下は、プロパティファイル(kafka/server.properties
)内の JAAS 構成の例です。
sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required /
useKeyTab=false /
adminpassword=tempPass /
useTicketCache=true /
doNotPrompt=true;
注釈
adminpassword へのパスは、sasl.jaas.config/com.sun.security.auth.module.Krb5LoginModule/adminpassword
のように指定できます
シークレットの JAAS 構成を暗号化、追加、またはアップデートするための標準 CLI 構文は次のとおりです。
confluent secret file encrypt --config-file
--local-secrets-file
--remote-secrets-file
–-config
encrypt
は、実行する構成タスクに応じて add
または update
に置き換える必要があります。
この例では、シークレットの JAAS 構成でパスワードを暗号化するためのコマンドとオプションを示しています。
confluent secret file encrypt --config-file /etc/kafka/server.properties
--local-secrets-file /usr/secrets/security.properties
--remote-secrets-file /usr/secrets/security.properties
–-config sasl.jaas.config/com.sun.security.auth.module.Krb5LoginModule/adminpassword
この例では、パスワードを暗号化した新しいシークレットの JAAS 構成を追加するためのコマンドとオプションを示しています。
confluent secret file add --config-file /etc/kafka/server.properties
--local-secrets-file /usr/secrets/security.properties
--remote-secrets-file /usr/secrets/security.properties
–-config sasl.jaas.config/com.sun.security.auth.module.Krb5LoginModule/adminpassword
この例では、シークレットの JAAS 構成で暗号化されたパスワードをアップデートするためのコマンドとオプションを示しています。
confluent secret file update --config-file /etc/kafka/server.properties
--local-secrets-file /usr/secrets/security.properties
--remote-secrets-file /usr/secrets/security.properties
–-config sasl.jaas.config/com.sun.security.auth.module.Krb5LoginModule/adminpassword
前述のコマンドのいずれかを実行した後に表示される暗号化済みデータは、次のようになります。
_metadata.master_key.0.salt = 3B++ViaAMaSwOOnxYI2bbeCtvZXRV5mxEOfb2FO3DnU=
_metadata.symmetric_key.0.created_at = 2020-03-06 14:07:34.248521 -0700 MST m=+0.011810143
_metadata.symmetric_key.0.envvar = CONFLUENT_SECURITY_MASTER_KEY
_metadata.symmetric_key.0.length = 32
_metadata.symmetric_key.0.iterations = 1000
_metadata.symmetric_key.0.salt = 4aqTrl8kdnQdVbGwkbeQHUiLA235/RKGC8zOXTHwQaI=
_metadata.symmetric_key.0.enc = ENC[AES/CBC/PKCS5Padding,data:bP93/lcsQVY5tzh4NWvD9tWO/yyTGwdAEgYHwpUokjiomma7QoH8X/jhlB7zibGd,iv:A7zk7hBwuataNy+ToT346w==,type:str]
server.properties/sasl.jaas.config/com.sun.security.auth.module.Krb5LoginModule/adminpassword = ENC[AES/CBC/PKCS5Padding,data:KdjkpudhWKoVe+6G35OYDw==,iv:5MgMsMT1o8d1JlXE0966Bg==,type:str]
JSON 構成パラメーターの暗号化¶
シークレットでは、JSON 構成パラメーターの暗号化がサポートされます。
JSON 構成パラメーターに対する操作を実行する前に、構成キーを次のパスフォーマットで指定する必要があります。
{
"name": "security configuration",
"credentials": {
"password": "password",
"ssl.keystore.location": "/usr/ssl"
}
}
パスは、次のように ssl.keystore.password
に指定できます。
<entry-name>.<key> :
credentials.password
credentials.ssl\\.keystore\\.location
シークレットの JSON 構成を暗号化、追加、アップデート、または暗号化するための標準 CLI 構文は次のとおりです。
confluent secret file encrypt --config-file
--local-secrets-file
--remote-secrets-file
–-config
encrypt
は、実行する構成タスクに応じて add
、update
、または decrypt
に置き換える必要があります。
この例では、シークレットの JSON 構成でパスワードを暗号化するためのコマンドとオプションを示しています。
./confluent secret file encrypt
--config-file /etc/kafka/sample.json
--local-secrets-file /usr/secrets/security.properties
--remote-secrets-file /usr/secrets/security.properties
--config credentials.password
注釈
JSON 構成の --config
キーでは、パス構文を .
で区切る必要があります。
この例では、パスワードを暗号化した新しいシークレットの JSON 構成を追加するためのコマンドとオプションを示しています。
./confluent secret file add
--config-file /etc/kafka/sample.json
--local-secrets-file /usr/secrets/security.properties
--remote-secrets-file /usr/secrets/security.properties
--config credentials.password
この例では、シークレットの JSON 構成で暗号化されたパスワードをアップデートするためのコマンドとオプションを示しています。
./confluent secret file update
--config-file /etc/kafka/sample.json
--local-secrets-file /usr/secrets/security.properties
--remote-secrets-file /usr/secrets/security.properties
--config credentials.password
前述のコマンドを実行した後に表示される暗号化済みデータは、次のようになります。
_metadata.master_key.0.salt = 3B++ViaAMaSwOOnxYI2bbeCtvZXRV5mxEOfb2FO3DnU=
_metadata.symmetric_key.0.created_at = 2020-03-06 14:07:34.248521 -0700 MST m=+0.011810143
_metadata.symmetric_key.0.envvar = CONFLUENT_SECURITY_MASTER_KEY
_metadata.symmetric_key.0.length = 32
_metadata.symmetric_key.0.iterations = 1000
_metadata.symmetric_key.0.salt = 4aqTrl8kdnQdVbGwkbeQHUiLA235/RKGC8zOXTHwQaI=
_metadata.symmetric_key.0.enc = ENC[AES/CBC/PKCS5Padding,data:bP93/lcsQVY5tzh4NWvD9tWO/yyTGwdAEgYHwpUokjiomma7QoH8X/jhlB7zibGd,iv:A7zk7hBwuataNy+ToT346w==,type:str]
server.properties/sasl.jaas.config/com.sun.security.auth.module.Krb5LoginModule/adminpassword = ENC[AES/CBC/PKCS5Padding,data:KdjkpudhWKoVe+6G35OYDw==,iv:5MgMsMT1o8d1JlXE0966Bg==,type:str]
sample.json/credentials.password = ENC[AES/CBC/PKCS5Padding,data:4cCPvtf9Sgpf6amU358NDw==,iv:Aq/OmYfGIdbyw78LRe5gHQ==,type:str]
この例では、シークレットの JSON 構成でパスワードを復号化するためのコマンドとオプションを示しています。
./confluent secret file decrypt
--config-file /etc/kafka/sample.json
--local-secrets-file /usr/secrets/security.properties
--remote-secrets-file /usr/secrets/security.properties
--config credentials.password
キーのローテーション¶
キーは、単一のプロパティファイルを使用してローテーションすることを推奨します。
このコマンド は、マスターキーまたはデータキーをローテーションします。
マスターキー(
--master-key
)のローテーション: 新しいマスターキーを生成し、そのマスターキーでデータの再暗号化を行います。新しいマスターキーは、環境変数に保管されます。confluent secret file rotate --master-key \ --local-secrets-file /usr/secrets/security.properties \ -–passphrase @/User/bob/secret.properties --passphrase-new @/User/bob/secretNew.properties
データキー(
--data-key
)のローテーション: 新しいデータキーを生成し、そのデータキーでファイルの再暗号化を行います。confluent secret file rotate --data-key \ --local-secrets-file /usr/secrets/security.properties \ -–passphrase @/User/bob/secret.properties
Docker の構成¶
Confluent Platform のセキュリティを有効にする場合、シークレット(たとえば、認証情報、証明書、キータブ、Kerberos 構成)をコンテナーに渡す必要があります。イメージは、シークレットディレクトリで利用できる認証情報を使用してこれを処理します。シークレット用の Docker ボリュームはコンテナーによって指定されます。管理者は、必要なシークレットを含むホスト上のディレクトリに、そのボリュームをマッピングする必要があります。たとえば、ホストの /scripts/security
に securities.properties
ファイルがある場合、このディレクトリを Docker コンテナーの /secrets
にマウントするには、次のように指定します。
volumes:
- ./scripts/security:/secrets
Docker イメージで機密性の保持を構成するには、次の構成を手動で docker-compose.yml
ファイルに追加する必要があります。
CONFLUENT_SECURITY_MASTER_KEY: <your-master-key>
<COMPONENT>_CONFIG_PROVIDERS: "securepass"
<COMPONENT>_CONFIG_PROVIDERS_SECUREPASS_CLASS: "io.confluent.kafka.security.config.provider.SecurePassConfigProvider"
<COMPONENT>
は次のいずれかです。
KAFKA
KSQL
CONNECT
SCHEMA_REGISTRY
CONTROL_CENTER
Docker 構成オプションの詳細については、「Docker Configuration Parameters」を参照してください。
Kafka ブローカーの場合の構成は次のようになります。
CONFLUENT_SECURITY_MASTER_KEY: <your-master-key>
KAFKA_CONFIG_PROVIDERS: "securepass"
KAFKA_CONFIG_PROVIDERS_SECUREPASS_CLASS: "io.confluent.kafka.security.config.provider.SecurePassConfigProvider"
注釈
使用するシークレットごとに、その場所を指定する必要があります。たとえば、sasl.jaas.config
ファイル内のセキュアシークレットを使用する場合、シークレットファイルが Docker コンテナーのパス /secrets/security.properties
にボリュームマウントされていて、そのファイル内の server.properties/sasl.jass.config
キーを使用するには、以下の構成を使用します。ここに示されているように、docker-compose.yml
ファイルでは $
文字を $$
としてエスケープする必要があることに注意してください。
KAFKA_SASL_JAAS_CONFIG: $${securepass:/secrets/security.properties:server.properties/sasl.jass.config}
コマンドのスクリプト化¶
stdin を使用するかファイルから読み込むことで、コマンドをスクリプト化できます。
- stdin からパイプするには、ダッシュ(
-
)を使用します(例:--passphrase -
)。 - ファイルから読み込むには、
@<path-to-file>
を使用します(例:--passphrase @/User/bob/secret.properties
)。
confluent secret master-key generate \
--local-secrets-file /usr/demo/security.properties \
--passphrase @/Users/user.name/tmp/demo/masterkey.properties
echo -e "demoMasterKey" | confluent secret master-key generate --local-secrets-file
/usr/demo/security.properties --passphrase -
破損したマスターキーの修正¶
マスターキーが破損した場合または紛失した場合は、プロパティファイル内で新しいパスワード(例: ssl.keystore.password
)を作成し、暗号化された構成パラメーターに対する新しいマスターキーを生成する必要があります。次の例では、/etc/kafka/server.properties
ファイルで ssl.keystore.password
をアップデートします。
プロパティファイル内で新しいパスワードを作成します。
ssl.keystore.password=mynewpassword
新しいマスターキーを生成します。
confluent secret master-key generate \ --local-secrets-file <path-to-file>/security.properties \ --passphrase @/User/bob/secret.properties
新しいマスターキーで構成を暗号化します。
confluent secret file encrypt --config-file /etc/kafka/server.properties \ --local-secrets-file <path-to-file>/security.properties \ --remote-secrets-file <path-to-file> \ --config ssl.keystore.password
プロパティファイルリファレンス¶
security.properties
の内容は次のようになっています。
1_metadata.master_key.0.salt = HfCqzb0CSXSo/mEx2Oc0lUqY5hP3vGa/SayR5wxQogI=
2_metadata.symmetric_key.0.created_at = 2019-07-16 16:36:05.480926 -0700 PDT m=+0.006733395
3_metadata.symmetric_key.0.envvar = CONFLUENT_SECURITY_MASTER_KEY
4_metadata.symmetric_key.0.length = 32
5_metadata.symmetric_key.0.iterations = 1000
6_metadata.symmetric_key.0.salt = hCC00OJG2VzhHhLMB6hZSuE9KBKutMK8BxFhq8OUirg=
7_metadata.symmetric_key.0.enc = ENC[AES/CBC/PKCS5Padding,data:TDSUb8f6IzUtgAffkQ8jZ55QU1sn+OTbvr2+FzX1bkjnrV4d6uwqtsTxzltiG8nO,iv:1ieTVqWxOC06rDcO9XQuOQ==,type:str]
8server.properties/ssl.keystore.password = ENC[AES/CBC/PKCS5Padding,data:jOGowFcgq4q1MqcJEGWCsg==,iv:3iqk+FJAbnW7MOYEiPkyFA==,type:str]
- 行 1:
_metadata.master_key.0.salt
は、マスターキーの生成に使用されたソルトです。 - 行 2:
_metadata.symmetric_key.0.created_at
は、データキーが作成されたときのタイムスタンプです。 - 行 3:
_metadata.symmetric_key.0.envvar
は、マスターキー環境変数です。 - 行 4:
_metadata.symmetric_key.0.length
は、データキーの長さ(単位: バイト)です。 - 行 5:
_metadata.symmetric_key.0.iterations
は、暗号化に使用された反復回数です。 - 行 6:
_metadata.symmetric_key.0.salt
は、データキーの生成に使用されたソルトです。 - 行 7:
_metadata.symmetric_key.0.enc
は、マスターキーを使用してキー:値フォーマットでラップされたデータキーです。その内容は、ENC[<アルゴリズム>,data:<データ>:,iv:<初期化ベクター>,type:<型>]
です。使用されるアルゴリズムのフォーマットは次のとおりです。- 対称暗号化アルゴリズム: Advanced Encryption Standard(AES)
- 暗号化モード: Cipher block chaining(CBC)
- パディング方式: PKCS5Padding