mirror of
https://github.com/passbolt/go-passbolt-cli.git
synced 2025-05-11 10:38:21 +00:00
Compare commits
2 commits
4634641adb
...
8ae52363cc
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8ae52363cc | ||
![]() |
8ffeec1eb1 |
2 changed files with 21 additions and 3 deletions
13
README.md
13
README.md
|
@ -105,6 +105,19 @@ For Scripting we have a -j or --json flag to convert the Output for the create,
|
|||
|
||||
Note: The JSON Output does not cover Error Messages, you can detect Errors by checking if the Exitcode is not 0
|
||||
|
||||
# Exposing Secrets to Subprocesses
|
||||
The `exec` command allows you to execute another command with environment variables that reference secrets stored in Passbolt.
|
||||
Any environment variables containing `passbolt://` references are automatically resolved to their corresponding secret values
|
||||
before the specified command is executed. This ensures that secrets are securely injected into the child process's environment
|
||||
without exposing them to the parent shell.
|
||||
For example:
|
||||
```bash
|
||||
export GITHUB_TOKEN=passbolt://<PASSBOLT_RESOURCE_ID_HERE>
|
||||
passbolt exec -- gh auth login
|
||||
```
|
||||
|
||||
This would resolve the passbolt:// reference in GITHUB_TOKEN to its actual secret value and pass it to the gh process.
|
||||
|
||||
# Documentation
|
||||
Usage for all Subcommands is [here](https://github.com/passbolt/go-passbolt-cli/wiki/passbolt).
|
||||
And is also available via `man passbolt`
|
||||
|
|
11
cmd/exec.go
11
cmd/exec.go
|
@ -3,14 +3,15 @@ package cmd
|
|||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
"github.com/passbolt/go-passbolt-cli/util"
|
||||
"github.com/passbolt/go-passbolt/api"
|
||||
"github.com/passbolt/go-passbolt/helper"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const PassboltPrefix = "passbolt://"
|
||||
|
@ -92,6 +93,10 @@ func resolveEnvironmentSecrets(ctx context.Context, client *api.Client) ([]strin
|
|||
}
|
||||
|
||||
envVars[i] = key + "=" + secret
|
||||
|
||||
if viper.GetBool("debug") {
|
||||
fmt.Fprintf(os.Stdout, "%v env var populated with resource id %v\n", key, resourceId)
|
||||
}
|
||||
}
|
||||
|
||||
return envVars, nil
|
||||
|
|
Loading…
Add table
Reference in a new issue