This is an automated email from the ASF dual-hosted git repository.
wanghailin pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new 663b278559 [Doc][Improvement] Add Support Chinese for
Config-Encryption-Decryption.md (#6715)
663b278559 is described below
commit 663b278559a6fc6535099ac02346c4efad9c2209
Author: zuo <[email protected]>
AuthorDate: Tue Apr 16 18:26:48 2024 +0800
[Doc][Improvement] Add Support Chinese for Config-Encryption-Decryption.md
(#6715)
---
.../connector-v2/Config-Encryption-Decryption.md | 181 +++++++++++++++++++++
1 file changed, 181 insertions(+)
diff --git a/docs/zh/connector-v2/Config-Encryption-Decryption.md
b/docs/zh/connector-v2/Config-Encryption-Decryption.md
new file mode 100644
index 0000000000..e7b13aea86
--- /dev/null
+++ b/docs/zh/connector-v2/Config-Encryption-Decryption.md
@@ -0,0 +1,181 @@
+# 配置文件加密和解密
+
+## 介绍
+
+在大多数生产环境中,需要对敏感的配置项(如密码)进行加密,不能以明文形式存储。SeaTunnel 为此提供了一个方便的一站式解决方案。
+
+## 如何使用
+
+SeaTunnel 具备Base64编码和解码的功能,但不建议在生产环境中使用,SeaTunnel
建议用户根据自身需求,实现个性化的加密和解密逻辑。您可以参考本章节[如何实现用户自定义的加密和解密](#如何实现用户自定义的加密和解密)以获取更多相关细节。
+
+Base64编码支持加密以下参数:
+- username
+- password
+- auth
+
+接下来,将展示如何快速使用 SeaTunnel 自带的 `base64` 加密功能:
+
+1. 在配置文件的环境变量(env)部分新增了一个选项 `shade.identifier`。此选项用于表示您想要使用的加密方法。
+2. 在这个示例中,我们在配置文件中添加了 `shade.identifier = base64`,如下所示:
+
+ ```hocon
+ #
+ # Licensed to the Apache Software Foundation (ASF) under one or more
+ # contributor license agreements. See the NOTICE file distributed with
+ # this work for additional information regarding copyright ownership.
+ # The ASF licenses this file to You under the Apache License, Version 2.0
+ # (the "License"); you may not use this file except in compliance with
+ # the License. You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ #
+
+ env {
+ parallelism = 1
+ shade.identifier = "base64"
+ }
+
+ source {
+ MySQL-CDC {
+ result_table_name = "fake"
+ parallelism = 1
+ server-id = 5656
+ port = 56725
+ hostname = "127.0.0.1"
+ username = "seatunnel"
+ password = "seatunnel_password"
+ database-name = "inventory_vwyw0n"
+ table-name = "products"
+ base-url = "jdbc:mysql://localhost:56725"
+ }
+ }
+
+ transform {
+ }
+
+ sink {
+ # 将数据输出到 Clickhouse。
+ Clickhouse {
+ host = "localhost:8123"
+ database = "default"
+ table = "fake_all"
+ username = "seatunnel"
+ password = "seatunnel_password"
+
+ # cdc options
+ primary_key = "id"
+ support_upsert = true
+ }
+ }
+ ```
+3. 通过Shell脚本调用不同的计算引擎来对配置文件进行加密操作。在本示例中,我们使用 Zeta 引擎对配置文件进行加密。
+
+ ```shell
+ ${SEATUNNEL_HOME}/bin/seatunnel.sh --config config/v2.batch.template
--encrypt
+ ```
+
+ 然后,您可以在终端中看到加密后的配置文件。
+
+ ```log
+ 2023-02-20 17:50:58,319 INFO
org.apache.seatunnel.core.starter.command.ConfEncryptCommand - Encrypt config:
+ {
+ "env" : {
+ "parallelism" : 1,
+ "shade.identifier" : "base64"
+ },
+ "source" : [
+ {
+ "base-url" : "jdbc:mysql://localhost:56725",
+ "hostname" : "127.0.0.1",
+ "password" : "c2VhdHVubmVsX3Bhc3N3b3Jk",
+ "port" : 56725,
+ "database-name" : "inventory_vwyw0n",
+ "parallelism" : 1,
+ "result_table_name" : "fake",
+ "table-name" : "products",
+ "plugin_name" : "MySQL-CDC",
+ "server-id" : 5656,
+ "username" : "c2VhdHVubmVs"
+ }
+ ],
+ "transform" : [],
+ "sink" : [
+ {
+ "database" : "default",
+ "password" : "c2VhdHVubmVsX3Bhc3N3b3Jk",
+ "support_upsert" : true,
+ "host" : "localhost:8123",
+ "plugin_name" : "Clickhouse",
+ "primary_key" : "id",
+ "table" : "fake_all",
+ "username" : "c2VhdHVubmVs"
+ }
+ ]
+ }
+ ```
+4. 当然,不仅支持加密配置文件,还支持对配置文件的解密。如果用户想要查看解密后的配置文件,可以执行以下命令:
+
+ ```shell
+ ${SEATUNNEL_HOME}/bin/seatunnel.sh --config config/v2.batch.template
--decrypt
+ ```
+
+## 如何实现用户自定义的加密和解密
+
+如果您希望自定义加密方法和加密配置,本章节将帮助您解决问题。
+
+1. 创建一个 java maven 项目
+
+2. 在 maven 依赖中添加 `seatunnel-api` 模块,如下所示:
+
+ ```xml
+ <dependency>
+ <groupId>org.apache.seatunnel</groupId>
+ <artifactId>seatunnel-api</artifactId>
+ <version>${seatunnel.version}</version>
+ </dependency>
+ ```
+3. 创建一个 java 类并实现 `ConfigShade` 接口,该接口包含以下方法:
+
+ ```java
+ /**
+ * The interface that provides the ability to encrypt and decrypt {@link
+ * org.apache.seatunnel.shade.com.typesafe.config.Config}
+ */
+ public interface ConfigShade {
+
+ /**
+ * The unique identifier of the current interface, used it to select
the correct {@link
+ * ConfigShade}
+ */
+ String getIdentifier();
+
+ /**
+ * Encrypt the content
+ *
+ * @param content The content to encrypt
+ */
+ String encrypt(String content);
+
+ /**
+ * Decrypt the content
+ *
+ * @param content The content to decrypt
+ */
+ String decrypt(String content);
+
+ /** To expand the options that user want to encrypt */
+ default String[] sensitiveOptions() {
+ return new String[0];
+ }
+ }
+ ```
+4. 在 `resources/META-INF/services` 目录下添加
`org.apache.seatunnel.api.configuration.ConfigShade`
+5. 将其打成 jar 包, 并添加到 `${SEATUNNEL_HOME}/lib` 目录下。
+6. 将选项 `shade.identifier` 的值更改为上面定义在配置文件中的 `ConfigShade#getIdentifier` 的值。
+