View a markdown version of this page

Configure los requisitos previos para MSK Replicator con clústeres autogestionados de Apache Kafka - Transmisión administrada de Amazon para Apache Kafka

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.

Configure los requisitos previos para MSK Replicator con clústeres autogestionados de Apache Kafka

Creación de un rol de ejecución de IAM

Cree un rol de IAM con una política de confianza para. kafka.amazonaws.com Adjunte la política AWSMSKReplicatorExecutionRole gestionada. La política gestionada otorga a Kafka a nivel de clúster, tema y grupo de consumidores los permisos que Kafka necesita para el Replicador, pero no incluye AWS Secrets Manager AWS KMS los permisos necesarios para la autenticación y las credenciales. SASL/SCRAM CMK-encrypted Para ver los fragmentos de políticas en línea que puede agregar, consulte. Permisos de SER adicionales para las claves administradas por el cliente SASL/SCRAM SASL/OAUTHBEARER, las MTLs y las claves administradas por el cliente

Ejemplo de política de confianza:

{ "Statement": [{ "Effect": "Allow", "Principal": {"Service": "kafka.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

Configure SASL/SCRAM los permisos de usuario y de ACL

Cree un usuario de SCRAM dedicado en su clúster autogestionado de Kafka. Se requieren los siguientes permisos de ACL:

  1. Lea y describa todos los temas

  2. Lea y describa sobre todos los grupos de consumidores

  3. Describa un recurso de clúster

Ejemplos de comandos de kafka-acls.sh:

# Grant Read and Describe on all topics kafka-acls.sh --bootstrap-server <broker>:9092 \ --add --allow-principal User:msk-replicator \ --operation Read --operation Describe \ --topic '*' # Grant Read and Describe on all consumer groups kafka-acls.sh --bootstrap-server <broker>:9092 \ --add --allow-principal User:msk-replicator \ --operation Read --operation Describe \ --group '*' # Grant Describe on cluster kafka-acls.sh --bootstrap-server <broker>:9092 \ --add --allow-principal User:msk-replicator \ --operation Describe --cluster

Configure los mTLS en un clúster autogestionado

Configure un receptor de SSL para sus corredores autogestionados de Kafka con. ssl.client.auth=required El almacén de confianza del bróker debe contener el certificado de la CA que firmó el certificado de cliente que utilizarás para MSK Replicator.

Conceda permisos de ACL al principal de Kafka derivados del nombre distintivo (DN) del certificado de cliente. Los permisos necesarios son: leer y describir todos los temas, leer y describir sobre todos los grupos de consumidores y describir sobre el recurso del clúster.

Configurar SASL/OAUTHBEARER (OAuth) en un clúster autogestionado

Con SASL/OAUTHBEARER, MSK Replicator obtiene un token de acceso de su proveedor de identidad (IDP) y lo presenta a su clúster autogestionado de Kafka durante el protocolo de enlace (RFC 7628). SASL/OAUTHBEARER Configure sus corredores con un SASL_SSL oyente que tenga la entrada OAUTHBEARER habilitada y configure la validación por parte del corredor de los tokens sasl.enabled.mechanisms emitidos por su IDP.

Conceda al director de Kafka que su IDP asigna el token de acceso a los permisos de ACL que MSK Replicator necesita en el clúster de origen.

MSK Replicator admite los siguientes mecanismos para adquirir un token de acceso. Usted elige uno al crear el Replicador (consulte). CreateReplicator Ejemplos de API para clústeres autogestionados de Kafka

  • Credenciales de cliente: la client_credentials concesión estándar (RFC 6749 §4.4). Usted proporciona una entrada y unaclient_id. client_secret AWS Secrets Manager Usa este mecanismo con IdP como Okta, Microsoft Entra ID, Keycloak y Google. PingFederate

  • IAM JWT bearer: la beca de afirmación del portador de JWT (RFC 7523). MSK Replicator usa la AWS identidad del rol de ejecución del servicio para obtener un JWT firmado que se envía al punto final del token como afirmación. No es necesario compartir ningún secreto, aunque si lo desea, puede proporcionar las credenciales del cliente si su IDP requiere que el cliente también se autentique.

  • Afirmación de credenciales de cliente: la client_credentials concesión con una afirmación de cliente de JWT (RFC §2.2). 7521/7523 El JWT firmado por la función de ejecución del servicio se utiliza para autenticar client_assertion al cliente, sin ningún secreto compartido.

Los siguientes requisitos se aplican al punto final del token:

  • tokenEndpointUrlDeben usar el esquema HTTPS y especificar un nombre de host (no se permiten los literales de la dirección IP, por lo que se puede realizar la verificación del nombre de host TLS).

  • Se debe poder acceder al punto final del token desde las subredes de VPC que proporciones para el replicador. Consulte Configuración de la conectividad de red.

  • Si su IDP presenta un certificado emitido por una CA privada, almacene el certificado de la CA AWS Secrets Manager y haga referencia a él tokenEndpointTlsCertificateArn cuando cree el replicador.

Configure el SSL en un clúster autogestionado

Configure los detectores SSL en sus corredores. En el caso de los certificados de confianza pública, no se requiere ninguna configuración adicional. En el caso de los certificados privados o autofirmados, incluya la cadena completa de certificados de la CA en el secreto almacenado en AWS Secrets Manager.

Guarde las credenciales en AWS Secrets Manager 

Cree un secreto de tipo Otro (no RDS/Redshift) en AWS Secrets Manager con los pares clave-valor adecuados para su tipo de autenticación.

Para: SASL/SCRAM

  1. username— Nombre de usuario de SCRAM para el clúster autogestionado

  2. password— Contraseña de SCRAM para el clúster autogestionado

  3. certificate— Cadena de certificados de CA (formato PEM; obligatorio para private/self los certificados firmados)

Para mTLS:

  1. certificate— cadena de certificados de PEM-encoded clientes

  2. privateKey— clave PEM-encoded privada

  3. privateKeyPassword— (Opcional) Frase de contraseña para la clave privada, necesaria solo para las claves PKCS8 cifradas

Para: SASL/OAUTHBEARER

Se requiere un secreto para el mecanismo de credenciales del cliente y es opcional para los mecanismos de afirmación de credenciales de portador y cliente de IAM JWT (indíquelo solo si su IDP exige que el cliente también se autentique). El secreto es un objeto JSON plano formado por pares clave-valor. MSK Replicator reconoce las siguientes claves:

  • client_id— El identificador del cliente de OAuth. Necesario para el mecanismo de credenciales del cliente.

  • client_secret— El secreto del cliente de OAuth. Necesario para el mecanismo de credenciales del cliente.

  • custom_param.<name>— (Opcional) Se adjunta un parámetro de formulario adicional a la solicitud del token para los IdP que requieren parámetros que van más allá del conjunto estándar de OAuth. Agregue una clave por parámetro (por ejemplo,). custom_param.resource

  • custom_header.<name>— (Opcional) Se envía un encabezado HTTP adicional con la solicitud del token. Agregue una clave por encabezado (por ejemplo,custom_header.X-Custom).

  • extension.<name>— (Opcional) Se envía una extensión SASL al intermediario de Kafka durante el SASL/OAUTHBEARER apretón de manos, para los proveedores de Kafka que necesitan pares clave-valor adicionales durante la autenticación. Agregue una clave por extensión.

Las claves client_secret que client_id no utilicen uno de estos prefijos se ignoran. A continuación se muestra un ejemplo de valor secreto para el mecanismo de credenciales del cliente:

{ "client_id": "my-oauth-client", "client_secret": "example-client-secret", "custom_param.resource": "urn:example:kafka" }
nota

MSK Replicator rechaza custom_param. las entradas cuyo nombre de parámetro entre en conflicto con un parámetro de OAuth estándar (por ejemplo,,grant_type,,client_id, client_secret client_assertionclient_assertion_type, assertion y). scope También rechaza custom_header. entradas restringidas comoHost, y. Authorization Content-Type

Configuración de la conectividad de red

MSK Replicator requiere conectividad de red con su clúster Kafka autogestionado. Opciones compatibles:

  • AWS Site-to-Site VPN: conecte las redes locales a su VPC a través de Internet.

  • AWS Conexión directa: establezca una conexión de red privada dedicada desde sus instalaciones a. AWS

Si lo utilizas SASL/OAUTHBEARER, también debes poder acceder al punto final del token desde las subredes de VPC que hayas proporcionado al replicador. En el caso de un IDP alojado en Internet, esto normalmente requiere una puerta de enlace de Internet, una puerta de enlace de NAT y entradas de tabla de rutas; en el caso de un IDP local o privado, utilice VPN o Direct Connect. AWS Site-to-Site AWS El punto final del token no debe convertirse en una dirección de bucle invertido, local de enlace o de metadatos. AWS

Configuración de grupos de seguridad

Asegúrese de que los grupos de seguridad permitan el tráfico entre MSK Replicator y el clúster autogestionado en el puerto utilizado por su agente de escucha de autenticación. Actualice las reglas de entrada de los grupos de seguridad de la VPC y las reglas de salida del firewall de clúster autogestionado.