Índice
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:
- https://aws.amazon.com/blogs/big-data/federated-authentication-to-amazon-redshift-using-aws-single-sign-on/
- https://aws.amazon.com/blogs/big-data/amazon-redshift-identity-federation-with-multi-factor-authentication/
Dicionário de Termos:
Termo | Significado |
---|---|
Conta do Identity Center | A conta onde o IAM Identity Center está configurado. |
Conta do Redshift | A conta filha da conta do Identity Center que contém o Cluster Redshift ao qual queremos nos conectar. |
IDP | Provedor 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
- IAM Identity Center pré-configurado → Primeiros passos – AWS IAM Identity Center.
- Cluster Redshift pré-configurado com acesso administrativo.
- Usuário e senha da Fonte de Identidade (Okta, PingOne, etc.).
- 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.
- No painel lateral do IAM Identity Center, clique em “Aplicativos”.
- No canto superior direito, clique em “Adicionar aplicativo”.
- Marque “adicionar aplicativo SAML 2.0 personalizado” e clique em “Próximo”.
- 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.
- Baixe o arquivo de metadados SAML do Identity Center, usaremos ele mais tarde para configurar nosso aplicativo da conta Redshift.
- Copie a URL de login do aplicativo, pois precisaremos dela mais tarde.
- 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 parahttp://localhost:7890/redshift/
– pois o driver JDBC inicia um servidor ouvindo na porta 7890 por padrão. - 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.
- No painel lateral do IAM Dashboard da sua conta Redshift, clique em Provedores de Identidade.
- No canto superior direito, clique em “Adicionar provedor”.
- Preencha os detalhes do novo IDP:
- Defina o “Nome do provedor” como Redshift-ReadOnly (mesmo que nosso aplicativo configurado anteriormente).
- 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.
- 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.
- No painel lateral do IAM Dashboard da sua conta Redshift, clique em Funções.
- No canto superior direito, clique em “Criar Função”.
- Crie uma entidade confiável do tipo federação SAML 2.0 e defina o seguinte:
- Defina o IDP para o IDP “Redshift-ReadOnly” que criamos anteriormente.
- 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”.
- Clique em “Criar política” e uma nova aba será aberta.
- Selecione “JSON”.
- 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: : :cluster: ", "arn:aws:redshift: : :dbuser: /${redshift:DbUser}", "arn:aws:redshift: : :dbname: /${redshift:DbName}", "arn:aws:redshift: : :dbgroup: /bi_users_group", ] } ] } - Nomeie a política como “Redshift-ReadOnly-policy” e clique em “Create policy”.
- 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”. - Nomeie a função como “Redshift-ReadOnly-role” e clique em “Create role” no canto inferior direito.
- 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.
- No IAM Identity Center, vá para o painel de Aplicativos e escolha o aplicativo que criamos anteriormente.
- 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).
- Clique em “attribute mappings”.
- 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:
Atributo | Valor | Explicaçã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/AutoCreate | true | Configure 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/DbGroups | readonly | O 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.
- Conecte-se ao seu cluster Redshift com um usuário privilegiado (superusuário).
- Execute o seguinte script SQL para criar o grupo
readonly
e atribuir a eleread
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
Estamos todos configurados e finalmente prestes a colher nossos frutos!
Nesta etapa, configuraremos uma fonte de dados DataGrip que será usada como a conexão entre nós e o cluster Redshift.
- Abra o DataGrip e crie uma nova fonte de dados Redshift.
- Um assistente de fonte de dados será aberto para você configurar a conexão, defina os seguintes atributos:
- Nome: Redshift ReadOnly SSO.
- Host: endpoint do seu servidor Redshift.
- Usuário: seu email identificador (será usado como o Usuário do DB Redshift).
- Senha: a senha que você configurou na sua Fonte de Identidade (Okta, PingOne, etc.)
- Banco de Dados: o banco de dados ao qual você deseja se conectar.
- 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://
parajdbc:redshift:iam://
.
- Vá para a aba
Advanced
e configure estes 3 atributos:- plugin_name:
com.amazon.redshift.plugin.BrowserSamlCredentialsProvider
– já definido, então edite-o. - idp_reponse_timeout: 60 – crie um novo valor.
- login_url: <a URL de login do aplicativo SAML que você copiou anteriormente> – crie um novo valor.
- plugin_name:
- 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 🙂
Procurando por conteúdo novo?
Receba artigos e insights em nossa newsletter semanal.
Ao inserir seu email, você concorda em receber e-mails da Elementor, incluindo e-mails de marketing,
e concorda com nossos Termos e Condições e Política de Privacidade.