我正在尝试使用 Redshift 查询编辑器 V2 通过 IAM Identity Center 进行身份验证。这些是我的设置步骤:
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;
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 的集成至少可以说是“实验性的”......将随时向任何人发布更新信息
我刚刚进行了相同的设置,并且在一段时间内一切正常,但随后我们也开始看到相同的消息“无法列出数据库”
按照您所描述的进行初始设置后,我们继续将 idcnamespace:rolename 角色授予其他角色。
例如
grant role "my_role" to role <idcnamespace:rolename>
“my_role”随后被授予访问相关表/模式等的权限
一开始工作正常,但一段时间后,就好像没有权限一样。
刚刚与 AWS 通话,似乎这样的角色链可能是问题的原因,并且尚未得到完全支持,因此建议我们默认返回直接向 idcnamespace:rolename 授予表/模式访问权限。
不确定这是否对您有帮助,但以防万一我会回复