Neste guia passo a passo, aprenderemos como configurar a autenticação SSO com o Redshift e AWS IAM Identity Center para aumentar a segurança e facilitar o acesso dos usuários.

Redshift SSO.drawio Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 1

Fontes Utilizadas:

Dicionário de Termos:

TermoSignificado
Conta do Identity CenterA conta onde o IAM Identity Center está configurado.
Conta do RedshiftA conta filha da conta do Identity Center que contém o Cluster Redshift ao qual queremos nos conectar.
IDPProvedor de Identidade

O que é o Redshift?

AWS Redshift é um serviço de data warehousing totalmente gerenciado fornecido pela Amazon Web Services (AWS).
Ele é projetado para lidar com cargas de trabalho de análise de dados em grande escala e permite que as organizações analisem grandes quantidades de dados de forma rápida e econômica.

O que é o IAM Identity Center?

O IAM Identity Center fornece um local onde você pode criar ou conectar usuários da força de trabalho e gerenciar centralmente seu acesso a todas as suas contas e aplicativos da AWS.
Você pode usar permissões de várias contas para atribuir acesso dos usuários da força de trabalho às contas da AWS.

Por que SSO?

SSO reduz o número de superfícies de ataque porque os usuários fazem login apenas uma vez por dia e usam apenas um conjunto de credenciais.
Reduzir o login para um conjunto de credenciais melhora a segurança da empresa. Quando os funcionários precisam usar senhas separadas para cada aplicativo, geralmente não o fazem.

Pré-requisitos

  1. IAM Identity Center pré-configurado → Primeiros passos – AWS IAM Identity Center.
  2. Cluster Redshift pré-configurado com acesso administrativo.
  3. Usuário e senha da Fonte de Identidade (Okta, PingOne, etc.).
  4. JetBrains DataGrip instalado (pode ser a versão gratuita).

Passo a Passo:

Configurar aplicativo do Identity Center

Nosso primeiro passo será criar um novo aplicativo do AWS Identity Center na conta do Identity Center para ser usado como o principal canal entre os usuários e o cluster Redshift.

  1. No painel lateral do IAM Identity Center, clique em “Aplicativos”.
    Screenshot 2566 07 02 at 15.25.46 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 2
  2. No canto superior direito, clique em “Adicionar aplicativo”.
    Screenshot 2566 07 02 at 15.27.18 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 3
  3. Marque “adicionar aplicativo SAML 2.0 personalizado” e clique em “Próximo”.
    Screenshot 2566 07 02 at 15.28.44 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 4
  4. Defina um nome de exibição apropriado, chamaremos nosso aplicativo de “Redshift-ReadOnly”, pois este aplicativo será usado para obter acesso somente leitura aos dados do cluster.
    Screenshot 2566 07 02 at 15.32.25 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 5
  5. Baixe o arquivo de metadados SAML do Identity Center, usaremos ele mais tarde para configurar nosso aplicativo da conta Redshift.
    Screenshot 2566 07 02 at 15.33.39 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 6
  6. Copie a URL de login do aplicativo, pois precisaremos dela mais tarde.
  7. Em seguida, configuraremos o ACS do aplicativo SAML (também conhecido como Serviço de Consumidor de Asserção).
    Brevemente, ACS é o local onde a resposta do aplicativo SAML será enviada.

    Como usaremos o driver JDBC do AWS Redshift para conectar ao nosso cluster Redshift, precisaremos definir o ACS do aplicativo para http://localhost:7890/redshift/ – pois o driver JDBC inicia um servidor ouvindo na porta 7890 por padrão.
    Screenshot 2566 07 02 at 15.56.40 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 7ab00f622 901e 48a6 af15 55b11fe407f4#media blob url=true&id=a1039895 cc77 4376 8887 687b0a94ffae&collection=contentId Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 8
  8. Para restringir a asserção do aplicativo SAML apenas ao redshift, configuraremos o campo “Público do SAML do Aplicativo” para urn:amazon:webservices:redshift.
    Screenshot 2566 07 02 at 15.58.17 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 9

Criar Provedor de Identidade

Depois de criarmos nosso aplicativo Redshift-ReadOnly na conta do Identity Center, precisamos configurar um provedor de identidade para ser usado pelo aplicativo Redshift-ReadOnly para conectar ao cluster Redshift da conta Redshift.

  1. No painel lateral do IAM Dashboard da sua conta Redshift, clique em Provedores de Identidade.
    Screenshot 2566 07 02 at 16.19.31 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 10
  2. No canto superior direito, clique em “Adicionar provedor”.
    Screenshot 2566 07 02 at 16.21.05 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 11
  3. Preencha os detalhes do novo IDP:
    1. Defina o “Nome do provedor” como Redshift-ReadOnly (mesmo que nosso aplicativo configurado anteriormente).
    2. Envie o arquivo de metadados que baixamos durante o processo de configuração do nosso aplicativo IAM Identity Center.f2db2cb3 28d0 4578 ac63 f813a350a2d9#media blob url=true&id=af2a9aac ed5d 4c7c 8aea e91254cfdeaf&collection=contentId Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 12 Clique em “Adicionar provedor” e finalize.
      Screenshot 2566 07 02 at 16.22.59 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 13
  4. Vá para a página de descrição do IDP e copie o ARN do IDP, usaremos ele mais tarde.
    Screenshot 2566 07 02 at 17.04.43 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 140a06764a c351 43f3 810a 15da912d7c05#media blob url=true&id=39497b0d 7a31 4add 8c83 107db8043f05&collection=contentId Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 15

