Geheimen

Wat is een geheim? Sommige dingen wil je gewoon tegen iedereen zeggen, zoals Wij zijn dé partner voor datagedreven werken. Andere dingen wil ik liefst niet tegen iedereen zeggen, zoals de code van mijn bankkaart.

 

“Secrets” zijn geheimen in computersystemen. Secrets zijn bijvoorbeeld: * De toegangscode van je database * De gebruikersnaam van je SaaS systeem Secrets horen bij je software, maar wil je liefst op een andere plek bijhouden. Je wilt de sleutel van je kluis ook niet op de kluis laten zitten. Wat wel interessant kan zijn is dat je de sleutel van je kluis in 100 stukken knipt en tóch bij je kluis legt. Op deze manier heb je in ieder geval je sleutel dichtbij, je moet alleen weten hoe je hem moet samenvoegen.
Secrets horen bij je software, maar wil je liefst op een andere plek bijhouden. Je wilt de sleutel van je kluis ook niet op de kluis laten zitten. Wat wel interessant kan zijn is dat je de sleutel van je kluis in 100 stukken knipt en tóch bij je kluis legt. Op deze manier heb je in ieder geval je sleutel dichtbij, je moet alleen weten hoe je hem moet samenvoegen. In de praktijk gebruiken wij hiervoor 2 systemen: HashiCorp Vault of OpenBao (https://github.com/openbao/) (een kluis) en SOPS (https://github.com/getsops/sops). Deze blog gaat verder over SOPS. SOPS ook bekend als Secret OPerationS is een Mozilla project. SOPS encrypteert gevoelige data via een of meerdere sleutels. Op deze manier is het niet meer leesbaar voor mens noch machine. Wil je samenwerken met meerdere mensen met dezelfde gevoelige data? SOPS laat je toe om verschillende ontgrendelsleutels toe te voegen.

Gebruik is toegankelijk:

1.Zet je decryptie key in een configuratiebestand. Je kan bijvoorbeeld het public deel van je SSH key hier in zetten.

				
					# .sops.yaml
# Create a decryption key, for example an SSH key, and store it in a .sops.yaml file.
creation_rules:
  - path_regex: \.(env|yml|yaml|pem)$
    age: >-
        ssh-ed25519 ........ # Public key of user 1 with permission to decrypt.
        ssh-ed25519 ........ # Public key of the machine where you want to deploy it.
        ...
				
			

2.Versleutel je bestand

				
					sops edit my_secrets.yaml

hello: Welcome to SOPS! Edit this file as you please!
example_key: example_value
# Example comment
example_array:
    - example_value1
    - example_value2
example_number: 1234.56789
example_booleans:
    - true
    - false
				
			

3.Je bestand wordt automatisch opgeslagen met encryptie. Je kan de keys, bijvoorbeeld example_array, nog wel lezen, maar de data niet.

				
					hello: ENC[AES256_GCM,data:FfadDI+dd1zsMJR9po/rv4Z3g18tY6hubPd/7vMmlW3IqBohP+xpY6MMa6qfDA==,iv:U1ufW9jgiKJrSG80bd4SuImWpbpgsPJf6biww/FFMkM=,tag:LOTPo27w/omFXyyTS2O7MQ==,type:str]
example_key: ENC[AES256_GCM,data:9GN+nyiGmBMF2aOnoyQEgtD/,iv:mjG49EK3XaJ/kha4cYTM5NoOHdcClI3LP/JVOpOx1cs=,tag:4rPHJoJXgGW5UY1MYznMMA==,type:str]
#ENC[AES256_GCM,data:pAqrTMufIvKHq2NdZoM9mw==,iv:6JJjV5+di0kXR4bm1SVmi7R3NfRZZ8/F5YX5kBz8phk=,tag:p9To2T06PiRMv7zmxfL/ug==,type:comment]
example_array:
    - ENC[AES256_GCM,data:mdg5RoR2XctOHcT+CzI=,iv:V9ONFXETKkmaTNtJbJY2Sy8ha3YFe286zEur/m0wn9c=,tag:KEqBACJpZXLJVhCxlgeD6w==,type:str]
    - ENC[AES256_GCM,data:3nacSOHMrASRJXiP+qA=,iv:JRae/zGftxsme10+BOUsYTnk4cvVikq0/D8RvQ/GQn4=,tag:kaUEj2cecJ2P7232sVuvGg==,type:str]
example_number: ENC[AES256_GCM,data:KKfW9ubiYpuSaw==,iv:At7NtpbD5xzxBKyhmQ4EnBXgE19XAAvZDB3lynAw7to=,tag:3a8KcPRUjlakc3VE3+/69Q==,type:float]
example_booleans:
    - ENC[AES256_GCM,data:iOl2Pw==,iv:aDhWCvWs1EAq8txHLSvhmLzbNyIFgPB6rrCh92tAg9I=,tag:YmlzXdi5Cr8Drap7IHhgzQ==,type:bool]
    - ENC[AES256_GCM,data:xbIdH+o=,iv:QpFg+luwyrjzbdkQiTLkKEIihNXxHWUNjbv3xLp+zbo=,tag:79eHsgeyQhBHY7DmAN45bg==,type:bool]
sops:
    age:
        - recipient: ssh-ed25519 ...
          enc: |
            -----BEGIN AGE ENCRYPTED FILE-----
            ...
            -----END AGE ENCRYPTED FILE-----
    lastmodified: "2026-02-16T14:58:05Z"
    mac: ENC[AES256_GCM,data:kyWm9uKt7foMzWEM3dq23124GFGTOx011bT5ysqXAW+1X+buJwg0kKDexs3pP3u3T0wsCFYxLAuUwCvGH4BK2xeNKN32ruOHpHuQUourUPao/IC9EZ5v8ctb7w9b1ZuX6gJUNBqHasdsdqRRTQ039fwsMFjepjqMBG8s9LR+w4RPlmG634=,iv:8tSCM6l8BvStSRzalCl/Gm5L3c2DoF0LXtYJN/neETE=,tag:+fZhW0SXFvvZ/aWRw04oTA==,type:str]
    unencrypted_suffix: _unencrypted
    version: 3.11.0
				
			

4.Dit bestand kan je veilig doorsturen. Het is absoluut waardeloos zonder sleutel.

5.Een andere gebruiker met de juiste sleutel kan het bestand eenvoudig decrypteren met /co.

				
					sops decrypt my_secrets.yaml
				
			

6.Heb je niet de juiste rechten? Dan geeft sops het aan!

				
					sops decrypt my_secrets.yaml   

Failed to get the data key required to decrypt the SOPS file.

Group 0: FAILED
  
  ssh-ed25519 ... : FAILED
    - | failed to create reader for decrypting sops data key with
      | age: no identity matched any of the recipients. Did not find
      | keys in locations 'SOPS_AGE_SSH_PRIVATE_KEY_FILE',
      | '/home/floris/.ssh/id_rsa', 'SOPS_AGE_KEY',
      | 'SOPS_AGE_KEY_FILE', and 'SOPS_AGE_KEY_CMD'.

Recovery failed because no master key was able to decrypt the file. In
order for SOPS to recover the file, at least one key has to be successful,
but none were.
				
			

 

Wil jij ook meer weten over encryptie-at-rest, encryptie-in-flight of data security en encryptie in het algemeen? Contacteer ons nu.

Klaar om uw data-toekomst vorm te geven?

Laten we uw strategische roadmap uitwerken

Zet uw data-ambities om in een duidelijke, uitvoerbare strategie. Onze experts werken met u samen om te bepalen waar u nu staat, waar u naartoe wilt en hoe u dat gaat bereiken.