View a markdown version of this page

자체 관리형 Apache Kafka 클러스터를 사용하여 MSK Replicator에 대한 사전 조건 설정 - Amazon Managed Streaming for Apache Kafka

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

자체 관리형 Apache Kafka 클러스터를 사용하여 MSK Replicator에 대한 사전 조건 설정

IAM 실행 역할 생성

에 대한 신뢰 정책을 사용하여 IAM 역할을 생성합니다kafka.amazonaws.com. AWSMSKReplicatorExecutionRole 관리형 정책을 연결합니다. 관리형 정책은 Replicator에 필요한 클러스터, 주제 및 consumer-group-level Kafka 권한을 부여하지만 SASL/SCRAM 인증 및 CMK 암호화 보안 인증에 필요한 AWS Secrets Manager 또는 AWS KMS 권한은 포함하지 않습니다. 추가할 인라인 정책 코드 조각은 섹션을 참조하세요SASL/SCRAM, mTLS, SASL/OAUTHBEARER 및 고객 관리형 키에 대한 추가 SER 권한.

신뢰 정책 예:

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

SASL/SCRAM 사용자 및 ACL 권한 구성

자체 관리형 Kafka 클러스터에 전용 SCRAM 사용자를 생성합니다. 다음 ACL 권한이 필요합니다.

  1. 읽기, 모든 주제에 대해 설명

  2. 모든 소비자 그룹에 대해 읽기, 설명

  3. 클러스터 리소스에 대한 설명

예제 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

자체 관리형 클러스터에서 mTLS 구성

를 사용하여 자체 관리형 Kafka 브로커에서 SSL 리스너를 구성합니다ssl.client.auth=required. 브로커의 트러스트 스토어에는 MSK Replicator에 사용할 클라이언트 인증서에 서명한 CA 인증서가 포함되어야 합니다.

클라이언트 인증서의 고유 이름(DN)에서 파생된 Kafka 보안 주체에 ACL 권한을 부여합니다. 필요한 권한은 모든 주제에 대한 읽기 및 설명, 모든 소비자 그룹에 대한 읽기 및 설명, 클러스터 리소스에 대한 설명입니다.

자체 관리형 클러스터에서 SASL/OAUTHBEARER(OAuth) 구성

SASL/OAUTHBEARER를 사용하면 MSK Replicator가 ID 제공업체(IDP)로부터 액세스 토큰을 가져와 SASL/OAUTHBEARER 핸드셰이크(RFC 7628) 중에 자체 관리형 Kafka 클러스터에 제공합니다. 에서를 OAUTHBEARER 활성화한 SASL_SSL리스너로 브로커를 구성sasl.enabled.mechanisms하고 IDP에서 발급한 토큰의 브로커 측 검증을 구성합니다.

IDP가 액세스 토큰을 소스 클러스터에서 MSK Replicator에 필요한 ACL 권한에 매핑하는 Kafka 보안 주체를 부여합니다.

MSK Replicator는 액세스 토큰을 획득하기 위해 다음과 같은 메커니즘을 지원합니다. 복제기를 생성할 때 하나를 선택합니다( 참조자체 관리형 Kafka 클러스터에 대한 CreateReplicator API 예제).

  • 클라이언트 자격 증명 - 표준 client_credentials 권한 부여(RFC 6749 §4.4). client_id 및를 제공합니다client_secret AWS Secrets Manager. Okta, Microsoft Entra ID, Keycloak, PingFederate 및 Google과 같은 IDPs에이 메커니즘을 사용합니다.

  • IAM JWT 보유자 - JWT 보유자 어설션 권한 부여(RFC 7523). MSK Replicator는 서비스 실행 역할의 AWS 자격 증명을 사용하여 토큰 엔드포인트로 어설션으로 전송되는 서명된 JWT를 가져옵니다. IDP에서 클라이언트도 인증해야 하는 경우 클라이언트 자격 증명을 선택적으로 제공할 수 있지만 공유 보안 암호는 필요하지 않습니다.

  • 클라이언트 자격 증명 어설션 - JWT 클라이언트 어설션을 사용한 client_credentials 권한 부여(RFC 7521/7523 §2.2). 서비스 실행 역할의 서명된 JWT는 공유 보안 암호 없이 클라이언트를 client_assertion 인증하는 로 사용됩니다.

토큰 엔드포인트에는 다음 요구 사항이 적용됩니다.

  • 는 HTTPS 체계를 사용하고 호스트 이름을 지정해야 tokenEndpointUrl 합니다(TLS 호스트 이름 확인을 수행할 수 있도록 IP 주소 리터럴은 허용되지 않음).

  • 토큰 엔드포인트는 복제기에 제공하는 VPC 서브넷에서 연결할 수 있어야 합니다. 네트워크 연결 구성을(를) 참조하세요.

  • IDP가 프라이빗 CA에서 발급한 인증서를 제공하는 경우 CA 인증서를에 저장 AWS Secrets Manager 하고 복제기를 생성할 tokenEndpointTlsCertificateArn 때에 참조합니다.

