Lambda에서 클러스터 인증 방법 구성
Lambda는 Amazon MSK 클러스터에 액세스하고 레코드를 검색하고 다른 태스크를 수행할 수 있는 권한이 필요합니다. Amazon MSK는 MSK 클러스터를 통해 인증하는 여러 가지 방법을 지원합니다.
인증되지 않은 액세스
인터넷을 통해 클러스터에 액세스하는 클라이언트가 없는 경우 인증되지 않은 액세스를 사용할 수 있습니다.
SASL/SCRAM 인증
Lambda는 SHA-512 해시 함수와 Transport Layer Security(TLS) 암호화를 통해 Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism(SASL/SCRAM) 인증을 지원합니다. Lambda가 클러스터에 연결하려면 인증 자격 증명(사용자 이름 및 암호)을 Secrets Manager 보안 암호에 저장하고 이벤트 소스 매핑을 구성할 때 이 보안 암호를 참조합니다.
Secrets Manager 사용에 대한 자세한 내용은 Amazon Managed Streaming for Apache Kafka 개발자 안내서의 Sign-in credentials authentication with Secrets Manager를 참조하세요.
참고
Amazon MSK는 SASL/PLAIN 인증을 지원하지 않습니다.
상호 TLS 인증
상호 TLS(mTLS)는 클라이언트와 서버 간의 양방향 인증을 제공합니다. 클라이언트는 서버가 클라이언트를 확인할 수 있도록 인증서를 서버로 전송합니다. 서버는 또한 클라이언트가 서버를 확인할 수 있도록 클라이언트에 인증서를 전송합니다.
Amazon MSK와 Lambda 통합의 경우 MSK 클러스터는 서버 역할을 하고 Lambda는 클라이언트 역할을 합니다.
-
Lambda가 MSK 클러스터를 확인하려면 Secrets Manager에서 클라이언트 인증서를 보안 암호로 구성하고 이벤트 소스 매핑 구성에서 이 인증서를 참조합니다. 클라이언트 인증서는 서버의 트러스트 스토어에 있는 인증 기관(CA)에서 서명해야 합니다.
-
MSK 클러스터는 서버 인증서도 Lambda로 전송합니다. 서버 인증서는 AWS 트러스트 스토어에 있는 인증 기관(CA)에서 서명해야 합니다.
Amazon MSK는 자체 서명된 서버 인증서를 지원하지 않습니다. Amazon MSK의 모든 브로커는 기본적으로 Lambda가 신뢰하는 Amazon Trust Services CA에서 서명한 퍼블릭 인증서
CLIENT_CERTIFICATE_TLS_AUTH 비밀 정보에 인증서 필드와 프라이빗 키 필드가 필요합니다. 암호화된 프라이빗 키의 경우 비밀 정보에 프라이빗 키 암호가 필요합니다. 인증서와 프라이빗 키는 모두 PEM 형식이어야 합니다.
참고
Lambda는 PBES1
인증서 필드에는 클라이언트 인증서부터 시작하여 중간 인증서가 이어지고 루트 인증서로 끝나는 인증서 목록이 포함되어야 합니다. 각 인증서는 다음 구조의 새 줄에서 시작해야 합니다.
-----BEGIN CERTIFICATE----- <certificate contents> -----END CERTIFICATE-----
Secrets Manager는 최대 65,536바이트의 보안 정보를 지원하므로 긴 인증서 체인을 위한 충분한 공간입니다.
프라이빗 키는 다음 구조의 PKCS #8
-----BEGIN PRIVATE KEY----- <private key contents> -----END PRIVATE KEY-----
암호화된 프라이빗 키의 경우 다음 구조를 사용합니다.
-----BEGIN ENCRYPTED PRIVATE KEY----- <private key contents> -----END ENCRYPTED PRIVATE KEY-----
다음 예제에서는 암호화된 프라이빗 키를 사용한 mTLS 인증용 비밀 정보 콘텐츠를 표시합니다. 암호화된 개인 키의 경우 비밀 정보에 프라이빗 키 암호를 포함합니다.
{ "privateKeyPassword": "testpassword", "certificate": "-----BEGIN CERTIFICATE----- MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw ... j0Lh4/+1HfgyE2KlmII36dg4IMzNjAFEBZiCRoPimO40s1cRqtFHXoal0QQbIlxk cmUuiAii9R0= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb ... rQoiowbbk5wXCheYSANQIfTZ6weQTgiCHCCbuuMKNVS95FkXm0vqVD/YpXKwA/no c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg== -----END CERTIFICATE-----", "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFKzBVBgkqhkiG9w0BBQ0wSDAnBgkqhkiG9w0BBQwwGgQUiAFcK5hT/X7Kjmgp ... QrSekqF+kWzmB6nAfSzgO9IaoAaytLvNgGTckWeUkWn/V0Ck+LdGUXzAC4RxZnoQ zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA== -----END ENCRYPTED PRIVATE KEY-----" }
mTLS for Amazon MSK에 대한 자세한 내용과 클라이언트 인증서 생성 방법에 대한 지침은 Amazon Managed Streaming for Apache Kafka Developer Guide의 Mutual TLS client authentication for Amazon MSK를 참조하세요.
IAM 인증.
AWS Identity and Access Management(IAM)를 사용하여 MSK 클러스터에 연결하는 클라이언트의 ID를 인증할 수 있습니다. IAM 인증을 사용하면 Lambda는 함수 실행 역할의 권한에 따라 클러스터에 연결하고, 레코드를 검색하고, 기타 필요한 작업을 수행합니다. 필요한 권한이 포함된 샘플 정책은 Amazon Managed Streaming for Apache Kafka 개발자 안내서의 Create authorization policies for the IAM role을 참조하세요.
IAM 인증이 MSK 클러스터에서 활성 상태이고 보안 암호를 제공하지 않으면 Lambda는 자동으로 IAM 인증을 사용하도록 기본 설정됩니다.
Amazon MSK의 IAM 인증에 대한 자세한 내용은 IAM access control을 참조하세요.
Lambda이 부트스트랩 브로커를 선택하는 방법
Lambda는 클러스터에서 사용할 수 있는 인증 방법 및 인증을 위한 암호 제공 여부를 기반으로 부트스트랩 브로커를 선택합니다. mTLS 또는 SASL/SCRAM에 대한 암호를 제공하면 Lambda가 자동으로 해당 인증 방법을 선택합니다. 암호를 제공하지 않으면 Lambda가 클러스터에서 활성화된 가장 강력한 인증 방법을 선택합니다. 다음은 Lambda가 가장 강력한 인증부터 가장 약한 인증까지 브로커를 선택하는 우선 순위입니다.
mTLS(MTL에 제공되는 암호)
SASL/SCRAM(SASL/SCRAM에 대해 제공되는 암호)
SASL IAM(암호가 제공되지 않았으며 IAM 인증이 활성화됨)
인증되지 않은 TLS(암호가 제공되지 않고 IAM 인증이 활성화되지 않음)
일반 텍스트(암호가 제공되지 않고 IAM 인증 및 인증되지 않은 TLS가 모두 활성화되지 않음)
참고
Lambda가 가장 안전한 브로커 유형에 연결할 수 없는 경우 Lambda는 다른 (약한) 브로커 유형에 연결을 시도하지 않습니다. Lambda가 더 약한 브로커 유형을 선택하게 하려면 클러스터에서 더 강력한 인증 방법을 모두 비활성화하십시오.