第18章 管理角色和权限

18章 管理角色和权限

在Greenplum数据授权机制在数据库中存储了用于访问数据库对象的角色和权限,并使用SQL语句或命令行实用程序中授权。

Greenplum的数据库管理采用角色来控制数据库访问权限。角色的概念是包含用户和组的概念。一个角色可以是数据库用户,一个组,或两者兼而有之。角色可以拥有数据库对象(例如表格),并可以在这些对象上为其他角色分配权限来控制访问的对象。角色可以是其它角色的成员,因而成员角色可以继承其父角色的对象权限。

每个Greenplum数据系统包含了一组数据库角色(用户和组)。这些角色和服务器运行的操作系统管理的用户和组分开。然而,为了方便起见,您可能希望保持操作系统的用户名和Greenplum数据角色名称之间的关系,因为许多客户端应用程序使用当前操作系统的用户名作为缺省值。

在Greenplum数据库,用户通过master来登录和连接示例,master验证他们的角色和访问权限。然后,master向后台运行的段实例发出命令。

角色是在系统级定义,这意味着它们对系统中的所有数据库都有效。

为了引导该Greenplum数据系统,一个刚初始化系统总是包含一个预定义的超级用户角色(也被称为系统用户)。这个角色将有相同的名称初始化Greenplum数据系统的操作系统用户。习惯上,这个角色被命名为gpadmin。为了创造更多的角色,你首先得连接为初始角色。

关于角色和权限的最佳安全实践

•      对gpadmin系统用户进行安全强化. Therefore, it is very important tosecure the gpadmin user id and only provide access to essential systemadministrators. Administrators should only log in to Greenplum as gpadmin whenperforming certain system maintenance tasks (such as upgrade or expansion).Database users should never log on as gpadmin, and ETL or production workloadsshould never run as gpadmin.

Greenplum的需要UNIX用户ID安装和初始化Greenplum的数据库系统。该系统的用户被称为Greenplum的文档中gpadmin。这gpadmin用户处于Greenplum数据的默认数据库超级用户,以及Greenplum的安装和其底层数据文件的文件系统所有者。此默认管理员帐户是Greenplum数据引擎设计的基础。该系统不能脱离gpadmin而运行,并且也没有办法来限制本gpadmin用户ID的访问。使用角色来管理那些对数据库有特定访问权限的用户。您应该只使用gpadmin账户系统维护任务,如扩展和升级。用此用户ID登录Greenplum主机后读取,更改或删除任何数据;包括系统目录数据和数据库的访问权限。因此,为了确保gpadmin用户ID和只提供获得基本系统管理员这是非常重要的。管理员应仅执行某些系统维护任务(如升级或扩展)时才使用gpadmin登录系统。数据库用户永远不要以gpadmin登录系统。ETL或生产工作负载不应该以gpadmin运行。

 

•      分配一个不同的角色,在记录每个用户对于日志和审计的目的,被允许登录到Greenplum数据应该给自己的数据库角色的每个用户。对于应用程序或Web服务,考虑为每个应用程序或服务的独特作用。请参阅创建新角色(用户)。SeeCreatingNew Roles (Users).

•               使用组来管理访问权限。见角色成员SeeRoleMembership.

•      限制具有SUPERUSER 角色属性的用户.超级用户绕过Greenplum数据引擎的所有访问权限检查,以及资源的排队。只有系统管理员应给超级用户权限。参见变更角色属性。See AlteringRole Attributes.

创建新的角色(用户)

用户级的角色被认为是一个可以登录到数据库并启动数据库会话的数据库角色。因此,当您创建使用CREATE ROLE命令创建一个新用户级别的角色,必须指定登录权限。例如:

=# CREATE ROLE jsmith WITH LOGIN;

数据库角色可以有许多定义什么样的该角色可以在数据库中执行任务的属性。您可以使用ALTER ROLE命令,当你创建角色设置这些属性,或更高版本。见表25:角色属性的角色属性可以设置的说明。

更改角色属性

A databaserole may have a number of attributes that define what sort of tasks that rolecan perform in the database.

Table 25: RoleAttributes

Attributes

Description

SUPERUSER | NOSUPERUSER

Determines if the role is a superuser. You must yourself be a superuser to create a new superuser. nosuperuser is the default.

确定该角色是一个超级用户。你必须自己是一个超级用户才能创建一个新的超级用户。默认是nosuperuser

CREATEDB | NOCREATEDB

Determines if the role is allowed to create databases. nocreatedb is the default.

确定是否角色可以创建数据库。 默认是nocreatedb。

CREATEROLE | NOCREATEROLE

确定角色是否可以创建和管理其他角色。默认是nocreaterole

INHERIT | NOINHERIT

决定一个角色是否继承了特权的角色是成员。与INHERIT属性的角色可以自动使用任何数据库权限已被授予的所有角色直接或间接为成员。 默认是inherit.

LOGIN | NOLOGIN

决定一个角色是否可以登录。具有LOGIN属性的角色可以认为是一个用户。没有这个属性的角色可以用于管理数据库权限(组)是有用的。默认是nologin.

CONNECTION LIMIT connlimit

如果角色可以登录,这个参数的作用,可有多少并发连接做。 -1(缺省)意味着没有限制。

CREATEEXTTABLE | NOCREATEEXTTABLE

决定一个角色是否可以创建外部表。 NOCREATEEXTTABLE是默认的。为了与CREATEEXTTABLE属性的作用下,默认的外部表的类型是可读的,默认的协议是gpfdist。注意,使用该文件或执行协议只能由超级用户被创建,外部表。

PASSWORD 'password'

Sets the role's password. If you do not plan to use password authentication you can omit this option. If no password is specified, the password will be set to null and password authentication will always fail for that user. A null password can optionally be written explicitly as password null.