자체 관리형 클러스터에서 SSL 구성

브로커에서 SSL 리스너를 구성합니다. 공개적으로 신뢰할 수 있는 인증서의 경우 추가 구성이 필요하지 않습니다. 프라이빗 또는 자체 서명된 인증서의 경우 AWS Secrets Manager에 저장된 보안 암호에 전체 CA 인증서 체인을 포함합니다.

AWS Secrets Manager에 자격 증명 저장

인증 유형에 적합한 키-값 페어를 사용하여 AWS Secrets Manager에서 기타(RDS/Redshift 아님) 유형의 보안 암호를 생성합니다.

SASL/SCRAM의 경우:

  1. username - 자체 관리형 클러스터의 SCRAM 사용자 이름

  2. password - 자체 관리형 클러스터의 SCRAM 암호

  3. certificate - CA 인증서 체인(PEM 형식, 프라이빗/자체 서명 인증서에 필요)

mTLS의 경우:

  1. certificate - PEM 인코딩 클라이언트 인증서 체인

  2. privateKey - PEM 인코딩 프라이빗 키

  3. privateKeyPassword - (선택 사항) 암호화된 PKCS8 키에만 필요한 프라이빗 키의 암호

SASL/OAUTHBEARER의 경우:

보안 암호는 클라이언트 자격 증명 메커니즘에 필요하며 IAM JWT 보유자 및 클라이언트 자격 증명 어설션 메커니즘에는 선택 사항입니다(IDP에 클라이언트가 인증해야 하는 경우에만 제공). 보안 암호는 키-값 페어의 플랫 JSON 객체입니다. MSK Replicator는 다음 키를 인식합니다.

  • client_id - OAuth 클라이언트 식별자입니다. 클라이언트 자격 증명 메커니즘에 필요합니다.

  • client_secret - OAuth 클라이언트 보안 암호입니다. 클라이언트 자격 증명 메커니즘에 필요합니다.

  • custom_param.<name> - (선택 사항) 표준 OAuth 세트 이외의 파라미터가 필요한 IDPs의 경우 토큰 요청에 추가된 추가 양식 파라미터입니다. 파라미터당 하나의 키를 추가합니다(예: custom_param.resource).

  • custom_header.<name> - (선택 사항) 토큰 요청과 함께 전송되는 추가 HTTP 헤더입니다. 헤더당 하나의 키를 추가합니다(예: custom_header.X-Custom).

  • extension.<name> - (선택 사항) 인증 중에 추가 키-값 페어가 필요한 Kafka 공급자를 위해 SASL/OAUTHBEARER 핸드셰이크 중에 Kafka 브로커로 전송되는 SASL 확장입니다. 확장명당 하나의 키를 추가합니다.

이러한 접두사 중 하나를 사용하지 client_secret 않는 client_id 및 이외의 키는 무시됩니다. 다음은 클라이언트 자격 증명 메커니즘의 보안 암호 값 예입니다.

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

MSK Replicator는 파라미터 이름이 표준 OAuth 파라미터(예: , grant_type, client_id, client_secret, client_assertion, 및 )와 충돌하는 custom_param. 항목을 거부client_assertion_typeassertion합니다scope. 또한 Host, 및 Authorization와 같은 제한된 custom_header. 항목을 거부합니다Content-Type.

네트워크 연결 구성

MSK Replicator를 사용하려면 자체 관리형 Kafka 클러스터에 네트워크 연결이 필요합니다. 지원되는 옵션:

  • AWS Site-to-Site VPN - 인터넷을 통해 온프레미스 네트워크를 VPC에 연결합니다.

  • AWS Direct Connect - 온프레미스에서 로 전용 프라이빗 네트워크 연결을 설정합니다 AWS.

SASL/OAUTHBEARER를 사용하는 경우 복제기에 제공하는 VPC 서브넷에서도 토큰 엔드포인트에 연결할 수 있어야 합니다. 인터넷 호스팅 IDP의 경우 일반적으로 인터넷 게이트웨이, NAT 게이트웨이 및 라우팅 테이블 항목이 필요합니다. 온프레미스 또는 프라이빗 IDP의 경우 AWS Site-to-Site VPN 또는 AWS Direct Connect를 사용합니다. 토큰 엔드포인트는 루프백, 링크-로컬 또는 AWS 메타데이터 주소로 확인되어서는 안 됩니다.

보안 그룹 구성

보안 그룹이 인증 리스너에서 사용하는 포트에서 MSK Replicator와 자체 관리형 클러스터 간의 트래픽을 허용하는지 확인합니다. VPC 보안 그룹의 인바운드 규칙과 자체 관리형 클러스터 방화벽의 아웃바운드 규칙을 모두 업데이트합니다.