

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

# 다중 VPC 프라이빗 연결을 사용하여 시작하기
<a name="mvpc-getting-started"></a>

**Topics**
+ [1단계: 계정 A의 MSK 클러스터에서 클러스터의 IAM 인증 체계를 위한 다중 VPC 연결을 활성화](mvpc-cluster-owner-action-turn-on.md)
+ [2단계: MSK 클러스터에 클러스터 정책 연결](mvpc-cluster-owner-action-policy.md)
+ [3단계: 크로스 계정 사용자 작업을 통해 클라이언트 관리형 VPC 연결 구성](mvpc-cross-account-user-action.md)

이 자습서에서는 다중 VPC 연결을 사용하여 Apache Kafka 클라이언트를 클러스터의 내부 AWS및 VPC 외부에서 MSK 클러스터에 비공개로 연결하는 방법의 예로 일반적인 사용 사례를 사용합니다. 이 프로세스를 수행하려면 크로스 계정 사용자가 필요한 클라이언트 권한을 포함하여 각 클라이언트에 대한 MSK 관리형 VPC 연결 및 구성을 생성해야 합니다. 또한 이 프로세스에서는 MSK 클러스터 소유자가 MSK 클러스터에서 PrivateLink 연결을 활성화하고 클러스터에 대한 액세스를 제어하기 위해 인증 체계를 선택해야 합니다.

이 자습서의 다른 부분에서는 이 예제에 적용되는 옵션을 선택합니다. 이 옵션이 MSK 클러스터 또는 클라이언트 인스턴스를 설정하는 데 사용되는 유일한 옵션이라는 의미는 아닙니다.

이 사용 사례의 네트워크 구성은 다음과 같습니다.
+ 크로스 계정 사용자(Kafka 클라이언트)와 MSK 클러스터가 동일한 AWS 네트워크/리전에 있지만 서로 다른 계정에 있습니다.
  + 계정 A의 MSK 클러스터
  + 계정 B의 Kafka 클라이언트
+ 크로스 계정 사용자는 IAM 인증 체계를 사용하여 MSK 클러스터에 비공개로 연결합니다.

이 자습서에서는 Apache Kafka 버전 2.7.1 이상으로 생성된 프로비저닝된 MSK 클러스터가 있다고 가정합니다. 구성 프로세스를 시작하기 전에 MSK 클러스터가 활성 상태여야 합니다. 잠재적인 데이터 손실이나 가동 중지를 방지하기 위해 다중 VPC 프라이빗 연결을 사용하여 클러스터에 연결할 클라이언트는 클러스터와 호환되는 Apache Kafka 버전을 사용해야 합니다.

다음 다이어그램은 다른 AWS 계정의 클라이언트에 연결된 Amazon MSK 다중 VPC 연결의 아키텍처를 보여줍니다.

