Skip to content

Commit 4cdbc7e

Browse files
committed
docs: add Tencent Cloud KMS documentation
- Add usage guide in README.rst - Add CHANGELOG entry - Include internal endpoint hint for CVM/TKE environments Signed-off-by: frank <frankstarye@tencent.com>
1 parent b8a94c9 commit 4cdbc7e

2 files changed

Lines changed: 96 additions & 6 deletions

File tree

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
Features:
6+
7+
* Add Tencent Cloud KMS support for encryption and decryption.
8+
The integration supports environment variable authentication
9+
(``TENCENTCLOUD_SECRET_ID``, ``TENCENTCLOUD_SECRET_KEY``),
10+
optional STS token (``TENCENTCLOUD_TOKEN``),
11+
configurable region and custom endpoint.
12+
New CLI flags: ``--tencent-kms``, ``--add-tencent-kms``,
13+
``--rm-tencent-kms``.
14+
Environment variable: ``SOPS_TENCENT_KMS_IDS``.
15+
Configuration file key: ``tencent_kms``.
16+
317
## 3.11.0
418

519
Security fixes:

README.rst

Lines changed: 82 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -596,13 +596,63 @@ You can also configure HuaweiCloud KMS keys in the ``.sops.yaml`` config file:
596596
hckms:
597597
- tr-west-1:abc12345-6789-0123-4567-890123456789,tr-west-2:def67890-1234-5678-9012-345678901234
598598

599+
Encrypting using Tencent Cloud KMS
600+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
601+
602+
The Tencent Cloud KMS integration requires credentials to be provided through
603+
environment variables:
604+
605+
.. code:: bash
606+
607+
export TENCENTCLOUD_SECRET_ID="your-secret-id"
608+
export TENCENTCLOUD_SECRET_KEY="your-secret-key"
609+
# Optional: for temporary credentials (STS)
610+
export TENCENTCLOUD_TOKEN="your-sts-token"
611+
# Optional: specify region (default: ap-guangzhou)
612+
export TENCENTCLOUD_REGION="ap-guangzhou"
613+
# Optional: custom KMS endpoint (default: kms.tencentcloudapi.com)
614+
# For CVM or TKE environments, use the internal endpoint for better performance:
615+
# export TENCENTCLOUD_KMS_ENDPOINT="kms.internal.tencentcloudapi.com"
616+
export TENCENTCLOUD_KMS_ENDPOINT="kms.tencentcloudapi.com"
617+
618+
Encrypting/decrypting with Tencent Cloud KMS requires a KMS key ID. You can get
619+
the key ID from the Tencent Cloud console or using the Tencent Cloud API.
620+
621+
Now you can encrypt a file using:
622+
623+
.. code:: sh
624+
625+
$ sops encrypt --tencent-kms xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test.yaml > test.enc.yaml
626+
627+
Or using the environment variable:
628+
629+
.. code:: sh
630+
631+
$ export SOPS_TENCENT_KMS_IDS="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
632+
$ sops encrypt test.yaml > test.enc.yaml
633+
634+
And decrypt it using:
635+
636+
.. code:: sh
637+
638+
$ sops decrypt test.enc.yaml
639+
640+
You can also configure Tencent Cloud KMS keys in the ``.sops.yaml`` config file:
641+
642+
.. code:: yaml
643+
644+
creation_rules:
645+
- path_regex: \.tencent\.yaml$
646+
tencent_kms:
647+
- xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
648+
599649
Adding and removing keys
600650
~~~~~~~~~~~~~~~~~~~~~~~~
601651

602652
When creating new files, ``sops`` uses the PGP, KMS and GCP KMS defined in the
603-
command line arguments ``--kms``, ``--pgp``, ``--gcp-kms``, ``--hckms`` or ``--azure-kv``, or from
653+
command line arguments ``--kms``, ``--pgp``, ``--gcp-kms``, ``--hckms``, ``--tencent-kms`` or ``--azure-kv``, or from
604654
the environment variables ``SOPS_KMS_ARN``, ``SOPS_PGP_FP``, ``SOPS_GCP_KMS_IDS``,
605-
``SOPS_HUAWEICLOUD_KMS_IDS``, ``SOPS_AZURE_KEYVAULT_URLS``. That information is stored in the file under the
655+
``SOPS_HUAWEICLOUD_KMS_IDS``, ``SOPS_TENCENT_KMS_IDS``, ``SOPS_AZURE_KEYVAULT_URLS``. That information is stored in the file under the
606656
``sops`` section, such that decrypting files does not require providing those
607657
parameters again.
608658