设置角色的口令。如果你不打算使用口令认证,你可以忽略这个选项。如果没有指定密码,该密码将被设置为null和并且该用户的密码验证总会失败。空密码,可以随意被明确写为PASSWORD NULL。

Attributes

Description

ENCRYPTED | UNENCRYPTED

控制新密码是否被存储作为在pgauthid系统目录的散列字符串。如果没有指定加密也没UNENCRYPTED,默认行为是由password_加密配置参数,这是在默认情况下决定的。

如果提供的口令字符串已经是散列格式,它被原样保存,无论加密或指定加密。

请参阅保护在Greenplum的数据库密码有关保护登录密码的更多信息。

See Protecting Passwords in Greenplum Database for additional information about protecting login passwords.

VALID UNTIL ,timestamp,

设置日期和时间之后,用户的密码将不再有效。如果密码省略了此选项,将适用于所有的时间。Sets a date and time after which the role's password is no longer valid. If omitted the password will be valid for all time.

RESOURCE QUEUE

分配的作用,为工作负载管理命名资源队列。任何声明角色的问题是再受到资源队列的限制。请注意,资源队列属性是不会继承的;它必须在每个用户级(登录)的角色设置。

DENY {deny interval 丨 deny point}

限制的间隔,按天或日期和时间规定期间访问。欲了解更多信息,请参阅基于时间的验证。For more information seeTime-based Authentication.

You can setthese attributes when you create the role, or later using the alter role command. 例如:

=# ALTER ROLEjsmith WITH PASSWORD ,passwd123,;

=# ALTER ROLEadmin VALID UNTIL ,infinity,;

=# ALTER ROLEjsmith LOGIN;

=# ALTER ROLEjsmith RESOURCE QUEUE adhoc;

=# ALTER ROLEjsmith DENY DAY ,Sunday,;

一个角色也可以有许多的服务器配置设置特定角色的默认值。例如,要设置一个角色的默认模式搜索路径:

=# ALTER ROLEadmin SET search_path TO myschema, public;

角色成员

In GreenplumDatabase this is done by creating a role that represents the group, and thengranting membership in the group role to individual user roles.

角色成员是用来方便对用户组进行对象的权限管理:采用这种方式,权限可以对一个整体来进行授予或撤销。在Greenplum数据库,是通过创建一个代表群组的角色,然后将该组的角色手遇到各个用户角色来完成。

使用create role SQL命令来创建一个新的群组角色,例如:

=# CREATE ROLEadmin CREATEROLE CREATEDB;

一旦组角色存在,您可以添加和删除使用GRANT成员(用户角色)和REVOKE命令。例如:

=# GRANT adminTO john, sally;

=# REVOKEadmin FROM bob;

对于管理对象的权限,你会那么仅授予适当的权限组级别的角色(见表26:对象特权)。会员用户角色则继承组角色的对象权限。例如:

=# GRANT ALLON TABLE mytable TO admin;

=# GRANT ALLON SCHEMA myschema TO admin;

=# GRANT ALLON DATABASE mydb TO admin;

The roleattributes login,superuser, createdb, createrole, createexttable, andRESOURCE queue are neverinherited as ordinary privileges on database objects are. User members must actuallyset role to a specificrole having one of these attributes in order to make use of the attribute. Inthe above example, we gave createdband createroleto the admin role. If sally is a member of admin, she could issue the followingcommand to assume the role attributes of the parent role:

该角色属性LOGIN,SUPERUSER,CREATEDB,CREATEROLE,CREATEEXTTABLE,RESOURCE队列从不继承的数据库对象上的普通权限的。用户成员必须实际设置的角色具有这些属性的一个特殊的角色,以充分利用的属性。在上面的例子中,我们给CREATEDB和CREATEROLE给管理员的角色。如果sally 是管理员的一员,她可以使用以下命令来承担父角色的角色属性:

=> SET ROLEadmin;

管理对象的权限

When an object(table, view, sequence, database, function, language, schema, or tablespace) iscreated, it is assigned an owner. The owner is normally the role that executedthe creation statement. For most kinds of objects, the initial state is thatonly the owner (or a superuser) can do anything with the object. To allow otherroles to use it, privileges must be granted. Greenplum Database supports thefollowing privileges for each object type:

当创建一个对象(表,视图,序列,数据库,函数,语言,或表空间),它被分配一个所有者。所有者通常是执行创建语句的角色。对于大多数类型的对象,初始状态是只有所有者(或超级用户)可以做的任何对象。要允许其他角色使用它,必须赋予他们权限。 Greenplum的数据库支持每个对象类型以下权限:

 

Table 26:Object Privileges

Object Type

Privileges

Tables, Views, Sequences

SELECT

 

INSERT

 

UPDATE

 

DELETE

 

RULE

 

ALL

External Tables

SELECT

 

RULE

 

ALL

Databases

CONNECT

 

CREATE

 

TEMPORARY | TEMP

 

ALL

Functions

EXECUTE

Procedural Languages

USAGE

Schemas

CREATE

 

USAGE

 

ALL

Object Type

Privileges

Custom Protocol

SELECT

 

INSERT

 

UPDATE

 

DELETE

 

RULE

 

ALL

注意:特权必须单独给予每个对象。例如,一个数据库上的所有授予不授予完全访问该数据库中的对象。它只授予所有的数据库级权限(CONNECT,CREATETEMPORARY)数据库本身。

使用GRANT SQL命令给一个对象的特定角色的权限。例如:

=# GRANT INSERT ON mytable TO jsmith;

要撤销权限,使用REVOKE命令。 例如:

=# REVOKE ALLPRIVILEGES ON mytable FROM jsmith;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值