

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

# Autenticazione delle credenziali di accesso con Secrets Manager AWS
<a name="msk-password"></a>

Puoi controllare l'accesso ai tuoi cluster Amazon MSK utilizzando credenziali di accesso archiviate e protette tramite Secrets Manager. AWS L'archiviazione delle credenziali utente in Secrets Manager riduce il sovraccarico dell'autenticazione del cluster, ad esempio il controllo, l'aggiornamento e la rotazione delle credenziali. Secrets Manager consente inoltre di condividere le credenziali utente tra i cluster.

Dopo aver associato un segreto a un cluster MSK, MSK sincronizza periodicamente i dati delle credenziali.

**Topics**
+ [Come funziona l'autenticazione delle credenziali di accesso](msk-password-howitworks.md)
+ [Configurare SASL/SCRAM l'autenticazione per un cluster Amazon MSK](msk-password-tutorial.md)
+ [Operazioni con gli utenti](msk-password-users.md)
+ [Limitazioni nell'uso dei segreti SCRAM](msk-password-limitations.md)

# Come funziona l'autenticazione delle credenziali di accesso
<a name="msk-password-howitworks"></a>

L'autenticazione delle credenziali di accesso per Amazon MSK utilizza l'autenticazione SASL/SCRAM (Simple Authentication and Security Layer/ Salted Challenge Response Mechanism). Per configurare l'autenticazione delle credenziali di accesso per un cluster, crea una risorsa segreta in [AWS Secrets Manager](https://docs.aws.amazon.com//secretsmanager/?id=docs_gateway) e associa le credenziali di accesso a quel segreto. 

SASL/SCRAM è definito in [RFC 5802](https://tools.ietf.org/html/rfc5802). SCRAM utilizza algoritmi di hashing protetti e non trasmette credenziali di accesso non crittografate tra client e server. 

**Nota**  
Quando configuri SASL/SCRAM l'autenticazione per il tuo cluster, Amazon MSK attiva la crittografia TLS per tutto il traffico tra clienti e broker.

# Configurare SASL/SCRAM l'autenticazione per un cluster Amazon MSK
<a name="msk-password-tutorial"></a>

Per impostare un segreto in AWS Secrets Manager, segui il tutorial [Creazione e recupero di un segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html) nella Guida per l'[utente di AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).

Tieni presente i seguenti requisiti quando crei un segreto per un cluster Amazon MSK:
+ Per il tipo di segreto, scegli **Altro tipo di segreto (es. chiave API)**.
+ Il nome del segreto deve iniziare con il prefisso **AmazonMSK\$1**.
+ È necessario utilizzare una AWS KMS chiave personalizzata esistente o creare una nuova AWS KMS chiave personalizzata per il segreto. Secrets Manager utilizza la AWS KMS chiave predefinita per un segreto per impostazione predefinita. 
**Importante**  
Un segreto creato con la AWS KMS chiave predefinita non può essere utilizzato con un cluster Amazon MSK.
+ I dati delle credenziali di accesso devono essere nel seguente formato per inserire coppie chiave-valore utilizzando l'opzione **Non crittografato**.

  ```
  {
    "username": "alice",
    "password": "alice-secret"
  }
  ```
+ Prendi nota del valore del nome della risorsa Amazon (ARN) del segreto. 
+ 
**Importante**  
Non è possibile associare un segreto di Secrets Manager a un cluster che supera i limiti descritti in [Dimensioni corrette del cluster: numero di partizioni per broker Standard](bestpractices.md#partitions-per-broker).
+ Se si utilizza il AWS CLI per creare il segreto, specificare un ID chiave o un ARN per il `kms-key-id` parametro. Non specificare un alias.
+ Per associare il segreto al cluster, utilizza la console Amazon MSK o l'[ BatchAssociateScramSecret](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html#BatchAssociateScramSecret)operazione. 
**Importante**  
Quando associ un segreto a un cluster, Amazon MSK collega al segreto una policy delle risorse che consente al cluster di accedere e leggere i valori del segreto che hai definito. Questa policy delle risorse non dovrebbe essere modificata. In questo modo, è possibile impedire al cluster di accedere al segreto. Se apporti modifiche alla policy delle risorse Secrets e/o alla chiave KMS utilizzata per la crittografia segreta, assicurati di riassociare i segreti al tuo cluster MSK. In questo modo il cluster potrà continuare ad accedere al segreto.

  L'esempio seguente di input JSON per l'operazione `BatchAssociateScramSecret` associa un segreto a un cluster:

  ```
  {
    "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
    "secretArnList": [
      "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
    ]
  }
  ```

# Connessione al cluster con credenziali di accesso
<a name="msk-password-tutorial-connect"></a>

Dopo aver creato un segreto e averlo collegato al cluster, è possibile collegare il client al cluster. La procedura seguente mostra come connettere un client a un cluster che utilizza SASL/SCRAM l'autenticazione. Viene inoltre illustrato come produrre e consumare partendo da un argomento di esempio.

**Topics**
+ [Connessione di un client al cluster tramite SASL/SCRAM l'autenticazione](#w2aab9c13c29c17c13c11b9b7)
+ [Risoluzione dei problemi di connessione](#msk-password-tutorial-connect-troubleshooting)

## Connessione di un client al cluster tramite SASL/SCRAM l'autenticazione
<a name="w2aab9c13c29c17c13c11b9b7"></a>

1. Esegui il comando seguente su un computer che è stato AWS CLI installato. Sostituisci *clusterARN* con l'ARN del tuo cluster.

   ```
   aws kafka get-bootstrap-brokers --cluster-arn clusterARN
   ```

   Dal risultato JSON di questo comando, salva il valore associato alla stringa denominata. `BootstrapBrokerStringSaslScram` Utilizzerai questo valore nei passaggi successivi.

1. Sul tuo computer client, crea un file di configurazione JAAS che contenga le credenziali utente archiviate nel tuo segreto. Ad esempio, per l'utente **alice**, crea un file chiamato `users_jaas.conf` con il seguente contenuto.

   ```
   KafkaClient {
      org.apache.kafka.common.security.scram.ScramLoginModule required
      username="alice"
      password="alice-secret";
   };
   ```

1. Utilizza il seguente comando per esportare il file di configurazione JAAS come parametro di ambiente `KAFKA_OPTS`.

   ```
   export KAFKA_OPTS=-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf
   ```

1. Nella directory `/tmp`, crea un file denominato `kafka.client.truststore.jks`.

1. (Facoltativo) Utilizzate il seguente comando per copiare il file dell'archivio chiavi JDK dalla `cacerts` cartella JVM nel `kafka.client.truststore.jks` file creato nel passaggio precedente. *JDKFolder*Sostituiscilo con il nome della cartella JDK sull'istanza. Ad esempio, la tua cartella JDK potrebbe avere il nome `java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64`.

   ```
   cp /usr/lib/jvm/JDKFolder/lib/security/cacerts /tmp/kafka.client.truststore.jks
   ```

1. Nella directory `bin` di installazione di Apache Kafka, crea un file delle proprietà del client chiamato `client_sasl.properties` con il seguente contenuto. Questo file definisce il meccanismo e il protocollo SASL.

   ```
   security.protocol=SASL_SSL
   sasl.mechanism=SCRAM-SHA-512
   ```

1. Per creare un argomento di esempio, esegui il comando seguente. Sostituisci *BootstrapBrokerStringSaslScram* con la stringa del broker bootstrap ottenuta nel passaggio 1 di questo argomento.

   ```
   <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapBrokerStringSaslScram --command-config <path-to-client-properties>/client_sasl.properties --replication-factor 3 --partitions 1 --topic ExampleTopicName
   ```

1. Per produrre l'argomento di esempio che hai creato, esegui il comando seguente sul computer client. Sostituiscila *BootstrapBrokerStringSaslScram* con la stringa del broker bootstrap recuperata nel passaggio 1 di questo argomento.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringSaslScram --topic ExampleTopicName --producer.config client_sasl.properties
   ```

1. Per utilizzare l'argomento che hai creato, esegui il comando seguente sul tuo computer client. Sostituiscila *BootstrapBrokerStringSaslScram* con la stringa del broker bootstrap ottenuta nel passaggio 1 di questo argomento.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --from-beginning --consumer.config client_sasl.properties
   ```

## Risoluzione dei problemi di connessione
<a name="msk-password-tutorial-connect-troubleshooting"></a>

Quando si eseguono i comandi del client Kafka, è possibile riscontrare errori nella memoria heap di Java, specialmente quando si lavora con argomenti o set di dati di grandi dimensioni. Questi errori si verificano perché gli strumenti Kafka vengono eseguiti come applicazioni Java con impostazioni di memoria predefinite che potrebbero essere insufficienti per il carico di lavoro.

Per risolvere `Out of Memory Java Heap` gli errori, è possibile aumentare la dimensione dell'heap Java modificando la variabile di `KAFKA_OPTS` ambiente per includere le impostazioni di memoria.

L'esempio seguente imposta la dimensione massima dell'heap su 1 GB (). `-Xmx1G` È possibile regolare questo valore in base alla memoria di sistema disponibile e ai requisiti.

```
export KAFKA_OPTS="-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf -Xmx1G"
```

Per approfondire argomenti di grandi dimensioni, prendi in considerazione l'utilizzo di parametri basati sul tempo o sull'offset anziché `--from-beginning` limitare l'utilizzo della memoria:

```
<path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --max-messages 1000 --consumer.config client_sasl.properties
```

# Operazioni con gli utenti
<a name="msk-password-users"></a>

**Creazione di utenti:** crea utenti nel tuo segreto come coppie chiave-valore. Quando si utilizza l'opzione **Non crittografato** nella console Secrets Manager, è necessario specificare i dati delle credenziali di accesso nel formato seguente.

```
{
  "username": "alice",
  "password": "alice-secret"
}
```

**Revoca dell'accesso utente:** per revocare le credenziali di accesso a un cluster di un utente, si consiglia di rimuovere o applicare un'ACL al cluster e successivamente annullare l'associazione del segreto. Ciò può essere dovuto ai motivi seguenti:
+ La rimozione di un utente non chiude le connessioni esistenti.
+ La propagazione delle modifiche al segreto richiede fino a 10 minuti.

Per ulteriori informazioni sull'utilizzo delle ACL con Amazon MSK, consulta la pagina [Apache Kafka ACLs](msk-acls.md).

Per i cluster che utilizzano ZooKeeper la modalità, si consiglia di limitare l'accesso ai ZooKeeper nodi per impedire agli utenti di apportare modifiche. ACLs Per ulteriori informazioni, consulta [Controlla l'accesso ai ZooKeeper nodi Apache nel tuo cluster Amazon MSK](zookeeper-security.md).

# Limitazioni nell'uso dei segreti SCRAM
<a name="msk-password-limitations"></a>

Quando utilizzi i segreti SCRAM, tieni presente le limitazioni seguenti:
+ Amazon MSK supporta solo l'autenticazione SCRAM-SHA-512.
+ Un cluster Amazon MSK può avere fino a 1.000 utenti.
+ Devi usare un AWS KMS key con il tuo segreto. Non è possibile utilizzare un segreto che utilizza la chiave di crittografia Secrets Manager predefinita con Amazon MSK. Per ulteriori informazioni sulla creazione di una chiave KMS, consulta la pagina [Creating symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk).
+ Non è possibile utilizzare una chiave KMS asimmetrica con Secrets Manager.
+ È possibile associare fino a 10 segreti a un cluster alla volta utilizzando l'[ BatchAssociateScramSecret](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html#BatchAssociateScramSecret)operazione.
+ Il nome dei segreti associati a un cluster Amazon MSK deve avere il prefisso **AmazonMSK\$1.**
+ I segreti associati a un cluster Amazon MSK devono trovarsi nello stesso account e nella stessa AWS regione Amazon Web Services del cluster.