Configurar o Amazon Redshift IAM OAuth

A partir do Tableau 2023.3.2 para uso local (Tableau Desktop, Tableau Server e Tableau Prep) e no final de março de 2024 para Tableau Cloud, você pode usar o OAuth 2.0/OIDC para federar a identidade de um provedor de identidade externo para o Amazon Redshift.

Estas instruções são para o serviço IAM da AWS mais antigo. Para integração de IDC de IAM, consulte Configurar o OAuth do Amazon Redshift IAM Identity Center.

Dependendo do fornecedor de identidade, existem diferentes passos necessários para configurar a integração. Esta é uma visão geral de alto nível. O Tableau não pode fornecer instruções detalhadas sobre como configurar a AWS ou o IDP, mas a abordagem geral é descrita abaixo.

Configurar o IDP

  1. Crie clientes OAuth no IDP para Tableau Desktop e Tableau Server ou Tableau Cloud. O cliente Desktop deve ativar PKCE e usar redirecionamentos de http://localhost.

  2. Adicione declarações personalizadas de uso para autorização de funções. Em particular, se você estiver usando o IAM original, talvez queira adicionar declarações para DbUser e DbGroups. Eles podem ser usados posteriormente em suas políticas do IAM.

  3. Crie o arquivo de configuração do Tableau OAuth. Veja a documentação em GitHub(O link abre em nova janela) e os exemplos aqui(O link abre em nova janela). Aceitamos exemplos para outros IDPs.

    1. Certifique-se de prefixar as IDs de configuração do Tableau OAuth com “custom_”.

    2. Se o seu IDP suportar porta localhost dinâmica, desative OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL. Se o seu IDP não for compatível, certifique-se de adicionar várias URLs de retorno de chamada de host local à lista de permissões no arquivo de configuração e no IDP.

  4. Instale os arquivos de configuração do Tableau OAuth em computadores desktop e nos sites do Tableau Server ou Tableau Cloud.

Configurar o IDP na AWS

1. Crie o modelo IDP na AWS. Veja os documentos da Amazon Federação de Identidade Web(O link abre em nova janela) e Criar provedor de identidade OIDC(O link abre em nova janela).

2. Criar funções e políticas específicas para o PDI. Confira Criar função para OIDC(O link abre em nova janela) nos documentos da AWS.

Configurar funções para usuários do Redshift

Anexe as políticas necessárias para o Redshift. Você pode usar declarações personalizadas no token autorizar funções. Existem vários exemplos com SAML na documentação da AWS(O link abre em nova janela). Eles podem ser facilmente adaptados ao OAuth. No caso do OAuth, as reivindicações são apenas “DbUser”, “DbGroups” etc.

Aqui está um exemplo da política da documentação da AWS:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "redshift:GetClusterCredentials",
"Resource": [
"arn:aws:redshift:us-west-1:123456789012:dbname:cluster-identifier/dev",
"arn:aws:redshift:us-west-1:123456789012:dbuser:cluster-identifier/${redshift:DbUser}",
"arn:aws:redshift:us-west-1:123456789012:cluster:cluster-identifier"
],
"Condition": {
"StringEquals": {
"aws:userid": "AROAJ2UCCR6DPCEXAMPLE:${redshift:DbUser}@example.com"
}
}
},
{
"Effect": "Allow"
"Action": "redshift:CreateClusterUser",
"Resource": "arn:aws:redshift:us-west-1:12345:dbuser:cluster-identifier/${redshift:DbUser}"
},
{
"Effect": "Allow",
"Action": "redshift:JoinGroup",
"Resource": "arn:aws:redshift:us-west-1:12345:dbgroup:cluster-identifier/my_dbgroup"
},
{
"Effect": "Allow",
"Action": [
"redshift:DescribeClusters",
"iam:ListRoles"
],
"Resource": "*"
}
]
}

Conectar-se ao Redshift

O usuário deve especificar a função ARN a ser assumida e, em, selecionar a configuração do OAuth instalada anteriormente.

Quando configurado corretamente, o usuário é redirecionado ao IDP para autenticar e autorizar tokens para o Tableau. O Tableau receberá tokens openid e de atualização. A AWS é capaz de validar o token e a assinatura do IDP, extrair o declarações do token, pesquisar o mapeamento do usuário para a função IAM e permitir ou bloquear o Tableau de assumir a função em nome do usuário. (em outras palavras, AssumeRoleWithWebIdentity(O link abre em nova janela)).

Okta

Se estiver usando o Okta, é melhor usar um “servidor de autorização personalizado” em vez do “servidor de autorização organizacional”. Os servidores de autorização personalizados são mais flexíveis. Existe um servidor de autorização personalizado criado por padrão, chamado “default”. A URL de autorização deve ter esta aparência:

https://${yourOktaDomain}/oauth2/{authServerName}/v1/authorize

 

Atualizar driver

Para Redshift OAuth usando o serviço IAM original, você pode usar:

Solução de problemas

Se você vir uma mensagem de erro sobre token inválido/expirado vindo do driver na primeira conexão (ele terá um código de erro SQLState como [28000] ou [08001] na mensagem de erro), concluímos com êxito o fluxo OAuth e falhou no driver. Isso significa que há uma configuração incorreta no lado da AWS ou no lado do IDP. Também pode haver erros de permissão ou autorização retornados pelo driver, o que também está fora do nosso controle.

A melhor maneira de diagnosticar esses erros é remover o Tableau da imagem. Primeiro você precisa obter um token de ID (o padrão) ou um token de acesso (se personalizado) para enviar ao driver. Aqui está um exemplo com Okta. Quase todos os IDPs internos têm uma maneira de fazer isso que é bastante semelhante. Observe que para usar esse fluxo você precisa ter habilitado o tipo de concessão de senha do proprietário do recurso. Substitua a URL do IDP, o segredo do cliente, a ID do cliente, o nome de usuário e a senha.

curl -X POST "https://OKTA_URL/v1/token" \
-H 'accept: application/json' \
-H "Authorization: Basic $(echo -n 'CLIENTID:CLIENTSECRET' | base64)" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password&username=USER&password=PASSWORD&scope=openid"

Depois de obter o token, você pode usar um DSN para testar. Abaixo está um exemplo de uso do gerenciador de driver ODBC no Windows. No Mac, você pode usar a interface do gerenciador de driver iODBC. No Linux, você pode usar a ferramenta de linha de comando isql incluída no Tableau Server na pasta “customer-bin”.

Agradecemos seu feedback!Seu feedback foi enviado. Obrigado!