Amazon MSK 이벤트 소스 매핑에 대한 Lambda 권한 구성

Amazon MSK 이벤트 소스 매핑에 대한 Lambda 권한 구성 (Configuring Lambda permissions for Amazon MSK event source mappings)

Amazon MSK 클러스터에 액세스하려면 함수와 이벤트 소스 매핑이 다양한 Amazon MSK API 작업을 수행할 권한이 필요합니다. 이러한 권한을 함수의 실행 역할에 추가하세요. 사용자에게 액세스가 필요하면 사용자 또는 역할의 자격 증명 정책에 필수 권한을 추가하세요.

AWSLambdaMSKExecutionRole 관리형 정책에는 Amazon MSK Lambda 이벤트 소스 매핑에 필요한 최소 권한이 포함되어 있습니다. 권한 프로세스를 간소화하려면 다음을 수행할 수 있습니다:

  • AWSLambdaMSKExecutionRole 관리형 정책을 실행 역할에 연결합니다.
  • Lambda 콘솔이 권한을 자동 생성하게 합니다. 콘솔에서 Amazon MSK 이벤트 소스 매핑을 만들면 Lambda가 실행 역할을 평가하고 누락된 권한이 있으면 알려줍니다. Generate permissions(권한 생성) 을 선택해 실행 역할을 자동으로 업데이트하세요. 직접 실행 역할 정책을 만들거나 수정했거나 정책이 여러 역할에 연결된 경우에는 이 기능이 동작하지 않습니다. On-Failure Destination이나 AWS Glue Schema Registry 같은 고급 기능을 사용할 때는 실행 역할에 추가 권한이 여전히 필요할 수 있습니다.

출처: AWS Lambda 개발자 안내서

본문

필수 권한

Lambda 함수 실행 역할에는 Amazon MSK 이벤트 소스 매핑에 대한 다음 필수 권한이 있어야 합니다. 이러한 권한은 AWSLambdaMSKExecutionRole 관리형 정책에 포함됩니다.

CloudWatch Logs 권한

다음 권한은 Lambda가 Amazon CloudWatch Logs에 로그를 만들고 저장할 수 있게 합니다.

  • logs:CreateLogGroup
  • logs:CreateLogStream
  • logs:PutLogEvents

MSK 클러스터 권한

다음 권한은 Lambda가 사용자를 대신해 Amazon MSK 클러스터에 액세스할 수 있게 합니다:

  • kafka:DescribeCluster
  • kafka:DescribeClusterV2
  • kafka:GetBootstrapBrokers

kafka:DescribeCluster 대신 kafka:DescribeClusterV2를 사용할 것을 권장합니다. v2 권한은 프로비저닝된 MSK 클러스터와 서버리스 Amazon MSK 클러스터 모두에서 작동합니다. 정책에서 이 권한 중 하나만 필요합니다.

VPC 권한

다음 권한은 Lambda가 Amazon MSK 클러스터에 연결할 때 네트워크 인터페이스를 만들고 관리할 수 있게 합니다:

  • ec2:CreateNetworkInterface
  • ec2:DescribeNetworkInterfaces
  • ec2:DescribeVpcs
  • ec2:DeleteNetworkInterface
  • ec2:DescribeSubnets
  • ec2:DescribeSecurityGroups

선택적 권한

