Skip to content

Commit df97040

Browse files
Backup and restore secret scanning encrypted secrets encryption keys
1 parent 623b505 commit df97040

File tree

4 files changed

+80
-0
lines changed

4 files changed

+80
-0
lines changed

share/github-backup-utils/ghe-backup-settings

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,12 @@ fi
8888
if [ "$(version $GHE_REMOTE_VERSION)" -ge "$(version 3.8.0)" ]; then
8989
backup-secret "encrypted column current encryption key" "encrypted-column-current-encryption-key" "secrets.github.encrypted-column-current-encryption-key"
9090
fi
91+
backup-secret "encrypted column encryption keying material" "encrypted-column-encryption-keying-material" "secrets.github.encrypted-column-keying-material"
92+
backup-secret "encrypted column current encryption key" "encrypted-column-current-encryption-key" "secrets.github.encrypted-column-current-encryption-key"
93+
backup-secret "secret scanning encrypted secrets current storage key" "secret-scanning-encrypted-secrets-current-storage-key" "secrets.secret-scanning.encrypted-secrets-current-storage-key"
94+
backup-secret "secret scanning encrypted secrets delimited storage keys" "secret-scanning-encrypted-secrets-delimited-storage-keys" "secrets.secret-scanning.encrypted-secrets-delimited-storage-keys"
95+
backup-secret "secret scanning encrypted secrets current shared transit key" "secret-scanning-encrypted-secrets-current-shared-transit-key" "secrets.secret-scanning.encrypted-secrets-current-shared-transit-key"
96+
backup-secret "secret scanning encrypted secrets delimited shared transit keys" "secret-scanning-encrypted-secrets-delimited-shared-transit-keys" "secrets.secret-scanning.encrypted-secrets-delimited-shared-transit-keys"
9197

9298
# Backup argon secrets for multiuser from ghes version 3.8 onwards
9399
if [[ "$(version $GHE_REMOTE_VERSION)" -ge "$(version 3.8.0)" && "$(version $GHE_REMOTE_VERSION)" -lt "$(version 3.8.2)" ]]; then

share/github-backup-utils/ghe-restore-settings

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,18 @@ restore-secret "kredz.credz HMAC key" "kredz-credz-hmac" "secrets.kredz.credz-hm
5656
# Restore kredz.varz HMAC key if present.
5757
restore-secret "kredz.varz HMAC key" "kredz-varz-hmac" "secrets.kredz.varz-hmac-secret"
5858

59+
# Restore encrypted column encryption keying material if present
60+
restore-secret "encrypted column encryption keying material" "encrypted-column-encryption-keying-material" "secrets.github.encrypted-column-keying-material"
61+
62+
# Restore encrypted column current encryption key if present
63+
restore-secret "encrypted column current encryption key" "encrypted-column-current-encryption-key" "secrets.github.encrypted-column-current-encryption-key"
64+
65+
# Restore secret scanning encrypted secrets encryption keys if present
66+
restore-secret "secret scanning encrypted secrets current storage key" "secret-scanning-encrypted-secrets-current-storage-key" "secrets.secret-scanning.encrypted-secrets-current-storage-key"
67+
restore-secret "secret scanning encrypted secrets delimited storage keys" "secret-scanning-encrypted-secrets-delimited-storage-keys" "secrets.secret-scanning.encrypted-secrets-delimited-storage-keys"
68+
restore-secret "secret scanning encrypted secrets current shared transit key" "secret-scanning-encrypted-secrets-current-shared-transit-key" "secrets.secret-scanning.encrypted-secrets-current-shared-transit-key"
69+
restore-secret "secret scanning encrypted secrets delimited shared transit keys" "secret-scanning-encrypted-secrets-delimited-shared-transit-keys" "secrets.secret-scanning.encrypted-secrets-delimited-shared-transit-keys"
70+
5971
# Restore SAML keys if present.
6072
if [ -f "$GHE_RESTORE_SNAPSHOT_PATH/saml-keys.tar" ]; then
6173
log_info "Restoring SAML keys ..."

test/test-ghe-backup.sh

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,36 @@ begin_test "ghe-backup takes backup of encrypted column current encryption key f
663663
)
664664
end_test
665665

666+
begin_test "ghe-backup takes backup of secret scanning encrypted secrets encryption keys"
667+
(
668+
set -e
669+
670+
required_secrets=(
671+
"secrets.secret-scanning.encrypted-secrets-current-storage-key"
672+
"secrets.secret-scanning.encrypted-secrets-delimited-storage-keys"
673+
"secrets.secret-scanning.encrypted-secrets-current-shared-transit-key"
674+
"secrets.secret-scanning.encrypted-secrets-delimited-shared-transit-keys"
675+
)
676+
677+
for secret in "${required_secrets[@]}"; do
678+
ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret" "foo"
679+
done
680+
681+
ghe-backup
682+
683+
required_files=(
684+
"secret-scanning-encrypted-secrets-current-storage-key"
685+
"secret-scanning-encrypted-secrets-delimited-storage-keys"
686+
"secret-scanning-encrypted-secrets-current-shared-transit-key"
687+
"secret-scanning-encrypted-secrets-delimited-shared-transit-keys"
688+
)
689+
690+
for file in "${required_files[@]}"; do
691+
[ "$(cat "$GHE_DATA_DIR/current/$file")" = "foo" ]
692+
done
693+
)
694+
end_test
695+
666696
begin_test "ghe-backup takes backup of Actions settings"
667697
(
668698
set -e

test/test-ghe-restore.sh

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,38 @@ begin_test "ghe-restore with encrypted column current encryption key for version
389389
)
390390
end_test
391391

392+
begin_test "ghe-restore with secret scanning encrypted secrets encryption keys"
393+
(
394+
set -e
395+
rm -rf "$GHE_REMOTE_ROOT_DIR"
396+
setup_remote_metadata
397+
398+
required_files=(
399+
"secret-scanning-encrypted-secrets-current-storage-key"
400+
"secret-scanning-encrypted-secrets-delimited-storage-keys"
401+
"secret-scanning-encrypted-secrets-current-shared-transit-key"
402+
"secret-scanning-encrypted-secrets-delimited-shared-transit-keys"
403+
)
404+
405+
for file in "${required_files[@]}"; do
406+
echo "foo" >"$GHE_DATA_DIR/current/$file"
407+
done
408+
409+
ghe-restore -v -f localhost
410+
411+
required_secrets=(
412+
"secrets.secret-scanning.encrypted-secrets-current-storage-key"
413+
"secrets.secret-scanning.encrypted-secrets-delimited-storage-keys"
414+
"secrets.secret-scanning.encrypted-secrets-current-shared-transit-key"
415+
"secrets.secret-scanning.encrypted-secrets-delimited-shared-transit-keys"
416+
)
417+
418+
for secret in "${required_secrets[@]}"; do
419+
[ "$(ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret")" = "foo" ]
420+
done
421+
)
422+
end_test
423+
392424
# Setup Actions data for the subsequent tests
393425
setup_actions_test_data "$GHE_DATA_DIR/1"
394426

0 commit comments

Comments
 (0)