AWS Redshift 无服务器 IAM 身份中心身份验证不起作用

问题描述 投票:0回答:1

我正在尝试使用 Redshift 查询编辑器 V2 通过 IAM Identity Center 进行身份验证。这些是我的设置步骤:

  • 在与无服务器工作组相同的区域创建了 IAM 身份中心
  • 创建了一个无服务器 Redshift 实例(请注意,我尝试了私有和公共可访问的工作组,也部署在公共子网上)
  • 通过 Redshift 控制台创建 IAM Identity Center 应用程序,并且我已启用查询编辑器 v2 应用程序
  • 添加了包含我的用户的 IAM IdC 组(该组具有管理员权限,因此这不是凭证限制问题)
  • 在 Redshift(以超级用户身份访问)中,我使用以下查询创建了一个身份提供商:
CREATE IDENTITY PROVIDER "redshift-idc-app" TYPE AWSIDC
NAMESPACE 'awsidc'
APPLICATION_ARN 'arn:aws:sso::123456789012:application/ssoins-12345f67fe123d4/apl-a0b0a12dc123b1a4'
IAM_ROLE 'arn:aws:iam::123456789012:role/MyRedshiftRole';

注意该角色具有这种信任关系

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "redshift.amazonaws.com",
                    "redshift-serverless.amazonaws.com"
                ]
            },
            "Action": [
                "sts:AssumeRole",
                "sts:SetContext"
            ]
        }
    ]
}

以及这些权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "redshift:DescribeQev2IdcApplications",
                "redshift-serverless:ListNamespaces",
                "redshift-serverless:ListWorkgroups"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Sid": "AllowRetrievalOfRSMetadata"
        },
        {
            "Action": [
                "sso:DescribeApplication",
                "sso:DescribeInstance"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:sso::597598337678:application/ssoins-69876c8b1312f277/*",
                "arn:aws:sso:::instance/ssoins-69876c8b1312f277"
            ],
            "Sid": "AllowCreationOfIdPProvider"
        }
    ]
}

我确保该角色已按预期创建:

SELECT * FROM SVV_IDENTITY_PROVIDERS;
  • 最后,我在 Redshift 中使用我在
    IAM Identity Center connection
    应用程序的组部分中分配的组的提供程序的命名空间创建了一个角色:
CREATE ROLE <idcnamespace:rolename>;

-- See the available roles
SELECT * FROM SVV_ROLES;

当我尝试登录时,我在 QEV2 控制台上收到此错误:

Databases couldn't be listed
。然而,在对 Cloudtrail 进行进一步调查后,我可以看到有关该事件的以下详细信息:

{
"errorCode": "InternalServerErrorException",
    "requestParameters": {
        "path": "/cluster/connect/",
        "data": "***",
        "version": "1.001"
    },
    "responseElements": {
        "result": false,
        "code": "ContainerStateException",
        "error": "Cannot get container for user AROAYWI5C7KHET6MY5CL5:<USERNAME>",
        "message": "Cannot get container for user AROAYWI5C7KHET6MY5CL5:<USERNAME>"
    }
}

我在文档中找不到有关此特定错误的任何内容。我基本上是按照这个AWS指南一步步进行的,但不幸的是没有运气:( 非常感谢我在设置或其他地方可能搞砸的任何帮助:)

更新

AWS 团队可能正在处理某些事情,因为现在对于相同的设置/步骤,错误已更改为

ISACGetSessionException

"responseElements": {
        "result": false,
        "code": "ISACGetSessionException",
        "error": "Cannot get session information from ISAC",
        "message": "Cannot get session information from ISAC"
}

无法真正说出这里到底发生了什么。我希望 AWS 团队能够更加透明地否认 IDC 与 Redshift Serverless 的集成至少可以说是“实验性的”......将随时向任何人发布更新信息

amazon-web-services amazon-iam amazon-redshift-serverless aws-iam-identity-center
1个回答
0
投票

我刚刚进行了相同的设置,并且在一段时间内一切正常,但随后我们也开始看到相同的消息“无法列出数据库”

按照您所描述的进行初始设置后,我们继续将 idcnamespace:rolename 角色授予其他角色。

例如

grant role "my_role" to role <idcnamespace:rolename>

“my_role”随后被授予访问相关表/模式等的权限

一开始工作正常,但一段时间后,就好像没有权限一样。

刚刚与 AWS 通话,似乎这样的角色链可能是问题的原因,并且尚未得到完全支持,因此建议我们默认返回直接向 idcnamespace:rolename 授予表/模式访问权限。

不确定这是否对您有帮助,但以防万一我会回复

© www.soinside.com 2019 - 2024. All rights reserved.