Роль iam, аутентифицированная с помощью Azure AD Workbench Redshift - PullRequest
0 голосов
/ 20 марта 2020

Я пытался пройти проверку подлинности для красного смещения через IAM из рабочей среды / 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

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

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

I трассированные журналы sqlworkbench для поиска: Caused by: java.lang.NoClassDefFoundError: com/amazonaws/auth/profile/ProfilesConfigFile

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

Я запустил sql верстак как:

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 Конец сейчас. В то время как мои учетные данные и логин верны.

1 Ответ

0 голосов
/ 06 мая 2020

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

Существует 2 решения:

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

Для простоты я пошел с второй вариант. Это немного неясно из AWS документов, но похоже, что вам нужно go перейти на страницу документации по загрузке драйверов и прокрутить вниз до раздела "Использование предыдущих версий драйверов JDB C с * 1025". * SDK для Java "и выберите последнюю версию драйвера из этого списка.

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

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

...