

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Autorizar acesso à API de dados do Amazon Redshift
<a name="data-api-access"></a>

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](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html). Para ver as permissões permitidas e negadas pelas políticas gerenciadas, consulte o console do IAM ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)). 

# Configurar permissões do IAM
<a name="data-api-iam"></a>

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\$1amostra é mapeado para o usuário do banco de dados `IAM:sample_user` e o perfil do IAM perfil\$1amostra é 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) no Guia do usuário do IAM.
+ A ação `redshift-data:GetStatementResult` do IAM permite acesso às operações de API `GetStatementResult` e `GetStatementResultV2`.

Os links a seguir fornecem informações adicionais sobre o AWS Identity and Access Management no *Manual do usuário do IAM*.
+ Para obter informações sobre como criar funções de IAM, consulte [Criar funções do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html). 
+ Para obter informações sobre como criar uma política do IAM, consulte [Criar políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html).
+ Para obter informações sobre como adicionar uma política do IAM a um usuário, consulte [Adicionando e removendo permissões de identidade do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html). 

## Executar uma consulta em um cluster pertencente a outra conta
<a name="data-api-run-query-on-others-cluster"></a>

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 `AmazonRedshiftDataFullAccess` gerenciada pela AWS ao perfil do IAM da conta B. Em seguida, a Conta B confia na Conta A utilizando uma política fidedigna como a seguinte: :``

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333: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.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/someRoleB"
    }
}
```

------

## Especificar um perfil do IAM que restrinja recursos aos grupos de trabalho do Redshift sem servidor e aos clusters do Amazon Redshift em uma Conta da AWS
<a name="data-api-restrict-to-account"></a>

É possível especificar ARNs de recursos em sua política baseada em identidade para controlar o acesso aos grupos de trabalho do Redshift sem servidor e clusters do Amazon Redshift em uma Conta da AWS. Este exemplo mostra como você pode criar uma política que permita acesso à API de dados somente ao grupo de trabalho e aos clusters na Conta da AWS especificada.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:CancelStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListStatements"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "redshift-data:*",
            "Resource": [
                "arn:aws:redshift:us-east-1:111122223333:workgroup/*",
                "arn:aws:redshift:us-east-1:111122223333:cluster:*"
            ]
        }
    ]
}
```

------

## Configurar uma política do IAM que permita que somente o proprietário da instrução tenha acesso às informações da instrução SQL
<a name="data-api-restrict-to-statement-owner"></a>

Por padrão, a API de dados do Amazon Redshift trata o perfil do IAM usado ao chamar `ExecuteStatement` e `BatchExecuteStatement` como proprietário da instrução SQL. Qualquer pessoa autorizada a assumir o perfil pode acessar informações da instrução SQL, bem como os respectivos resultados. Para restringir o acesso às informações da instrução SQL a uma sessão do perfil do IAM com um proprietário específico, adicione uma condição `redshift-data:statement-owner-iam-userid: "${aws:userid}"`. A política do IAM a seguir restringe o acesso.

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:CancelStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListStatements"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "redshift-data:statement-owner-iam-userid": "${aws:userid}"
                }
            }
        }
    ]
}
```

------

É possível usar a condição `statement-owner-iam-userid` com `CancelStatement`, `DescribeStatement`, `GetStatementResult` e `ListStatements`. Para obter mais informações, consulte [Actions defined by Amazon Redshift Data API](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html#amazonredshiftdataapi-redshift-data_statement-owner-iam-userid).

## Configurar uma política do IAM que permita que somente o proprietário da sessão tenha acesso aos resultados SQL
<a name="data-api-restrict-session-owner"></a>

Por padrão, a API de dados do Amazon Redshift trata o perfil do IAM usado ao chamar `ExecuteStatement` e `BatchExecuteStatement` como o proprietário da instrução SQL que executa a instrução SQL. Qualquer pessoa autorizada a assumir o perfil pode enviar consultas à sessão do banco de dados. Para restringir o acesso a uma sessão do perfil do IAM com um proprietário específico, adicione a condição ` redshift-data:session-owner-iam-userid: "${aws:userid}"`. A política do IAM a seguir restringe o acesso.

A política do IAM a seguir permite que somente o proprietário da sessão obtenha os resultados da instrução. A condição `session-owner-iam-userid` é usada para permitir o acesso a recursos somente ao `userid` especificado.

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [ 
                "redshift-data:ExecuteStatement",
                "redshift-data:BatchExecuteStatement"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "redshift-data:session-owner-iam-userid": "${aws:userid}"
                }
            }
        }
    ]
}
```

------

É possível usar a condição `session-owner-iam-userid` com `ExecuteStatement` e `BatchExecuteStatement`. Para obter mais informações, consulte [Actions defined by Amazon Redshift Data API](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html#amazonredshiftdataapi-redshift-data_statement-owner-iam-userid).

# Armazenar credenciais de banco de dados no AWS Secrets Manager
<a name="data-api-secrets"></a>

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](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html) 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** e**Cluster de banco de dados** (identificador de cluster) em seu segredo. 
   + Etiquete o segredo com a chave `RedshiftDataFullAccess`. A política `AmazonRedshiftDataFullAccess` gerenciada pela AWS permite apenas a ação `secretsmanager:GetSecretValue` para segredos marcados com a chave `RedshiftDataFullAccess`. 

   Para obter instruções, consulte [Criar um segredo básico](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) no *Manual do usuário do AWS Secrets Manager*.

1. 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](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html#proc-create-api) no *Guia do usuário do AWS Secrets Manager*.

1. 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
<a name="data-api-vpc-endpoint"></a>

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)](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html) 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 Console de gerenciamento da AWS e abra o console da Amazon VPC em [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Escolha **Endpoints** e **Create Endpoint (Criar endpoint)**.

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

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

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

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

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

1. Escolha **Create endpoint (Criar endpoint)**.

Depois que o endpoint for criado, escolha o link no Console de gerenciamento da AWS 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](data-api.md#data-api-calling-considerations).

# Unir grupos de banco de dados ao se conectar a um cluster
<a name="data-api-dbgroups"></a>

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](https://docs.aws.amazon.com/redshift/latest/dg/r_Groups.html) 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.

**Como unir grupos de banco de dados**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Escolha a guia **Tags** e **Gerenciar tags**.

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

1. 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) no *Guia do usuário do IAM*. 