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 TLS reciproca
Puoi abilitare l'autenticazione client con TLS per le connessioni dalle tue applicazioni ai broker Amazon MSK. Per utilizzare l'autenticazione client, è necessario un CA privata AWS. CA privata AWS Possono appartenere allo Account AWS stesso cluster o a un account diverso. Per informazioni su CA privata AWS s, vedere Creazione e gestione di un CA privata AWS.
Nota
L'autenticazione TLS non è disponibile nelle regioni di Pechino e Ningxia.
Amazon MSK non supporta le liste di revoche di certificati (CRL). Per controllare l'accesso agli argomenti del cluster o bloccare i certificati compromessi, utilizza gli ACL e i gruppi di sicurezza di Apache Kafka. AWS Per ulteriori informazioni sull'utilizzo delle ACL di Apache Kafka, consulta la pagina ACL Apache Kafka.
Questo argomento contiene le sezioni seguenti:
Per creare un cluster che supporta l'autenticazione client
Questa procedura mostra come abilitare l'autenticazione del client utilizzando un. CA privata AWS
Nota
Si consiglia vivamente di utilizzare Independent CA privata AWS per ogni cluster MSK quando si utilizza il TLS reciproco per controllare l'accesso. In questo modo si assicurerà che i certificati TLS firmati dalle PCA si autentichino solo con un singolo cluster MSK.
-
Crea un file denominato
clientauthinfo.json
con i seguenti contenuti. SostituirePrivate-CA-ARN
con l'ARN del PCA.{ "Tls": { "CertificateAuthorityArnList": ["
Private-CA-ARN
"] } } -
Crea un file denominato
brokernodegroupinfo.json
come descritto in Creazione di un cluster utilizzando AWS CLI. -
L'autenticazione client richiede di abilitare anche la crittografia dei dati in transito tra client e broker. Crea un file denominato
encryptioninfo.json
con i seguenti contenuti. SostituisciKMS-Key-Arn
con l'ARN della chiave KMS. Puoi impostareClientBroker
suTLS
oTLS_PLAINTEXT
.{ "EncryptionAtRest": { "DataVolumeKMSKeyId": "
KMS-Key-ARN
" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" } }Per ulteriori informazioni sulla crittografia, consulta Crittografia di Amazon MSK.
-
Su una macchina su cui è AWS CLI installato, esegui il comando seguente per creare un cluster con l'autenticazione e la crittografia in transito abilitate. Salva l'ARN del cluster fornito nella risposta.
aws kafka create-cluster --cluster-name "AuthenticationTest" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --client-authentication file://clientauthinfo.json --kafka-version "
{YOUR KAFKA VERSION}
" --number-of-broker-nodes 3
Per impostare un client per utilizzare l'autenticazione
-
Crea un'istanza Amazon EC2 da utilizzare come un computer client. Per semplicità, creare questa istanza nello stesso VPC utilizzato per il cluster. Consulta Passaggio 3: creazione di un computer client per un esempio di come creare un computer client di questo tipo.
-
Creazione di un argomento. Per un esempio, consulta le istruzioni in Passaggio 4: creazione di un argomento.
-
Su un computer in cui è AWS CLI installato, esegui il comando seguente per ottenere i broker bootstrap del cluster. Sostituire
Cluster-ARN
con l'ARN del cluster.aws kafka get-bootstrap-brokers --cluster-arn
Cluster-ARN
Salvare la stringa associata a
BootstrapBrokerStringTls
nella risposta. -
Sul computer client, eseguire il comando seguente per utilizzare il truststore JVM per creare il truststore client. Se il percorso JVM è diverso, modificare il comando di conseguenza.
cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts kafka.client.truststore.jks
-
Sul computer client, eseguire il comando seguente per creare una chiave privata per il client. Sostituire
Distinguished-Name
,Example-Alias
,Your-Store-Pass
eYour-Key-Pass
con stringhe prescelte.keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass
Your-Store-Pass
-keypassYour-Key-Pass
-dname "CN=Distinguished-Name
" -aliasExample-Alias
-storetype pkcs12 -
Sul computer client, eseguire il comando seguente per creare una richiesta di certificato con la chiave privata creata nella fase precedente.
keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -alias
Example-Alias
-storepassYour-Store-Pass
-keypassYour-Key-Pass
-
Aprire il file
client-cert-sign-request
e accertarsi che inizi con-----BEGIN CERTIFICATE REQUEST-----
e termini con-----END CERTIFICATE REQUEST-----
. Se inizia con-----BEGIN NEW CERTIFICATE REQUEST-----
, eliminare la parolaNEW
(e il singolo spazio che la segue) dall'inizio e dalla fine del file. -
Su un computer su cui è AWS CLI installato, esegui il comando seguente per firmare la richiesta di certificato. Sostituire
Private-CA-ARN
con l'ARN del PCA. Se lo si desidera, è possibile modificare il valore di validità. In questo esempio viene utilizzato 300.aws acm-pca issue-certificate --certificate-authority-arn
Private-CA-ARN
--csr fileb://client-cert-sign-request --signing-algorithm "SHA256WITHRSA" --validity Value=300,Type="DAYS"Salvare il certificato ARN fornito nella risposta.
Nota
Per recuperare il certificato client, utilizza il comando
acm-pca get-certificate
e specifica l'ARN del certificato. Per ulteriori informazioni, consulta la sezione get-certificatenella documentazione di riferimento alla AWS CLI . -
Esegui il comando seguente per ottenere il certificato CA privata AWS firmato per te. Sostituire
Certificate-ARN
con l'ARN ottenuto dalla risposta al comando precedente.aws acm-pca get-certificate --certificate-authority-arn
Private-CA-ARN
--certificate-arnCertificate-ARN
-
Dal risultato JSON dell'esecuzione del comando precedente, copiare le stringhe associate a
Certificate
eCertificateChain
. Incolla queste due stringhe in un nuovo file denominato signed-certificate-from-acm. Incollare innanzitutto la stringa associata aCertificate
, seguita dalla stringa associata aCertificateChain
. Sostituire i caratteri\n
con nuove righe. Di seguito è riportata la struttura del file dopo aver incollato al suo interno il certificato e la catena di certificati.-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
-
Eseguire il comando seguente sul computer client per aggiungere questo certificato al keystore in modo da poterlo presentare quando si parla con i broker MSK.
keytool -keystore kafka.client.keystore.jks -import -file signed-certificate-from-acm -alias
Example-Alias
-storepassYour-Store-Pass
-keypassYour-Key-Pass
-
Crea un file denominato
client.properties
con i seguenti contenuti. Regolare le posizioni del truststore e del keystore sui percorsi in cui è stato salvatokafka.client.truststore.jks
. Sostituisci i segnaposto{YOUR KAFKA VERSION}
con la versione del tuo client Kafka.security.protocol=SSL ssl.truststore.location=/tmp/kafka_2.12-
{YOUR KAFKA VERSION}
/kafka.client.truststore.jks ssl.keystore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}
/kafka.client.keystore.jks ssl.keystore.password=Your-Store-Pass
ssl.key.password=Your-Key-Pass
Per produrre e consumare messaggi utilizzando l'autenticazione
-
Eseguire il comando seguente per creare un argomento. Il file denominato
client.properties
è quello creato nella procedura precedente.<path-to-your-kafka-installation>
/bin/kafka-topics.sh --create --bootstrap-serverBootstrapBroker-String
--replication-factor 3 --partitions 1 --topic ExampleTopic --command-config client.properties -
Eseguire il comando seguente per avviare un produttore della console. Il file denominato
client.properties
è quello creato nella procedura precedente.<path-to-your-kafka-installation>
/bin/kafka-console-producer.sh --bootstrap-serverBootstrapBroker-String
--topic ExampleTopic --producer.config client.properties -
In una nuova finestra di comando sul computer client, eseguire il comando seguente per avviare un consumatore della console.
<path-to-your-kafka-installation>
/bin/kafka-console-consumer.sh --bootstrap-serverBootstrapBroker-String
--topic ExampleTopic --consumer.config client.properties -
Digitare i messaggi nella finestra del produttore e guardarli apparire nella finestra del consumatore.