From 97eaed59b6c6f5983e92bbf468ecd338a1bf2912 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Tue, 10 Sep 2024 10:53:16 +0200 Subject: [PATCH] Backport: Clarify usage of secrets --- .../version-2.7/20-usage/40-secrets.md | 85 ++++++++++++------ .../20-usage/secrets-plugins-filter.png | Bin 0 -> 29923 bytes 2 files changed, 60 insertions(+), 25 deletions(-) create mode 100644 docs/versioned_docs/version-2.7/20-usage/secrets-plugins-filter.png diff --git a/docs/versioned_docs/version-2.7/20-usage/40-secrets.md b/docs/versioned_docs/version-2.7/20-usage/40-secrets.md index 1b55d9ce1..1f0ad8cdf 100644 --- a/docs/versioned_docs/version-2.7/20-usage/40-secrets.md +++ b/docs/versioned_docs/version-2.7/20-usage/40-secrets.md @@ -18,32 +18,65 @@ once their usage is declared in the `secrets` section: ```diff steps: - - name: docker - image: docker + - name: test + image: bash commands: -+ - echo $docker_username -+ - echo $DOCKER_PASSWORD -+ secrets: [ docker_username, DOCKER_PASSWORD ] ++ - echo $some_username ++ - echo $SOME_PASSWORD ++ secrets: [ some_username, SOME_PASSWORD ] ``` The case of the environment variables is not changed, but secret matching is done case-insensitively. In the example above, `DOCKER_PASSWORD` would also match if the secret is called `docker_password`. -### Use secrets in settings and environment +### Use secrets in normal steps via environment -You can set an setting or environment value from secrets using the `from_secret` syntax. - -In this example, the secret named `secret_token` would be passed to the setting named `token`,which will be available in the plugin as environment variable named `PLUGIN_TOKEN` (See [plugins](./51-plugins/20-creating-plugins.md#settings) for details), and to the environment variable `TOKEN_ENV`. +You can set an environment value from secrets using the `from_secret` syntax. +So the secret key and environment variable name can differ. ```diff steps: - - name: docker - image: my-plugin + - name: test + image: bash + commands: + - env | grep OWN +- secrets: [ some_username, SOME_PASSWORD ] + environment: -+ TOKEN_ENV: -+ from_secret: secret_token -+ settings: -+ token: -+ from_secret: secret_token ++ SOME_OWN_DEFINED_VAR: ++ from_secret: some_username +``` + +### Use secrets in plugins via settings + +The `from_secret` syntax also work for settings in any hierarchy. + +In this example, the secret named `secret_token` would be passed to the setting named `SURGE_TOKEN`,which will be available in the plugin as environment variable named `PLUGIN_SURGE_TOKEN` (See [plugins](./51-plugins/20-creating-plugins.md#settings) for details). + +```diff + steps: + - name: deploy-preview: + image: woodpeckerci/plugin-surge-preview + settings: + path: 'docs/build/' ++ surge_token: ++ from_secret: SURGE_TOKEN +``` + +As settings can have complex structure, the `from_secret` is supported in all of it: + +```yaml +steps: + - name: deploy-test: + image: plugin-example + settings: + path: 'artifacts' + simple_token: + from_secret: A_TOKEN + advanced: + items: + - "value1" + - some: + from_secret: secret_value + - "value3" ``` ### Note about parameter pre-processing @@ -52,14 +85,14 @@ Please note parameter expressions are subject to pre-processing. When using secr ```diff steps: - - name: docker - image: docker + - name: "echo password" + image: bash commands: -- - echo ${docker_username} -- - echo ${DOCKER_PASSWORD} -+ - echo $${docker_username} -+ - echo $${DOCKER_PASSWORD} - secrets: [ docker_username, DOCKER_PASSWORD ] +- - echo ${some_username} +- - echo ${SOME_PASSWORD} ++ - echo $${some_username} ++ - echo $${SOME_PASSWORD} + secrets: [ some_username, SOME_PASSWORD ] ``` ### Use in Pull Requests events @@ -70,9 +103,11 @@ Secrets are not exposed to pull requests by default. You can override this behav Please be careful when exposing secrets to pull requests. If your repository is open source and accepts pull requests your secrets are not safe. A bad actor can submit a malicious pull request that exposes your secrets. ::: -## Image filter +## Plugins filter -To prevent abusing your secrets from malicious usage, you can limit a secret to a list of images. If enabled they are not available to any other plugin (steps without user-defined commands). If you or an attacker defines explicit commands, the secrets will not be available to the container to prevent leaking them. +To prevent abusing your secrets from malicious usage, you can limit a secret to a list of plugins. If enabled they are not available to any other plugin (steps without user-defined commands). If you or an attacker defines explicit commands, the secrets will not be available to the container to prevent leaking them. + +![plugins filter](./secrets-plugins-filter.png) ## Adding Secrets diff --git a/docs/versioned_docs/version-2.7/20-usage/secrets-plugins-filter.png b/docs/versioned_docs/version-2.7/20-usage/secrets-plugins-filter.png new file mode 100644 index 0000000000000000000000000000000000000000..460d852fb0fbc6c6fb70ae0a9f60bcfb562f05ea GIT binary patch literal 29923 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

