

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

# Assinatura de uma solicitação HTTP
<a name="amazon-redshift-signing-requests"></a>

O Amazon Redshift exige que todas as solicitações que você envia para a API de gerenciamento sejam autenticadas com uma assinatura. Este tópico explica como assinar suas solicitações. 

Se você estiver usando um dos Kits de Desenvolvimento de Software (SDKs) da AWS ou a AWS Command Line Interface, a assinatura da solicitação é tratada automaticamente e você pode pular esta seção. Para obter mais informações sobre como usar os SDKs da AWS, consulte [Usar as interfaces de gerenciamento do Amazon Redshift para clusters provisionados](using-aws-sdk.md). Para obter mais informações sobre como usar a interface da linha de comando do Amazon Redshift, acesse [Referência da linha de comando do Amazon Redshift](https://docs.aws.amazon.com/cli/latest/reference/redshift/index.html).

Para assinar uma solicitação, calcule uma assinatura digital usando a função de hash criptográfico. Um hash criptográfico é uma função que retorna um valor de hash exclusivo que é baseado na entrada. A entrada da função de hash inclui o texto da solicitação e a chave de acesso secreta que é possível obter nas credenciais temporárias. A função de hash retorna um valor de hash que você inclui na solicitação como sua assinatura. A assinatura é parte do cabeçalho `Authorization` de sua solicitação.

**nota**  
Os usuários precisam de acesso programático se quiserem interagir com a AWS de fora do Console de gerenciamento da AWS. 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 | 
| --- | --- | --- | 
| IAM | (Recomendado) Use credenciais do console como credenciais temporárias para assinar solicitações programáticas para a AWS CLI, os AWS SDKs ou as APIs da AWS. |  Siga as instruções da interface que deseja utilizar. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/amazon-redshift-signing-requests.html)  | 
|  Identidade 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/amazon-redshift-signing-requests.html)  | 
| 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 [Usar credenciais temporárias com recursos da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/amazon-redshift-signing-requests.html)  | 

Depois que o Amazon Redshift recebe a solicitação, ele recalcula a assinatura usando a mesma função de hash e a mesma entrada que você usou para assinar a solicitação. Se a assinatura resultante corresponde à assinatura na solicitação, o Amazon Redshift processa a solicitação; caso contrário, a solicitação é rejeitada. 