![\[단일 리전의 다중 VPC 네트워크 다이어그램\]](http://docs.aws.amazon.com/ko_kr/msk/latest/developerguide/images/mvpc-network.png)


# 1단계: 계정 A의 MSK 클러스터에서 클러스터의 IAM 인증 체계를 위한 다중 VPC 연결을 활성화
<a name="mvpc-cluster-owner-action-turn-on"></a>

MSK 클러스터 소유자는 클러스터가 생성된 후 활성 상태에서 MSK 클러스터에 대한 구성 설정을 해야 합니다.

클러스터 소유자는 클러스터에서 활성화될 모든 인증 체계에 대해 활성 클러스터에서 다중 VPC 프라이빗 연결을 활성화합니다. 이는 [UpdateSecurity API](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-security.html) 또는 MSK 콘솔을 사용하여 수행할 수 있습니다. 다중 VPC 프라이빗 연결은 여러 인증 체계 SASL/SCRAM, IAM, TLS를 지원합니다. 인증되지 않은 클러스터에는 다중 VPC 프라이빗 연결을 활성화할 수 없습니다.

이 사용 사례에서는 IAM 인증 체계를 사용하도록 클러스터를 구성합니다.

**참고**  
SASL/SCRAM 인증 체계를 사용하도록 MSK 클러스터를 구성하는 경우 Apache Kafka ACL 속성 “`allow.everyone.if.no.acl.found=false`”는 필수입니다. [Apache Kafka ACLs](https://docs.aws.amazon.com/msk/latest/developerguide/msk-acls.html)를 참조하세요.

다중 VPC 프라이빗 연결 설정을 업데이트하면 Amazon MSK는 브로커 구성을 업데이트하는 브로커 노드의 롤링 재부팅을 시작합니다. 이 작업을 완료하는 데 최대 30분 이상 소요될 수 있습니다. 연결이 업데이트되는 동안에는 클러스터에 다른 업데이트를 수행할 수 없습니다.

**콘솔을 사용하여 계정 A의 클러스터에서 선택한 인증 체계에 대해 다중 VPC를 활성화합니다.**

1. [https://console.aws.amazon.com/msk/](https://docs.aws.amazon.com/msk/latest/developerguide/msk-acls.html)에서 클러스터가 있는 계정에 대해 Amazon MSK 콘솔을 엽니다.

1. 탐색 창의 **MSK 클러스터에서** **클러스터**를 선택하여 계정의 클러스터 목록을 표시합니다.

1. 다중 VPC 프라이빗 연결을 구성할 클러스터를 선택합니다. 클러스터는 활성 상태여야 합니다.

1. 클러스터 **속성** 탭을 선택한 다음 **네트워크** 설정으로 이동합니다.

1. **편집** 드롭다운 메뉴를 선택하고 **다중 VPC 연결 켜기**를 선택합니다.

1. 이 클러스터에 대해 활성화하려는 인증 유형을 하나 이상 선택합니다. 이 사용 사례에서는 **IAM 역할** 기반 인증을 선택합니다.

1. **변경 사항 저장**을 선택합니다.

**Example - 클러스터에서 다중 VPC 프라이빗 연결 인증 체계를 활성화하는 UpdateConnectivity API**  
MSK 콘솔 대신 [UpdateConnectivity API](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-connectivity.html)를 사용하여 다중 VPC 프라이빗 연결을 활성화하고 활성 클러스터에서 인증 체계를 구성할 수 있습니다. 다음 예제는 클러스터에 대해 설정된 IAM 인증 체계를 보여줍니다.  

```
{
  "currentVersion": "K3T4TT2Z381HKD",
  "connectivityInfo": {
    "vpcConnectivity": {
      "clientAuthentication": {
        "sasl": {
          "iam": {
            "enabled": TRUE
            }
        }
      }
    }
  }
}
```

Amazon MSK는 프라이빗 연결에 필요한 네트워킹 인프라를 생성합니다. 또한 Amazon MSK는 프라이빗 연결이 필요한 각 인증 유형에 대해 새 부트스트랩 브로커 엔드포인트 세트를 생성합니다. 일반 텍스트 인증 체계는 다중 VPC 프라이빗 연결을 지원하지 않는다는 점에 유의하세요.

# 2단계: MSK 클러스터에 클러스터 정책 연결
<a name="mvpc-cluster-owner-action-policy"></a>

클러스터 소유자는 클러스터 정책([리소스 기반 정책](https://docs.aws.amazon.com/msk/latest/developerguide/security_iam_service-with-iam.html#security_iam_service-with-iam-resource-based-policies)이라고도 함)을 MSK 클러스터에 연결하여 다중 VPC 프라이빗 연결을 활성화할 수 있습니다. 클러스터 정책은 클라이언트가 다른 계정에서 클러스터에 액세스할 수 있는 권한을 부여합니다. 클러스터 정책을 편집하기 전에 MSK 클러스터에 액세스할 수 있는 권한이 있어야 하는 계정의 계정 ID가 필요합니다. [Amazon MSK가 IAM과 작동하는 방식](https://docs.aws.amazon.com/msk/latest/developerguide/security_iam_service-with-iam.html)을 참조하세요.

클러스터 소유자는 계정 B의 크로스 계정 사용자가 클러스터에 대한 부트스트랩 브로커를 가져오고 계정 A의 MSK 클러스터에서 다음 작업을 할 수 있도록 권한을 부여하는 클러스터 정책을 MSK 클러스터에 연결해야 합니다.
+ CreateVpcConnection
+ GetBootstrapBrokers
+ DescribeCluster
+ DescribeClusterV2

**Example**  
참고로 다음은 MSK 콘솔 IAM 정책 편집기에 표시되는 기본 정책과 유사한 기본 클러스터 정책에 대한 JSON의 예제입니다. 다음 정책은 클러스터, 주제 및 그룹 수준 액세스에 대한 권한을 부여합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "123456789012"
      },
      "Action": [
        "kafka:CreateVpcConnection",
        "kafka:GetBootstrapBrokers",
        "kafka:DescribeCluster",
        "kafka:DescribeClusterV2",
        "kafka-cluster:*"
      ],
      "Resource": "arn:aws:kafka:us-east-1:111122223333:cluster/testing/de8982fa-8222-4e87-8b20-9bf3cdfa1521-2"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "123456789012"
      },
      "Action": "kafka-cluster:*",
      "Resource": "arn:aws:kafka:us-east-1:111122223333:topic/testing/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "123456789012"
      },
      "Action": "kafka-cluster:*",
      "Resource": "arn:aws:kafka:us-east-1:111122223333:group/testing/*"
    }
  ]
}
```

**MSK 클러스터에 클러스터 정책 연결**

1. Amazon MSK 콘솔의 **MSK 클러스터**에서 **클러스터**를 선택합니다.

1. **보안 설정**까지 아래로 스크롤하여 **클러스터 편집** 정책을 선택합니다.

1. 콘솔의 **클러스터 정책 편집** 화면에서 **다중 VPC 연결을 위한 기본 정책**을 선택합니다.

1. **계정 ID** 필드에 이 클러스터에 액세스할 수 있는 권한이 있어야 하는 각 계정의 계정 ID를 입력합니다. ID를 입력하면 ID가 표시된 정책 JSON 구문에 자동으로 복사됩니다. 예제 클러스터 정책에서 계정 ID는 *111122223333*입니다.

1. **변경 사항 저장**을 선택합니다.

클러스터 정책 API에 대한 자세한 내용은 [Amazon MSK 리소스 기반 정책](https://docs.aws.amazon.com/msk/latest/developerguide/security_iam_service-with-iam.html#security_iam_service-with-iam-resource-based-policies)을 참조하세요.

# 3단계: 크로스 계정 사용자 작업을 통해 클라이언트 관리형 VPC 연결 구성
<a name="mvpc-cross-account-user-action"></a>

MSK 클러스터와 다른 계정의 클라이언트 간에 다중 VPC 프라이빗 연결을 설정하려면 크로스 계정 사용자가 클라이언트에 대한 관리형 VPC 연결을 생성합니다. 이 절차를 반복하여 여러 클라이언트를 MSK 클러스터에 연결할 수 있습니다. 이 사용 사례에서는 하나의 클라이언트만 구성합니다.

클라이언트는 지원되는 인증 체계인 IAM, SASL/SCRAM 또는 TLS를 사용할 수 있습니다. 각 관리형 VPC 연결에 하나의 인증 체계만 연결할 수 있습니다. 클라이언트 인증 체계는 클라이언트가 연결할 MSK 클러스터에서 구성해야 합니다

 이 사용 사례에서는 계정 B의 클라이언트가 IAM 인증 체계를 사용하도록 클라이언트 인증 체계를 구성합니다.

**사전 조건**

이 프로세스에는 다음 항목이 필요합니다.
+ 이전에 만든 클러스터 정책으로, 계정 B의 클라이언트가 계정 A의 MSK 클러스터에서 작업을 수행할 수 있는 권한을 부여합니다.
+ `kafka:CreateVpcConnection`, `ec2:CreateTags`, `ec2:CreateVPCEndpoint` 및 `ec2:DescribeVpcAttribute` 작업에 대한 권한을 부여하는 계정 B의 클라이언트에 연결된 자격 증명 정책입니다.

**Example**  
참고로 다음은 기본 클라이언트 ID 정책에 대한 JSON의 예제입니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kafka:CreateVpcConnection",
        "ec2:CreateTags",
        "ec2:CreateVPCEndpoint",
        "ec2:DescribeVpcAttribute"
      ],
      "Resource": "*"
    }
  ]
}
```

