This is an automated email from the ASF dual-hosted git repository.

hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new 8479378cc4 Issue #6033 (Create user documentation on security) (#6176)
8479378cc4 is described below

commit 8479378cc4562bccf1f4b304662c155879c79168
Author: Matt Casters <[email protected]>
AuthorDate: Sat Dec 27 10:42:51 2025 +0100

    Issue #6033 (Create user documentation on security) (#6176)
    
    Co-authored-by: Matt Casters <[email protected]>
---
 .../modules/ROOT/pages/best-practices/index.adoc   |  2 +
 .../pages/snippets/best-practices/security.adoc    | 90 ++++++++++++++++++++++
 2 files changed, 92 insertions(+)

diff --git a/docs/hop-user-manual/modules/ROOT/pages/best-practices/index.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/best-practices/index.adoc
index 41365caa30..65943e171c 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/best-practices/index.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/best-practices/index.adoc
@@ -65,5 +65,7 @@ include::../snippets/best-practices/loops.adoc[]
 
 include::../snippets/best-practices/governance.adoc[]
 
+include::../snippets/best-practices/security.adoc[]
+
 
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/snippets/best-practices/security.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/snippets/best-practices/security.adoc
new file mode 100644
index 0000000000..c9e591a04a
--- /dev/null
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/snippets/best-practices/security.adoc
@@ -0,0 +1,90 @@
+////
+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.
+////
+
+[[Security]]
+:imagesdir: ../../assets/images
+
+== Security
+
+When thinking about security it's always worth checking on any critical 
vulnerabilities the Hop codebase itself might suffer from.
+Go to https://hop.apache.org/security/ to find out more.
+
+Then obviously there are things our users can do to limit security risks in 
general listed below.
+
+=== Introduction
+
+The goal of Hop as a project is to be useful for you, the data engineer.
+As a project we provide you with many powerful tools that can do as much as 
you request it.  In that regard it's very
+much like a programming language or scripting tool in the way that you can 
create, modify and delete things at
+your hearts content.  Please understand that this is a feature, not a security 
risk.
+
+=== Scripting
+
+The scripting actions and transforms in Hop are capable of doing just about 
anything if you know how.
+It's not a best practice to do "anything", in fact the best practice is to 
make use of the transforms as little
+as possible to make the maintenance load of your data integration solutions as 
light as possible.  If you can't avoid
+using scripting, put some process in place to code review the scripts and keep 
them simple and transparent.
+
+=== Securing your work
+
+When dealing with sensitive information that might be needed to interact with 
databases, remote folders, websites,
+and so on, make sure to properly protect the secrets being used. Here are 
things you can do:
+
+==== Not in your metadata!
+
+Please, never store your secrets in your metadata.  Always use 
xref:../snippets/best-practices/variables.adoc[variables]
+to reference to them indirectly. This allows flexibility as to the level of 
security you require.
+For a local database on your own laptop it's fine to simply obfuscate the 
password or even leave it in cleartext.
+That's something you can define in a separate 
xref:projects/projects-environments.adoc[environment] configuration file.
+For a shared development, test or production system, you need the variable to 
point to an obfuscated or
+encrypted value, or indeed one stored in a key vault.
+
+==== Obfuscate
+
+This is the absolute minimum you need to do. Make sure to at least obfuscate 
your secrets with a
+standard `hop encrypt` command.  Please understand that it's hard but not 
impossible to get the original value from the
+generated obfuscation code.  For that reason it's important to store the 
obfuscated secrets in a safe place on your
+systems.
+
+==== Encrypt
+
+Consider setting up asynchronous encryption to hide your secrets with the
+xref:password/passwords/aespasswords.adoc[AES two way password encoder].  
Please understand that in this scenario you
+need to protect the value stored in the `HOP_AES_ENCODER_KEY` variable.  
Again, keep it in a safe place like a k8s key
+vault or a well protected file on your system.
+
+==== Use a Key Vault
+
+Finally, you can store your secrets in a so-called key vault.  For a list of 
the supported key-vaults and on the usage
+of variable resolvers to get direct access to the secrets,
+see: xref:metadata-types/variable-resolver/index.adoc[Variable Resolvers].
+Again, just using a key vault is insufficient: make sure you protect the 
secrets (keys, users, passwords) to connect
+to the key vault you're using.
+
+=== Remove unused plugins
+
+Every organisation has its own typical mix of deployed technologies.  As a 
best practice, remove any plugin that
+supports technology that you're not using.  Go through the list of plugins in 
the `plugins/` folder and remove
+anything that you're not going to need.  Focus especially on older technology 
that might contain drivers that
+perhaps haven't been updated in a while.  You can safely remove any folder in 
the `plugins/` folder.
+
+=== Secure your Hop Server
+
+If you're running the Hop Server on a Kubernetes or VM constellation you can 
secure network access from and to the
+clients that way.  Otherwise, consider setting up SSL communication to prevent 
anyone from listening in on the network
+traffic.  Please see the xref:hop-server/index.adoc#_ssl_configuration[SSL 
Configuration] documentation here.
+

Reply via email to