1, 我们需要一个IAM 用户,此用户可以有redshift:GetClusterCredentials和redshift:CreateClusterUser策略。也就是可以执行获取用户临时凭证的权限。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"redshift:GetClusterCredentials",
"redshift:CreateClusterUser"
],
"Resource": ""
}
}
2,拿到上一部用户的id 和secret,配置到服务器上。
3,用户在portal登陆后,我们可以拿到用户的itcode,
使用第一步获得的用户的身份去执行获取 当前用户的临时登录凭证。
{'DbUser': 'IAMA:wangfang12', 'DbPassword': 'AaLWa9+T2IXgxh5T09G1nNNrfg2jzjeBCfuNeeJewUoIKZWVhmslVS/n+RKidt61TjAcuFQ==', 'Expiration': datetimedatetime(2021, 10, 12, 10, 35, 54, 613000, tzinfo=tzutc()), 'ResponseMetadata': {'RequestId': '9ac9554b-f9fe-44a8-9db7-ad538c072e15', '>control包含对对象的drop权限,ALL PRIVILEGES则限制在dml一级。
db2 => create table test(a varchar(10))
DB20000I SQL命令成功完成。
db2 => grant all privileges on test to db2user
DB20000I SQL命令成功完成。
db2 => connect to sample user db2user using db2user
数据库连接信息
数据库服务器 = DB2/NT 950
SQL 授权标识 = DB2USER
本地数据库别名 = SAMPLE
db2 => insert into administratortest values('test')
DB20000I SQL命令成功完成。
db2 => commit
DB20000I SQL命令成功完成。
db2 => drop table administratortest
DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0551N "DB2USER" 不具有对对象 "ADMINISTRATORTEST" 执行 *** 作 "DROP TABLE"
的特权。 SQLSTATE=42501
db2 => delete from administratortest
DB20000I SQL命令成功完成。
db2 => connect to sample
数据库连接信息
数据库服务器 = DB2/NT 950
SQL 授权标识 = ADMINIST
本地数据库别名 = SAMPLE
db2 => grant control on test to db2user
DB20000I SQL命令成功完成。
db2 => connect to sample user db2user using db2user
数据库连接信息
数据库服务器 = DB2/NT 950
SQL 授权标识 = DB2USER
本地数据库别名 = SAMPLE
db2 => drop table administratortest
DB20000I SQL命令成功完成。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)