GCP SQL Server-格兰特&;撤销用户
我对GCP还是新手。我有一台SQL Server。我有两个用户。第一个是“sqlserver”(这是GCP的默认值)和“userA”(这是新帐户) 我有这么多数据库,我希望“sqlserver”帐户是唯一一个可以访问所有内容的帐户。但对于“userA”,我希望它只能访问1个数据库(比如DatabaseA) 我已尝试撤销选择、拒绝选择、全部撤销。但是userA仍然可以查询其他数据库GCP SQL Server-格兰特&;撤销用户,sql,sql-server,google-cloud-platform,Sql,Sql Server,Google Cloud Platform,我对GCP还是新手。我有一台SQL Server。我有两个用户。第一个是“sqlserver”(这是GCP的默认值)和“userA”(这是新帐户) 我有这么多数据库,我希望“sqlserver”帐户是唯一一个可以访问所有内容的帐户。但对于“userA”,我希望它只能访问1个数据库(比如DatabaseA) 我已尝试撤销选择、拒绝选择、全部撤销。但是userA仍然可以查询其他数据库 有解决办法吗?谢谢您使用GCP SQL Server创建的所有用户都是作为CustomerDbRootRole角色的
有解决办法吗?谢谢您使用GCP SQL Server创建的所有用户都是作为CustomerDbRootRole角色的成员创建的,并且具有与SQL Server用户相同的权限 您可以使用命令更改任何用户的权限 例如,您可以使用以下脚本从CustomerDbRootRole中删除用户:
ALTER ROLE CustomerDbRootRole DROP MEMBER YourUser;
此外,我建议您通过以下查询检查所有YourUser的权限:
SELECT
DB_NAME() AS DB
,P.name AS Database_Principal
,P2.name AS Ruolo
,P.type_desc
,P.create_date
FROM
sys.database_principals P
INNER JOIN sys.database_role_members R ON R.member_principal_id = P.principal_id
INNER JOIN sys.database_principals P2 ON P2.principal_id = R.role_principal_id
WHERE
P.[name] IN ('YourUser')
ORDER BY
P.[name]
之后,您可以像上面那样使用ALTER ROLE撤销所有不必要的权限
在您的情况下,如果希望仅将单个数据库的读取权限授予特定用户,我建议:
1-创建用户:
USE [YourDB]
GO
CREATE USER [YourUser] WITH DEFAULT_SCHEMA=[dbo]
GO
2-将您的用户xxx添加到db_datareader角色中:
USE [YourDB]
GO
ALTER ROLE db_datareader ADD MEMBER [YourUser]
GO
使用GCP SQL Server创建的所有用户都是作为CustomerDbRootRole角色的成员创建的,并且具有与SQL Server用户相同的权限 您可以使用命令更改任何用户的权限 例如,您可以使用以下脚本从CustomerDbRootRole中删除用户:
ALTER ROLE CustomerDbRootRole DROP MEMBER YourUser;
此外,我建议您通过以下查询检查所有YourUser的权限:
SELECT
DB_NAME() AS DB
,P.name AS Database_Principal
,P2.name AS Ruolo
,P.type_desc
,P.create_date
FROM
sys.database_principals P
INNER JOIN sys.database_role_members R ON R.member_principal_id = P.principal_id
INNER JOIN sys.database_principals P2 ON P2.principal_id = R.role_principal_id
WHERE
P.[name] IN ('YourUser')
ORDER BY
P.[name]
之后,您可以像上面那样使用ALTER ROLE撤销所有不必要的权限
在您的情况下,如果希望仅将单个数据库的读取权限授予特定用户,我建议:
1-创建用户:
USE [YourDB]
GO
CREATE USER [YourUser] WITH DEFAULT_SCHEMA=[dbo]
GO
2-将您的用户xxx添加到db_datareader角色中:
USE [YourDB]
GO
ALTER ROLE db_datareader ADD MEMBER [YourUser]
GO
这个答案有用吗?你是否遇到同样的问题?这不起作用。由于缺少
CustomerDbRootRole
的权限,ALTER-ROLE
和CREATE-USER
命令失败。此外,权限列表奇怪地没有返回任何内容。因此,在我看来,猫咬了自己的尾巴,没有办法离开CustomerDbRootRole
。这个答案有用吗?你是否遇到了同样的问题?这不起作用。由于缺少CustomerDbRootRole
的权限,ALTER-ROLE
和CREATE-USER
命令失败。此外,权限列表奇怪地没有返回任何内容。因此,在我看来,猫咬自己的尾巴,没有办法走出定制Brootrole
。