Skip to content

Commit c9a416d

Browse files
authored
Merge pull request #414 from github/enterprise-3.8-backport-331-add-encrypted-column-keys
Backport 331 for 3.8: Add encrypted column encryption keys to backup utils
2 parents af47b86 + f850da8 commit c9a416d

File tree

5 files changed

+111
-2
lines changed

5 files changed

+111
-2
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)" -lt "$(version 3.8.0)" ]; then

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ restore-secret "kredz.credz HMAC key" "kredz-credz-hmac" "secrets.kredz.credz-hm
5353
# Restore kredz.varz HMAC key if present.
5454
restore-secret "kredz.varz HMAC key" "kredz-varz-hmac" "secrets.kredz.varz-hmac-secret"
5555

56+
# Restore encrypted column encryption keying material if present
57+
restore-secret "encrypted column encryption keying material" "encrypted-column-encryption-keying-material" "secrets.github.encrypted-column-keying-material"
58+
59+
# Restore encrypted column current encryption key if present
60+
restore-secret "encrypted column current encryption key" "encrypted-column-current-encryption-key" "secrets.github.encrypted-column-current-encryption-key"
61+
5662
# Restore SAML keys if present.
5763
if [ -f "$GHE_RESTORE_SNAPSHOT_PATH/saml-keys.tar" ]; then
5864
log_info "Restoring SAML keys ..."

test/test-ghe-backup.sh

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,56 @@ begin_test "ghe-backup takes backup of kredz-varz settings"
543543
)
544544
end_test
545545

546+
begin_test "ghe-backup takes backup of encrypted column encryption keying material"
547+
(
548+
set -e
549+
550+
required_secrets=(
551+
"secrets.github.encrypted-column-keying-material"
552+
)
553+
554+
for secret in "${required_secrets[@]}"; do
555+
ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret" "foo"
556+
done
557+
558+
ghe-backup
559+
560+
required_files=(
561+
"encrypted-column-encryption-keying-material"
562+
)
563+
564+
for file in "${required_files[@]}"; do
565+
[ "$(cat "$GHE_DATA_DIR/current/$file")" = "foo" ]
566+
done
567+
568+
)
569+
end_test
570+
571+
begin_test "ghe-backup takes backup of encrypted column current encryption key"
572+
(
573+
set -e
574+
575+
required_secrets=(
576+
"secrets.github.encrypted-column-current-encryption-key"
577+
)
578+
579+
for secret in "${required_secrets[@]}"; do
580+
ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret" "foo"
581+
done
582+
583+
ghe-backup
584+
585+
required_files=(
586+
"encrypted-column-current-encryption-key"
587+
)
588+
589+
for file in "${required_files[@]}"; do
590+
[ "$(cat "$GHE_DATA_DIR/current/$file")" = "foo" ]
591+
done
592+
593+
)
594+
end_test
595+
546596
begin_test "ghe-backup takes backup of Actions settings"
547597
(
548598
set -e

test/test-ghe-restore.sh

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,56 @@ begin_test "ghe-restore with no pages backup"
281281
)
282282
end_test
283283

284+
begin_test "ghe-restore with encrypted column encryption keying material"
285+
(
286+
set -e
287+
rm -rf "$GHE_REMOTE_ROOT_DIR"
288+
setup_remote_metadata
289+
290+
required_files=(
291+
"encrypted-column-encryption-keying-material"
292+
)
293+
294+
for file in "${required_files[@]}"; do
295+
echo "foo" > "$GHE_DATA_DIR/current/$file"
296+
done
297+
298+
ghe-restore -v -f localhost
299+
required_secrets=(
300+
"secrets.github.encrypted-column-keying-material"
301+
)
302+
303+
for secret in "${required_secrets[@]}"; do
304+
[ "$(ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret")" = "foo" ]
305+
done
306+
)
307+
end_test
308+
309+
begin_test "ghe-restore with encrypted column current encryption key"
310+
(
311+
set -e
312+
rm -rf "$GHE_REMOTE_ROOT_DIR"
313+
setup_remote_metadata
314+
315+
required_files=(
316+
"encrypted-column-current-encryption-key"
317+
)
318+
319+
for file in "${required_files[@]}"; do
320+
echo "foo" > "$GHE_DATA_DIR/current/$file"
321+
done
322+
323+
ghe-restore -v -f localhost
324+
required_secrets=(
325+
"secrets.github.encrypted-column-current-encryption-key"
326+
)
327+
328+
for secret in "${required_secrets[@]}"; do
329+
[ "$(ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret")" = "foo" ]
330+
done
331+
)
332+
end_test
333+
284334
# Setup Actions data for the subsequent tests
285335
setup_actions_test_data "$GHE_DATA_DIR/1"
286336

@@ -329,7 +379,7 @@ begin_test "ghe-restore with Kredz settings"
329379
required_secrets=(
330380
"secrets.kredz.credz-hmac-secret"
331381
)
332-
382+
333383
for secret in "${required_secrets[@]}"; do
334384
[ "$(ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret")" = "foo" ]
335385
done
@@ -355,7 +405,7 @@ begin_test "ghe-restore with kredz-varz settings"
355405
required_secrets=(
356406
"secrets.kredz.varz-hmac-secret"
357407
)
358-
408+
359409
for secret in "${required_secrets[@]}"; do
360410
[ "$(ghe-ssh "$GHE_HOSTNAME" -- ghe-config "$secret")" = "foo" ]
361411
done

test/testlib.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#
2020
# Copyright (c) 2011-14 by Ryan Tomayko <http://tomayko.com>
2121
# License: MIT
22+
# shellcheck disable=SC2319
2223
set -e
2324

2425
# Setting basic paths

0 commit comments

Comments
 (0)