ISdxV$x9K&z$9b0OA&Nb3WS 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

F-){eM`9RpFx!Bvx|^S9JUL88R2g43Ku zhSJ-h-wT{$>w6>rr8_^ik2g%#_{pKH>guiu`M;$}n1?_1)t8nd%EL|u1|sMyn=c=C z!9H@Qi3gJ_fHs-Q*UPHVr-3#56KVIRFnjHIxg7rqbPD6^5+EG^lpN#y<~(MV%P3zP z#?~6JLl16#Llm`xZ8_4`yQFv}yI)Du*L!<|N72Q+5pfvkkiWkr!-C(lJQjLuuX_C0 z?TaR5xA!&7?Ts79dVkAw8jN$E(sv#*;*|c3F`c8|U>5PQ>3=3AivOO*^nW%U*=|}a zo)+}`5y=vDCY9RLALswqTh5L)6DqT}+w^xUW(3ShWvl!==Y!D4d98fo z>hxOJ9RecI+MEi0y$9B`;;O0|0p+_O6?*Wv{#T8B^RGnXzUiC5f{S&XNmkP9qp{;W z=DWK@o({*Fah%B}ZO5OW9uV_iu+8(IP-$uFmGWkLtk<9Mkf<@b z($e1<8we$K#?NgWIRp=;`$cD8azhklTz1#7+alEtl?O@N{Ts46GgL>Df4!CkY%J}~ zVD_Mrne@A+L;LDJ2+}KpR5L#_Mp*5v_vvjLQ&+*Jj)UX&L=}vi;`gR!4qbV6CgOjP z;Dw#Of(|UG7CBdLfUTeS(}PjnHDn%I4K+IUOT7i9r2;fG$!skkgyRKW)^Ry*+9b=k zbOvxAIb~%P44UiB4>*74lpDr&1R^rTmpRi{7>KC7e1-ZQ2E&5Kzr{(Th#FVN+fMdb zf(WcN@D^1z!DoN>>sgrAVE(Y8mUPR9&hk6FN5ft9$nlZ6!Qu&y`*A^icX1rb z{4$?R5szNm1l+e@Kl+GK zGAWi@9+$bXc!KsAE@y)Zq}o5r0#*~w4gO~$FMo$ z&7>aG*SMC%;*6etu@}Wli=Vk6MA?9N47Ez<_%oLp3}4HIaC7HuV0-Fe9Jj&uEdu4s zFdFlPiN`~8q`nLc4TVZ$_5cdD*I>$S#Rm>_>lTOxP^-@!2`rrl1SMNBA+A7L0g z-L?q%-g-1xeAoO6W2N~mwu3MAnA2}8hWi{nwd&r|gfgVrJLOp6{}{VTuuO>kYvX6* zErf{z7ykVFWN1XVPB%yWI0+7|TX&E76W9YxK2pBC)tEKg#Ewj*Ic8gD49Q78{8zNn luw48Ty8gc+lj??V?;X$Bfj_MhPTg-