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.

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ā€.

  2. No canto superior direito, clique em ā€œAdicionar aplicativoā€.
  3. Marque ā€œadicionar aplicativo SAML 2.0 personalizadoā€ e clique em ā€œPróximoā€.
  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.
  5. Baixe o arquivo de metadados SAML do Identity Center, usaremos ele mais tarde para configurar nosso aplicativo da conta Redshift.

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

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.
  2. No canto superior direito, clique em ā€œAdicionar provedorā€.

  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. Clique em ā€œAdicionar provedorā€ e finalize.
  4. VÔ para a pÔgina de descrição do IDP e copie o ARN do IDP, usaremos ele mais tarde.

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.
  2. No canto superior direito, clique em ā€œCriar Funçãoā€.

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

      Clique em ā€œPróximoā€.
  4. Clique em ā€œCriar polĆ­ticaā€ e uma nova aba serĆ” aberta.
  5. Selecione ā€œJSONā€.
  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ā€.
  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ā€.
  9. Nomeie a função como ā€œRedshift-ReadOnly-roleā€ e clique em ā€œCreate roleā€ no canto inferior direito.
  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.

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.

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

  3. Clique em ā€œattribute mappingsā€.
  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.

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.
  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://.
  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.
  4. Na parte inferior do assistente de configuração da fonte de dados, clique em ā€œtest connectionā€.

    Uma vez clicado, seu navegador abrirĆ” e exibirĆ” a seguinte tela:

    Se tudo estiver configurado corretamente, vocĆŖ deverĆ” ver o seguinte pop-up no DataGrip:

    Clique em OK.

    Ɖ isso! Obrigado por ler šŸ™‚