@@ -646,9 +696,9 @@ disabled by supplying the ``-y`` flag.
646696

647697
The ``rotate`` command generates a new data encryption key and reencrypt all values
648698
with the new key. At the same time, the command line flag ``--add-kms``, ``--add-pgp``,
649-
``--add-gcp-kms``, ``--add-hckms``, ``--add-azure-kv``, ``--rm-kms``, ``--rm-pgp``, ``--rm-gcp-kms``,
650-
``--rm-hckms`` and ``--rm-azure-kv`` can be used to add and remove keys from a file. These flags use
651-
the comma separated syntax as the ``--kms``, ``--pgp``, ``--gcp-kms``, ``--hckms`` and ``--azure-kv``
699+
``--add-gcp-kms``, ``--add-hckms``, ``--add-tencent-kms``, ``--add-azure-kv``, ``--rm-kms``, ``--rm-pgp``, ``--rm-gcp-kms``,
700+
``--rm-hckms``, ``--rm-tencent-kms`` and ``--rm-azure-kv`` can be used to add and remove keys from a file. These flags use
701+
the comma separated syntax as the ``--kms``, ``--pgp``, ``--gcp-kms``, ``--hckms``, ``--tencent-kms`` and ``--azure-kv``
652702
arguments when creating new files.
653703

654704
Use ``updatekeys`` if you want to add a key without rotating the data key.
@@ -824,7 +874,7 @@ stdout.
824874
Using .sops.yaml conf to select KMS, PGP and age for new files
825875
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
826876

827-
It is often tedious to specify the ``--kms`` ``--gcp-kms`` ``--hckms`` ``--pgp`` and ``--age`` parameters for creation
877+
It is often tedious to specify the ``--kms`` ``--gcp-kms`` ``--hckms`` ``--tencent-kms`` ``--pgp`` and ``--age`` parameters for creation
828878
of all new files. If your secrets are stored under a specific directory, like a
829879
``git`` repository, you can create a ``.sops.yaml`` configuration file at the root
830880
directory to define which keys are used for which filename.
@@ -870,6 +920,10 @@ can manage the three sets of configurations for the three types of files:
870920
- path_regex: \.hckms\.yaml$
871921
hckms: tr-west-1:abc12345-6789-0123-4567-890123456789,tr-west-2:def67890-1234-5678-9012-345678901234
872922

923+
# tencent_kms files using Tencent Cloud KMS
924+
- path_regex: \.tencent\.yaml$
925+
tencent_kms: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
926+
873927
# Finally, if the rules above have not matched, this one is a
874928
# catchall that will encrypt the file using KMS set C as well as PGP
875929
# The absence of a path_regex means it will match everything
@@ -1875,6 +1929,15 @@ To directly specify a single key group, you can use the following keys:
18751929
- tr-west-1:abc12345-6789-0123-4567-890123456789
18761930
- tr-west-1:def67890-1234-5678-9012-345678901234
18771931

1932+
* ``tencent_kms`` (list of strings): list of Tencent Cloud KMS key IDs.
1933+
Example:
1934+
1935+
.. code:: yaml
1936+
1937+
creation_rules:
1938+
- tencent_kms:
1939+
- xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
1940+
18781941
To specify a list of key groups, you can use the following key:
18791942

18801943
* ``key_groups`` (list of key group objects): a list of key group objects.
@@ -1904,6 +1967,8 @@ To specify a list of key groups, you can use the following key:
19041967
- http://my.vault/v1/sops/keys/secondkey
19051968
hckms:
19061969
- tr-west-1:abc12345-6789-0123-4567-890123456789
1970+
tencent_kms:
1971+
- xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
19071972

19081973
merge:
19091974
- pgp:
@@ -1992,6 +2057,17 @@ A key group supports the following keys:
19922057

19932058
- key_id: tr-west-1:abc12345-6789-0123-4567-890123456789
19942059

2060+
* ``tencent_kms`` (list of objects): list of Tencent Cloud KMS key IDs.
2061+
Every object must have the following key:
2062+
2063+
* ``key_id`` (string): the key ID.
2064+
2065+
Example:
2066+
2067+
.. code:: yaml
2068+
2069+
- key_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
2070+
19952071
* ``age`` (list of strings): list of Age public keys.
19962072

19972073
* ``pgp`` (list of strings): list of PGP/GPG key fingerprints.

0 commit comments

Comments
 (0)