Autenticación con mTLS para ingesta de streaming de Redshift desde Amazon MSK
La seguridad mutua de la capa de transporte (mTLS) proporciona los medios para que un servidor autentique a un cliente al que envía información y para que el cliente autentique el servidor. El beneficio de usar mTLS es que proporciona una autenticación fiable para una variedad de casos de uso en varias aplicaciones del sector vertical. Estos incluyen casos de uso en los sectores financiero, minorista, gubernamental y sanitario. En el caso de la ingesta de streaming en Redshift, la autenticación se produce entre un servidor, en este caso Amazon MSK, y un clúster aprovisionado de Amazon Redshift o un grupo de trabajo de Amazon Redshift sin servidor.
En este tema se proporcionan procedimientos y ejemplos de comandos SQL que muestran formas de crear un esquema externo que utiliza mTLS para autenticarse entre el cliente de Redshift y el servidor de Amazon MSK. Los pasos de este tema complementan el conjunto completo de pasos para configurar la ingesta de streaming desde Amazon MSK. Estos se detallan en Introducción a la ingesta de streaming de Amazon Managed Streaming para Apache Kafka (Amazon MSK).
Requisitos previos para usar mTLS para la ingesta de streaming
En esta sección se proporcionan los pasos previos para usar mTLS para la ingesta de streaming con AWS Certificate Manager o Amazon SageMaker.
Como paso preliminar, debe tener o crear una autoridad de certificación privada (PCA), que puede utilizar para emitir certificados que, entre otras funciones, permiten una comunicación segura a través de canales de comunicación seguros. AWS Private Certificate Authority (Entidad de certificación privada) es un servicio disponible que realiza esta función. Para obtener más información, consulte Creación de una entidad de certificación privada en la Guía del usuario de AWS Private Certificate Authority. En un paso posterior, emitirá un certificado y lo adjuntará al clúster de Amazon MSK para habilitar la comunicación cifrada con Redshift.
Cree un clúster de Amazon MSK que admita la autenticación de clientes mtls. Para obtener más información sobre la configuración de un clúster de Amazon MSK, consulte Creación de un clúster que admite la autenticación de clientes en la Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka.
Edite la configuración de seguridad del clúster de Amazon MSK, active la autenticación de cliente de TLS mediante AWS Certificate Manager (ACM) y seleccione la AWS Private CA (PCA) que creó anteriormente. Para obtener más información, consulte Actualización de la configuración de seguridad de un clúster en la Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka.
Uso de mTLS para la ingesta de datos con AWS Certificate Manager
El siguiente procedimiento muestra cómo configurar mTLS para la ingesta de streaming de Redshift mediante el aprovechamiento de AWS Certificate Manager (ACM) para el almacenamiento y la administración de certificados:
Solicite un certificado privado a través de ACM. Cuando lo haga, seleccione la PCA que creó en la sección de requisitos previos como autoridad de certificación. ACM almacena el certificado firmado y la clave privada adjunta para una comunicación segura. Para obtener más información sobre la administración de certificados con ACM, consulte Emisión y administración de certificados en la Guía del usuario de AWS Certificate Manager.
Para el rol de IAM que utilice para administrar el clúster de Redshift o el grupo de trabajo de Amazon Redshift sin servidor, adjunte el permiso para exportar el certificado, que es acm:ExportCertificate. Para obtener más información acerca de cómo configurar los recursos de IAM necesarios para la ingesta de streaming con Amazon MSK, consulte Configuración de permisos de IAM y realización de la ingesta de streaming desde Kafka. Especifique el mismo rol de IAM en el siguiente paso para crear el esquema externo.
Obtenga el URI del agente de arranque para el clúster de Amazon MSK. La obtención del URI del agente de arranque se detalla en Obtención de los agentes de arranque para un clúster de Amazon MSK en la Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka.
Ejecute un comando SQL como el siguiente ejemplo para crear un esquema externo que asigne una transmisión desde un clúster de Amazon MSK a un esquema externo de Redshift, mediante
mtls
.CREATE EXTERNAL SCHEMA my_schema FROM MSK IAM_ROLE 'arn:aws:iam::012345678901:role/my_role' AUTHENTICATION mtls URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094' AUTHENTICATION_ARN 'arn:aws:acm:Region:444455556666:certificate/certificate_ID';
Parámetros importantes:
IAM_ROLE: el rol de IAM asociado al clúster, para la ingesta de streaming.
URI: el URI del agente de arranque para el clúster de Amazon MSK. Tenga en cuenta que el puerto 9094 se especifica para comunicarse con los agentes de cifrado TLS.
AUTHENTICATION_ARN: el ARN del certificado de ACM. El ARN está disponible en la consola de ACM al elegir el certificado emitido.
Tras realizar estos pasos de configuración, puede crear una vista materializada de Redshift que haga referencia al esquema definido en el ejemplo y, a continuación, utilizar REFRESH MATERIALIZED VIEW para transmitir los datos. Encontrará más información en los pasos de introducción de streaming desde Amazon MSK, en Introducción a la ingesta de streaming desde Amazon Managed Streaming para Apache Kafka (MSK).
Uso de mTLS para la ingesta de datos con AWS Secrets Manager
Puede configurar mTLS para la ingesta de streaming de Redshift al aprovechar AWS Secrets Manager para la administración de certificados, si no quiere hacer referencia al certificado en ACM. En los pasos siguientes, se describe cómo configurarlo.
Cree una solicitud de firma de certificado y una clave privada con la herramienta que prefiera. A continuación, puede utilizar la solicitud de firma para generar un certificado firmado con la misma entidad de certificación privada de AWS (PCA) que utilizó para generar el certificado para el clúster de Amazon MSK. Para obtener más información sobre la emisión de un certificado, consulte IssueCertificate en la Referencia de la API de AWS Private Certificate Authority.
Extraiga el certificado mediante AWS Private Certificate Authority. Para obtener más información, consulte Recuperar un certificado privado> en la Guía del usuario de AWS Private Certificate Authority.
Guarde el certificado y la clave privada generados en el paso anterior enAWS Secrets Manager. Elija
Other type of secret
y utilice el formato de texto plano. Los pares clave-valor deben tener el formato{"certificate":"<cert value>","privateKey":"<pkey value>"}
, que se muestra en el siguiente ejemplo. Para obtener más información acerca de la creación y administración de secretos en AWS Secrets Manager, consulte Creación y administración de secretos con AWS Secrets Manager en la Guía del usuario de AWS Secrets Manager.{"certificate":"-----BEGIN CERTIFICATE----- klhdslkfjahksgdfkgioeuyihbflahabhbdslv6akybeoiwv1hoaiusdhbahsbdi H4hAX8/eE96qCcjkpfT84EdvHzp6fC+/WwM0oXlwUEWlvfMCXNaG5D8SqRq3qA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- klhdslkfjahksgdfkgioeuyihbflahabhbdslv6akybeoiwv1hoaiusdhbahsbdi wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -----END CERTIFICATE-----", "privateKey":"-----BEGIN PRIVATE KEY----- klhdslkfjahksgdfkgioeuyihbflahabhbdslv6akybeoiwv1hoaiusdhbahsbdi 7OD4m1dBEs3Fj++hDMH9rYRp99RqtCOf0EWOUe139KOilOsW+cyhAoc9Ci2+Jo/k 17u2N1iGILMQEZuCRtnJOkFYkw== -----END PRIVATE KEY-----"}
En Redshift, ejecute el comando SQL para crear el esquema externo. Se utiliza el tipo de AUTENTICACIÓN
mtls
. También se debe especificar el URI del clúster de Amazon MSK y el ARN del secreto en AWS Secrets Manager.CREATE EXTERNAL SCHEMA my_schema FROM MSK IAM_ROLE 'arn:aws:iam::012345678901:role/my_role' AUTHENTICATION mtls URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094' SECRET_ARN 'arn:aws:secretsmanager:us-east-1:012345678910:secret:myMTLSSecret';
Parámetros importantes:
IAM_ROLE: el rol de IAM asociado al clúster, para la ingesta de streaming.
URI: el URI del agente de arranque para el clúster de Amazon MSK. Tenga en cuenta que el puerto 9094 se especifica para comunicarse con los agentes de cifrado TLS.
SECRET_ARN: el ARN del secreto de Secrets Manager, que contiene el certificado que se utilizará para mTLS.
Habilitación de la autenticación mTLS para un esquema externo existente
Si tiene un esquema externo existente que utiliza para la ingesta de streaming y desea implementar un TLS mutuo para la autenticación, puede ejecutar un comando como el siguiente, que especifica la autenticación mTLS y el ARN del certificado ACM en ACM.
ALTER EXTERNAL SCHEMA schema_name AUTHENTICATION mtls AUTHENTICATION_ARN 'arn:aws:acm:Region:444455556666:certificate/certificate_ID';
O bien, puede especificar la autenticación mTLS, con referencia al ARN del secreto en AWS Secrets Manager.
ALTER EXTERNAL SCHEMA schema_name AUTHENTICATION mtls SECRET_ARN 'arn:aws:secretsmanager:us-east-1:012345678910:secret:myMTLSSecret';