

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

# Amazon MSK プロビジョニングされたクラスターに接続する
<a name="client-access"></a>

デフォルトでは、クライアントはクラスターと同じ VPC 内にある場合にのみ、MSK プロビジョニングされたクラスターにアクセスできます。Kafka クライアントおよび MSK プロビジョニングされたクラスター間の通信はデフォルトで非公開であり、ストリーミングデータはインターネットを経由することはありません。MSK プロビジョンド クラスターと同じ VPC 内のクライアントからクラスターに接続するには、クラスターのセキュリティグループに、クライアントのセキュリティグループからのトラフィックを受け入れるインバウンド ルールが設定されていることを確認してください。これらのルールの設定については、[セキュリティグループルール](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules)を参照してください。クラスターと同じ VPC にある Amazon EC2 インスタンスからクラスターにアクセスする方法の例については、「[Amazon MSK の使用を開始する](getting-started.md)」を参照してください。

**注記**  
KRaft メタデータモードと MSK Express ブローカーでは、オープンモニタリングとパブリックアクセスの両方を有効にすることはできません。

クラスターの VPC の外部にあるクライアントから MSK プロビジョンドクラスターに接続するには、[「クラスターの VPC の AWS 内外からのアクセス](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access.html)」を参照してください。

**Topics**
+ [MSK プロビジョニングされたクラスターのパブリックアクセスを有効にする](public-access.md)
+ [AWS クラスターの VPC 内外からのアクセス](aws-access.md)

# MSK プロビジョニングされたクラスターのパブリックアクセスを有効にする
<a name="public-access"></a>

Amazon MSK には、Apache Kafka 2.6.0 以降のバージョンを実行している MSK プロビジョニングされたクラスターのブローカーへの公開アクセスをオンにするオプションがあります。セキュリティ上の理由から、MSK クラスターの作成中に公開アクセスをオンにすることはできません。ただし、既存のクラスターを更新して、公開アクセスできるようにすることができます。また、新しいクラスターを作成してから更新して、公開アクセスできるようにすることもできます。

