

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

# Secrets Manager para proteção de dados com o EMR Sem Servidor
<a name="secrets-manager"></a>

AWS Secrets Manager é um serviço de armazenamento secreto para proteger credenciais de banco de dados, chaves de API e outras informações secretas. Em seguida, no seu código, substitua credenciais codificadas por uma chamada de API para o Secrets Manager. Isso ajuda a garantir que o segredo não possa ser comprometido por alguém que esteja examinando seu código, pois o segredo não está ali. Para obter uma visão geral, consulte o [Guia do usuário do AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide).

O Secrets Manager criptografa segredos usando AWS Key Management Service chaves. Para obter mais informações, consulte [Criptografia e descriptografia de segredos](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html) no *Guia do usuário do AWS Secrets Manager *.

Você pode configurar o Secrets Manager para alterar automaticamente os segredos para você de acordo com a programação que você especificar. Isso permite substituir segredos de longo prazo por outros de curto prazo, ajudando a reduzir de maneira significativa o risco de comprometimento. Para obter mais informações, consulte [Alternar os segredos do AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html) no *Guia do usuário do AWS Secrets Manager *.

O Amazon EMR Serverless se integra AWS Secrets Manager para que você possa armazenar seus dados no Secrets Manager e usar o ID secreto em suas configurações.

## Como o EMR Sem Servidor usa segredos
<a name="secrets-manager-how"></a>

Quando você armazena seus dados no Secrets Manager e usa o ID secreto em suas configurações para o EMR Serverless, você não passa dados de configuração confidenciais para o EMR Serverless em texto simples e os expõe ao ambiente externo. APIs Se você indicar que um par de chave-valor contém o ID do segredo armazenado no Secrets Manager, o EMR Sem Servidor recuperará o segredo ao enviar dados de configuração aos trabalhadores para execução de trabalhos.

Para indicar que um par de chave-valor de uma configuração contém uma referência a um segredo armazenado no Secrets Manager, adicione a anotação `EMR.secret@` ao valor da configuração. Para qualquer propriedade de configuração com anotação de ID secreta, o EMR Sem Servidor chama o Secrets Manager e resolve o segredo no momento da execução do trabalho.

## Como criar um segredo
<a name="secrets-manager-create"></a>

Para criar um segredo, siga as etapas em [Criar um AWS Secrets Manager segredo](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) no *Guia do AWS Secrets Manager usuário*. Na **Etapa 3**, escolha o campo **Texto sem formatação** para inserir o valor sigiloso.

## Fornecimento de um segredo em uma classificação de configuração
<a name="secrets-manager-examples"></a>

Os exemplos a seguir mostram como fornecer um segredo em uma classificação de configuração em `StartJobRun`. Se quiser configurar classificações para o Secrets Manager no nível da aplicação, consulte [Configuração padrão de aplicações do EMR Sem Servidor](default-configs.md).

