Gerar as credenciais de banco de dados para uma identidade do IAM usando a CLI ou a API do Amazon Redshift - Amazon Redshift

Gerar as credenciais de banco de dados para uma identidade do IAM usando a CLI ou a API do Amazon Redshift

Para gerar de modo programático as credenciais temporárias de usuário de banco de dados, o Amazon Redshift fornece o comando get-cluster-credentials para a operação de API AWS Command Line Interface (AWS CLI) e GetClusterCredentials. Ou você pode configurar seu cliente SQL com drivers JDBC ou ODBC do Amazon Redshift que gerenciam o processo de chamada da operação GetClusterCredentials, recuperando as credenciais do usuário do banco de dados e estabelecendo uma conexão entre seu cliente SQL e seu banco de dados Amazon Redshift. Para obter mais informações, consulte Opções JDBC e ODBC para criar credenciais de usuário de banco de dados.

nota

Recomendamos usar os drivers JDBC ou ODBC do Amazon Redshift para gerar credenciais de usuário de banco de dados.

Nesta seção, você encontrará etapas que permitirão chamar a operação GetClusterCredentials ou o comando get-cluster-credentials de modo programático, recuperar credenciais de usuário de banco de dados e conectar-se ao banco de dados.

Para gerar e usar credenciais de banco de dados temporárias
  1. Crie ou modifique um usuário ou um perfil com as permissões necessárias. Para obter mais informações sobre as permissões do IAM, consulte Etapa 3: criar um perfil do IAM com permissões para chamar GetClusterCredentials.

  2. Como um usuário ou um perfil do IAM que você autorizou na etapa anterior, execute o comando da CLI get-cluster-credentials ou chame a operação de API GetClusterCredentials e forneça os seguintes valores:

    • Identificador de cluster – O nome do cluster que contém o banco de dados.

    • Nome do usuário do banco de dados – O nome de um usuário de banco de dados novo ou existente.

      • Se o usuário não existir no banco de dados e AutoCreate for definido como true, um novo usuário será criado com PASSWORD desabilitado.

      • Se o usuário não existir e AutoCreate for false, a solicitação apresentará falha.

      • Neste exemplo, o nome de usuário de banco de dados é temp_creds_user.

    • Autocriar – (Opcional) Crie um novo usuário se o nome de usuário do banco de dados não existir.

    • Nome do banco de dados – (opcional) O nome do banco de dados no qual o usuário está autorizado a fazer logon. Se o nome do banco de dados não for especificado, o usuário poderá fazer logon em qualquer banco de dados de cluster.

    • Grupos de banco de dados – (opcional) Uma lista de grupos de usuários de banco de dados existentes. Após login bem-sucedido, o usuário do banco de dados será adicionado aos grupos de usuários especificados. Se nenhum grupo for especificado, o usuário somente terá permissões de PUBLIC. Os nomes de grupos de usuários devem corresponder aos ARNs de recursos dbgroup especificados na política do IAM anexada ao usuário ou perfil.

    • Tempo de expiração – (Opcional) O tempo, em segundos, até que as credenciais temporárias expirem. Você pode especificar um valor entre 900 segundos (15 minutos) e 3600 segundos (60 minutos). O padrão é 900 segundos.

  3. O Amazon Redshift verifica se o usuário tem permissão para chamar a operação GetClusterCredentials com os recursos especificados.

  4. O Amazon Redshift retorna uma senha temporária e o nome de usuário do banco de dados.

    O exemplo a seguir usa o Amazon Redshift CLI para gerar credenciais de banco de dados temporárias para um usuário existente denominado temp_creds_user.

    aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --db-name exampledb --duration-seconds 3600

    O resultado é conforme se segue.

    {
      "DbUser": "IAM:temp_creds_user", 
      "Expiration": "2016-12-08T21:12:53Z", 
      "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
    }

    O exemplo a seguir usa o Amazon Redshift CLI com autocreate para gerar credenciais de banco de dados temporárias para um novo usuário e adicionar o usuário ao grupo example_group.

    aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --auto-create --db-name exampledb --db-groups example_group --duration-seconds 3600

    O resultado é conforme se segue.

    {
      "DbUser": "IAMA:temp_creds_user:example_group", 
      "Expiration": "2016-12-08T21:12:53Z", 
      "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
    }
  5. Estabeleça uma conexão de autenticação Secure Socket Layer (SSL) com o cluster Amazon Redshift e envie uma solicitação de login com o nome de usuário e a senha da resposta GetClusterCredentials. Inclua o prefixo IAM: ou IAMA: com o nome de usuário; por exemplo, IAM:temp_creds_user ou IAMA:temp_creds_user.

    Importante

    Configure o cliente SQL para exigir o SSL. Caso contrário, se o cliente SQL tentar se conectar automaticamente com o SSL, ele poderá retornar a não SSL se houver qualquer tipo de falha. Nesse caso, a primeira tentativa de conexão poderá falhar porque as credenciais estão expiradas ou são inválidas e, depois, a segunda tentativa de conexão falhará porque a conexão não é SSL. Se isso ocorrer, pode ser que a primeira mensagem não apareça. Para obter mais informações sobre como se conectar ao cluster usando o SSL, consulte Configurar as opções de segurança para conexões.

  6. Se a conexão não usar SSL, a tentativa de conexão apresentará falha.

  7. O cluster envia uma solicitação authentication ao cliente SQL.

  8. Em seguida, o cliente SQL envia uma senha temporária ao cluster.

  9. Se a senha for válida e não tiver expirado, o cluster concluirá a conexão.