O Amazon Redshift oferece suporte à autenticação usando a [assinatura versão 4 da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html). O processo para cálculo de uma assinatura é composto de três tarefas. Essas tarefas são ilustradas no exemplo a seguir.
+   [Tarefa 1: Criar uma solicitação canônica](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html#create-canonical-request)

  Reorganize sua solicitação HTTP em um formato canônico. O uso de um formulário canônico é necessário porque o Amazon Redshift usa o mesmo formulário canônico para calcular a assinatura que compara com a que você enviou. 
+   [Tarefa 2: Criar uma string para assinar](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html#create-string-to-sign)

  Crie uma string que será usada como um dos valores de entrada para sua função hash criptográfica. A string, chamada *string-to-sign*, é uma concatenação do nome do algoritmo hash, da data da solicitação, de uma string do *escopo da credencial* e da solicitação canonizada da tarefa anterior. A string do *escopo credencial* em si é uma concatenação da data, da região e de informações do serviço.
+   [Tarefa 3: calcular uma assinatura](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html#calculate-signature)

  Calcule uma assinatura para sua solicitação usando uma função hash criptográfica que aceite duas strings de entrada, sua string para assinar e uma *chave derivada*. A chave derivada é calculada começando com sua chave de acesso secreta e usando a string do escopo da credencial para criar uma série de códigos de autenticação de mensagem baseados em hash (HMAC-SHA256). 

## Exemplo de cálculo de assinatura
<a name="example-signature-calculation"></a>

O exemplo a seguir mostra os detalhes da criação de uma assinatura para a solicitação [CreateCluster](https://docs.aws.amazon.com/redshift/latest/APIReference/API_CreateCluster.html). Você pode usar este exemplo como uma referência para verificar seu próprio método de cálculo de assinatura. Outros cálculos de referência estão incluídos na seção [Exemplos de assinatura de solicitação](https://docs.aws.amazon.com/IAM/latest/UserGuide/signature-v4-examples.html) do Guia do usuário do IAM.

Você pode usar uma solicitação GET ou POST para enviar solicitações ao Amazon Redshift. A diferença entre as duas é que, para a solicitação GET, seus parâmetros são enviados como parâmetros de string de consulta. Para a solicitação POST, eles são incluídos no corpo da solicitação. O exemplo abaixo mostra uma solicitação POST.

O exemplo supõe o seguinte:
+ O timestamp da solicitação é `Fri, 07 Dec 2012 00:00:00 GMT`.
+ O endpoint é a região Leste dos EUA (Norte da Virgínia), `us-east-1`.

A sintaxe geral da solicitação é: 

```
https://redshift.us-east-1.amazonaws.com/
   ?Action=CreateCluster
   &ClusterIdentifier=examplecluster
   &MasterUsername=masteruser
   &MasterUserPassword=12345678Aa
   &NumberOfNode=2
   &NodeType=dc2.large
   &Version=2012-12-01
   &x-amz-algorithm=AWS4-HMAC-SHA256
   &x-amz-credential=AKIAIOSFODNN7EXAMPLE/20121207/us-east-1/redshift/aws4_request
   &x-amz-date=20121207T000000Z
   &x-amz-signedheaders=content-type;host;x-amz-date
```

O formato canônico da solicitação calculada para [Tarefa 1: Crie uma solicitação canônica](#SignatureCalculationTask1) é:

```
POST
/

content-type:application/x-www-form-urlencoded; charset=utf-8
host:redshift.us-east-1.amazonaws.com
x-amz-date:20121207T000000Z

content-type;host;x-amz-date
55141b5d2aff6042ccd9d2af808fdf95ac78255e25b823d2dbd720226de1625d
```

A última linha da solicitação canônica é o hash do corpo da solicitação. A terceira linha na solicitação canônica está vazia, pois não há parâmetros de consulta para esta API. 

A string-to-sign para [Tarefa 2: Crie uma string-to-sign](#SignatureCalculationTask2) é:

```
AWS4-HMAC-SHA256
20121207T000000Z
20121207/us-east-1/redshift/aws4_request
06b6bef4f4f060a5558b60c627cc6c5b5b5a959b9902b5ac2187be80cbac0714
```

A primeira linha da *string-to-sign* é o algoritmo, a segunda linha é a time stamp, a terceira linha é o *escopo da credencial* e a última linha é o hash da solicitação canônica da [Tarefa 1: Crie uma solicitação canônica](#SignatureCalculationTask1). O nome do serviço a usar no escopo da credencial é `redshift`.

Para a [Tarefa 3: calcular uma assinatura](#SignatureCalculationTask3), a chave derivada pode ser representada como:

```
derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20121207"),"us-east-1"),"redshift"),"aws4_request")
```

A chave derivada é calculada como uma série de funções de hash. Partindo de instrução interna de HMAC na fórmula acima, você concatena a frase **AWS4** com sua chave de acesso secreta e a utiliza como a chave para fazer hash dos dados “us-east-1”. O resultado desse hash se torna a chave para a próxima função de hash. 

Após o cálculo da chave derivada, você a utiliza em uma função de hash que aceita duas strings de entrada, a sua string-to-sign e a chave derivada. Por exemplo, se você usar a chave de acesso secreta `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` e a string-to-sign fornecida anteriormente, a assinatura calculada será como se segue:

```
9a6b557aa9f38dea83d9215d8f0eae54100877f3e0735d38498d7ae489117920
```

A etapa final é construir o cabeçalho `Authorization`. Para a chave de acesso de demonstração `AKIAIOSFODNN7EXAMPLE`, o cabeçalho (com quebras de linha adicionadas por motivo de legibilidade) é:

```
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20121207/us-east-1/redshift/aws4_request, 
SignedHeaders=content-type;host;x-amz-date, 
Signature=9a6b557aa9f38dea83d9215d8f0eae54100877f3e0735d38498d7ae489117920
```