美文网首页
aws redshift

aws redshift

作者: SilasChen | 来源:发表于2021-10-12 16:02 被阅读0次

经过研究文档以及和aws沟通,咱们可以使用以下方案去实现我们的场景。

   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': datetime.datetime(2021, 10, 12, 10, 35, 54, 613000, tzinfo=tzutc()), 'ResponseMetadata': {'RequestId': '9ac9554b-f9fe-44a8-9db7-ad538c072e15', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '9ac9554b-f9fe-44a8-9db7-ad538c072e15', 'content-type': 'text/xml', 'content-length': '485', 'date': 'Tue, 12 Oct 2021 09:35:54 GMT'}, 'RetryAttempts': 0}}

  4,使用第三步获取的临时凭证,即可通过jdbc ,python 等去连接 query数据。

我在本地已经跑通了上述流程。

query 一个有权限的表:

([3],)

query没权限的表:

.ProgrammingError: {'S': 'ERROR', 'C': '42501', 'M': 'permission denied for relation mayb11_read', 'F': '/home/ec2-user/padb/src/pg/src/backend/catalog/aclchk.c', 'L': '2700', 'R': 'aclcheck_error'}

大家看这种方案可行不?

import redshift_connector

import boto3

# Connects to Redshift cluster using AWS credentials

conn = redshift_connector.connect(

    host='lenovo-test.cjtp8lvs5yxn.us-east-2.redshift.amazonaws.com',

    database='dev',

    user='IAMA:wangfang12',

    password='A6X44Il1axleXiD19ZK8YfaPUQqmdc+VKagamdP5gOwVNPGVhM+bn4RQ8RWGxCkqryQwhGA=='

)

print(conn)

try:

    client = boto3.client('redshift',region_name='us-east-2')

    creds = client.get_cluster_credentials(

    DbUser="wangfang12",

    DbName="dev",

    ClusterIdentifier="lenovo-test",

    DurationSeconds=3600,AutoCreate=True)

    print("cred....",creds)

except Exception as ERROR:

    print("Credentials Issue: " + ERROR)

    sys.exit(1)

相关文章

网友评论

      本文标题:aws redshift

      本文链接:https://www.haomeiwen.com/subject/axzdoltx.html