Criar credenciais temporárias do IAM - Amazon Redshift

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:

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

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

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

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

  5. 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 atributo Name 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 atributo Name definido para "https://redshift.amazon.com/SAML/Attributes/DbGroups"

    Este elemento contém um ou mais elementos AttributeValue. Defina cada elemento AttributeValue com um nome de grupo de banco de dados ao qual o DbUser 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
  1. 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.

  2. 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 chamar redshift:CreateClusterUser com o recurso dbuser. O nome do recurso da Amazon (ARN) a seguir especifica o dbuser do Amazon Redshift. Substitua region, account-id e cluster-name pelos valores da região, conta e cluster da AWS. Em dbuser-name, especifique o nome de usuário a ser usado para fazer login no banco de dados do cluster.

      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, account-id e cluster-name pelos valores da região, conta e cluster da AWS. Em database-name, especifique o nome de um banco de dados no qual o usuário fará login.

      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ção redshift:JoinGroup com o recurso dbgroup do Amazon Redshift no formato a seguir. Substitua region, account-id e cluster-name pelos valores da região, conta e cluster da AWS. Em dbgroup-name, especifique o nome de um grupo de usuários ao qual o usuário se associará no login.

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

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

    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.

    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;
  3. Crie grupos de usuários de banco de dados usando CREATE GROUP.

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

Para configurar uma conexão JDBC para usar credenciais do IAM
  1. 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.

  2. 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 por jdbc: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ção redshift:DescribeClusters com o cluster especificado. Se o seu usuário ou perfil não tiver permissão para chamar a operação redshift: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
  3. 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
  4. 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ção GetClusterCredentials 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.

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

  2. Siga as etapas referentes ao seu sistema operacional para definir as configurações de conexão.

  3. Em sistemas operacionais Microsoft Windows, acesse a janela Configuração de DSN do driver ODBC do Amazon Redshift.

    1. 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ção DescribeCluster.

      Se o usuário ou o perfil não tiver permissão para chamar a operação redshift:DescribeClusters, especifique Servidor e Porta.

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

      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:

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