Skip to content

Commit 3b2f1c1

Browse files
committed
add encrypted column encryption keys to backup utils
1 parent a382688 commit 3b2f1c1

File tree

4 files changed

+110
-1
lines changed

4 files changed

+110
-1
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ backup-secret "management console password" "manage-password" "secrets.manage"
7878
backup-secret "password pepper" "password-pepper" "secrets.github.user-password-secrets"
7979
backup-secret "kredz.credz HMAC key" "kredz-credz-hmac" "secrets.kredz.credz-hmac-secret"
8080
backup-secret "kredz.varz HMAC key" "kredz-varz-hmac" "secrets.kredz.varz-hmac-secret"
81+
backup-secret "encrypted column encryption keying material" "encrypted-column-encryption-keying-material" "secrets.github.encrypted-column-keying-material"
82+
backup-secret "encrypted column current encryption key" "encrypted-column-current-encryption-key" "secrets.github.encrypted-column-current-encryption-key"
8183

8284
# Backup argon secrets for multiuser from ghes version 3.8 onwards
8385
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: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ 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+
5965
# Restore SAML keys if present.
6066
if [ -f "$GHE_RESTORE_SNAPSHOT_PATH/saml-keys.tar" ]; then
6167
log_info "Restoring SAML keys ..."

test/test-ghe-backup.sh

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,56 @@ begin_test "ghe-backup takes backup of kredz-varz settings"
555555
)
556556
end_test
557557

558+
begin_test "ghe-backup takes backup of encrypted column encryption keying material"
559+
(
560+
set -e
561+
562+
required_secrets=(
563+
"secrets.github.encrypted-column-keying-material"
564+
)
565+
566+
for secret in "${required_secrets[@]}"; do
567+
ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret" "foo"
568+
done
569+
570+
ghe-backup
571+
572+
required_files=(
573+
"encrypted-column-encryption-keying-material"
574+
)
575+
576+
for file in "${required_files[@]}"; do
577+
[ "$(cat "$GHE_DATA_DIR/current/$file")" = "foo" ]
578+
done
579+
580+
)
581+
end_test
582+
583+
begin_test "ghe-backup takes backup of encrypted column current encryption key"
584+
(
585+
set -e
586+
587+
required_secrets=(
588+
"secrets.github.encrypted-column-current-encryption-key"
589+
)
590+
591+
for secret in "${required_secrets[@]}"; do
592+
ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret" "foo"
593+
done
594+
595+
ghe-backup
596+
597+
required_files=(
598+
"encrypted-column-current-encryption-key"
599+
)
600+
601+
for file in "${required_files[@]}"; do
602+
[ "$(cat "$GHE_DATA_DIR/current/$file")" = "foo" ]
603+
done
604+
605+
)
606+
end_test
607+
558608
begin_test "ghe-backup takes backup of Actions settings"
559609
(
560610
set -e

test/test-ghe-restore.sh

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,58 @@ begin_test "ghe-restore with kredz-varz settings"
355355
required_secrets=(
356356
"secrets.kredz.varz-hmac-secret"
357357
)
358-
358+
359+
for secret in "${required_secrets[@]}"; do
360+
[ "$(ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret")" = "foo" ]
361+
done
362+
)
363+
end_test
364+
365+
366+
begin_test "ghe-restore with encrypted column encryption keying material"
367+
(
368+
set -e
369+
rm -rf "$GHE_REMOTE_ROOT_DIR"
370+
setup_remote_metadata
371+
372+
required_files=(
373+
"encrypted-column-encryption-keying-material"
374+
)
375+
376+
for file in "${required_files[@]}"; do
377+
echo "foo" > "$GHE_DATA_DIR/current/$file"
378+
done
379+
380+
ghe-restore -v -f localhost
381+
required_secrets=(
382+
"secrets.github.encrypted-column-keying-material"
383+
)
384+
385+
for secret in "${required_secrets[@]}"; do
386+
[ "$(ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret")" = "foo" ]
387+
done
388+
)
389+
end_test
390+
391+
begin_test "ghe-restore with encrypted column current encryption key"
392+
(
393+
set -e
394+
rm -rf "$GHE_REMOTE_ROOT_DIR"
395+
setup_remote_metadata
396+
397+
required_files=(
398+
"encrypted-column-current-encryption-key"
399+
)
400+
401+
for file in "${required_files[@]}"; do
402+
echo "foo" > "$GHE_DATA_DIR/current/$file"
403+
done
404+
405+
ghe-restore -v -f localhost
406+
required_secrets=(
407+
"secrets.github.encrypted-column-current-encryption-key"
408+
)
409+
359410
for secret in "${required_secrets[@]}"; do
360411
[ "$(ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret")" = "foo" ]
361412
done

0 commit comments

Comments
 (0)