Configurar o Amazon Redshift IAM OAuth

A partir do Tableau 2023.3.2, 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.

Etapa 1: 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 novos arquivos de configuração do Tableau OAuth na pasta OAuthConfigs associada a cada aplicativo em hosts de desktop (Tableau Desktop, Tableau Prep Builder, Tableau Bridge) e em cada site do Tableau Server e do Tableau Cloud que usará o OAuth.

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)).

Tokens

Por padrão, o Redshift OAuth IAM passa o token de ID para o driver. Para clientes locais, incluindo aqueles que usam o Tableau Bridge, você pode usar um arquivo TDC para transmitir o token de acesso.

<connection-customization class='redshift' enabled='true' version='10.0'>
	<vendor name='redshift' />
	<driver name='redshift' />
	<customizations>
		<customization name='CAP_OAUTH_FEDERATE_ACCCESS_TOKEN' value='yes'/>
	</customizations>
</connection-customization>
		

Para obter mais informações sobre como configurar e instalar arquivos .tdc, consulte Personalizar e ajustar uma conexão(O link abre em nova janela) e Usar um arquivo .tdc com o Tableau Server(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

A melhor maneira de diagnosticar erros é remover o Tableau da imagem. Em vez disso, você pode testar usando o gerenciador de drivers ou uma ferramenta semelhante. Isso é apenas para solução de problemas - você não deve usar um DSN ou o conector “Outro ODBC” para uso regular deste recurso. Para ajudar a garantir um teste válido, os parâmetros devem ser os mesmos mostrados abaixo, exceto pelas informações do cluster, banco de dados, token e namespace.

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), o Tableau concluiu 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 controle do Tableau.

Antes de começar a testar, primeiro você precisa obter um token de acesso (o padrão para IAM IDC) 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. Para Windows, pode usar o gerenciador de driver ODBC. 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”.

O Tableau recomenda que você não use outros plugins para testar, porque eles podem não funcionar em um ambiente de servidor. Eles usam um perfil fixo da AWS ou exigem acesso direto a um navegador.

Abaixo está um exemplo de uso do gerenciador de driver ODBC no Windows.

Agradecemos seu feedback!Seu feedback foi enviado. Obrigado!