2.5. 安全引用字符串参数
当您在 BuildStrategy
或 ClusterBuildStrategy
自定义资源(CR)中定义环境变量、参数或镜像时,会使用字符串参数。在构建策略步骤中,您可以使用 $(params.your-parameter-name)
语法引用字符串参数。
注意
您还可以在构建策略步骤中使用 $(params.your-parameter-name)
语法引用系统参数和策略参数。
在 pod 中,所有 $(params.your-parameter-name)
变量都被实际字符串替代。但是,在使用内联脚本在参数中引用字符串参数时,您必须注意这一点。例如,要安全地将参数值传递给使用脚本定义的参数,您可以选择以下方法之一:
- 使用环境变量
- 使用参数
示例:引用字符串参数到环境变量中
您可以将 string 参数传递给环境变量,而不是直接在脚本中使用它。通过使用对环境变量进行引用,您可以避免命令注入漏洞。您可以使用这种方法进行策略,如 buildah
。以下示例使用脚本中的环境变量来引用字符串参数:
apiVersion: shipwright.io/v1beta1 kind: BuildStrategy metadata: name: sample-strategy spec: parameters: - name: sample-parameter description: A sample parameter type: string steps: - name: sample-step env: - name: PARAM_SAMPLE_PARAMETER value: $(params.sample-parameter) command: - /bin/bash args: - -c - | set -euo pipefail some-tool --sample-argument "${PARAM_SAMPLE_PARAMETER}"
示例:引用字符串参数到参数中
您可以将 string 参数传递给脚本中定义的参数。适当的 shell 引用对命令注入的保护.您可以使用这种方法进行策略,如 buildah
。以下示例使用脚本中定义的参数来引用字符串参数:
apiVersion: shipwright.io/v1beta1 kind: BuildStrategy metadata: name: sample-strategy spec: parameters: - name: sample-parameter description: A sample parameter type: string steps: - name: sample-step command: - /bin/bash args: - -c - | set -euo pipefail SAMPLE_PARAMETER="$1" some-tool --sample-argument "${SAMPLE_PARAMETER}" - -- - $(params.sample-parameter)