

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Secrets Manager per la protezione dei dati con EMR Serverless
<a name="secrets-manager"></a>

Gestione dei segreti AWS è un servizio di archiviazione segreto per proteggere le credenziali del database, le chiavi API e altre informazioni segrete. Quindi, nel codice, sostituisci le credenziali hardcoded con una chiamata API a Secrets Manager. Questo aiuta a garantire che il segreto non possa essere compromesso da qualcuno che esamina il tuo codice, perché il segreto non è presente. Per una panoramica, consulta la Guida per l'[Gestione dei segreti AWS utente](https://docs.aws.amazon.com/secretsmanager/latest/userguide).

Secrets Manager crittografa i segreti utilizzando AWS Key Management Service le chiavi. *Per ulteriori informazioni, consulta la sezione [Crittografia e decrittografia segrete nella Guida](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html) per l'Gestione dei segreti AWS utente.*

È possibile configurare Secrets Manager in modo che ruoti automaticamente i segreti in base a una pianificazione specificata. In questo modo puoi sostituire i segreti a lungo termine con altri a breve termine, contribuendo a ridurre notevolmente il rischio di compromissione. Per ulteriori informazioni, consulta [Rotate Gestione dei segreti AWS secrets nella Guida](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html) per l'*Gestione dei segreti AWS utente*.

Amazon EMR Serverless si integra Gestione dei segreti AWS in modo da poter archiviare i dati in Secrets Manager e utilizzare l'ID segreto nelle configurazioni.

## In che modo EMR Serverless utilizza i segreti
<a name="secrets-manager-how"></a>

Quando si archiviano i dati in Secrets Manager e si utilizza l'ID segreto nelle configurazioni per EMR Serverless, non si trasmettono dati di configurazione sensibili a EMR Serverless in testo semplice per poi esporli a fonti esterne. APIs Se si indica che una coppia chiave-valore contiene un ID segreto per un segreto archiviato in Secrets Manager, EMR Serverless recupera il segreto quando invia i dati di configurazione ai worker per i job in esecuzione.

Per indicare che una coppia chiave-valore per una configurazione contiene un riferimento a un segreto archiviato in Secrets Manager, aggiungete l'`EMR.secret@`annotazione al valore di configurazione. Per qualsiasi proprietà di configurazione con annotazione ID segreta, EMR Serverless chiama Secrets Manager e risolve il segreto al momento dell'esecuzione del job.

## Come creare un segreto
<a name="secrets-manager-create"></a>

*Per creare un segreto, segui i passaggi in [Creare un Gestione dei segreti AWS segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) nella Guida per l'Gestione dei segreti AWS utente.* Nel **passaggio 3**, scegli il campo **Testo normale** per inserire il tuo valore sensibile.

## Fornisci un segreto in una classificazione di configurazione
<a name="secrets-manager-examples"></a>

Gli esempi seguenti mostrano come fornire un segreto in una classificazione di configurazione in. `StartJobRun` Se si desidera configurare le classificazioni per Secrets Manager a livello di applicazione, fare riferimento a[Configurazione predefinita dell'applicazione per EMR Serverless](default-configs.md).

Negli esempi, `SecretName` sostituiscilo con il nome del segreto da recuperare. Per ulteriori informazioni, vedi [Come creare un segreto](#secrets-manager-create).

**Topics**
+ [Specificate i riferimenti segreti - Spark](#secrets-manager-examples-spark)
+ [Specificare i riferimenti segreti - Hive](#secrets-manager-examples-hive)

### Specificate i riferimenti segreti - Spark
<a name="secrets-manager-examples-spark"></a>

**Example — Specificate i riferimenti segreti nella configurazione del metastore Hive esterno per 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 — Specificate i riferimenti segreti per la configurazione del metastore Hive esterno nella classificazione `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",
        }
    }
```

### Specificare i riferimenti segreti - Hive
<a name="secrets-manager-examples-hive"></a>

**Example — Specificate i riferimenti segreti nella configurazione del metastore Hive esterno per 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 — Specificare i riferimenti segreti per la configurazione del metastore Hive esterno nella classificazione `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"
    }
}
```

## Concedi l'accesso a EMR Serverless per recuperare il segreto
<a name="secrets-manager-permission"></a>

Per consentire a EMR Serverless di recuperare il valore segreto da Secrets Manager, aggiungi la seguente dichiarazione di policy al tuo segreto quando lo crei. È necessario creare il segreto con la chiave KMS gestita dal cliente per consentire a EMR Serverless di leggere il valore segreto. *Per ulteriori informazioni, consulta la sezione [Autorizzazioni per la chiave KMS nella Guida per l'](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html#security-encryption-authz)utente.Gestione dei segreti AWS *

Nella seguente politica, sostituiscila `applicationId` con l'ID della tua applicazione.

**Politica delle risorse per il segreto**

È necessario includere le seguenti autorizzazioni nella politica delle risorse per il secret in per consentire Gestione dei segreti AWS a EMR Serverless di recuperare i valori segreti. Per garantire che solo un'applicazione specifica possa recuperare questo segreto, è possibile specificare facoltativamente l'ID dell'applicazione EMR Serverless come condizione nella policy.

------
#### [ 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"
    }
  ]
}
```

------

Crea il tuo segreto con la seguente politica per la chiave gestita dal cliente AWS Key Management Service ():AWS KMS

**Politica per la chiave gestita dal 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.Regione AWS.amazonaws.com"
        }
    }
}
```

## Ruotare il segreto
<a name="secrets-manager-rotate"></a>

*La rotazione avviene* quando si aggiorna periodicamente un segreto. Puoi Gestione dei segreti AWS configurare la rotazione automatica del segreto secondo una pianificazione da te specificata. In questo modo, puoi sostituire i segreti a lungo termine con segreti a breve termine. Questo aiuta a ridurre il rischio di compromessi. EMR Serverless recupera il valore segreto da una configurazione annotata quando il processo passa allo stato di esecuzione. Se tu o un processo aggiorni il valore segreto in Secrets Manager, devi inviare un nuovo lavoro in modo che il lavoro possa recuperare il valore aggiornato. 

**Nota**  
I lavori che sono già in esecuzione non possono recuperare un valore segreto aggiornato. Ciò potrebbe causare un fallimento del lavoro.