Criar Função e Política do IAM

Agora que criamos o Provedor de Identidade para ser usado pelo nosso aplicativo IAM Identity Center, podemos criar a função que será usada para conectar ao cluster Redshift em si.

  1. No painel lateral do IAM Dashboard da sua conta Redshift, clique em Funções.
    Screenshot 2566 07 02 at 16.14.15 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 16
  2. No canto superior direito, clique em “Criar Função”.
    Screenshot 2566 07 02 at 16.15.37 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 17
  3. Crie uma entidade confiável do tipo federação SAML 2.0 e defina o seguinte:
    1. Defina o IDP para o IDP “Redshift-ReadOnly” que criamos anteriormente.
    2. Marque o botão de rádio “Permitir acesso programático apenas” e defina:
      Atributo: “SAML:aud” → definindo qual público pode assumir esta função.
      Valor: “http://localhost:7890/redshift/ → Definindo o público para nosso servidor local do driver JDBC do Redshift (conforme explicado na primeira seção).
      Screenshot 2566 07 02 at 16.44.02 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 18
      Clique em “Próximo”.
  4. Clique em “Criar política” e uma nova aba será aberta.5f413ee0 9082 48fe bbf9 1266e384f039#media blob url=true&id=f54050e8 48e9 4c67 8e16 34cb159b53b5&collection=contentId Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 19
  5. Selecione “JSON”.38e95090 ae9b 4366 9c1e 4c24cab89231#media blob url=true&id=75587102 9ee1 4ce6 abd5 c83d2c872050&collection=contentId Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 20
  6. No painel do editor de Políticas, cole a seguinte declaração de política e edite os seguintes valores no escopo “Recurso” para corresponder aos seus próprios: <region>, <account>, <clusterName>.
    				
    					{
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "redshift:CreateClusterUser",
                    "redshift:JoinGroup",
                    "redshift:GetClusterCredentials",
                    "redshift:ListSchemas",
                    "redshift:ListTables",
                    "redshift:ListDatabases",
                    "redshift:ExecuteQuery",
                    "redshift:FetchResults",
                    "redshift:CancelQuery",
                    "redshift:DescribeClusters",
                    "redshift:DescribeQuery",
                    "redshift:DescribeTable"
                ],
                "Resource": [
                    "arn:aws:redshift:<region>:<account>:cluster:<clusterName>",
                    "arn:aws:redshift:<region>:<account>:dbuser:<clusterName>/${redshift:DbUser}",
                    "arn:aws:redshift:<region>:<account>:dbname:<clusterName>/${redshift:DbName}",
                    "arn:aws:redshift:<region>:<account>:dbgroup:<clusterName>/bi_users_group",
                ]
            }
        ]
    }
    				
    			

  7. Nomeie a política como “Redshift-ReadOnly-policy” e clique em “Create policy”.638f1d27 23e5 4a2f 8351 3f13ebf6a7f1#media blob url=true&id=e6d9b9f7 ff16 4b5a 851e 162a99c4d39d&collection=contentId Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 21
    Screenshot 2566 07 02 at 16.55.08 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 22
  8. Volte para a aba de origem onde começamos a criar nossa função IAM
    → clique em atualizar → digite “Redshift-ReadOnly-policy” na barra de pesquisa → marque a política “Redshift-ReadOnly-policy” → clique em “Next”.
    Screenshot 2566 07 02 at 16.56.59 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 23
  9. Nomeie a função como “Redshift-ReadOnly-role” e clique em “Create role” no canto inferior direito.
    Screenshot 2566 07 02 at 16.59.54 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 24f0080f98 f453 40bb 83c7 24e81210a9f2#media blob url=true&id=7ece7e5c f65e 4144 9c4a e4856fa6e8db&collection=contentId Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 25
  10. Agora que criamos a função IAM, vá para a página de descrição dela e copie o ARN da função, usaremos isso mais tarde.
    Screenshot 2566 07 02 at 17.08.58 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 26

Configure os Atributos do Aplicativo do IAM Identity Center