Lambda 함수에는 다음 권한도 필요할 수 있습니다:

  • 교차 계정 Amazon MSK 클러스터에 액세스 — 교차 계정 이벤트 소스 매핑의 경우 실행 역할에 kafka:DescribeVpcConnection이 필요합니다. 교차 계정 이벤트 소스 매핑을 만드는 IAM 보안 주체는 kafka:ListVpcConnections가 필요합니다.
  • SCRAM 시크릿 액세스 — SASL/SCRAM 인증을 사용하는 경우. 이를 통해 함수는 사용자 이름과 비밀번호로 Kafka에 연결할 수 있습니다.
  • Secrets Manager 시크릿 설명 — SASL/SCRAM 또는 mTLS 인증을 사용하는 경우. 이 권한으로 함수는 보안 연결에 필요한 자격 증명이나 인증서를 검색할 수 있습니다.
  • AWS KMS 고객 관리형 키 액세스 — AWS Secrets Manager 시크릿이 AWS KMS 고객 관리형 키로 암호화된 경우.
  • 스키마 레지스트리 시크릿 액세스 — 인증이 있는 스키마 레지스트리를 사용하는 경우:
    • AWS Glue Schema Registry의 경우: 함수에 glue:GetRegistry 및 glue:GetSchemaVersion 권한이 필요합니다. 이를 통해 함수는 AWS Glue에 저장된 메시지 형식 규칙을 조회하고 사용할 수 있습니다.
    • BASIC_AUTH 또는 CLIENT_CERTIFICATE_TLS_AUTH가 있는 Confluent Schema Registry의 경우: 함수에 인증 자격 증명이 포함된 시크릿에 대한 secretsmanager:GetSecretValue 권한이 필요합니다. 이를 통해 함수는 Confluent Schema Registry에 액세스하는 데 필요한 사용자 이름/비밀번호나 인증서를 검색할 수 있습니다.
    • 비공개 CA 인증서의 경우: 함수에 인증서가 포함된 시크릿에 대한 secretsmanager:GetSecretValue 권한이 필요합니다. 이 권한으로 함수는 사용자 지정 인증서를 사용하는 스키마 레지스트리의 ID를 검증할 수 있습니다.
  • Kafka 클러스터 컨슈머 그룹 액세스 및 토픽에서 메시지 폴링 — 이벤트 소스 매핑에 IAM 인증을 사용하는 경우.

이는 다음 필수 권한에 해당합니다:

  • kafka:ListScramSecrets — Kafka 인증용 SCRAM 시크릿 나열 허용
  • secretsmanager:GetSecretValue — Secrets Manager에서 시크릿 검색 가능
  • kms:Decrypt — AWS KMS로 암호화된 데이터 복호화 허용
  • glue:GetRegistry — AWS Glue Schema Registry 액세스 허용
  • glue:GetSchemaVersion — AWS Glue Schema Registry에서 특정 스키마 버전 검색 가능
  • kafka-cluster:Connect — 클러스터 연결 및 인증 권한 부여
  • kafka-cluster:AlterGroup — 클러스터에서 그룹 참여 권한 부여. Apache Kafka의 READ GROUP ACL과 동일
  • kafka-cluster:DescribeGroup — 클러스터에서 그룹 설명 권한 부여. Apache Kafka의 DESCRIBE GROUP ACL과 동일
  • kafka-cluster:DescribeTopic — 클러스터에서 토픽 설명 권한 부여. Apache Kafka의 DESCRIBE TOPIC ACL과 동일
  • kafka-cluster:ReadData — 클러스터의 토픽에서 데이터 읽기 권한 부여. Apache Kafka의 READ TOPIC ACL과 동일

또한 실패한 호출 레코드를 on-failure 대상으로 보내려면 대상 유형에 따라 다음 권한이 필요합니다:

  • Amazon SQS 대상의 경우: sqs:SendMessage — Amazon SQS 대기열에 메시지 전송 허용
  • Amazon SNS 대상의 경우: sns:Publish — Amazon SNS 주제에 메시지 게시 허용
  • Amazon S3 버킷 대상의 경우: s3:PutObject 및 s3:ListBucket — Amazon S3 버킷에서 객체 쓰기 및 나열 가능

인증 및 권한 부여 오류 문제 해결에 대해서는 Kafka 이벤트 소스 매핑 오류 문제 해결을 참조하세요.

더 알아보기 (Learn more)

  • Amazon MSK 이벤트 소스 매핑
  • AWSLambdaMSKExecutionRole 관리형 정책
  • Kafka 이벤트 소스 매핑 오류 문제 해결