роль iam аутентифицирована с помощью Azure AD Workbench Redshift

Я пытался пройти аутентификацию для красного смещения через IAM из workbench / J и перешел по различным ссылкам: https://medium.com/tensult/aws-redshift-authentication-with-adfs-4ba423e2dc96 https://docs.amazonaws.cn/en_us/redshift/latest/mgmt/generating-user-credentials.html Я все еще невозможно подключиться.

Мой верстак выглядит так:

Driver : com.amazon.redshift.jdbc.Driver
url : jdbc:redshift:iam://<cluster-name>:<region>/<db>
username : org email id
password : org email id password

extended properties :
DbUser  employeeid
idp_port    443
AutoCreate  true
plugin_name com.amazon.redshift.plugin.AzureCredentialsProvider
idp_host    domain-id
preferred_role arn-of-IAM-Role

К роли IAM уже прикреплена следующая политика:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift:DescribeClusters",
                "iam:ListRoles"
            ],
            "Resource": "*"
        },
        {
            "Sid": "GetClusterCredsStatement",
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials"
            ],
            "Resource": [
                "arn:aws:redshift:*:*:dbname:<cluster>/<db>",
                "arn:aws:redshift:*:*:dbuser:<cluster>/${Redshift:DbUser}",
                "arn:aws:redshift:*:*:dbgroup:<cluster>/<dbgroup>"
            ]
        },
        {
            "Sid": "CreateClusterUserStatement",
            "Effect": "Allow",
            "Action": [
                "redshift:CreateClusterUser"
            ],
            "Resource": [
                "arn:aws:redshift:*:*:dbname:<cluster>/<db>",
                "arn:aws:redshift:*:*:dbuser:<cluster>/${Redshift:DbUser}"
            ]
        },
        {
            "Sid": "RedshiftJoinGroupStatement",
            "Effect": "Allow",
            "Action": [
                "redshift:JoinGroup"
            ],
            "Resource": [
                "arn:aws:redshift:*:*:dbgroup:<cluster>/<dbgroup>"
            ]
        }
    ]
}

Следующие правила претензий уже были добавлены:

DbUser : user.employeeid
DbGroups : user.assignedroles
Role : the IAM role with policy attached above
RoleSessionName : user.userprincipalname

Я могу предоставить более подробную информацию, но я просто следил за тем, что говорят эти ссылки, в противном случае у меня есть рабочие связи с кластером красного смещения.

Редактировать:

Я проследил журналы sqlworkbench и нашел: Caused by: java.lang.NoClassDefFoundError: com/amazonaws/auth/profile/ProfilesConfigFile

Изменить 2:

Я запустил sql workbench как:

java -Dworkbench.log.level=DEBUG -jar sqlworkbench.jar

и глядя на tail -f $Home/.sqlworkbench/workbench.log

чтобы узнать, что мне не хватает нескольких банок, например httpclient, httpcore, aws-sdk-java и некоторых других.

Теперь застрял на idp_tenant required parameter missing

Изменить 2: теперь я продвинулся до:

[JDBC Driver]SAML error: invalid_grant: AADSTS50126: Error validating credentials due to invalid username or password. Trace ID: 1c67cec4-bc2e-4140-bdc5-84e72ae50300 Correlation ID: 14be34b2-b9e2-49e5-8415-a388a8839c91 Timestamp: 2020-03-31 06:20:55Z 

Я мог бы даже декомпилировать Redshift Jar, чтобы посмотреть исходный код для плагина AzureCredentialsProvider - это действительно что-то не так в конце Azure AD. Пока мои учетные данные для имени пользователя и пароля верны.


person khanna    schedule 20.03.2020    source источник


Ответы (1)


Я столкнулся с той же проблемой, потому что AWS SDK, необходимый для расширения плагина, не связан с jar-файлом драйвера.

Есть 2 решения:

  1. Сделайте AWS SDK доступным по настроенному пути java.
  2. Загрузите и используйте драйвер красного смещения в комплекте с AWS SDK.

Для простоты я выбрал второй вариант. Это немного неясно из документации AWS, но похоже, что вам нужно перейти на страница документации по загрузке драйвера, прокрутите вниз до раздела« Использовать предыдущие версии драйвера JDBC с AWS SDK для Java »и выберите последний драйвер из этого списка.

В качестве дальнейшего объяснения похоже, что AzureCredentialsProvider предоставляется в банке драйвера независимо (поэтому вы можете его найти), но требуемый класс - это класс ProfilesConfigFile (часть SDK AWS IAM).

В качестве другого примечания я использовал DataGrip.

person Jordan Huizenga    schedule 06.05.2020
comment
спасибо за ответ, Джордан, но действительно ли вы выполняли интеграцию с Azure AD? Вам повезло, скажем: s3 .amazonaws.com / redshift-downloads / drivers / jdbc / 1.2.41.1065 / JAR? - person khanna; 08.05.2020
comment
Я установил plugin_name=com.amazon.redshift.plugin.AzureCredentialsProvider. Следует ли это изменить? Я скачал драйвер с AWS SDK v JDBC42-1.2.43.1067. Я по-прежнему получаю сообщение об ошибке в вопросе о недопустимом входе в систему. В Pycharm я могу выбрать com.amazon.redshift.jdbc.Driver или com.amazon.redshift.jdbc42.Driver Что вы выбрали, чтобы это работало? - person AtharvaI; 19.06.2020
comment
apparantly client_id / secret не подходят SAML в банке JDBC для красного смещения. Однако есть этот недавний пост как история успеха лазурного AD + Redshift. Давайте проверим это и посмотрим, работает ли он хоть у кого-то наконец - aws.amazon.com/blogs/big-data/? - person khanna; 22.06.2020