**계정 B에서 클라이언트를 위한 관리형 VPC 연결을 만들려면 다음을 수행합니다.**

1. 클러스터 관리자로부터 계정 B의 클라이언트가 연결할 계정 A에 있는 MSK 클러스터의 **클러스터 ARN**을 가져옵니다. 나중에 사용할 클러스터 ARN을 기록해 둡니다.

1. 클라이언트 계정 B의 MSK 콘솔에서 **관리형 VPC 연결**을 선택한 다음 **연결 생성**을 선택합니다.

1. **연결 설정** 창에서 클러스터 ARN을 클러스터 ARN 텍스트 필드에 붙여넣은 다음 **확인**을 선택합니다.

1. 계정 B에서 클라이언트에 대한 **인증 유형**을 선택합니다. 이 사용 사례의 경우 클라이언트 VPC 연결을 생성할 때 IAM을 선택합니다.

1. 클라이언트에 대한 **VPC**를 선택합니다.

1. 최소 2개의 가용 **영역**과 관련 **서브넷**을 선택합니다. AWS Management Console 클러스터 세부 정보에서 또는 [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster) API 또는 [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html) AWS CLI 명령을 사용하여 가용 영역 IDs를 가져올 수 있습니다. 클라이언트 서브넷에 지정하는 영역 ID는 클러스터 서브넷의 영역 ID와 일치해야 합니다. 서브넷의 값이 누락된 경우 먼저 MSK 클러스터와 동일한 영역 ID를 가진 서브넷을 생성합니다.

