

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# マルチ 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 クライアントをクラスターの内部から MSK クラスターにプライベートに接続する方法の例として AWS、一般的なユースケースを使用します。このプロセスでは、クロスアカウントユーザーは、必要なクライアントアクセス許可を含め、MSK マネージド VPC 接続と設定をクライアントごとに作成する必要があります。また、このプロセスでは、MSK クラスター所有者が MSK クラスターで PrivateLink 接続を有効にし、クラスターへのアクセスを制御する認証スキームを選択する必要もあります。

このチュートリアルの各部では、この例に適用するオプションをこちらで選択しています。これは、MSK クラスターまたはクライアント インスタンスを設定するために機能する唯一のオプションであることを意味するものではありません。

このユースケースのネットワーク構成は次のとおりです。
+ クロスアカウントユーザー (Kafka クライアント) と MSK クラスターは同じ AWS ネットワーク/リージョン内にありますが、アカウントは異なります。
  + アカウント A の MSK クラスター
  + アカウント B の Kafka クライアント
+ クロスアカウントユーザーは IAM 認証スキームを使用して MSK クラスターにプライベート接続します。

このチュートリアルでは、Apache Kafka バージョン 2.7.1 以上で作成された MSK クラスターがプロビジョニング済みであることを前提としています。MSK クラスターは、設定プロセスを開始する前に ACTIVE 状態になっている必要があります。データの損失やダウンタイムが生じないようにするため、マルチ VPC プライベート接続を使用してクラスターに接続するクライアントは、クラスターと互換性のある Apache Kafka バージョンを使用する必要があります。

次の図は、別の AWS アカウントのクライアントに接続された Amazon MSK マルチ VPC 接続のアーキテクチャを示しています。

![\[単一リージョンのマルチ VPC ネットワーク図\]](http://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/images/mvpc-network.png)


# ステップ 1: アカウント A の MSK クラスターで、クラスターの IAM 認証スキームのマルチ VPC 接続をオンにする
<a name="mvpc-cluster-owner-action-turn-on"></a>

MSK クラスター所有者は、クラスターが作成されて ACTIVE 状態になった後に、MSK クラスターの設定を行う必要があります。

クラスター所有者は、クラスター上でアクティブになるすべての認証スキームについて、ACTIVE なクラスターでマルチ VPC プライベート接続を有効にします。これは、[UpdateSecurity API](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-security.html) または MSK コンソールを使用して実行できます。IAM、SASL/SCRAM、および TLS 認証スキームは、マルチ VPC プライベート接続をサポートします。マルチ VPC プライベート接続は、認証されていないクラスターでは有効にできません。

このユースケースでは、IAM 認証スキームを使用するようにクラスターを設定します。

**注記**  
SASL/SCRAM 認証スキームを使用するように MSK クラスターを設定する場合、Apache Kafka ACL プロパティ "`allow.everyone.if.no.acl.found=false`" は必須です。「[Apache Kafka ACL](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 プライベート接続を設定するクラスターを選択します。クラスターは ACTIVE 状態である必要があります。

1. クラスターの **[プロパティ]** タブを選択し、**[ネットワーク設定]** に移動します。

1. **[編集]** ドロップダウンメニューを選択し、**[マルチ VPC 接続をオンにする]** を選択します。

1. このクラスターで有効にする認証タイプを 1 つ以上選択します。このユースケースでは、**[IAM ロールベースの認証]** を選択します。

1. **[変更を保存]** を選択します。

**Example : クラスターでマルチ VPC プライベート接続の認証スキームを有効にする UpdateConnectivity API**  
MSK コンソールの代わりに、[UpdateConnectivity API](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-connectivity.html) を使用してマルチ VPC プライベート接続を有効にし、ACTIVE なクラスターで認証スキームを設定できます。次の例は、クラスターで 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>

クラスター所有者は、マルチ VPC プライベート接続を有効にする MSK クラスターにクラスターポリシー ([リソースベースのポリシー](https://docs.aws.amazon.com/msk/latest/developerguide/security_iam_service-with-iam.html#security_iam_service-with-iam-resource-based-policies)とも呼ばれます) をアタッチできます。クラスターポリシーは、別のアカウントからクラスターにアクセスするアクセス許可をクライアントに付与します。クラスターポリシーを編集するには、MSK クラスターにアクセスするアクセス許可を必要とするアカウントのアカウント ID が必要です。「[Amazon MSK と IAM の連携の仕組み](https://docs.aws.amazon.com/msk/latest/developerguide/security_iam_service-with-iam.html)」を参照してください。

クラスター所有者は、クラスターポリシーを MSK クラスターにアタッチすることにより、アカウント B のクロスアカウントユーザーがクラスターのブートストラップブローカーを取得し、アカウント A の 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 は、表示されたポリシー 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 クラスターに接続できます。このユースケースでは、クライアントを 1 つだけ設定します。

クライアントは、サポートされている認証スキームである、IAM、SASL/SCRAM、または TLS を使用できます。各マネージド VPC 接続に関連付けることができる認証スキームは 1 つのみです。クライアント認証スキームは、クライアントが接続する MSK クラスターで設定する必要があります。

 このユースケースでは、アカウント B のクライアントが IAM 認証スキームを使用するようにクライアント認証スキームを設定します。

**前提条件**

このプロセスには、以下の項目が必要です。
+ アカウント A の MSK クラスターでアクションを実行するアクセス許可をアカウント B のクライアントに付与する、以前に作成したクラスターポリシー。
+ アカウント B のクライアントにアタッチされた、`kafka:CreateVpcConnection`、`ec2:CreateTags`、`ec2:CreateVPCEndpoint`、`ec2:DescribeVpcAttribute` のアクションのアクセス許可を付与する ID ポリシー。

**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 つのアベイラビリティー**ゾーン**と、関連付けられた**サブネット**を選択します。アベイラビリティーゾーン IDs は、 AWS マネジメントコンソールクラスターの詳細から、または [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 コマンドを使用して取得できます。クライアントサブネットに指定するゾーン 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. PrivateLink VPC の**インバウンドルール**を設定して、アカウント B ネットワークからの IP 範囲のすべてのトラフィックを許可します。

   1. (オプション) MSK クラスターへの **[アウトバウンドルール]** 接続を設定します。VPC コンソールで **[セキュリティグループ]** を選択し、**[アウトバウンドルールの編集]** を行い、ポート範囲 14001～14100 の **[カスタム TCP トラフィック]** のルールを追加します。マルチ VPC ネットワークロードバランサーは、14001～14100 のポート範囲をリッスンしています。「[Network Load Balancer](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 クラスターにプライベート接続できます。