Autorizar acesso à API de dados do Amazon Redshift - Amazon Redshift

Autorizar acesso à API de dados do Amazon Redshift

Para acessar a API de dados, um usuário deve ser autorizado. Você pode autorizar um usuário a acessar a API de dados adicionando uma política gerenciada, que é uma política do AWS Identity and Access Management (IAM) predefinida para esse usuário. Como prática recomendada, anexe políticas de permissões a um perfil do IAM e, depois, atribua-as a usuários e grupos, conforme necessário. Para obter mais informações, consulte Gerenciamento de identidade e acesso no Amazon Redshift. Para ver as permissões permitidas e negadas pelas políticas gerenciadas, consulte o console do IAM (https://console.aws.amazon.com/iam/).

O Amazon Redshift fornece a política gerenciada AmazonRedshiftDataFullAccess. Esta política fornece acesso total às operações da API de dados do Amazon Redshift. Esta política também permite acesso com escopo específico ao Amazon Redshift, ao AWS Secrets Manager e às operações de API do IAM necessárias para autenticar e acessar um cluster do Amazon Redshift ou um grupo de trabalho do Redshift sem servidor.

Você também pode criar sua própria política do IAM que permite acesso a recursos específicos. Para criar sua política, use a política AmazonRedshiftDataFullAccess como seu modelo inicial. Depois de criar sua política, adicione-a a cada usuário que requer acesso à API de dados.

Considere os seguintes requisitos da política do IAM associada ao usuário:

  • Se você usar o AWS Secrets Manager para autenticar, confirme se a política permite o uso da ação secretsmanager:GetSecretValue para recuperar o segredo marcado com a chave RedshiftDataFullAccess.

  • Se você usar credenciais temporárias a fim de autenticar em um cluster, confirme se a política permitirá o uso da ação redshift:GetClusterCredentials para o nome do usuário do banco de dados redshift_data_api_user a qualquer banco de dados no cluster. Esse nome de usuário já deve ter sido criado no banco de dados.

  • Se você usar credenciais temporárias para autenticar em um grupo de trabalho com a tecnologia sem servidor, confirme se a política permite o uso da ação redshift-serverless:GetCredentials para recuperar o grupo de trabalho marcado com a chave RedshiftDataFullAccess. O usuário do banco de dados é mapeado 1:1 para a identidade de origem do AWS Identity and Access Management (IAM). Por exemplo, o usuário usuário_amostra é mapeado para o usuário do banco de dados IAM:sample_user e o perfil do IAM perfil_amostra é mapeado para IAMR:sample_role. Para obter mais informações sobre as identidades do IAM, consulte Identidades do IAM (usuários, grupos de usuários e perfis) no Guia do usuário do IAM.

Para executar uma consulta em um cluster que pertence a outra conta, a conta proprietária deve fornecer uma função do IAM que a API de dados pode assumir na conta de chamada. Por exemplo, suponha que a Conta B possui um cluster que a Conta A precisa acessar. A Conta B pode anexar a política gerenciada pela AWS AmazonRedshiftDataFullAccess para a função do IAM da Conta B. Em seguida, a Conta B confia na Conta A utilizando uma política fidedigna como a seguinte:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::accountID-of-account-A:role/someRoleA" ] }, "Action": "sts:AssumeRole" } ] }

Finalmente, a função do IAM da conta A precisa ser capaz de assumir a função do IAM da conta B.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::accountID-of-account-B:role/someRoleB" } }

Os links a seguir fornecem informações adicionais sobre o AWS Identity and Access Management no Manual do usuário do IAM.

Armazenar credenciais de banco de dados no AWS Secrets Manager

Ao chamar a API de dados, você pode passar credenciais para o cluster ou um grupo de trabalho com a tecnologia sem servidor usando um segredo no AWS Secrets Manager. Para passar credenciais dessa maneira, especifique o nome do segredo ou o nome de recurso da Amazon (ARN) do segredo.

Para armazenar credenciais com o Secrets Manager, você precisa da permissão de política gerenciada SecretManagerReadWrite. Para obter mais informações sobre as permissões mínimas, consulte Criar e gerenciar segredos com o AWSSecrets Manager no Manual do usuário do AWS Secrets Manager.

Para armazenar suas credenciais em um segredo para um cluster do Amazon Redshift
  1. Use o console do AWS Secrets Manager a fim de criar um segredo que contenha credenciais para o cluster:

    • Quando você escolher Armazenar um novo segredo, escolha Credenciais do cluster Redshift.

    • Armazene seus valores para Nome de usuário (usuário do banco de dados), Senha eCluster de banco de dados (identificador de cluster) em seu segredo.

    • Etiquete o segredo com a chave RedshiftDataFullAccess. A política gerenciada pelo AWS AmazonRedshiftDataFullAccess permite apenas a ação secretsmanager:GetSecretValue para segredos marcados com a chave RedshiftDataFullAccess.

    Para obter instruções, consulte Criar um segredo básico no Manual do usuário do AWS Secrets Manager.

  2. Use o console do AWS Secrets Manager para visualizar os detalhes do segredo criado ou execute o comando aws secretsmanager describe-secret da AWS CLI.

    Anote o nome e o ARN do segredo. Você pode usá-los em chamadas para a API de dados.

Para armazenar suas credenciais em um segredo para um grupo de trabalho com a tecnologia sem servidor
  1. Use os comandos da AWS CLI do AWS Secrets Manager para armazenar um segredo que contenha as credenciais para o grupo de trabalho com a tecnologia sem servidor:

    • Crie o segredo em um arquivo, por exemplo, um arquivo JSON denominado mycreds.json. Forneça os valores para User name (Nome de usuário) (usuário do banco de dados) e Password (Senha) no arquivo.

      { "username": "myusername", "password": "mypassword" }
    • Armazene seus valores no segredo e marque-o com a chave RedshiftDataFullAccess.

      aws secretsmanager create-secret --name MyRedshiftSecret --tags Key="RedshiftDataFullAccess",Value="serverless" --secret-string file://mycreds.json

      A seguir, é mostrada a saída.

      { "ARN": "arn:aws:secretsmanager:region:accountId:secret:MyRedshiftSecret-mvLHxf", "Name": "MyRedshiftSecret", "VersionId": "a1603925-e8ea-4739-9ae9-e509eEXAMPLE" }

    Para obter mais informações, consulte Criar um segredo básico com a AWS CLI no Guia do usuário do AWS Secrets Manager.

  2. Use o console do AWS Secrets Manager para visualizar os detalhes do segredo criado ou execute o comando aws secretsmanager describe-secret da AWS CLI.

    Anote o nome e o ARN do segredo. Você pode usá-los em chamadas para a API de dados.

Criar um endpoint da Amazon VPC (AWS PrivateLink) para a API de dados

O Amazon Virtual Private Cloud (Amazon VPC) permite que você inicie recursos da AWS, como clusters e aplicações do Amazon Redshift, em uma nuvem privada virtual (VPC). O AWS PrivateLink fornece conectividade privada entre nuvens privadas virtuais (VPCs) e serviços da AWS com segurança na rede Amazon. Usando AWS PrivateLink, você pode criar endpoints da VPC, que você pode usar para se conectar a serviços em diferentes contas e VPCs com base no Amazon VPC. Para obter mais informações sobre AWS PrivateLink, consulte Serviços de endpoint da VPC (AWS PrivateLink) no Manual do usuário do Amazon Virtual Private Cloud.

Você pode chamar a API de dados com endpoints da Amazon VPC. O uso de um endpoint da Amazon VPC mantém o tráfego entre aplicações em sua Amazon VPC e a API de dados na AWS sem usar endereços IP públicos. Os endpoints do Amazon VPC podem ajudá-lo a atender aos requisitos normativos e de compatibilidade relacionados à limitação da conectividade pública com a Internet. Por exemplo, ao usar um endpoint da Amazon VPC, você pode manter o tráfego entre uma aplicação em execução em uma instância do Amazon EC2 e a API de dados nas VPCs que API contêm.

Depois de criar o Amazon VPC endpoint, você pode começar a usá-lo sem fazer alterações no código ou na configuração de sua aplicação.

Como criar um Amazon VPC endpoint para a API de dados
  1. Faça login no AWS Management Console e abra o console do Amazon VPC em https://console.aws.amazon.com/vpc/.

  2. Escolha Endpoints e Create Endpoint (Criar endpoint).

  3. Na página Criar endpoint, para a Categoria de serviço, escolha Serviços da AWS. Para o Nome do serviço, escolha redshift-data (com.amazonaws.region.redshift-data).

  4. Em VPC, escolha a VPC na qual criar o endpoint.

    Escolha a VPC que contém a aplicação que faz chamadas da API de dados.

  5. Em Sub-redes, escolha a sub-rede de cada zona de disponibilidade (AZ) usada pelo serviço da AWS que está executando a aplicação.

    Para criar um endpoint do Amazon VPC, especifique o intervalo de endereços IP privados no qual o endpoint está acessível. Para fazer isso, escolha a sub-rede de cada zona de disponibilidade. Isso restringe o VPC endpoint ao intervalo de endereços IP privados específico para cada zona de disponibilidade e também cria um Amazon VPC endpoint em cada zona de disponibilidade.

  6. Em Enable DNS Name (Habilitar nome DNS), selecione Enable for this endpoint (Habilitar para este endpoint).

    O DNS privado resolve o nome de host DNS da API de dados padrão (https://redshift-data.region.amazonaws.com) para os endereços IP privados associados ao nome de host DNS específico a seu Amazon VPC endpoint. Como resultado, é possível acessar o endpoint da VPC endpoint da API de dados usando a AWS CLI ou os SDKs da AWS sem fazer alterações no código ou na configuração para atualizar o URL do endpoint da API de dados.

  7. Em Security group (Grupo de segurança), escolha um grupo de segurança para associar ao Amazon VPC endpoint.

    Escolha o grupo de segurança que permite o acesso ao serviço da AWS que está executando sua aplicação. Por exemplo, se uma instância do Amazon EC2 estiver executando sua aplicação, escolha o grupo de segurança que permite o acesso à instância do Amazon EC2. O grupo de segurança permite que você controle o tráfego para o Amazon VPC endpoint nos recursos em sua VPC.

  8. Escolha Create endpoint (Criar endpoint).

Depois que o endpoint for criado, escolha o link no AWS Management Console para visualizar os detalhes do endpoint.

A guia Details (Detalhes) do endpoint mostra os nomes de host de DNS que foram gerados durante a criação do Amazon VPC endpoint.

Você pode usar o endpoint padrão (redshift-data.region.amazonaws.com) ou um dos endpoints específicos da VPC para chamar a API de dados dentro da Amazon VPC. O endpoint padrão da API de dados roteia automaticamente para o Amazon VPC endpoint. Esse roteamento ocorre porque o nome de host DNS privado foi habilitado quando o Amazon VPC endpoint foi criado.

Quando você usa um Amazon VPC endpoint em uma chamada da API de dados, todo tráfego entre sua aplicação e a API de dados permanece nas Amazon VPCs que o contêm. Você pode usar um Amazon VPC endpoint para qualquer tipo de chamada da API de dados. Para obter informações sobre como chamar a API de dados, consulte Considerações ao chamar a API de dados do Amazon Redshift.

Unir grupos de banco de dados ao se conectar a um cluster

Grupos de banco de dados são coleções de usuários do banco de dados. Os privilégios do banco de dados podem ser concedidos a grupos. Um administrador pode configurar um perfil do IAM de forma que esses grupos de banco de dados sejam levados em consideração quando o SQL for executado com a API de dados. Para obter informações sobre grupos de banco de dados, consulte Grupos no Guia do desenvolvedor de banco de dados do Amazon Redshift.

É possível configurar o perfil do IAM de um chamador da API de dados para que o usuário do banco de dados especificado na chamada se junte a grupos de banco de dados quando a API de dados se conectar a um cluster. Esse recurso só é compatível com a conexão com clusters provisionados. Não é compatível com a conexão com grupos de trabalho do Redshift sem servidor. O perfil do IAM do chamador da API de dados também deve permitir a ação redshift:JoinGroup.

Configure isso adicionando tags aos perfis do IAM. O administrador do perfil do IAM do chamador adiciona tags com a chave RedshiftDbGroups e um valor de chave de uma lista de grupos de banco de dados. O valor é uma lista de nomes separados por dois-pontos (:) de grupos de banco de dados com uma extensão total de até 256 caracteres. Os grupos do banco de dados devem ser definidos previamente no banco de dados conectado. Se algum grupo especificado não for encontrado no banco de dados, ele será ignorado. Por exemplo, para grupos de banco de dados accounting e retail, o valor da chave é accounting:retail. O par chave-valor da tag {"Key":"RedshiftDbGroups","Value":"accounting:retail"} é usado pela API de dados para determinar quais grupos de banco de dados estão associados ao usuário do banco de dados fornecido na chamada para a API de dados.

Para adicionar grupos de banco de dados como uma tag a um perfil do IAM
  1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação do console, escolha Roles (Funções) e, em seguida, escolha o nome da função que deseja editar.

  3. Escolha a guia TagsGerenciar tags.

  4. Escolha Adicionar tag e adicione a chave RedshiftDbGroups e um valor que é uma lista de database-groups-colon-separated.

  5. Escolha Salvar alterações.

    Agora, quando uma entidade principal do IAM (com esse perfil do IAM anexado) chama a API de dados, o usuário do banco de dados especificado se junta aos grupos de banco de dados especificados no perfil do IAM.

Para obter mais informações sobre como anexar uma etiqueta a uma entidade principal, inclusive funções do IAM e usuários do IAM, consulte Recursos de etiquetas do IAM no Guia do usuário do IAM.