@@ -5,34 +5,44 @@ DECLARE
5
5
pgsodium_exists boolean ;
6
6
vault_exists boolean ;
7
7
BEGIN
8
- pgsodium_exists = (
9
- select count (* ) = 1
10
- from pg_available_extensions
11
- where name = ' pgsodium'
12
- and default_version in (' 3.1.6' , ' 3.1.7' , ' 3.1.8' , ' 3.1.9' )
13
- );
14
-
15
- vault_exists = (
8
+ IF EXISTS (SELECT FROM pg_available_extensions WHERE name = ' supabase_vault' AND default_version != ' 0.2.8' ) THEN
9
+ CREATE EXTENSION IF NOT EXISTS supabase_vault;
10
+
11
+ -- for some reason extension custom scripts aren't run during AMI build, so
12
+ -- we manually run it here
13
+ GRANT USAGE ON SCHEMA vault TO postgres WITH GRANT OPTION;
14
+ GRANT SELECT , DELETE ON vault .secrets , vault .decrypted_secrets TO postgres WITH GRANT OPTION;
15
+ GRANT EXECUTE ON FUNCTION vault .create_secret , vault .update_secret , vault ._crypto_aead_det_decrypt TO postgres WITH GRANT OPTION;
16
+ ELSE
17
+ pgsodium_exists = (
16
18
select count (* ) = 1
17
19
from pg_available_extensions
18
- where name = ' supabase_vault'
19
- );
20
-
21
- IF pgsodium_exists
22
- THEN
23
- create extension if not exists pgsodium;
24
-
25
- grant pgsodium_keyiduser to postgres with admin option;
26
- grant pgsodium_keyholder to postgres with admin option;
27
- grant pgsodium_keymaker to postgres with admin option;
28
-
29
- grant execute on function pgsodium .crypto_aead_det_decrypt (bytea , bytea , uuid, bytea ) to service_role;
30
- grant execute on function pgsodium .crypto_aead_det_encrypt (bytea , bytea , uuid, bytea ) to service_role;
31
- grant execute on function pgsodium .crypto_aead_det_keygen to service_role;
32
-
33
- IF vault_exists
20
+ where name = ' pgsodium'
21
+ and default_version in (' 3.1.6' , ' 3.1.7' , ' 3.1.8' , ' 3.1.9' )
22
+ );
23
+
24
+ vault_exists = (
25
+ select count (* ) = 1
26
+ from pg_available_extensions
27
+ where name = ' supabase_vault'
28
+ );
29
+
30
+ IF pgsodium_exists
34
31
THEN
35
- create extension if not exists supabase_vault;
32
+ create extension if not exists pgsodium;
33
+
34
+ grant pgsodium_keyiduser to postgres with admin option;
35
+ grant pgsodium_keyholder to postgres with admin option;
36
+ grant pgsodium_keymaker to postgres with admin option;
37
+
38
+ grant execute on function pgsodium .crypto_aead_det_decrypt (bytea , bytea , uuid, bytea ) to service_role;
39
+ grant execute on function pgsodium .crypto_aead_det_encrypt (bytea , bytea , uuid, bytea ) to service_role;
40
+ grant execute on function pgsodium .crypto_aead_det_keygen to service_role;
41
+
42
+ IF vault_exists
43
+ THEN
44
+ create extension if not exists supabase_vault;
45
+ END IF;
36
46
END IF;
37
47
END IF;
38
48
END $$;
0 commit comments