Criar credenciais temporárias do IAM
Nesta seção, você pode encontrar como configurar o sistema para gerar credenciais de usuário de banco de dados temporárias baseadas no IAM e fazer login no banco de dados usando as novas credenciais.
Basicamente, o fluxo do processo é o seguinte:
-
Etapa 1: Criar um perfil do IAM para acesso por autenticação única do IAM
(Opcional) Você pode autenticar usuários para acesso a um banco de dados do Amazon Redshift integrando a autenticação IAM e um provedor de identidade de terceiros (IdP).
-
Etapa 2: configurar declarações de SAML para o IdP
(Opcional) Para usar a autenticação do IAM usando um IdP, é necessário definir uma regra de reivindicação no aplicativo do IdP que mapeie usuários ou grupos da organização para a função do IAM. Opcionalmente, você pode incluir elementos de atributo para definir parâmetros de
GetClusterCredentials
. -
Etapa 3: criar um perfil do IAM com permissões para chamar GetClusterCredentials
A aplicação cliente SQL assume o usuário quando ele chama a operação
GetClusterCredentials
. Se você tiver criado uma função do IAM para acesso do provedor de identidade, poderá adicionar a permissão necessária a essa função. -
Etapa 4: criar um usuário de banco de dados e grupos de bancos de dados
(Opcional) Por padrão,
GetClusterCredentials
retorna credenciais para criar um novo usuário se o nome de usuário não existir. Você também pode especificar grupos de usuários aos quais os usuários poderão se associar no logon. Por padrão, os usuários de banco de dados se associam ao grupo PUBLIC. -
Etapa 5: configurar uma conexão JDBC ou ODBC para usar credenciais do IAM
Para se conectar ao seu banco de dados Amazon Redshift, você configura seu cliente SQL para usar um driver JDBC ou ODBC do Amazon Redshift.
Etapa 1: Criar um perfil do IAM para acesso por autenticação única do IAM
Se você não usa um provedor de identidade para acesso de logon único, ignore esta etapa.
Se você já gerencia identidades de usuário fora da AWS, pode autenticar usuários para acesso a um banco de dados do Amazon Redshift integrando a autenticação IAM e um provedor de identidade SAML-2.0 de terceiros (IdP).
Para obter mais informações, consulte Provedores de identidade e federação no Guia do usuário do IAM.
Antes de usar a autenticação IdP do Amazon Redshift, crie um provedor de identidade SAML AWS. Crie um IdP no console do IAM para informar a AWS sobre o IdP e sua configuração. Isso estabelece a confiança entre a conta da AWS e o IdP. Para obter as etapas de criação de uma função, consulte Criar uma função para federação SAML 2.0 (console) no Manual do usuário do IAM.
Etapa 2: configurar declarações de SAML para o IdP
Após criar a função do IAM, defina uma regra de reivindicação no aplicativo do IdP para mapear usuários ou grupos da organização para a função do IAM. Para obter mais informações, consulte Configurando declarações de SAML para a resposta de autenticação no Manual do usuário do IAM.
Se você optar por usar os parâmetros opcionais de GetClusterCredentials
DbUser
, AutoCreate
e DbGroups
, terá duas opções. Você poderá definir os valores dos parâmetros com a conexão JDBC ou ODBC ou definir os valores adicionando elementos de atributo de SAML ao IdP. Para obter mais informações sobre os parâmetros DbGroups
, DbUser
e AutoCreate
, consulte Etapa 5: configurar uma conexão JDBC ou ODBC para usar credenciais do IAM.
nota
Se você usar uma variável de política do IAM ${redshift:DbUser}
, conforme descrito em Políticas de recursos de GetClusterCredentials, o valor para DbUser
será substituído pelo valor recuperado pelo contexto da solicitação da operação de API. Os drivers do Amazon Redshift usam o valor da variável DbUser
fornecida pelo URL de conexão, em vez do valor fornecido como um atributo SAML.
Para ajudar a proteger essa configuração, recomendamos que você use uma condição em uma política do IAM para validar o valor DbUser
usando o RoleSessionName
. Você pode encontrar exemplos de como definir uma condição usando uma política do IAM em Política de exemplo para usar GetClusterCredentials.
Para configurar o IdP para definir os parâmetros DbGroups
, DbUser
e AutoCreate
, inclua os seguintes elementos Attribute
:
-
Um elemento
Attribute
com o atributoName
definido para "https://redshift.amazon.com/SAML/Attributes/DbUser"Defina o elemento
AttributeValue
como o nome de um usuário que se conectará ao banco de dados do Amazon Redshift.O valor do elemento
AttributeValue
deve estar em minúsculas, começar com uma letra, conter somente caracteres alfanuméricos, sublinhado ("_"), sinal de adição ("+"), ponto ("."), arroba ("@") ou hífen ("-") e ter menos de 128 caracteres. Normalmente, o nome de usuário é um ID de usuário (por exemplo, bobsmith) ou um endereço de e-mail (por exemplo, bobsmith@example.com). O valor não pode incluir um espaço (por exemplo, o nome de exibição de um usuário, como Bob Smith).<Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbUser"> <AttributeValue>user-name</AttributeValue> </Attribute>
-
Um elemento Attribute com o atributo Name definido para "https://redshift.amazon.com/SAML/Attributes/AutoCreate"
Defina o elemento AttributeValue como true para criar um novo usuário de banco de dados caso não exista um. Defina o AttributeValue como false para especificar que o usuário do banco de dados deve existir no banco de dados do Amazon Redshift.
<Attribute Name="https://redshift.amazon.com/SAML/Attributes/AutoCreate"> <AttributeValue>true</AttributeValue> </Attribute>
-
Um elemento
Attribute
com o atributoName
definido para "https://redshift.amazon.com/SAML/Attributes/DbGroups"Este elemento contém um ou mais elementos
AttributeValue
. Defina cada elementoAttributeValue
com um nome de grupo de banco de dados ao qual oDbUser
se junta durante a sessão ao se conectar ao banco de dados do Amazon Redshift.<Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbGroups"> <AttributeValue>group1</AttributeValue> <AttributeValue>group2</AttributeValue> <AttributeValue>group3</AttributeValue> </Attribute>
Etapa 3: criar um perfil do IAM com permissões para chamar GetClusterCredentials
Seu cliente SQL precisa de autorização para chamar a operação GetClusterCredentials
em seu nome. Para fornecer essa autorização, crie um usuário ou um perfil e anexe uma política que conceda as permissões necessárias.
Para criar uma função do IAM com permissões para chamar GetClusterCredentials
-
Usando o serviço do IAM, crie um usuário ou um perfil. Você também pode utilizar um usuário ou uma função existente. Por exemplo, se você tiver criado uma função do IAM para acesso do provedor de identidade, poderá anexar as políticas do IAM necessária a essa função.
-
Anexe uma política de permissão com permissão para chamar a operação
redshift:GetClusterCredentials
. Dependendo de quais parâmetros opcionais forem especificados, você também poderá permitir ou restringir ações e recursos adicionais na política:-
Para permitir que seu cliente SQL recupere a ID, região da AWS e porta do cluster, inclua permissão para chamar a operação
redshift:DescribeClusters
com o recurso de cluster Redshift. -
Se você usar a opção
AutoCreate
, inclua uma permissão para chamarredshift:CreateClusterUser
com o recursodbuser
. O nome do recurso da Amazon (ARN) a seguir especifica odbuser
do Amazon Redshift. Substitua
,region
eaccount-id
pelos valores da região, conta e cluster da AWS. Emcluster-name
, especifique o nome de usuário a ser usado para fazer login no banco de dados do cluster.dbuser-name
arn:aws:redshift:
region
:account-id
:dbuser:cluster-name
/dbuser-name
-
(Opcional) Adicione um ARN que especifica o recurso
dbname
do Amazon Redshift no formato a seguir. Substitua
,region
eaccount-id
pelos valores da região, conta e cluster da AWS. Emcluster-name
, especifique o nome de um banco de dados no qual o usuário fará login.database-name
arn:aws:redshift:
region
:account-id
:dbname:cluster-name
/database-name
-
Se você usar a opção
DbGroups
, inclua permissão para chamar a operaçãoredshift:JoinGroup
com o recursodbgroup
do Amazon Redshift no formato a seguir. Substitua
,region
eaccount-id
pelos valores da região, conta e cluster da AWS. Emcluster-name
, especifique o nome de um grupo de usuários ao qual o usuário se associará no login.dbgroup-name
arn:aws:redshift:
region
:account-id
:dbgroup:cluster-name
/dbgroup-name
-
Para ter mais informações e exemplos, consulte Políticas de recursos de GetClusterCredentials.
O exemplo a seguir mostra uma política que permite que a função do IAM chame a operação GetClusterCredentials
. Especificar o recurso dbuser
do Amazon Redshift concede à função acesso ao nome de usuário do banco de dados temp_creds_user
no cluster nomeado examplecluster
.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:us-west-2:123456789012:dbuser:examplecluster/temp_creds_user" } }
Você pode usar um curinga (*) para substituir, total ou parcialmente, o nome do cluster, o nome de usuário e os nomes de grupo de bancos de dados. O exemplo a seguir permite que qualquer nome de usuário comece com temp_
em qualquer cluster na conta especificada.
Importante
A instrução no exemplo a seguir especifica um caractere coringa (*) como parte do valor para o recurso, para que a política permita qualquer nome de recurso que comece com os caracteres especificados. Usar um caractere coringa em suas políticas de IAM pode ser excessivamente permissivo. Como uma prática recomendada, recomendamos o uso de políticas mais restritivas possíveis para seu aplicativo de negócios.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:us-west-2:123456789012:dbuser:*/temp_*" } }
O exemplo a seguir mostra uma política que permite que a função do IAM chame a operação GetClusterCredentials
com a opção de criar automaticamente um novo usuário e especificar grupos aos quais o usuário se associará no login. A cláusula "Resource":
"*"
concede à função acesso a qualquer recurso, incluindo clusters, usuários de banco de dados ou grupos de usuários.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials", "redshift:CreateClusterUser", "redshift:JoinGroup" ], "Resource": "*" } }
Para obter mais informações, consulte Amazon Redshift ARN syntax.
Etapa 4: criar um usuário de banco de dados e grupos de bancos de dados
Se desejar, é possível criar um usuário de banco de dados que você usará para fazer login no banco de dados do cluster. Se você criar credenciais de usuário temporárias para um usuário existente, poderá desabilitar a senha do usuário para forçar o usuário a fazer logon com a senha temporária. Como alternativa, você pode usar a opção Autocreate de GetClusterCredentials
para criar automaticamente um novo usuário de banco de dados.
É possível criar grupos de usuários de banco de dados com as permissões às quais o usuário do banco de dados do IAM deve se associar no login. Quando você chamar a operação GetClusterCredentials
, poderá especificar uma lista de nomes de grupo de usuários aos quais o novo usuário se associará no login. Essas associações de grupos são válidas somente para sessões criadas através das credenciais geradas com a solicitação específica.
Para criar um usuário de banco de dados e grupos de bancos de dados
-
Faça login em seu banco de dados Amazon Redshift e crie um usuário de banco de dados usando CREATE USER ou altere um usuário existente usando ALTER USER.
-
Se desejar, especifique a opção PASSWORD DISABLE para impedir que o usuário utilize uma senha. Quando a senha de um usuário é desabilitada, ele só pode fazer login usando as credenciais temporárias. Se a senha não for desabilitada, o usuário poderá fazer login com a senha ou usando as credenciais temporárias. Não é possível desabilitar a senha de um superusuário.
Os usuários precisam de acesso programático se quiserem interagir com a AWS de fora do AWS Management Console. A forma de conceder acesso programático depende do tipo de usuário que está acessando a AWS.
Para conceder acesso programático aos usuários, selecione uma das seguintes opções:
Qual usuário precisa de acesso programático? Para Por Identificação da força de trabalho
(Usuários gerenciados no Centro de Identidade do IAM)
Use credenciais temporárias para assinar solicitações programáticas para a AWS CLI, os SDKs da AWS ou as APIs da AWS. Siga as instruções da interface que deseja utilizar.
-
Para a AWS CLI, consulte Configuração da AWS CLI para usar o AWS IAM Identity Center no Guia do usuário da AWS Command Line Interface.
-
Para os SDKs da AWS, ferramentas e APIs da AWS, consulte Autenticação do Centro de Identidade do IAM no Guia de referência de ferramentas e SDKs da AWS.
IAM Use credenciais temporárias para assinar solicitações programáticas para a AWS CLI, os SDKs da AWS ou as APIs da AWS. Siga as instruções em Como usar credenciais temporárias com recursos da AWS no Guia do usuário do IAM. IAM (Não recomendado)
Use credenciais de longo prazo para assinar solicitações programáticas para a AWS CLI, os SDKs da AWS ou as APIs da AWS.Siga as instruções da interface que deseja utilizar.
-
Para a AWS CLI, consulte Autenticação usando as credenciais de usuário do IAM no Guia do usuário da AWS Command Line Interface.
-
Para as ferramentas e SDKs da AWS, consulte Autenticação usando as credenciais de longo prazo no Guia de referência de ferramentas e SDKs da AWS.
-
Para as APIs da AWS, consulte Gerenciamento de chaves de acesso de usuários do IAM no Guia do usuário do IAM.
O exemplo a seguir cria um usuário com a senha desabilitada.
create user temp_creds_user password disable;
O exemplo a seguir desabilita a senha de um usuário existente.
alter user temp_creds_user password disable;
-
-
Crie grupos de usuários de banco de dados usando CREATE GROUP.
-
Use o comando GRANT para definir os privilégios de acesso dos grupos.
Etapa 5: configurar uma conexão JDBC ou ODBC para usar credenciais do IAM
Você pode configurar seu cliente SQL com um driver JDBC ou ODBC do Amazon Redshift. Este driver gerencia o processo de criação de credenciais de usuário de banco de dados e de estabelecimento de uma conexão entre seu cliente SQL e seu banco de dados Amazon Redshift.
Se você usa um provedor de identidade para autenticação, especifique o nome de um plug-in de provedor de credenciais. Os drivers JDBC e ODBC do Amazon Redshift incluem plug-ins para os seguintes provedores de identidade baseados em SAML:
-
Active Directory Federation Services (AD FS)
-
PingOne
-
Okta
-
Microsoft Azure AD
Para obter as etapas para configurar o Microsoft Azure AD como um provedor de identidade, consulte Configurar a autenticação única de JDBC ou ODBC.
Para configurar uma conexão JDBC para usar credenciais do IAM
-
Baixe o driver JDBC Amazon Redshift mais recente da página Configurar uma conexão para o driver JDBC versão 2.1 para o Amazon Redshift.
-
Crie um URL de JDBC com as opções de credenciais do IAM em um dos formatos a seguir. Para usar a autenticação do IAM, adicione
iam:
ao URL do JDBC do Amazon Redshift seguido porjdbc:redshift:
conforme especificado no exemplo a seguir.jdbc:redshift:iam://
Adicione
cluster-name
,region
, eaccount-id
. O driver JDBC usa as informações da sua conta IAM e o nome do cluster para recuperar o ID do cluster e a região da AWS. Para fazer isso, o usuário ou o perfil do IAM deve ter permissão para chamar a operaçãoredshift:DescribeClusters
com o cluster especificado. Se o seu usuário ou perfil não tiver permissão para chamar a operaçãoredshift:DescribeClusters
, inclua o ID do cluster, a região da AWS e a porta, conforme mostrado no exemplo a seguir. O número da porta é opcional.jdbc:redshift:iam://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev
-
Adicione opções JDBC para fornecer credenciais do IAM. Use combinações diferentes de opções JDBC para fornecer credenciais do IAM. Para obter detalhes, consulte Opções JDBC e ODBC para criar credenciais de usuário de banco de dados.
O URL a seguir especifica o AccessKeyID e a SecretAccessKey para um usuário.
jdbc:redshift:iam://examplecluster:us-west-2/dev?AccessKeyID=AKIAIOSFODNN7EXAMPLE&SecretAccessKey=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
O exemplo a seguir especifica um perfil nomeado que contém as credenciais do IAM.
jdbc:redshift:iam://examplecluster:us-west-2/dev?Profile=user2
-
Adicione opções JDBC que o driver JDBC usa para chamar a operação
GetClusterCredentials
da API. Não inclua essas opções se você chamar a operaçãoGetClusterCredentials
da API de forma programática.O exemplo a seguir inclui as opções JDBC do
GetClusterCredentials
.jdbc:redshift:iam://examplecluster:us-west-2/dev?plugin_name=com.amazon.redshift.plugin.AzureCredentialsProvider&UID=user&PWD=password&idp_tenant=my_tenant&client_secret=my_secret&client_id=my_id
Para configurar uma conexão ODBC para usar credenciais do IAM
No procedimento a seguir, você pode encontrar etapas somente para configurar a autenticação do IAM. Para que as etapas usem autenticação padrão, usando um nome de usuário de banco de dados e uma senha, consulte Configurar uma conexão para o driver ODBC versão 2.x para o Amazon Redshift.
-
Instale e configure o driver ODBC do Amazon Redshift mais recente para o seu sistema operacional. Para obter mais informações, consulte a página Configurar uma conexão para o driver ODBC versão 2.x para o Amazon Redshift.
Importante
O driver ODBC do Amazon Redshift deve ser a versão 1.3.6.1000 ou posterior.
-
Siga as etapas referentes ao seu sistema operacional para definir as configurações de conexão.
-
Em sistemas operacionais Microsoft Windows, acesse a janela Configuração de DSN do driver ODBC do Amazon Redshift.
-
Em Connection Settings, insira as seguintes informações:
-
Nome da fonte de dados
-
Server (opcional)
-
Port (opcional)
-
Database
Se o usuário ou o perfil do IAM tiver permissão para chamar a operação
redshift:DescribeClusters
, somente Nome da fonte de dados e Banco de dados são obrigatórios. O Amazon Redshift usa ClusterId eRegião para obter o servidor e a porta chamando a operaçãoDescribeCluster
.Se o usuário ou o perfil não tiver permissão para chamar a operação
redshift:DescribeClusters
, especifique Servidor e Porta. -
-
Em Autenticação, escolha um valor para Auth Type (Tipo de autenticação).
Para cada tipo de autenticação, insira valores conforme listado a seguir:
- Perfil do AWS
-
Insira as seguintes informações:
-
ClusterID
-
Region
-
Profile name
Insira o nome de um perfil em um arquivo de configuração AWS que contém valores para as opções de conexão ODBC. Para obter mais informações, consulte Usar um perfil de configuração.
(Opcional) Forneça detalhes para opções que o driver ODBC usa para chamar a operação
GetClusterCredentials
da API:-
DbUser
-
User AutoCreate
-
DbGroups
Para obter mais informações, consulte Opções JDBC e ODBC para criar credenciais de usuário de banco de dados.
-
- Credenciais do IAM
-
Insira as seguintes informações:
-
ClusterID
-
Region
-
AccessKeyID e SecretAccessKey
O ID da chave de acesso e a chave de acesso secreta do usuário ou perfil do IAM configurado para autenticação do banco de dados do IAM.
-
SessionToken
SessionToken é obrigatório para uma função do IAM com credenciais temporárias. Para obter mais informações, consulte Credenciais de segurança temporárias.
Forneça detalhes para opções que o driver ODBC usa para chamar a operação
GetClusterCredentials
da API:-
DbUser (obrigatório)
-
User AutoCreate (opcional)
-
DbGroups (opcional)
Para obter mais informações, consulte Opções JDBC e ODBC para criar credenciais de usuário de banco de dados.
-
- Provedor de identidade: AD FS
-
Para Autenticação Integrada do Windows com AD FS, deixe User and Password vazios.
Forneça os detalhes do IdP:
-
IdP Host
O nome do host corporativo do provedor de identidade. Este nome não deve conter barras (/).
-
IdP Port (opcional)
A porta usada pelo provedor de identidade. O padrão é 443.
-
Preferred Role
O nome do recurso da Amazon (ARN) de uma função do IAM nos elementos
AttributeValue
de vários valores do atributoRole
na declaração de SAML. Trabalhe com o administrador do IdP para localizar o valor apropriado da função preferencial. Para ter mais informações, consulte Etapa 2: configurar declarações de SAML para o IdP.
(Opcional) Forneça detalhes para opções que o driver ODBC usa para chamar a operação
GetClusterCredentials
da API:-
DbUser
-
User AutoCreate
-
DbGroups
Para obter mais informações, consulte Opções JDBC e ODBC para criar credenciais de usuário de banco de dados.
-
- Provedor de identidade: PingFederate
-
Em User (Usuário) e Password (Senha), insira o nome de usuário e a senha do IdP.
Forneça os detalhes do IdP:
-
IdP Host
O nome do host corporativo do provedor de identidade. Este nome não deve conter barras (/).
-
IdP Port (opcional)
A porta usada pelo provedor de identidade. O padrão é 443.
-
Preferred Role
O nome do recurso da Amazon (ARN) de uma função do IAM nos elementos
AttributeValue
de vários valores do atributoRole
na declaração de SAML. Trabalhe com o administrador do IdP para localizar o valor apropriado da função preferencial. Para ter mais informações, consulte Etapa 2: configurar declarações de SAML para o IdP.
(Opcional) Forneça detalhes para opções que o driver ODBC usa para chamar a operação
GetClusterCredentials
da API:-
DbUser
-
User AutoCreate
-
DbGroups
Para obter mais informações, consulte Opções JDBC e ODBC para criar credenciais de usuário de banco de dados.
-
- Provedor de identidade: Okta
-
Em User (Usuário) e Password (Senha), insira o nome de usuário e a senha do IdP.
Forneça os detalhes do IdP:
-
IdP Host
O nome do host corporativo do provedor de identidade. Este nome não deve conter barras (/).
-
IdP Port
Esse valor não é usado pelo Okta.
-
Preferred Role
O nome do recurso da Amazon (ARN) da função do IAM nos elementos
AttributeValue
do atributoRole
na declaração de SAML. Trabalhe com o administrador do IdP para localizar o valor apropriado da função preferencial. Para ter mais informações, consulte Etapa 2: configurar declarações de SAML para o IdP. -
Okta App ID
O ID de um aplicativo do Okta. O valor de App ID vem depois de "amazon_aws" no link de incorporação de aplicativo do Okta. Consulte o administrador do IdP para obter esse valor.
(Opcional) Forneça detalhes para opções que o driver ODBC usa para chamar a operação
GetClusterCredentials
da API:-
DbUser
-
User AutoCreate
-
DbGroups
Para obter mais informações, consulte Opções JDBC e ODBC para criar credenciais de usuário de banco de dados.
-
- Provedor de identidade: Azure AD
-
Em User (Usuário) e Password (Senha), insira o nome de usuário e a senha do IdP.
Para o ID do cluster e a Região, insira o ID do cluster e a região da AWS do cluster do Amazon Redshift.
Para Banco de dados, insira o banco de dados que você criou para o cluster do Amazon Redshift.
Forneça os detalhes do IdP:
-
IdP Tenant (Locatário IdP)
O locatário usado para o Azure AD.
-
Azure Client Secret (Segredo do cliente do Azure)
O segredo do cliente da aplicação empresarial Amazon Redshift no Azure.
-
Azure Client ID (ID do cliente do Azure)
A ID do cliente (ID do aplicativo) da aplicação empresarial Amazon Redshift no Azure.
(Opcional) Forneça detalhes para opções que o driver ODBC usa para chamar a operação
GetClusterCredentials
da API:-
DbUser
-
User AutoCreate
-
DbGroups
Para obter mais informações, consulte Opções JDBC e ODBC para criar credenciais de usuário de banco de dados.
-
-