Skip to content

Commit 1c6a8fc

Browse files
committed
tmp
1 parent 9c7cace commit 1c6a8fc

File tree

1 file changed

+37
-0
lines changed
  • ansible/files/admin_api_scripts/pg_upgrade_scripts

1 file changed

+37
-0
lines changed

ansible/files/admin_api_scripts/pg_upgrade_scripts/complete.sh

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,43 @@ EOF
150150

151151
run_sql -c "$PATCH_PGMQ_QUERY"
152152
run_sql -c "update pg_extension set extowner = 'postgres'::regrole where extname = 'pgmq';"
153+
154+
# Patch to handle upgrading to pgsodium-less Vault
155+
REENCRYPT_VAULT_SECRETS_QUERY=$(cat <<EOF
156+
DO \$\$
157+
BEGIN
158+
IF EXISTS (SELECT FROM pg_available_extension_versions WHERE name = 'supabase_vault' AND version = '0.3.0')
159+
AND EXISTS (SELECT FROM pg_extension WHERE extname = 'supabase_vault')
160+
THEN
161+
IF (SELECT extversion FROM pg_extension WHERE extname = 'supabase_vault') != '0.2.8' THEN
162+
GRANT USAGE ON SCHEMA vault TO postgres WITH GRANT OPTION;
163+
GRANT SELECT, DELETE ON vault.secrets, vault.decrypted_secrets TO postgres WITH GRANT OPTION;
164+
GRANT EXECUTE ON FUNCTION vault.create_secret, vault.update_secret, vault._crypto_aead_det_decrypt TO postgres WITH GRANT OPTION;
165+
END IF;
166+
-- Do an explicit IF EXISTS check to avoid referencing pgsodium objects if the project already migrated away from using pgsodium.
167+
IF EXISTS (SELECT FROM vault.secrets WHERE key_id IS NOT NULL) THEN
168+
UPDATE vault.secrets s
169+
SET
170+
secret = encode(
171+
vault._crypto_aead_det_encrypt(
172+
message := pgsodium.crypto_aead_det_decrypt(decode(s.secret, 'base64'), convert_to(s.id || s.description || s.created_at || s.updated_at, 'utf8'), s.key_id, s.nonce),
173+
additional := convert_to(s.id::text, 'utf8'),
174+
key_id := 0,
175+
context := 'pgsodium'::bytea,
176+
nonce := s.nonce
177+
),
178+
'base64'
179+
),
180+
key_id = NULL
181+
WHERE
182+
key_id IS NOT NULL;
183+
END IF;
184+
END IF;
185+
END
186+
\$\$;
187+
EOF
188+
)
189+
run_sql -c "$REENCRYPT_VAULT_SECRETS_QUERY"
153190
fi
154191

155192
run_sql -c "grant pg_read_all_data, pg_signal_backend to postgres"

0 commit comments

Comments
 (0)