Para configurar nosso aplicativo para funcionar com o Redshift, precisamos configurar alguns atributos do aplicativo que irão orientá-lo sobre “como se conectar” a ele.

  1. No IAM Identity Center, vá para o painel de Aplicativos e escolha o aplicativo que criamos anteriormente.
    Screenshot 2566 07 02 at 17.21.15 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 27
  2. Atribua usuários e grupos que você gostaria que tivessem permissões para este aplicativo → Atribuir acesso de usuário a aplicativos no console do IAM Identity Center – AWS IAM Identity Center (sucessor do AWS Single Sign-On).
    Screenshot 2566 07 02 at 17.25.48 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 28
  3. Clique em “attribute mappings”.
    Screenshot 2566 07 02 at 17.27.54 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 29
  4. Defina os atributos de acordo com a tabela a seguir e substitua o <role_arn> & <idp_arn> espaço reservado pelos ARNs que você copiou nas etapas anteriores:
AtributoValorExplicação
Assunto (atributo padrão)${user:email}O assunto utilizado.
https://aws.amazon.com/SAML/Attributes/RoleSessionName${user:email}O nome da sessão criada contra o cluster.
https://redshift.amazon.com/SAML/Attributes/AutoCreatetrueConfigure o aplicativo para criar o usuário do Redshift automaticamente na autenticação.
https://aws.amazon.com/SAML/Attributes/Role,A função IAM e o IDP a serem usados para conectar ao Redshift.
https://redshift.amazon.com/SAML/Attributes/DbUser${user:email}O nome do usuário do banco de dados a ser criado.
https://redshift.amazon.com/SAML/Attributes/DbGroupsreadonlyO grupo do banco de dados ao qual o novo usuário será atribuído.
Screenshot 2566 07 02 at 17.38.32 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 30

Clique em “Save changes”.

Criar grupo Redshift & Conceder permissões

Nesta etapa, configuraremos o readonly grupo Redshift (conforme definido nos atributos do Aplicativo na etapa anterior) ao qual cada usuário será atribuído ao se conectar via o aplicativo.

  1. Conecte-se ao seu cluster Redshift com um usuário privilegiado (superusuário).
  2. Execute o seguinte script SQL para criar o grupo readonly e atribuir a ele read permissões para o esquema público (o esquema padrão).
    				
    					create group readonly;
    grant usage on schema public to group readonly;
    grant select on all tables in schema public to group readonly;
    				
    			

Configure a Fonte de Dados do cliente DataGrip

:tada: Estamos todos configurados e finalmente prestes a colher nossos frutos! :tada:
Nesta etapa, configuraremos uma fonte de dados DataGrip que será usada como a conexão entre nós e o cluster Redshift.

  1. Abra o DataGrip e crie uma nova fonte de dados Redshift.
    Screenshot 2566 07 02 at 17.52.46 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 31
  2. Um assistente de fonte de dados será aberto para você configurar a conexão, defina os seguintes atributos:
    1. Nome: Redshift ReadOnly SSO.
    2. Host: endpoint do seu servidor Redshift.
    3. Usuário: seu email identificador (será usado como o Usuário do DB Redshift).
    4. Senha: a senha que você configurou na sua Fonte de Identidade (Okta, PingOne, etc.)
    5. Banco de Dados: o banco de dados ao qual você deseja se conectar.
    6. URL: a URL estará principalmente configurada neste ponto (devido ao preenchimento automático do DataGrip), tudo o que resta para você fazer é mudar o prefixo da URL JDBC de jdbc:redshift:// para jdbc:redshift:iam://.
      Screenshot 2566 07 02 at 17.57.29 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 32
  3. Vá para a aba Advanced e configure estes 3 atributos:
    1. plugin_name: com.amazon.redshift.plugin.BrowserSamlCredentialsProvider – já definido, então edite-o.
    2. idp_reponse_timeout: 60 – crie um novo valor.
    3. login_url: <a URL de login do aplicativo SAML que você copiou anteriormente> – crie um novo valor.
      Screenshot 2566 07 02 at 18.10.07 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 33
  4. Na parte inferior do assistente de configuração da fonte de dados, clique em “test connection”.
    Screenshot 2566 07 02 at 18.11.44 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 34938ff2bb 46c7 4cd9 9020 aa00b134d7b5#media blob url=true&id=ec78f4d0 c3c0 4743 8a1d e5568685c9e7&collection=contentId Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 35
    Uma vez clicado, seu navegador abrirá e exibirá a seguinte tela:
    Screenshot 2566 07 02 at 18.14.29 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 36
    Se tudo estiver configurado corretamente, você deverá ver o seguinte pop-up no DataGrip:
    Screenshot 2566 07 02 at 18.14.34 Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 378b152b94 3cbd 465a a56f 6cfc8cec2c19#media blob url=true&id=ac42272d 34e4 46b6 9ec4 57583deb1983&collection=contentId Habilitando autenticação SSO do Redshift com o AWS IAM Identity Center (Multi-Conta) 38
    Clique em OK.

    É isso! Obrigado por ler 🙂