Compare commits

..

4 Commits

Author SHA1 Message Date
Eduard Filip
d50df7cd6d Merge pull request #11 from 1Password/eddy/fix-injection
Some checks failed
Run acceptance tests / test (push) Has been cancelled
Improve the way input is processed to avoid command injection
2022-05-18 17:42:36 +02:00
Eddy Filip
a5debe1b2e Improve the way input is processed to avoid command injection 2022-05-18 12:47:49 +03:00
Floris van der Grinten
e28960dbbb Merge pull request #4 from 1Password/item-and-vault-names
Some checks failed
Run acceptance tests / test (push) Has been cancelled
2021-06-09 14:48:31 +02:00
Floris van der Grinten
8d95cf6d0d Fix item and vault loading by name 2021-06-09 12:41:01 +02:00
4 changed files with 37 additions and 14 deletions

View File

@@ -39,12 +39,12 @@ jobs:
run: printenv
- name: Assert removed secrets
run: ./tests/assert-env-unset.sh
- name: Load secret again
- name: Load secrets by vault and item titles
uses: ./ # 1password/load-secrets-action@<version>
env:
SECRET: op://v5pz6venw4roosmkzdq2nhpv6u/hrgkzhrlvscomepxlgafb2m3ca/password
SECRET_IN_SECTION: op://v5pz6venw4roosmkzdq2nhpv6u/hrgkzhrlvscomepxlgafb2m3ca/test-section/password
MULTILINE_SECRET: op://v5pz6venw4roosmkzdq2nhpv6u/ghtz3jvcc6dqmzc53d3r3eskge/notesPlain
SECRET: op://acceptance-tests/test-secret/password
SECRET_IN_SECTION: op://acceptance-tests/test-secret/test-section/password
MULTILINE_SECRET: op://acceptance-tests/multiline-secret/notesPlain
- name: Print environment variables with masked secrets
run: printenv
- name: Assert test secret values again

View File

@@ -10,8 +10,9 @@ inputs:
default: false
runs:
using: composite
steps:
- run: |
export INPUT_UNSET_PREVIOUS=${{ inputs.unset-previous }}
steps:
- shell: bash
env:
INPUT_UNSET_PREVIOUS: ${{ inputs.unset-previous }}
run: |
${{ github.action_path }}/entrypoint.sh
shell: bash

View File

@@ -8,9 +8,10 @@ inputs:
description: Token to authenticate to your 1Password Connect instance
runs:
using: composite
steps:
- run: |
export INPUT_CONNECT_HOST=${{ inputs.connect-host }}
export INPUT_CONNECT_TOKEN=${{ inputs.connect-token }}
steps:
- shell: bash
env:
INPUT_CONNECT_HOST: ${{ inputs.connect-host }}
INPUT_CONNECT_TOKEN: ${{ inputs.connect-token }}
run: |
${{ github.action_path }}/entrypoint.sh
shell: bash

View File

@@ -27,6 +27,8 @@ if [ "$INPUT_UNSET_PREVIOUS" == "true" ]; then
managed_variables=()
fi
curl_headers=(-H "Content-Type: application/json" -H "Authorization: Bearer $OP_CONNECT_TOKEN")
# Iterate over environment varables to find 1Password references, load the secret values,
# and make them available as environment variables in the next steps.
IFS=$'\n'
@@ -70,8 +72,27 @@ for possible_ref in $(printenv | grep "=op://" | grep -v "^#"); do
section=""
fi
if [[ $(echo -n $(echo $vault | grep "^[a-z0-9]*$") | wc -c) -ne 26 ]]; then
echo "Getting vault ID from vault name: $vault"
vault=$(curl -sSf "${curl_headers[@]}" "$OP_CONNECT_HOST/v1/vaults?filter=name%20eq%20%22$vault%22" | jq -r '.[0] | .id')
if [ -z "$vault" ]; then
echo "Could not find vault ID for vault: $vault"
exit 1
fi
fi
if [[ $(echo -n $(echo $item | grep "^[a-z0-9]*$") | wc -c) -ne 26 ]]; then
echo "Getting item ID from vault $vault..."
item=$(curl -sSf "${curl_headers[@]}" "$OP_CONNECT_HOST/v1/vaults/$vault/items?filter=title%20eq%20%22$item%22" | jq -r '.[0] | .id')
if [ -z "$item" ]; then
echo "Could not find item ID for item: $item"
exit 1
fi
fi
echo "Loading item $item from vault $vault..."
item_json=$(curl -sSf -H "Content-Type: application/json" -H "Authorization: Bearer $OP_CONNECT_TOKEN" "$OP_CONNECT_HOST/v1/vaults/$vault/items/$item")
item_json=$(curl -sSf "${curl_headers[@]}" "$OP_CONNECT_HOST/v1/vaults/$vault/items/$item")
jq_field_selector=".id == \"$field\" or .label == \"$field\""
jq_section_selector=".section == null"