

# 在适用于 Aurora PostgreSQL 的 Babelfish 中管理权限和访问控制
<a name="babelfish-permissions"></a>

 在适用于 Aurora PostgreSQL 的 Babelfish 中，可以管理数据库、架构和对象的权限和访问控制。下表将概述用于在 Babelfish 中授予权限以实现各种访问控制场景的特定 SQL 命令。它将涵盖可以实现的受支持使用案例，以及当前不支持的案例的解决方法。这可让您在使用 Babelfish 数据库时配置适当的权限，来满足安全性和合规性要求。

## 支持的使用案例
<a name="babelfish-permissions-supported"></a>

 下表说明了 Babelfish 支持的使用案例。对于每个使用案例，该表显示了实现该使用案例所需的操作以及示例 SQL 命令。


|  使用案例  |  Action  |  SQL 命令  |  评论  |  Babelfish 版本兼容性  | 
| --- | --- | --- | --- | --- | 
|   支持登录名在任何数据库中执行 SELECT/DML/DDL   |   将登录名添加到 sysadmin 服务器角色   |   ALTER SERVER ROLE sysadmin ADD MEMBER `login`   |   无   |   所有 版本   | 
|   支持登录名在数据库中执行 SELECT/DML/DDL   |   使登录名成为数据库的拥有者   |   ALTER AUTHORIZATION ON DATABASE::`database` TO `login`   |   数据库只能有一个拥有者。  |   版本 3.4 及更高版本   | 
|   支持数据库用户对架构执行 SELECT/DML   |   向数据库用户授予对于架构的权限   |   GRANT SELECT/EXECUTE/INSERT/UPDATE/DELETE ON SCHEMA::`schema` TO `user`   |   无   |   版本 3.6 及更高版本、4.2 及更高版本   | 
|   支持数据库用户对架构执行 SELECT/DML   |   在架构创建时将数据库用户设为架构的拥有者   |   CREATE SCHEMA `schema` AUTHORIZATION `user`   |   当前不支持在创建架构后更改架构所有权。  |   版本 1.2 及更高版本   | 
|   支持数据库用户对于对象执行 SELECT/DML   |   向数据库用户授予对于对象的权限   |   GRANT SELECT/EXECUTE/INSERT/UPDATE/DELETE ON OBJECT::`object` TO `user`   |   无   |   所有 版本   | 
|   支持数据库用户在数据库中执行 SELECT/DML/DDL，包括删除数据库   |   将用户添加到 db\$1owner 固定数据库角色   |   ALTER ROLE db\$1owner ADD MEMBER `user`   |   仅限将用户添加到 db\$1owner 固定数据库角色。尚不支持将角色添加到 db\$1owner 角色。  |   版本 4.5 及更高版本、5.1 及更高版本   | 
|   支持自定义数据库角色的用户或成员在数据库中仅执行 SELECT   |   将用户或角色添加到 db\$1datareader 固定数据库角色   |   ALTER ROLE db\$1datareader ADD MEMBER `user` / `role`   |   无   |   版本 4.5 及更高版本、5.1 及更高版本   | 
|   支持自定义数据库角色的用户或成员在数据库中仅执行 DML   |   将用户或角色添加到 db\$1datawriter 固定数据库角色   |   ALTER ROLE db\$1datawriter ADD MEMBER `user` / `role`   |   无   |   版本 4.5 及更高版本、5.1 及更高版本   | 
|   支持自定义数据库角色的用户或成员在数据库中仅执行 DDL   |   将用户或角色添加到 db\$1accessadmin 固定数据库角色   |   ALTER ROLE db\$1accessadmin ADD MEMBER `user` / `role`   |   无   |   版本 4.5 及更高版本、5.1 及更高版本   | 
|   只允许自定义数据库角色的用户或成员对自定义角色执行 CREATE/ALTER/DROP，对数据库中的对象权限执行 GRANT/REVOKE，以及/或者在数据库中执行 CREATE SCHEMA 操作。  |   将用户或角色添加到 db\$1securityadmin 固定数据库角色   |   ALTER ROLE db\$1securityadmin ADD MEMBER `user` / `role`   |   无   |   版本 4.5 及更高版本、5.1 及更高版本   | 
|   只允许自定义数据库角色的用户或成员对任意用户执行 CREATE/ALTER/DROP，授予和撤销数据库访问权限以及将用户账户映射到登录名，以及/或者在数据库中执行 CREATE SCHEMA 操作   |   将用户或角色添加到 db\$1accessadmin 固定数据库角色   |   ALTER ROLE db\$1accessadmin ADD MEMBER `user` / `role`   |   无   |   版本 4.5 及更高版本、5.1 及更高版本   | 
|   支持登录名仅 CREATE/DROP/ALTER 任何数据库   |   将登录名添加到 dbcreator 固定服务器角色   |   ALTER SERVER ROLE dbcreator ADD MEMBER `login`   |   只能更改 dbcreator 登录名有权访问的那些数据库。  |   版本 4.5 及更高版本、5.1 及更高版本   | 
|   支持登录名仅 CREATE/ALTER/DROP 任何登录名   |   将登录名添加到 securityadmin 固定服务器角色   |   ALTER SERVER ROLE securityadmin ADD MEMBER `login`   |   无   |   版本 4.5 及更高版本、5.1 及更高版本   | 

## 不支持的使用案例以及解决办法
<a name="babelfish-permissions-unsupported"></a>

 下表说明了 Babelfish 不支持但可以使用解决方法实现的使用案例。


|  使用案例  |  Action  |  SQL 命令  |  评论  |  Babelfish 版本兼容性解决方法  | 
| --- | --- | --- | --- | --- | 
|   支持用户对对象/架构执行 SELECT/DML 以及向其他用户 GRANT 这些权限的选项   |   直接向所有其他用户 GRANT 权限   |   GRANT SELECT/EXECUTE/INSERT/UPDATE/DELETE ON OBJECT/SCHEMA::`object`/`schema` TO `user`   |   GRANT ... WITH GRANT OPTION 当前不受支持。  |   版本 3.6 及更高版本、4.2 及更高版本   | 
|   支持数据库用户在数据库中执行 SELECT/DML/DDL，包括删除数据库   |   将角色的成员添加到 db\$1owner 固定数据库角色   |   ALTER ROLE db\$1owner ADD MEMBER `user`   |   当前不支持将角色添加到 db\$1owner 角色。  |   版本 4.5 及更高版本、5.1 及更高版本   | 

## 不支持的使用案例
<a name="babelfish-permissions-unsupported"></a>

 下表说明了 Babelfish 不支持的使用案例。


|  使用案例  |  评论  | 
| --- | --- | 
|  拒绝自定义数据库角色的用户或成员在数据库中执行 SELECT   |   尚不支持 db\$1denydatareader 固定数据库角色   | 
|  拒绝自定义数据库角色的用户或成员在数据库中执行 DML   |   当前不支持 db\$1denydatawriter 固定数据库角色。  | 
|  支持登录名仅 KILL 任何数据库连接   |   当前不支持 processadmin 固定服务器角色。  | 
|  支持登录名仅添加或移除链接服务器   |   当前不支持 setupadmin 固定服务器角色。  | 