Nos exemplos, substitua `SecretName` pelo nome do segredo a ser recuperado. Para obter mais informações, consulte [Como criar um segredo](#secrets-manager-create).

**Topics**
+ [Especifique referências secretas: Spark](#secrets-manager-examples-spark)
+ [Especifique referências secretas: Hive](#secrets-manager-examples-hive)

### Especifique referências secretas: Spark
<a name="secrets-manager-examples-spark"></a>

**Example — Especifique referências secretas na configuração externa da metastore do Hive para o Spark**  

```
aws emr-serverless start-job-run \
  --application-id "application-id" \
  --execution-role-arn "job-role-arn" \
  --job-driver '{
        "sparkSubmit": {
            "entryPoint": "s3://amzn-s3-demo-bucket/scripts/spark-jdbc.py",
            "sparkSubmitParameters": "--jars s3://amzn-s3-demo-bucket/mariadb-connector-java.jar 
            --conf spark.hadoop.javax.jdo.option.ConnectionDriverName=org.mariadb.jdbc.Driver 
            --conf spark.hadoop.javax.jdo.option.ConnectionUserName=connection-user-name 
            --conf spark.hadoop.javax.jdo.option.ConnectionPassword=EMR.secret@SecretName
            --conf spark.hadoop.javax.jdo.option.ConnectionURL=jdbc:mysql://db-host:db-port/db-name 
            --conf spark.driver.cores=2
            --conf spark.executor.memory=10G 
            --conf spark.driver.memory=6G 
            --conf spark.executor.cores=4"
        }
    }' \
    --configuration-overrides '{
        "monitoringConfiguration": {
        "s3MonitoringConfiguration": {
            "logUri": "s3://amzn-s3-demo-bucket/spark/logs/"
        }
    }
}'
```

**Example — Especifique referências secretas para a configuração externa da metastore do Hive na classificação `spark-defaults`.**  

```
{
        "classification": "spark-defaults",
        "properties": {
            "spark.hadoop.javax.jdo.option.ConnectionDriverName":"org.mariadb.jdbc.Driver"
            "spark.hadoop.javax.jdo.option.ConnectionURL":"jdbc:mysql://db-host:db-port/db-name"
            "spark.hadoop.javax.jdo.option.ConnectionUserName":"connection-user-name"  
            "spark.hadoop.javax.jdo.option.ConnectionPassword": "EMR.secret@SecretName",
        }
    }
```

### Especifique referências secretas: Hive
<a name="secrets-manager-examples-hive"></a>

**Example — Especifique referências secretas na configuração externa da metastore do Hive para o Hive**  

```
aws emr-serverless start-job-run \
  --application-id "application-id" \
  --execution-role-arn "job-role-arn" \
    --job-driver '{
        "hive": {
        "query": "s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql",
        "parameters": "--hiveconf hive.exec.scratchdir=s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/scratch 
                    --hiveconf hive.metastore.warehouse.dir=s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/warehouse  
                    --hiveconf javax.jdo.option.ConnectionUserName=username
                    --hiveconf javax.jdo.option.ConnectionPassword=EMR.secret@SecretName 
                    --hiveconf hive.metastore.client.factory.class=org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory 
                    --hiveconf javax.jdo.option.ConnectionDriverName=org.mariadb.jdbc.Driver 
                    --hiveconf javax.jdo.option.ConnectionURL=jdbc:mysql://db-host:db-port/db-name"
        }
    }' \
    --configuration-overrides '{
        "monitoringConfiguration": {
        "s3MonitoringConfiguration": {
            "logUri": "s3://amzn-s3-demo-bucket"
        }
    }
}'
```

**Example — Especifique referências secretas para a configuração externa da metastore do Hive na classificação `hive-site`.**  

```
{
    "classification": "hive-site",
    "properties": {
        "hive.metastore.client.factory.class": "org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory",
        "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver",
        "javax.jdo.option.ConnectionURL": "jdbc:mysql://db-host:db-port/db-name",
        "javax.jdo.option.ConnectionUserName": "username",
        "javax.jdo.option.ConnectionPassword": "EMR.secret@SecretName"
    }
}
```

## Concessão de acesso ao EMR Sem Servidor para recuperar o segredo
<a name="secrets-manager-permission"></a>

Para permitir que o EMR Sem Servidor recupere o valor do segredo do Secrets Manager, adicione a instrução de política a seguir ao seu segredo ao criá-lo. Você deve criar o segredo com a chave do KMS gerenciada pelo cliente para que o EMR Sem Servidor leia o valor do segredo. Para obter mais informações, consulte [Permissões para a chave do KMS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html#security-encryption-authz) no *Guia do usuário do AWS Secrets Manager *.

Na política a seguir, substitua `applicationId` pelo ID da aplicação.

**Política de recursos do segredo**

Você deve incluir as permissões a seguir na política de recursos do segredo no AWS Secrets Manager para permitir que o EMR Sem Servidor recupere valores do segredo. Para garantir que somente uma aplicação específica possa recuperar esse segredo, você pode, opcionalmente, especificar o ID da aplicação do EMR Sem Servidor como uma condição na política.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "secretsmanager:DescribeSecret"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:SourceArn": "arn:aws:emr-serverless:*:123456789012:/applications/*"
        }
      },
      "Sid": "AllowSECRETSMANAGERGetsecretvalue"
    }
  ]
}
```

------

Crie seu segredo com a seguinte política para a chave gerenciada pelo cliente AWS Key Management Service (AWS KMS):

**Política para chave gerenciada pelo cliente AWS KMS **

```
{
    "Sid": "Allow EMR Serverless to use the key for decrypting secrets",
    "Effect": "Allow",
    "Principal": {
        "Service": [
            "emr-serverless.amazonaws.com"
        ]
    },
    "Action": [
        "kms:Decrypt",
        "kms:DescribeKey"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "kms:ViaService": "secretsmanager.Região da AWS.amazonaws.com"
        }
    }
}
```

## Alternância do segredo
<a name="secrets-manager-rotate"></a>

A *alternância* é quando você atualiza periodicamente um segredo. É possível configurar o AWS Secrets Manager para alternar automaticamente o segredo de acordo com uma programação que você especificar. Dessa forma, é possível substituir segredos de longo prazo por segredos de curto prazo. Isso ajuda a reduzir o risco de comprometimento. O EMR Sem Servidor recupera o valor do segredo de uma configuração anotada quando o trabalho passa para um estado de execução. Se você ou um processo atualizar o valor do segredo no Secrets Manager, você deverá enviar um novo trabalho para que ele possa buscar o valor atualizado. 

**nota**  
Os trabalhos que já estão em execução não podem buscar um valor de segredo atualizado. Isso pode resultar em falha no trabalho.