

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Autenticação com a integração do Amazon Redshift para Apache Spark
<a name="emr-spark-redshift-auth"></a>

As seções a seguir mostram as opções de autenticação com o Amazon Redshift durante a integração com o Apache Spark. As seções mostram como recuperar as credenciais de login e detalhes sobre o uso do driver JDBC com a autenticação do IAM.

## Use AWS Secrets Manager para recuperar credenciais e conectar-se ao Amazon Redshift
<a name="emr-spark-redshift-secrets"></a>

Você pode armazenar credenciais no Secrets Manager para realizar a autenticação com segurança no Amazon Redshift. É possível fazer com que seu trabalho do Spark chame a API `GetSecretValue` para buscar as credenciais:

```
from pyspark.sql import SQLContextimport boto3

sc = # existing SparkContext
sql_context = SQLContext(sc)

secretsmanager_client = boto3.client('secretsmanager', region_name=os.getenv('AWS_REGION'))
secret_manager_response = secretsmanager_client.get_secret_value(
    SecretId='string',
    VersionId='string',
    VersionStage='string'
)
username = # get username from secret_manager_response
password = # get password from secret_manager_response
url = "jdbc:redshift://redshifthost:5439/database?user=" + username + "&password=" + password

# Access to Redshift cluster using Spark
```

## Uso da autenticação baseada no IAM com o perfil de execução de trabalho do Amazon EMR no EKS
<a name="emr-spark-redshift-iam"></a>

A partir da versão 6.9.0 do Amazon EMR no EKS, a versão 2.1 ou as versões superiores do driver JDBC do Amazon Redshift são empacotadas no ambiente. Com a versão 2.1 e versões superiores do driver JDBC, é possível especificar o URL do JDBC e não incluir o nome de usuário e a senha brutos. Em vez disso, você pode especificar o esquema `jdbc:redshift:iam://`. Isso comanda o driver JDBC para usar seu perfil de execução de trabalho do Amazon EMR no EKS para buscar as credenciais automaticamente.

Consulte [Configurar uma conexão JDBC ou ODBC para usar credenciais do IAM](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-iam-credentials-configure-jdbc-odbc.html) no *Guia de gerenciamento do Amazon Redshift* para obter mais informações.

O exemplo de URL a seguir usa um esquema `jdbc:redshift:iam://`.

```
jdbc:redshift:iam://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev
```

As permissões apresentadas a seguir são obrigatórias para o seu perfil de execução de trabalho quando ele atende às condições fornecidas.


| Permissão | Condições para se tornar obrigatória para o perfil de execução de trabalho | 
| --- | --- | 
|  redshift:GetClusterCredentials  | Obrigatória para que o driver JDBC busque as credenciais do Amazon Redshift. | 
|  redshift:DescribeCluster  | Obrigatória se você especificar o cluster do Amazon Redshift e a Região da AWS no URL do JDBC em vez do endpoint. | 
|  redshift-serverless:GetCredentials  | Obrigatória para que o driver JDBC busque as credenciais do Amazon Redshift sem servidor. | 
|  redshift-serverless:GetWorkgroup  | Obrigatória se você estiver usando o Amazon Redshift sem servidor e especificar o URL em termos de nome e de região do grupo de trabalho. | 

Sua política de perfil de execução de trabalho deve ter as permissões apresentadas a seguir.

```
{
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials",
                "redshift:DescribeCluster",
                "redshift-serverless:GetCredentials",
                "redshift-serverless:GetWorkgroup"
            ],
            "Resource": [
                "arn:aws:redshift:AWS_REGION:ACCOUNT_ID:dbname:CLUSTER_NAME/DATABASE_NAME",
                "arn:aws:redshift:AWS_REGION:ACCOUNT_ID:dbuser:DATABASE_NAME/USER_NAME"
            ]
        }
```

## Autenticação no Amazon Redshift com um driver JDBC
<a name="emr-spark-redshift-jdbc"></a>

**Definição de um nome de usuário e de uma senha no URL do JDBC**

Para autenticar um trabalho do Spark em um cluster do Amazon Redshift, você pode especificar o nome e a senha do banco de dados do Amazon Redshift no URL do JDBC. 

**nota**  
Se você transferir as credenciais do banco de dados no URL, qualquer pessoa que tenha acesso ao URL também poderá acessar as credenciais. Este método geralmente não é recomendado porque não é uma opção segura.

Se a segurança não for uma preocupação para sua aplicação, você poderá usar o seguinte formato para definir o nome de usuário e a senha no URL do JDBC:

```
jdbc:redshift://redshifthost:5439/database?user=username&password=password
```