Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Autenticación TLS mutua
Puede habilitar la autenticación de clientes con TLS para las conexiones desde sus aplicaciones a sus agentes de Amazon MSK. Para usar la autenticación del cliente, necesita una Autoridad de certificación privada de AWS. Autoridad de certificación privada de AWS Puede estar en la Cuenta de AWS misma cuenta que su clúster o en una cuenta diferente. Para obtener información acerca Autoridad de certificación privada de AWS de s, consulte Creación y administración de un Autoridad de certificación privada de AWS.
nota
La autenticación de TLS no está disponible actualmente en las regiones de Pekín y Ningxia.
Amazon MSK no admite listas de revocación de certificados (CRL). Para controlar el acceso a los temas de su clúster o bloquear los certificados comprometidos, utilice las ACL y los grupos de AWS seguridad de Apache Kafka. Para obtener más información sobre cómo utilizar las ACL de Apache Kafka, consulte ACL de Apache Kafka.
Este tema contiene las siguientes secciones:
Creación de un clúster que admita la autenticación del cliente
Este procedimiento le muestra cómo habilitar la autenticación de clientes mediante un. Autoridad de certificación privada de AWS
nota
Recomendamos encarecidamente utilizar un TLS independiente Autoridad de certificación privada de AWS para cada clúster de MSK cuando utilice un TLS mutuo para controlar el acceso. De este modo, se asegurará de que los certificados TLS firmados por las PCA solo se autentiquen con un único clúster de MSK.
-
Cree un archivo denominado
clientauthinfo.json
con el siguiente contenido. SustituyaPrivate-CA-ARN (ARN-CA-privado)
por el ARN de su PCA.{ "Tls": { "CertificateAuthorityArnList": ["
Private-CA-ARN
"] } } -
Cree un archivo llamado
brokernodegroupinfo.json
tal y como se describe en Crear un clúster mediante el AWS CLI. -
La autenticación del cliente precisa que también habilite el cifrado en tránsito entre clientes y agentes. Cree un archivo denominado
encryptioninfo.json
con el siguiente contenido. SustituyaKMS-Key-ARN (ARN-clave-KMS)
por el ARN de su clave de KMS. Puede establecerClientBroker
enTLS
oTLS_PLAINTEXT
.{ "EncryptionAtRest": { "DataVolumeKMSKeyId": "
KMS-Key-ARN
" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" } }Para obtener más información sobre el cifrado, consulte Cifrado de Amazon MSK.
-
En una máquina en la que lo tenga AWS CLI instalado, ejecute el siguiente comando para crear un clúster con la autenticación y el cifrado en tránsito habilitados. Guarde el ARN del clúster proporcionado en la respuesta.
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
Configuración de un cliente para utilizar la autenticación
-
Cree una instancia de Amazon EC2 para utilizarla como un equipo cliente. Para simplificar, cree esta instancia en la misma VPC que utilizó para el clúster. Consulte Paso 3: creación de un equipo cliente para ver un ejemplo sobre cómo crear dicho equipo cliente.
-
Cree un tema. Para ver un ejemplo, consulte las instrucciones en Paso 4: creación de un tema.
-
En una máquina en la que lo tenga AWS CLI instalado, ejecute el siguiente comando para obtener los agentes de arranque del clúster. Sustituya
Cluster-ARN (ARN-clúster)
por el ARN de su clúster.aws kafka get-bootstrap-brokers --cluster-arn
Cluster-ARN
Guarde la cadena asociada a
BootstrapBrokerStringTls
en la respuesta. -
En la máquina de su cliente, ejecute el siguiente comando para utilizar el almacén de confianza de JVM para crear su almacén de confianza del cliente. Si su ruta de JVM es diferente, ajuste el comando en consecuencia.
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
-
En la máquina de su cliente, ejecute el siguiente comando para crear una clave privada para su cliente. Sustituya
Distinguished-Name (Nombre-distinguido)
,Example-Alias (Alias-ejemplo)
,Your-Store-Pass (Su-Acceso-Almacenamiento)
yYour-Key-Pass (Su-Acceso-Clave)
por las cadenas de su elección.keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass
Your-Store-Pass
-keypassYour-Key-Pass
-dname "CN=Distinguished-Name
" -aliasExample-Alias
-storetype pkcs12 -
En la máquina de su cliente, ejecute el siguiente comando para crear una solicitud de certificado con la clave privada que creo en el paso anterior.
keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -alias
Example-Alias
-storepassYour-Store-Pass
-keypassYour-Key-Pass
-
Abra el archivo
client-cert-sign-request
y asegúrese de que comience por-----BEGIN CERTIFICATE REQUEST-----
y termine por-----END CERTIFICATE REQUEST-----
. Si comienza por-----BEGIN NEW CERTIFICATE REQUEST-----
, elimine la palabraNEW
(y el espacio único que le sigue) desde el comienzo hasta el final del archivo. -
En una máquina en la que lo tenga AWS CLI instalado, ejecute el siguiente comando para firmar la solicitud de certificado. Sustituya
Private-CA-ARN (ARN-CA-privado)
por el ARN de su PCA. Puede cambiar el valor de la validez si lo desea. Aquí utilizamos 300 como ejemplo.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"Guarde el ARN del certificado proporcionado en la respuesta.
nota
Para recuperar el certificado de cliente, utilice el comando
acm-pca get-certificate
y especifique el ARN del certificado. Para obtener más información, consulte get-certificateen la Referencia de comandos de la AWS CLI . -
Ejecute el siguiente comando para obtener el certificado Autoridad de certificación privada de AWS firmado por usted. Sustituya
Certificate-ARN (ARN-Certificado)
por el ARN que obtuvo de la respuesta al comando anterior.aws acm-pca get-certificate --certificate-authority-arn
Private-CA-ARN
--certificate-arnCertificate-ARN
-
A partir del resultado de JSON de la ejecución del comando anterior, copie las cadenas asociadas a
Certificate
yCertificateChain
. Pegue estas dos cadenas en un nuevo archivo llamado signed-certificate-from-acm. Pegue la siguiente cadena asociada aCertificate
primero, seguido de la cadena asociada aCertificateChain
. Sustituya los caracteres\n
por las nuevas líneas. La siguiente es la estructura del archivo después de pegarle el certificado y la cadena del certificado.-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
-
Ejecute el siguiente comando en el equipo cliente para agregar este certificado a su almacén de claves para que puede presentarlo al hablar con los agentes de MSK.
keytool -keystore kafka.client.keystore.jks -import -file signed-certificate-from-acm -alias
Example-Alias
-storepassYour-Store-Pass
-keypassYour-Key-Pass
-
Cree un archivo denominado
client.properties
con el siguiente contenido. Ajuste las ubicaciones del almacén de confianza y de claves a las rutas en las que guardókafka.client.truststore.jks
. Sustituya los marcadores de posición{YOUR KAFKA VERSION}
por su versión de cliente de 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
Producción y consumo de mensajes mediante la autenticación
-
Ejecute el siguiente comando para crear un tema. El archivo denominado
client.properties
es el que creó en el procedimiento anterior.<path-to-your-kafka-installation>
/bin/kafka-topics.sh --create --bootstrap-serverBootstrapBroker-String
--replication-factor 3 --partitions 1 --topic ExampleTopic --command-config client.properties -
Ejecute el siguiente comando para iniciar un productor de la consola. El archivo denominado
client.properties
es el que creó en el procedimiento anterior.<path-to-your-kafka-installation>
/bin/kafka-console-producer.sh --bootstrap-serverBootstrapBroker-String
--topic ExampleTopic --producer.config client.properties -
En una nueva ventana de comandos en la máquina de su cliente, ejecute el siguiente comando para iniciar un consumidor de la consola.
<path-to-your-kafka-installation>
/bin/kafka-console-consumer.sh --bootstrap-serverBootstrapBroker-String
--topic ExampleTopic --consumer.config client.properties -
Escriba mensajes en la ventana del productor y observe cómo aparecen en la ventana del consumidor.