MSK クラスターへのパブリックアクセスは追加料金なしで有効にできますが、クラスターに出入りするデータ転送には標準データ転送 AWS コストが適用されます。料金については、[Amazon EC2 オンデマンド料金](https://aws.amazon.com/ec2/pricing/on-demand/)をご覧ください。

 デュアルスタックネットワークタイプの Amazon MSK プロビジョンドクラスターは、パブリックアクセス用の IPv4 接続と IPv6 接続の両方をサポートします。クラスターでパブリックアクセスを有効にすると、同じ IPv6 ブートストラップ文字列がデフォルトおよびパブリックアクセス接続の両方で自動的に機能します。既存の IPv4 ブートストラップ文字列は IPv4 接続で引き続き機能します。クラスターでパブリックアクセスが有効になっていない場合、IPv6 ブートストラップ文字列にはパブリックアクセス機能がないことに注意してください。詳細については、「Amazon MSK クラスターのデュアルスタックネットワークタイプを設定する」を参照してください。

**注記**  
SASL/SCRAM または mTLS アクセス制御方式を使用している場合は、まず、クラスターに Apache Kafka ACL を設定する必要があります。次に、クラスターの設定を更新して、`allow.everyone.if.no.acl.found`プロパティを false に設定します。クラスターの設定を更新する方法については、「[ブローカー設定オペレーション](msk-configuration-operations.md)」を参照してください。

MSK プロビジョニングされたクラスターへの公開アクセスをオンにするには、最初にクラスターが次のすべての条件を満たしていることを確認してください。
+ クラスターに関連付けられているサブネットは公開である必要があります。各パブリックサブネットにはパブリック IPv4 アドレスが関連付けられており、パブリック IPv4 アドレスは [Amazon VPC の料金ページに示すように料金が設定されます](https://aws.amazon.com/vpc/pricing/)。つまり、サブネットには、インターネットゲートウェイが接続されたルートテーブルが関連付けられている必要があります。インターネットゲートウェイの作成および接続する方法については、*Amazon VPC ユーザーガイド*の「[インターネットゲートウェイを使用した VPC インターネットアクセスの有効化](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)」を参照してください。
+ 認証されていないアクセス制御をオフにし、次のアクセス制御方法の少なくとも 1 つをオンにする必要があります : SASL/IAM、SASL/SCRAM、mTLS。クラスターのアクセス制御方式を更新する方法については、「[Amazon MSK クラスターのセキュリティ設定を更新する](msk-update-security.md)」を参照してください。
+ クラスター内の暗号化をオンにする必要があります。「オン」は、クラスターを作成するときのデフォルト設定です。暗号化をオフにして作成されたクラスターのクラスター内で暗号化をオンにすることはできません。したがって、クラスター内の暗号化をオフにして作成されたクラスターの公開アクセスをオンにすることはできません。
+ ブローカーとクライアント間のプレーンテキストトラフィックは、オフにする必要があります。オンになっている場合にオフにする方法については、「[Amazon MSK クラスターのセキュリティ設定を更新する](msk-update-security.md)」を参照してください。
+ IAM アクセス制御を使用している場合、認可ポリシーを適用する、または、認可ポリシーを更新する場合は、「[IAM アクセスコントロール](iam-access-control.md)」を参照してください。Apache Kafka ACL の詳細については、「[Apache Kafka ACL](msk-acls.md)」を参照してください。

MSK クラスターが上記の条件を満たすことを確認したら、 AWS マネジメントコンソール、 AWS CLI、または Amazon MSK API を使用してパブリックアクセスを有効にできます。クラスターへの公開アクセスをオンにすると、そのクラスターの公開ブートストラップブローカー文字列を取得できます。クラスターのブートストラップブローカーを取得する方法については、「[Amazon MSK クラスターのブートストラップブローカーを取得する](msk-get-bootstrap-brokers.md)」を参照してください。

**重要**  
公開アクセスをオンにすることに加えて、クラスターのセキュリティグループに IP アドレスからの公開アクセスを許可するインバウンド TCP ルールがあることを確認してください。これらのルールを可能な限り制限することをお勧めします。セキュリティグループとインバウンドルールの詳細については、「Amazon VPC ユーザーガイド」の[VPC のセキュリティグループ](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)を参照してください。ポート番号については、「[ポート情報](port-info.md)」を参照してください。クラスターのセキュリティグループを変更する方法については、「[Amazon MSK クラスターのセキュリティグループの変更](change-security-group.md)」を参照してください。

**注記**  
次の手順を使用して公開アクセスをオンにしても、クラスターにアクセスできない場合は、「[パブリックアクセスが有効になっているクラスターにアクセスできない](troubleshooting.md#public-access-issues)」を参照してください。

**コンソールを使用して公開アクセスをオンにする**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/) で Amazon MSK コンソールを開きます。

1. クラスターのリストで、公開アクセスをオンにするクラスターを選択します。

1. **[プロパティ]** タブを選択し、**[ネットワーク設定]** セクションを探します。

1. **Edit public access** (公開アクセスの編集) を選択します。

**を使用してパブリックアクセスを有効にする AWS CLI**

1. 次の AWS CLI コマンドを実行し、*ClusterArn* と *Current-Cluster-Version* を ARN とクラスターの最新バージョンに置き換えます。クラスターの最新バージョンを検索するには、[DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster) オペレーションまたは [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html) AWS CLI コマンドを使用します。サンプルのバージョンは `KTVPDKIKX0DER` です。

   ```
   aws kafka update-connectivity --cluster-arn ClusterArn --current-version Current-Cluster-Version --connectivity-info '{"PublicAccess": {"Type": "SERVICE_PROVIDED_EIPS"}}'
   ```

   この `update-connectivity` コマンドの出力は、次の JSON の例のようになります。

   ```
   {
       "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2",
       "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"
   }
   ```
**注記**  
パブリックアクセスを無効にするには、同様の AWS CLI コマンドを使用しますが、代わりに次の接続情報を使用します。  

   ```
   '{"PublicAccess": {"Type": "DISABLED"}}'
   ```

1. `update-connectivity` オペレーションの結果を取得するには、*ClusterOperationArn*を `update-connectivity` コマンドの出力で取得した ARN に置き換えて、次のコマンドを実行します。

   ```
   aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn
   ```

   この `describe-cluster-operation` コマンドの出力は、次の JSON の例のようになります。

   ```
   {
       "ClusterOperationInfo": {
           "ClientRequestId": "982168a3-939f-11e9-8a62-538df00285db",
           "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2",
           "CreationTime": "2019-06-20T21:08:57.735Z",
           "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef",
           "OperationState": "UPDATE_COMPLETE",
           "OperationType": "UPDATE_CONNECTIVITY",
           "SourceClusterInfo": {
               "ConnectivityInfo": {
                   "PublicAccess": {
                       "Type": "DISABLED"
                   }
               }
           },
           "TargetClusterInfo": {
               "ConnectivityInfo": {
                   "PublicAccess": {
                       "Type": "SERVICE_PROVIDED_EIPS"
                   }
               }
           }
       }
   }
   ```

   `OperationState` の値が `UPDATE_IN_PROGRESS` の場合は、しばらく待ってから再度 `describe-cluster-operation` コマンドを実行します。

**Amazon MSK API を使用して公開アクセスをオンにする**
+ API を使用してクラスターへの公開アクセスをオンまたはオフにするには、[UpdateConnectivity](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-connectivity.html#UpdateConnectivity)を参照してください。

**注記**  
セキュリティ上の理由から、Amazon MSK は Apache ZooKeeper ノードや KRaft コントローラーノードへの公開アクセスを許可していません。

# AWS クラスターの VPC 内外からのアクセス
<a name="aws-access"></a>

クラスターの Amazon VPC 内外から MSK クラスターに接続する AWS には、次のオプションがあります。

## Amazon VPC ピアリング
<a name="vpc-peering"></a>

クラスターの VPC とは異なる VPC から MSK クラスターに接続するには、2 つの VPC 間にピアリング接続を作成できます。VPC ピアリングについては、[Amazon VPC ピアリングガイド](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)を参照してください。

## Direct Connect
<a name="direct-connect"></a>

Direct Connect は、標準の 1 ギガビットまたは 10 ギガビットイーサネット光ファイバーケーブル AWS を介して、オンプレミスネットワークを にリンクします。ケーブルの一端はルーターに接続され、もう一端は Direct Connect ルーターに接続されます。この接続を使用すると、 AWS クラウドと Amazon VPC への仮想インターフェイスを直接作成し、ネットワークパス内のインターネットサービスプロバイダーをバイパスできます。詳細については、「[Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)」を参照してください。

## AWS Transit Gateway
<a name="transit-gateway"></a>

AWS Transit Gateway は、VPCsとオンプレミスネットワークを単一のゲートウェイに接続できるサービスです。 AWS Transit Gatewayの使用方法については、[AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)を参照してください。

## VPN 接続
<a name="vpn-connections"></a>

次のトピックで説明されている VPN 接続オプションを使用して、MSK クラスターの VPC をリモートネットワークおよびユーザーに接続できます : [VPN接続](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html)。

## REST プロキシ
<a name="rest-proxies"></a>

クラスターの Amazon VPC 内で実行されているインスタンスに REST プロキシをインストールできます。REST プロキシを使用すると、プロデューサーとコンシューマーは HTTP API リクエストを介してクラスターと通信できます。

## 複数リージョンのマルチ VPC 接続
<a name="multi-vpc-multi-region"></a>

次のドキュメントでは、異なる リージョンに存在する複数の VPC の接続オプションについて説明します : [複数リージョンのマルチ VPC 接続](https://aws.amazon.com/answers/networking/aws-multiple-region-multi-vpc-connectivity/)。

## 単一リージョンのマルチ VPC プライベート接続
<a name="multi-vpc-single-region"></a>

Amazon Managed Streaming for Apache Kafka (Amazon MSK) クラスターのマルチ VPC プライベート接続 ([AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) を使用) は、さまざまな仮想プライベートクラウド (VPCs) と AWS アカウントでホストされている Kafka クライアントをより迅速に Amazon MSK クラスターに接続できる機能です。

「[クロスアカウントクライアントの単一リージョンマルチ VPC 接続](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access-mult-vpc.html)」を参照してください。

## EC2-Classic Networking は廃止されました
<a name="ec2-classic-retired"></a>

Amazon MSK は、Amazon EC2-Classic Networking で実行される Amazon EC2 インスタンスをサポートしなくなりました。

「[EC2-Classic Networking は販売終了になります — 準備方法はこちら](https://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/)」を参照してください。

# 単一リージョンの Amazon MSK マルチ VPC プライベート接続
<a name="aws-access-mult-vpc"></a>

Amazon Managed Streaming for Apache Kafka (Amazon MSK) クラスターのマルチ VPC プライベート接続 ([AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) を使用) は、さまざまな仮想プライベートクラウド (VPCs) と AWS アカウントでホストされている Kafka クライアントをより迅速に Amazon MSK クラスターに接続できる機能です。

マルチ VPC プライベート接続は、マルチ VPC 接続とクロスアカウント接続のネットワークインフラストラクチャを簡素化するマネージドソリューションです。クライアントは、ネットワーク内のすべてのトラフィックを維持しながら、PrivateLink 経由で Amazon MSK クラスターに接続できます AWS 。Amazon MSK クラスターのマルチ VPC プライベート接続は、Amazon MSK が利用可能なすべての AWS リージョンで使用できます。

**Topics**
+ [マルチ VPC プライベート接続とは](#mvpc-what-is)
+ [マルチ VPC プライベート接続の利点](#mvpc-benefits)
+ [マルチ VPC プライベート接続の要件と制限](#mvpc-requirements)
+ [マルチ VPC プライベート接続の使用を開始する](mvpc-getting-started.md)
+ [クラスターの認可スキームの更新](mvpc-cross-account-update-authschemes.md)
+ [Amazon MSK クラスターへのマネージド VPC 接続の拒否](mvpc-cross-account-reject-connection.md)
+ [Amazon MSK クラスターへのマネージド VPC 接続の削除](mvpc-cross-account-delete-connection.md)
+ [マルチ VPC プライベート接続のアクセス許可](mvpc-cross-account-permissions.md)

## マルチ VPC プライベート接続とは
<a name="mvpc-what-is"></a>

Amazon MSK のマルチ VPC プライベート接続は、さまざまな仮想プライベートクラウド (VPCs) と AWS アカウントでホストされている Apache Kafka クライアントを MSK クラスターに接続できるようにする接続オプションです。

Amazon MSK は[クラスターポリシー](mvpc-cluster-owner-action-policy.md)によりクロスアカウントアクセスを簡素化します。これらのポリシーにより、クラスター所有者は他の AWS アカウントに MSK クラスターへのプライベート接続を確立するためのアクセス許可を付与できます。

## マルチ VPC プライベート接続の利点
<a name="mvpc-benefits"></a>

[他の接続ソリューション](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access.html)と比べ、マルチ VPC プライベート接続にはいくつかの利点があります。
+  AWS PrivateLink 接続ソリューションの運用管理を自動化します。
+ 接続している VPC 全体で重複する IP を使用できるため、重複しない IP、複雑なピアリング、および他の VPC 接続ソリューションに関連付けられたルーティングテーブルを維持する必要がなくなります。

MSK クラスターのクラスターポリシーを使用して、MSK クラスターへのクロスアカウントプライベート接続を設定するアクセス許可 AWS を持つアカウントを定義します。クロスアカウント管理者は、適切なロールまたはユーザーにアクセス許可を委任できます。IAM クライアント認証と併用すると、クラスターポリシーを使用して、接続クライアントの Kafka データプレーンのアクセス許可を細かく定義することもできます。

## マルチ VPC プライベート接続の要件と制限
<a name="mvpc-requirements"></a>

マルチ VPC プライベート接続を実行するには、次の MSK クラスター要件に注意してください。
+ マルチ VPC プライベート接続は、Apache Kafka 2.7.1 以上でのみサポートされています。MSK クラスターで使用するクライアントが、クラスターと互換性のある Apache Kafka バージョンを実行していることを確認してください。
+ マルチ VPC プライベート接続は、IAM、TLS、および SASL/SCRAM の認証タイプをサポートします。認証されていないクラスターは、マルチ VPC プライベート接続を使用できません。
+ SASL/SCRAM または mTLS アクセスコントローラー方式を使用している場合は、クラスターに Apache Kafka ACL を設定する必要があります。まず、クラスターの Apache Kafka ACL を設定します。次に、クラスターの設定を更新して、クラスターのプロパティ `allow.everyone.if.no.acl.found` を false に設定します。クラスターの設定を更新する方法については、「[ブローカー設定オペレーション](msk-configuration-operations.md)」を参照してください。IAM アクセス制御を使用している場合、認可ポリシーを適用したり、認可ポリシーを更新したりする場合は、「[IAM アクセスコントロール](iam-access-control.md)」を参照してください。Apache Kafka ACL の詳細については、「[Apache Kafka ACL](msk-acls.md)」を参照してください。
+ マルチ VPC プライベート接続は、t3.small インスタンスタイプをサポートしていません。
+ マルチ VPC プライベート接続は、 AWS リージョン間ではサポートされず、同じリージョン内の AWS アカウントでのみサポートされます。
+ マルチ VPC プライベート接続を設定するには、クラスターサブネットと同じ数のクライアントサブネットが必要です。また、クライアントサブネットとクラスターサブネットの[アベイラビリティーゾーン IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html) が同じであることを確認する必要があります。
+ Amazon MSK は、ZooKeeper ノードへのマルチ VPC プライベート接続をサポートしていません。

# マルチ 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 クラスターにプライベート接続できます。

# クラスターの認可スキームの更新
<a name="mvpc-cross-account-update-authschemes"></a>

マルチ VPC プライベート接続は、複数の認可スキーム (SASL/SCRAM、IAM、および TLS) をサポートしています。クラスター所有者は、1 つ以上の認証スキームのプライベート接続を有効/無効にできます。このアクションを実行するには、クラスターが ACTIVE 状態である必要があります。

**Amazon MSK コンソールを使用して認証スキームを有効にするには**

1. 編集するクラスターの [AWS マネジメントコンソール](https://console.aws.amazon.com/msk)で Amazon MSK コンソールを開きます。

1. ナビゲーションペインの **[MSK クラスター]** で **[クラスター]** を選択し、アカウントのクラスターのリストを表示します。

1. 編集するクラスターを選択します。クラスターは ACTIVE 状態である必要があります。

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

1. **[編集]** ドロップダウンメニューを選択し、**[マルチ VPC 接続をオンにする]** を選択して新しい認証スキームを有効にします。

1. このクラスターで有効にする認証タイプを 1 つ以上選択します。

1. **[選択をオンにする]** を選択します。

新しい認証スキームを有効にするときは、新しい認証スキーム用に新しいマネージド VPC 接続を作成し、新しい認証スキーム固有のブートストラップブローカーを使用するようにクライアントを更新する必要もあります。

**Amazon MSK コンソールを使用して認証スキームを無効にするには**
**注記**  
認証スキームのマルチ VPC プライベート接続を無効にすると、マネージド VPC 接続を含むすべての接続関連インフラストラクチャが削除されます。

認証スキームのマルチ VPC プライベート接続を無効にすると、クライアント側の既存の VPC 接続が INACTIVE に変わり、クラスター側の Privatelink インフラストラクチャ (クラスター側のマネージド VPC 接続を含む) が削除されます。クロスアカウントユーザーは、非アクティブな VPC 接続のみを削除できます。クラスターでプライベート接続を再度有効にした場合、クロスアカウントユーザーはクラスターへの新しい接続を作成する必要があります。

1. [AWS マネジメントコンソール](https://console.aws.amazon.com/msk) で Amazon MSK コンソールを開きます。

1. ナビゲーションペインの **[MSK クラスター]** で **[クラスター]** を選択し、アカウントのクラスターのリストを表示します。

1. 編集するクラスターを選択します。クラスターは ACTIVE 状態である必要があります。

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

1. **[編集]** ドロップダウンメニューを選択し、**[マルチ VPC 接続をオフにする]** を選択します (認証スキームを無効にします)。

1. このクラスターで無効にする認証タイプを 1 つ以上選択します。

1. **[選択をオフにする]** を選択します。

**Example API で認証スキームを有効/無効にするには**  
MSK コンソールの代わりに、[UpdateConnectivity API](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-connectivity.html) を使用してマルチ VPC プライベート接続を有効にし、ACTIVE なクラスターで認証スキームを設定できます。次の例は、クラスターで SASL/SCRAM 認証スキームと IAM 認証スキームが有効になっていることを示しています。  
新しい認証スキームを有効にするときは、新しい認証スキーム用に新しいマネージド VPC 接続を作成し、新しい認証スキーム固有のブートストラップブローカーを使用するようにクライアントを更新する必要もあります。  
認証スキームのマルチ VPC プライベート接続を無効にすると、クライアント側の既存の VPC 接続が INACTIVE に変わり、クラスター側の Privatelink インフラストラクチャ (マネージド VPC 接続を含む) が削除されます。クロスアカウントユーザーは、非アクティブな VPC 接続のみを削除できます。クラスターでプライベート接続を再度有効にした場合、クロスアカウントユーザーはクラスターへの新しい接続を作成する必要があります。  

```
Request:
{
  "currentVersion": "string",
  "connnectivityInfo": {
    "publicAccess": {
      "type": "string"
    },
    "vpcConnectivity": {
      "clientAuthentication": {
        "sasl": {
          "scram": {
            "enabled": TRUE
          },
          "iam": {
            "enabled": TRUE
          }        
        },
        "tls": {
          "enabled": FALSE
        }
      }
    }
  }
}

Response:
{
  "clusterArn": "string",
  "clusterOperationArn": "string"
}
```

# Amazon MSK クラスターへのマネージド VPC 接続の拒否
<a name="mvpc-cross-account-reject-connection"></a>

クラスター管理者アカウントの Amazon MSK コンソールから、クライアント VPC 接続を拒否できます。拒否するには、クライアント VPC 接続が AVAILABLE 状態である必要があります。クラスターへの接続が許可されなくなったクライアントからのマネージド VPC 接続を拒否することが必要な場合があります。新しいマネージド VPC 接続がクライアントに接続されないようにするには、クラスターポリシーでクライアントへのアクセスを拒否します。拒否された接続は、接続の所有者によって削除されるまで料金が発生します。「[Amazon MSK クラスターへのマネージド VPC 接続の削除](https://docs.aws.amazon.com/msk/latest/developerguide/mvpc-cross-account-delete-connection.html)」を参照してください。

**MSK コンソールを使用してクライアント VPC 接続を拒否するには**

1. [AWS マネジメントコンソール](https://console.aws.amazon.com/msk) で Amazon MSK コンソールを開きます。

1. ナビゲーションペインで **[クラスター]** を選択し、**[ネットワーク設定] > [クライアント VPC 接続]** リストまでスクロールします。

1. 拒否する接続を選択し、**[クライアント VPC 接続を拒否する]** を選択します。

1. 選択したクライアント VPC 接続を拒否することを確認します。

API を使用してマネージド VPC 接続を拒否するには、`RejectClientVpcConnection` API を使用します。

# Amazon MSK クラスターへのマネージド VPC 接続の削除
<a name="mvpc-cross-account-delete-connection"></a>

クロスアカウントユーザーは、クライアントアカウントコンソールから MSK クラスターのマネージド VPC 接続を削除できます。クラスター所有者ユーザーはマネージド VPC 接続を所有していないため、クラスター管理者アカウントから接続を削除することはできません。VPC 接続を削除すると、料金は発生しなくなります。

**MSK コンソールを使用してマネージド VPC 接続を削除するには**

1. クライアントアカウントから、[AWS マネジメントコンソール](https://console.aws.amazon.com/msk)で Amazon MSK コンソールを開きます。

1. ナビゲーションペインで、**[マネージド VPC 接続]** を選択します。

1. 接続リストから、削除する接続を選択します。

1. VPC 接続を削除することを確認します。

API を使用してマネージド VPC 接続を削除するには、`DeleteVpcConnection` API を使用します。

# マルチ VPC プライベート接続のアクセス許可
<a name="mvpc-cross-account-permissions"></a>

このセクションでは、マルチ VPC プライベート接続機能を使用するクライアントとクラスターに必要なアクセス許可の概要を示します。マルチ VPC プライベート接続では、クライアント管理者が、MSK クラスターへのマネージド VPC 接続を持つ各クライアントに対するアクセス許可を作成する必要があります。また、MSK クラスター管理者が MSK クラスターで PrivateLink 接続を有効にし、クラスターへのアクセスを制御する認証スキームを選択する必要もあります。

**クラスターの認証タイプとトピックのアクセス許可**  
MSK クラスターで有効になっている認証スキームのマルチ VPC プライベート接続機能を有効にします。「[マルチ VPC プライベート接続の要件と制限](aws-access-mult-vpc.md#mvpc-requirements)」を参照してください。SASL/SCRAM 認証スキームを使用するように MSK クラスターを設定する場合、Apache Kafka ACL プロパティ `allow.everyone.if.no.acl.found=false` は必須です。クラスターに [Apache Kafka ACL](msk-acls.md) を設定した後、クラスターの設定を更新して、クラスターのプロパティ `allow.everyone.if.no.acl.found` を false に設定します。クラスターの設定を更新する方法については、「[ブローカー設定オペレーション](msk-configuration-operations.md)」を参照してください。

**クロスアカウントクラスターポリシーのアクセス許可**  
Kafka クライアントが MSK クラスターとは異なる AWS アカウントにある場合は、クライアントルートユーザーにクロスアカウント接続を許可するクラスターベースのポリシーを MSK クラスターにアタッチします。MSK コンソールの IAM ポリシーエディタ (クラスターの **[セキュリティ設定]** > **[クラスターポリシーの編集]**) を使用してマルチ VPC クラスターポリシーを編集するか、以下の API を使用してクラスターポリシーを管理できます。

**PutClusterPolicy**  
クラスターポリシーをクラスターにアタッチします。この API を使用して、指定した MSK クラスターポリシーを作成または更新できます。ポリシーを更新する場合、リクエストペイロードには currentVersion フィールドが必要です。

**GetClusterPolicy**  
クラスターにアタッチされているクラスターポリシードキュメントの JSON テキストを取得します。

**DeleteClusterPolicy**  
クラスターポリシーを削除します。

MSK コンソールの IAM ポリシーエディタに表示されるポリシーと同様の、基本的なクラスターポリシーの JSON の例を以下に示します。次のポリシーは、クラスター、トピック、およびグループレベルのアクセス許可を付与します。

------
#### [ JSON ]

****  

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

------

**MSK クラスターへのマルチ VPC プライベート接続のクライアントアクセス許可**  
Kafka クライアントと MSK クラスターの間にマルチ VPC プライベート接続をセットアップするには、クライアントでの `kafka:CreateVpcConnection`、`ec2:CreateTags`、および `ec2:CreateVPCEndpoint` のアクションのアクセス許可を付与する ID ポリシーがクライアントにアタッチされている必要があります。参考までに、基本的なクライアント ID ポリシーの JSON の例を以下に示します。

------
#### [ JSON ]

****  

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

------

# ポート情報
<a name="port-info"></a>

Amazon MSK がクライアントマシンと通信できるように、以下のポート番号を使用します。
+ プレーンテキストでブローカーと通信するには、ポート 9092 を使用します。
+ TLS 暗号化を使用してブローカーと通信するには、内部からのアクセスにポート 9094 を使用し AWS 、パブリックアクセスにポート 9194 を使用します。
+ SASL/SCRAM を使用してブローカーと通信するには、内部からのアクセスにポート 9096 を使用し AWS 、パブリックアクセスにポート 9196 を使用します。
+ を使用するように設定されたクラスター内のブローカーと通信するには[IAM アクセスコントロール](iam-access-control.md)、内部からのアクセスにポート 9098 AWS を使用し、パブリックアクセスにポート 9198 を使用します。
+ IPv6 ネットワークタイプをプレーンテキストで使用してブローカーと通信するには、ポート 20092 を使用します。
+ IPv6 を使用して IAM アクセスコントロールを使用するように設定されたクラスター内のブローカーと通信するには、ポート 20098 を使用します。
+ IPv6 を使用して SASL/SCRAM でブローカーと通信するには、ポート 20096 を使用します。
+ IPv6 を使用して TLS 暗号化を使用してブローカーと通信するには、ポート 20094 を使用します。