更新时间:2023-11-01 GMT+08:00
分享

权限管理

  • 虚拟私有云可以为GaussDB实例构建隔离的、用户自主配置和管理的虚拟网络环境。子网提供与其他网络隔离的、可以独享的网络资源,以提高网络安全性,可以使用IAM为企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,通过IAM进行精细的权限管理。具体内容请参见权限管理
  • 保障数据库的安全性和稳定性在使用数据库实例之前务必先设置安全组,具体内容请参见设置安全组规则
  • 为防止PUBLIC拥有CREATE权限,导致数据库任何账户都可以在PUBLIC模式下创建表或者其他数据库对象,其他用户也可以修改这些数据,可以如下SQL语句来查询:

    SELECT CAST(has_schema_privilege('public','public','CREATE') AS TEXT);

    • 如果返回为TURE,执行如下SQL语句进行修复:

      REVOKE CREATE ON SCHEMA public FROM PUBLIC;

  • PUBLIC角色属于任何用户,如果将对象的所有权限授予PUBLIC角色,则任意用户都会继承此对象的所有权限,违背权限最小化原则,为了保障数据库数据的安全,此角色应该拥有尽可能少的权限。通过执行如下SQL语句来确定所有权限是否授权PUBLIC角色:

    SELECT relname,relacl FROM pg_class WHERE (CAST(relacl AS TEXT) LIKE '%,=arwdDxt/%}' OR CAST(relacl AS TEXT) LIKE '{=arwdDxt/%}') AND (CAST(relacl AS TEXT) LIKE '%,=APmiv/%}' OR CAST(relacl AS TEXT) LIKE '{=APmiv/%}');

    • 为空则说明已授权,如果已授权,可通过执行如下SQL语句来修复:

      REVOKE ALL ON <OBJECT_NAME> FROM PUBLIC;

  • pg_catalog模式下的pg_authid系统表中包含了数据库中所有的角色信息。由于所有用户会继承PUBLIC角色的权限,为了防止敏感信息泄露或被更改,PUBLIC角色不允许拥有pg_authid系统表的任何权限,执行如下SQL语句,如果查询结果显示不为空,则已经被授权:

    SELECT relname,relacl FROM pg_class WHERE relname = 'pg_authid' AND CAST(relacl AS TEXT) LIKE '%,=%}';

    • 如果已授权,通过执行如下SQL语句进行修复:

      REVOKE ALL ON pg_authid FROM PUBLIC;

  • 普通用户指用于执行普通业务操作的非管理员用户。作为普通用户,不应该拥有超出其正常权限范围的管理权限,例如创建角色权限,创建数据库权限,审计权限,监控权限,运维权限,安全策略权限等,在满足正常业务需求的前提下,为了确保普通用户权限最小化,应撤销普通用户非必须的管理权限。
  • 在创建函数时声明SECURITY DEFINER表示函数以创建它的用户权限执行,如果使用不当会导致函数执行者借助创建者的权限执行越权操作,所以一定确保这样的函数不被滥用。为了安全考虑,禁止PUBLIC角色执行SECURITY DEFINER类型的函数,执行如下SQL语句查询pubilc角色是否有SECURITY DEFINER类型的函数:

    SELECT a.proname, b.nspname FROM pg_proc a, pg_namespace b where a.pronamespace=b.oid and b.nspname <> 'pg_catalog' and a.prosecdef='t';

    • 如果返回非空,执行如下SQL语句检查是否有执行权限:

      SELECT CAST(has_function_privilege('public', 'function_name([arg_type][, ...])', 'EXECUTE') AS TEXT);

      • 返回TRUE,则代表拥有,执行下面的SQL语句进行修复:

        REVOKE EXECUTE ON FUNCTION function_name([arg_type][, ...]) FROM PUBLIC;

  • SECURITY INVOKER函数是以调用它的用户的权限来执行,使用不当会导致函数创建者借助执行者的权限执行越权操作,所以在调用非自身创建的这类函数时,一定要先检查函数执行内容,避免造成函数创建者借助执行者的权限执行了越权的操作。
分享:

    相关文档

    相关产品