1. 이 VPC 연결에 사용할 **보안 그룹**을 선택합니다. 기본 보안 그룹을 사용할 수 있습니다. 보안 그룹 구성에 대한 자세한 내용은 [보안 그룹을 사용하여 리소스에 대한 트래픽 제어](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)를 참조하세요.

1. **연결 생성**을 선택합니다.

1. 크로스 계정 사용자의 MSK 콘솔(**클러스터** 세부 정보 > **관리형 VPC 연결**)에서 새 부트스트랩 브로커 문자열 목록을 가져오려면 “**클러스터 연결 문자열**” 아래에 표시된 부트스트랩 브로커 문자열을 참조하세요. 클라이언트 계정 B에서 부트스트랩 브로커 목록은 [GetBootstrapBrokers](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-bootstrap-brokers.html#GetBootstrapBrokers) API를 호출하거나 콘솔 클러스터 세부 정보에서 부트스트랩 브로커 목록을 확인하여 볼 수 있습니다.

1. 다음과 같이 VPC 연결과 관련된 보안 그룹을 업데이트합니다.

   1. 계정 B 네트워크의 IP 범위에 대한 모든 트래픽을 허용하도록 PrivateLink VPC에 대한 **인바운드 규칙**을 설정합니다.

   1. [선택 사항] MSK 클러스터에 대한 **아웃바운드 규칙** 연결을 설정합니다. VPC 콘솔에서 **보안 그룹**을 선택하고 **아웃바운드 규칙 편집**을 선택한 다음 포트 범위 14001\$114100에 대한 **사용자 지정 TCP 트래픽**에 대한 규칙을 추가합니다. 다중 VPC Network Load Balancer는 14001\$114100 포트 범위에서 수신 대기합니다. [Network Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html)를 참조하세요.

1. 다중 VPC 프라이빗 연결을 위한 새 부트스트랩 브로커를 사용하여 계정 A의 MSK 클러스터에 연결하도록 계정 B의 클라이언트를 구성합니다. [데이터 생성 및 소비](https://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html)를 참조하세요.

인증이 완료되면 Amazon MSK는 지정된 각 VPC 및 인증 체계에 대해 관리형 VPC 연결을 생성합니다. 선택한 보안 그룹이 각 연결과 관련이 있습니다. 이 관리형 VPC 연결은 Amazon MSK에서 브로커에 비공개로 연결하도록 구성합니다. 새로운 부트스트랩 브로커 세트를 사용하여 Amazon MSK 클러스터에 비공개로 연결할 수 있습니다.