mirror of
https://github.com/postgres/postgres.git
synced 2025-06-10 00:01:28 -04:00
PG-1517 - Automate testcase for (#243)
PG-1473 - Executing pg_tde_verify_principal_key() must require key viewer permission.
This commit is contained in:
parent
607cf9397d
commit
54cd79c81e
@ -2,10 +2,38 @@ CREATE EXTENSION IF NOT EXISTS pg_tde;
|
|||||||
CREATE USER regress_pg_tde_access_control;
|
CREATE USER regress_pg_tde_access_control;
|
||||||
SET ROLE regress_pg_tde_access_control;
|
SET ROLE regress_pg_tde_access_control;
|
||||||
-- should throw access denied
|
-- should throw access denied
|
||||||
SELECT pg_tde_add_database_key_provider_file('file-vault', '/tmp/pg_tde_test_keyring.per');
|
SELECT pg_tde_add_database_key_provider_file('local-file-provider', '/tmp/pg_tde_test_keyring.per');
|
||||||
ERROR: permission denied for function pg_tde_add_database_key_provider_file
|
ERROR: permission denied for function pg_tde_add_database_key_provider_file
|
||||||
SELECT pg_tde_set_key_using_database_key_provider('test-db-key', 'file-vault');
|
SELECT pg_tde_set_key_using_database_key_provider('test-db-key', 'local-file-provider');
|
||||||
ERROR: permission denied for function pg_tde_set_key_using_database_key_provider
|
ERROR: permission denied for function pg_tde_set_key_using_database_key_provider
|
||||||
|
SELECT pg_tde_add_global_key_provider_file('global-file-provider', '/tmp/pg_tde_test_keyring.per');
|
||||||
|
ERROR: must be superuser to modify global key providers
|
||||||
|
SELECT pg_tde_set_key_using_global_key_provider('test-db-key', 'global-file-provider');
|
||||||
|
ERROR: must be superuser to access global key providers
|
||||||
|
SELECT pg_tde_set_server_key_using_global_key_provider('wal-key','global-file-provider');
|
||||||
|
ERROR: must be superuser to access global key providers
|
||||||
|
SELECT pg_tde_set_default_key_using_global_key_provider('def-key', 'global-file-provider');
|
||||||
|
ERROR: must be superuser to access global key providers
|
||||||
|
SELECT pg_tde_delete_database_key_provider('local-file-provider');
|
||||||
|
ERROR: permission denied for function pg_tde_delete_database_key_provider
|
||||||
|
SELECT pg_tde_delete_global_key_provider('global-file-provider');
|
||||||
|
ERROR: must be superuser to modify global key providers
|
||||||
|
SELECT pg_tde_list_all_database_key_providers();
|
||||||
|
ERROR: permission denied for function pg_tde_list_all_database_key_providers
|
||||||
|
SELECT pg_tde_list_all_global_key_providers();
|
||||||
|
ERROR: permission denied for function pg_tde_list_all_global_key_providers
|
||||||
|
SELECT pg_tde_key_info();
|
||||||
|
ERROR: permission denied for function pg_tde_key_info
|
||||||
|
SELECT pg_tde_server_key_info();
|
||||||
|
ERROR: permission denied for function pg_tde_server_key_info
|
||||||
|
SELECT pg_tde_default_key_info();
|
||||||
|
ERROR: permission denied for function pg_tde_default_key_info
|
||||||
|
SELECT pg_tde_verify_key();
|
||||||
|
ERROR: permission denied for function pg_tde_verify_key
|
||||||
|
SELECT pg_tde_verify_server_key();
|
||||||
|
ERROR: permission denied for function pg_tde_verify_server_key
|
||||||
|
SELECT pg_tde_verify_default_key();
|
||||||
|
ERROR: permission denied for function pg_tde_verify_default_key
|
||||||
RESET ROLE;
|
RESET ROLE;
|
||||||
SELECT pg_tde_grant_database_key_management_to_role('regress_pg_tde_access_control');
|
SELECT pg_tde_grant_database_key_management_to_role('regress_pg_tde_access_control');
|
||||||
pg_tde_grant_database_key_management_to_role
|
pg_tde_grant_database_key_management_to_role
|
||||||
@ -21,13 +49,13 @@ SELECT pg_tde_grant_key_viewer_to_role('regress_pg_tde_access_control');
|
|||||||
|
|
||||||
SET ROLE regress_pg_tde_access_control;
|
SET ROLE regress_pg_tde_access_control;
|
||||||
-- should now be allowed
|
-- should now be allowed
|
||||||
SELECT pg_tde_add_database_key_provider_file('file-vault', '/tmp/pg_tde_test_keyring.per');
|
SELECT pg_tde_add_database_key_provider_file('local-file-provider', '/tmp/pg_tde_test_keyring.per');
|
||||||
pg_tde_add_database_key_provider_file
|
pg_tde_add_database_key_provider_file
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT pg_tde_set_key_using_database_key_provider('test-db-key', 'file-vault');
|
SELECT pg_tde_set_key_using_database_key_provider('test-db-key', 'local-file-provider');
|
||||||
pg_tde_set_key_using_database_key_provider
|
pg_tde_set_key_using_database_key_provider
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
|
|
||||||
@ -35,28 +63,34 @@ SELECT pg_tde_set_key_using_database_key_provider('test-db-key', 'file-vault');
|
|||||||
|
|
||||||
SELECT * FROM pg_tde_list_all_database_key_providers();
|
SELECT * FROM pg_tde_list_all_database_key_providers();
|
||||||
id | provider_name | provider_type | options
|
id | provider_name | provider_type | options
|
||||||
----+---------------+---------------+------------------------------------------------------------
|
----+---------------------+---------------+------------------------------------------------------------
|
||||||
1 | file-vault | file | {"type" : "file", "path" : "/tmp/pg_tde_test_keyring.per"}
|
1 | local-file-provider | file | {"type" : "file", "path" : "/tmp/pg_tde_test_keyring.per"}
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT key_name, key_provider_name, key_provider_id FROM pg_tde_key_info();
|
SELECT key_name, key_provider_name, key_provider_id FROM pg_tde_key_info();
|
||||||
key_name | key_provider_name | key_provider_id
|
key_name | key_provider_name | key_provider_id
|
||||||
-------------+-------------------+-----------------
|
-------------+---------------------+-----------------
|
||||||
test-db-key | file-vault | 1
|
test-db-key | local-file-provider | 1
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT pg_tde_verify_key();
|
||||||
|
pg_tde_verify_key
|
||||||
|
-------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
-- only superuser
|
-- only superuser
|
||||||
SELECT pg_tde_add_global_key_provider_file('file-vault', '/tmp/pg_tde_test_keyring.per');
|
SELECT pg_tde_add_global_key_provider_file('global-file-provider', '/tmp/pg_tde_test_keyring.per');
|
||||||
ERROR: must be superuser to modify global key providers
|
ERROR: must be superuser to modify global key providers
|
||||||
SELECT pg_tde_change_global_key_provider_file('file-vault', '/tmp/pg_tde_test_keyring.per');
|
SELECT pg_tde_change_global_key_provider_file('global-file-provider', '/tmp/pg_tde_test_keyring.per');
|
||||||
ERROR: must be superuser to modify global key providers
|
ERROR: must be superuser to modify global key providers
|
||||||
SELECT pg_tde_delete_global_key_provider('file-vault');
|
SELECT pg_tde_delete_global_key_provider('global-file-provider');
|
||||||
ERROR: must be superuser to modify global key providers
|
ERROR: must be superuser to modify global key providers
|
||||||
SELECT pg_tde_set_key_using_global_key_provider('key1', 'file-vault');
|
SELECT pg_tde_set_key_using_global_key_provider('key1', 'global-file-provider');
|
||||||
ERROR: must be superuser to access global key providers
|
ERROR: must be superuser to access global key providers
|
||||||
SELECT pg_tde_set_default_key_using_global_key_provider('key1', 'file-vault');
|
SELECT pg_tde_set_default_key_using_global_key_provider('key1', 'global-file-provider');
|
||||||
ERROR: must be superuser to access global key providers
|
ERROR: must be superuser to access global key providers
|
||||||
SELECT pg_tde_set_server_key_using_global_key_provider('key1', 'file-vault');
|
SELECT pg_tde_set_server_key_using_global_key_provider('key1', 'global-file-provider');
|
||||||
ERROR: must be superuser to access global key providers
|
ERROR: must be superuser to access global key providers
|
||||||
RESET ROLE;
|
RESET ROLE;
|
||||||
SELECT pg_tde_revoke_key_viewer_from_role('regress_pg_tde_access_control');
|
SELECT pg_tde_revoke_key_viewer_from_role('regress_pg_tde_access_control');
|
||||||
@ -71,5 +105,15 @@ SELECT * FROM pg_tde_list_all_database_key_providers();
|
|||||||
ERROR: permission denied for function pg_tde_list_all_database_key_providers
|
ERROR: permission denied for function pg_tde_list_all_database_key_providers
|
||||||
SELECT key_name, key_provider_name, key_provider_id FROM pg_tde_key_info();
|
SELECT key_name, key_provider_name, key_provider_id FROM pg_tde_key_info();
|
||||||
ERROR: permission denied for function pg_tde_key_info
|
ERROR: permission denied for function pg_tde_key_info
|
||||||
|
SELECT pg_tde_verify_key();
|
||||||
|
ERROR: permission denied for function pg_tde_verify_key
|
||||||
|
SELECT pg_tde_server_key_info();
|
||||||
|
ERROR: permission denied for function pg_tde_server_key_info
|
||||||
|
SELECT pg_tde_default_key_info();
|
||||||
|
ERROR: permission denied for function pg_tde_default_key_info
|
||||||
|
SELECT pg_tde_verify_server_key();
|
||||||
|
ERROR: permission denied for function pg_tde_verify_server_key
|
||||||
|
SELECT pg_tde_verify_default_key();
|
||||||
|
ERROR: permission denied for function pg_tde_verify_default_key
|
||||||
RESET ROLE;
|
RESET ROLE;
|
||||||
DROP EXTENSION pg_tde CASCADE;
|
DROP EXTENSION pg_tde CASCADE;
|
||||||
|
@ -5,8 +5,22 @@ CREATE USER regress_pg_tde_access_control;
|
|||||||
SET ROLE regress_pg_tde_access_control;
|
SET ROLE regress_pg_tde_access_control;
|
||||||
|
|
||||||
-- should throw access denied
|
-- should throw access denied
|
||||||
SELECT pg_tde_add_database_key_provider_file('file-vault', '/tmp/pg_tde_test_keyring.per');
|
SELECT pg_tde_add_database_key_provider_file('local-file-provider', '/tmp/pg_tde_test_keyring.per');
|
||||||
SELECT pg_tde_set_key_using_database_key_provider('test-db-key', 'file-vault');
|
SELECT pg_tde_set_key_using_database_key_provider('test-db-key', 'local-file-provider');
|
||||||
|
SELECT pg_tde_add_global_key_provider_file('global-file-provider', '/tmp/pg_tde_test_keyring.per');
|
||||||
|
SELECT pg_tde_set_key_using_global_key_provider('test-db-key', 'global-file-provider');
|
||||||
|
SELECT pg_tde_set_server_key_using_global_key_provider('wal-key','global-file-provider');
|
||||||
|
SELECT pg_tde_set_default_key_using_global_key_provider('def-key', 'global-file-provider');
|
||||||
|
SELECT pg_tde_delete_database_key_provider('local-file-provider');
|
||||||
|
SELECT pg_tde_delete_global_key_provider('global-file-provider');
|
||||||
|
SELECT pg_tde_list_all_database_key_providers();
|
||||||
|
SELECT pg_tde_list_all_global_key_providers();
|
||||||
|
SELECT pg_tde_key_info();
|
||||||
|
SELECT pg_tde_server_key_info();
|
||||||
|
SELECT pg_tde_default_key_info();
|
||||||
|
SELECT pg_tde_verify_key();
|
||||||
|
SELECT pg_tde_verify_server_key();
|
||||||
|
SELECT pg_tde_verify_default_key();
|
||||||
|
|
||||||
RESET ROLE;
|
RESET ROLE;
|
||||||
|
|
||||||
@ -16,18 +30,19 @@ SELECT pg_tde_grant_key_viewer_to_role('regress_pg_tde_access_control');
|
|||||||
SET ROLE regress_pg_tde_access_control;
|
SET ROLE regress_pg_tde_access_control;
|
||||||
|
|
||||||
-- should now be allowed
|
-- should now be allowed
|
||||||
SELECT pg_tde_add_database_key_provider_file('file-vault', '/tmp/pg_tde_test_keyring.per');
|
SELECT pg_tde_add_database_key_provider_file('local-file-provider', '/tmp/pg_tde_test_keyring.per');
|
||||||
SELECT pg_tde_set_key_using_database_key_provider('test-db-key', 'file-vault');
|
SELECT pg_tde_set_key_using_database_key_provider('test-db-key', 'local-file-provider');
|
||||||
SELECT * FROM pg_tde_list_all_database_key_providers();
|
SELECT * FROM pg_tde_list_all_database_key_providers();
|
||||||
SELECT key_name, key_provider_name, key_provider_id FROM pg_tde_key_info();
|
SELECT key_name, key_provider_name, key_provider_id FROM pg_tde_key_info();
|
||||||
|
SELECT pg_tde_verify_key();
|
||||||
|
|
||||||
-- only superuser
|
-- only superuser
|
||||||
SELECT pg_tde_add_global_key_provider_file('file-vault', '/tmp/pg_tde_test_keyring.per');
|
SELECT pg_tde_add_global_key_provider_file('global-file-provider', '/tmp/pg_tde_test_keyring.per');
|
||||||
SELECT pg_tde_change_global_key_provider_file('file-vault', '/tmp/pg_tde_test_keyring.per');
|
SELECT pg_tde_change_global_key_provider_file('global-file-provider', '/tmp/pg_tde_test_keyring.per');
|
||||||
SELECT pg_tde_delete_global_key_provider('file-vault');
|
SELECT pg_tde_delete_global_key_provider('global-file-provider');
|
||||||
SELECT pg_tde_set_key_using_global_key_provider('key1', 'file-vault');
|
SELECT pg_tde_set_key_using_global_key_provider('key1', 'global-file-provider');
|
||||||
SELECT pg_tde_set_default_key_using_global_key_provider('key1', 'file-vault');
|
SELECT pg_tde_set_default_key_using_global_key_provider('key1', 'global-file-provider');
|
||||||
SELECT pg_tde_set_server_key_using_global_key_provider('key1', 'file-vault');
|
SELECT pg_tde_set_server_key_using_global_key_provider('key1', 'global-file-provider');
|
||||||
|
|
||||||
RESET ROLE;
|
RESET ROLE;
|
||||||
|
|
||||||
@ -38,6 +53,11 @@ SET ROLE regress_pg_tde_access_control;
|
|||||||
-- verify the view access is revoked
|
-- verify the view access is revoked
|
||||||
SELECT * FROM pg_tde_list_all_database_key_providers();
|
SELECT * FROM pg_tde_list_all_database_key_providers();
|
||||||
SELECT key_name, key_provider_name, key_provider_id FROM pg_tde_key_info();
|
SELECT key_name, key_provider_name, key_provider_id FROM pg_tde_key_info();
|
||||||
|
SELECT pg_tde_verify_key();
|
||||||
|
SELECT pg_tde_server_key_info();
|
||||||
|
SELECT pg_tde_default_key_info();
|
||||||
|
SELECT pg_tde_verify_server_key();
|
||||||
|
SELECT pg_tde_verify_default_key();
|
||||||
|
|
||||||
RESET ROLE;
|
RESET ROLE;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user