ネットワーク・アクセスの制限
デフォルトでは、Event Streams インスタンスは、IBM Cloud® パブリック・ネットワーク使用するように構成されているため、パブリック・インターネット経由でアクセス可能です。
必要に応じて、以下のようにネットワーク・タイプまたはコンテキスト・ベースの制限を使用して、ネットワーク接続を制限できます。
- ネットワーク・タイプ
-
IBM Cloud は、プライベート・ネットワーキングとパブリック・ネットワーキングの両方を提供します。 ワークロードがすべて IBM Cloud 内で実行され、サービスへのパブリックアクセスが必要ない場合、代わりに Event Streams インスタンスを、IBM Cloud プライベートネットワーク経由でのみアクセスできるように構成できます。 これにより、分離が促進され、パブリック・トラフィックに関連付けられる egress 帯域幅の課金は発生しなくなります。 また、IBM Cloud のパブリック・ネットワークとプライベート・ネットワークの両方を経由してアクセスできるようにインスタンスを構成することもできます。この場合、ワークロードで、そのロケーションに最適なインターフェースを使用できます。 プライベート・ネットワーキングについて詳しくは、 IBM Cloudを参照してください。
- コンテキスト・ベースの制限 (CBR)
-
接続の受け入れ元のネットワーク・ロケーションを制限するアクセス・ルールを定義できます。 例えば、ネットワーク・タイプ、IP 範囲、VPC、その他のサービスなどです。 詳しくは、コンテキスト・ベースの制限とはを参照してください。
-
コンテキスト・ベースの制限に対する監査イベントは、コンテキスト・ベースの制限 IBM Cloud Activity Tracker イベント コンテキスト・ベースの制限ルール・イベントの下でパブリッシュされます。 CBR 適用に関連する Activity Tracker イベントは、プライベート・エンドポイントでは使用できません。
ネットワーク・タイプの構成
IBM Cloud のプライベート・ネットワーク、パブリック・ネットワーク、またはプライベート・ネットワークとパブリック・ネットワークで使用できるようにエンタープライズ・サービス・インスタンスを構成できます。 以下の情報では、必要なネットワーキング・タイプを選択して更新する方法について説明します。 パブリック・ネットワーキングはデフォルトで選択されています。
前提条件
以下の作業を完了していることを確認してください。
-
サポートされているいずれかのマルチゾーン・ロケーションでエンタープライズ・プランを使用して、サービス・インスタンスを作成します。 詳しくは プランの選択 をご覧ください。
-
IBM Cloud アカウントに対して Virtual Route Forwarding(VRF) を有効にします。
-
以下のコマンドを実行して、サービス・エンドポイント接続を有効にします。
ibmcloud account update --service-endpoint-enable true
前提条件が完了しているかどうかを確認するには、次のコマンドを実行し、次の2つのプロパティがtrueになっているかどうかを確認します:
ibmcloud account show VRF Enabled: true Service Endpoint Enabled: true
プロビジョニング中のネットワーク構成の選択
エンタープライズ・クラスターのネットワーク構成を選択するためのいくつかのオプションがあります。
-
IBM Cloud パブリック・ネットワークを使用します。 エンドポイントには、パブリック・インターネットでアクセスできます。 これがデフォルト値です。
-
IBM Cloud プライベートネットワークを使用します。 パブリック・インターネットではエンドポイントは表示されません。
-
IBM Cloud のパブリック・ネットワークとプライベート・ネットワークを使用します。 エンドポイントは、パブリック・インターネットと IBM Cloud内の内部の両方で表示されます。
この選択は、 Event Streams カタログ・プロビジョニング・ページを介してプロビジョン時に行うことができます。 サービス・エンドポイントメニューのドロップダウンで、パブリック(デフォルト)、プライベート、またはパブリックおよびプライベートのいずれかを選択します。
または、CLI を使用して Event Streams サービスをプロビジョンする場合は、以下のコマンドを使用します。
-
パブリック・エンドポイントを有効にするには、以下のようにします (デフォルト)。
ibmcloud resource service-instance-create <instance-name> messagehub ibm.message.hub.enterprise.3nodes.2tb <region> --service-endpoints public
-
プライベート専用エンドポイントを有効にするには、以下のようにします。
ibmcloud resource service-instance-create <instance-name> messagehub ibm.message.hub.enterprise.3nodes.2tb <region> --service-endpoints private
-
プライベート・エンドポイントとパブリック・エンドポイントの両方を有効にするには、以下のようにします。
ibmcloud resource service-instance-create <instance-name> messagehub ibm.message.hub.enterprise.3nodes.2tb <region> --service-endpoints public-and-private
ネットワーク構成の更新
プロビジョニング後にEnterpriseクラスタが使用するエンドポイントを切り替えることもできます。 これを行うには、以下のCLIコマンドを使用する:
パブリック・エンドポイントまたはプライベート・エンドポイントからパブリック・エンドポイントおよびプライベート・エンドポイントに直接マイグレーションするには、以下のようにします。
ibmcloud resource service-instance-update <instance-name> --service-endpoints public-and-private
パブリック・エンドポイントとプライベート・エンドポイントからパブリック・エンドポイントにマイグレーションするには、以下のようにします。
ibmcloud resource service-instance-update <instance-name> --service-endpoints public
パブリック・エンドポイントとプライベート・エンドポイントからプライベート・エンドポイントにマイグレーションするには、以下のようにします。
ibmcloud resource service-instance-update <instance-name> --service-endpoints private
パブリック・エンドポイントからプライベート・エンドポイントへの直接切り替え、またはプライベート・エンドポイントからパブリック・エンドポイントへの直接切り替えは、 サポートされていません。 このスイッチを使用すると、すべてのパブリック・エンドポイントが無効になり、アプリケーションはクラスターにアクセスできなくなります。 これを避けるには、まずパブリック・エンドポイントとプライベート・エンドポイントの両方を有効にし、次にプライベート・エンドポイントを使用するようにアプリケーションを再設定し、最後にプライベート・エンドポイントのみに切り替える。
例えば、パブリック・エンドポイントからプライベート・エンドポイントにマイグレーションするには、以下のようにします。
まず、パブリック・エンドポイントとプライベート・エンドポイントの両方を有効にします。
ibmcloud resource service-instance-update <instance-name> --service-endpoints public-and-private
次に、以下のように、プライベート・エンドポイントと新しいAPIキーを含む新しいクレデンシャルを作成する:
ibmcloud resource service-key-create <private-key-name> <role> --instance-name <instance-name> --service-endpoint private
次に、そのインスタンスを使用するすべてのアプリケーションを、新しいサービス・キーとエンドポイントの詳細で更新します。
最後に、アプリケーションをプライベート・エンドポイントに移行した後、以下のコマンドを実行してパブリック・エンドポイントをオフにする:
ibmcloud resource service-instance-update <instance-name> --service-endpoints private
IP 許可リストの指定 (非推奨)
この機能は非推奨になりました。代わりに、コンテキスト・ベースの制限 CBR の構成 を使用してください。
エンタープライズ・プランのインスタンスをプロビジョンし、プライベート・エンドポイントを選択し、特定の VPC を持つ既知の VSI のみにアクセスをさらに制限する場合は、CLI を使用して以下のように追加することで、IP 許可リストを追加できます。
ibmcloud resource service-instance-create <instance-name> <plan-name> <region> --service-endpoints private -p '{"private_ip_allowlist":["CIDR1","CIDR2"]}' "
ここで、CIDR1、CIDR2は、a.b.c.d/eの形のIPアドレスである。 CIDR の配列は、任意の数のエレメントを持つことができます。
あるいは、既存のサービス・インスタンスの IP 許可リストを更新するには、以下の手順を実行します。
-
インスタンスに適用された元のIP許可リストを取得します:
$ibmcloud es init -i <instance-name> API Endpoint: https://mh-cktmqpdbvkfczhmn.us-south.containers.appdomain.cloud Service endpoints: public-and-private Private IP allowlist: "10.243.0.8/32","10.243.128.8/32","10.243.64.4/32" Storage size: 4096 GB Throughput: 300 MB/s OK
-
Private IP allowlist
に対して、CIDR を追加するか、または CIDR を削除します。 -
以下のコマンドを実行して、新規リストでサービス・インスタンスを更新します。
ibmcloud resource service-instance-update <instance-name> --service-endpoints private -p '{"private_ip_allowlist":["CIDR1","CIDR2"]}'
ここで、CIDR1、CIDR2は、a.b.c.d/eの形のIPアドレスである
CLI を使用してプライベート・エンドポイントを有効にした場合は、次回プライベート IP 許可リストを更新するときに、 --service-endpoints private
を省略できます。
IP許可リストを切り替えると、新しいリストにない許可IPアドレスは無効になる。 これらのアドレスからクラスタにアクセスするアプリケーションはクラスタへのアクセスを失う。
エンドポイント情報の取得
サービス・インスタンスのエンドポイント情報は、ネットワーク・タイプに固有です。 パブリック・ネットワーキングとプライベート・ネットワーキングの両方が選択されたサービス・インスタンスには、それぞれのエンドポイントがあります。
以下のように service-key-create
CLI コマンドの --service-endpoint
オプションを使用して、必要なネットワーク・タイプのエンドポイント情報を取得できます。
ibmcloud resource service-key-create <private-key-name> <role> --instance-name <instance-name> --service-endpoint private
IBM Event Streams コンソールへのアクセス
コンソールは、パブリック・ネットワークとパブリック・アンド・プライベートの両方を含むパブリック・ネットワークがインスタンスで利用可能な場合、引き続きアクセス可能です。
技術的な制限のため、プライベートネットワークのみを選択し、コンテキストベースの制限を設定した場合、コンソールにアクセスすることはできません。 CLI is recommended to perform any administrative operations. eg. ibmcloud es topic-create [--name] TOPIC_NAME [--partitions PARTITIONS] [--config KEY=VALUE[;KEY=VALUE]* ]*
コンテキスト・ベースの制限の構成
接続の受け入れ元のネットワーク・ロケーションを制限するルールを定義できます。 例えば、ネットワーク・タイプ別、IP 範囲別、VPC 別、その他のサービス別などです。 詳しくは、 コンテキスト・ベースの制限とは何ですか? を参照してください。
コンテキスト・ベースの制限は、標準プランとエンタープライズ・プランの両方の Event Streams インスタンスに対して定義できます。 コンテキスト・ベースの制限ルールが定義されている場合、以下のルールが適用されます。
-
管理 REST API、REST プロデューサー API、スキーマ・レジストリー API、および Kafka クライアント呼び出しは、 Event Streams インスタンスに対して作成されるコンテキスト・ベースの制限ルールのスコープ内にあります。
-
サービス・インスタンス自体の管理機能 (例えば、 IBM Cloud CLI
service-instance-create
、service-instance-delete
コマンド、service-instance-update
コマンド、または同等のもの) は、 Event Streams に対して作成されるコンテキスト・ベースの制限ルールのスコープ内にはありません。
コンテキストベースの制限設定の管理
コンテキスト・ベースの制限ルールの作成は、以下の 2 つのステップからなるプロセスです。
-
許可される IP アドレス、許可される VPC のリストを使用してネットワーク・ゾーンを作成するか、サービスを参照します。 詳しくは、 ネットワーク・ゾーンの作成を参照してください。
-
Event Streams リソースに対して 1 つ以上のネットワーク・ゾーンを指定するルールを作成します。 ルール作成について詳しくは、 ルールの作成を参照してください。
次に、以下の点に注意すること:
- アクセスを制限するには、アカウントの所有者であるか、すべてのアカウント管理サービスの管理者ロールを持つアクセスポリシーを持っている必要があります。
- ゾーンまたはルールを作成または更新した後、変更が有効になるまでに数分 (最大 10 分) かかることがあります。
- コンテキスト・ベースの制限が適用された後は、ルールの作成後に認証を行うクライアントに対してのみ適用されます。 制限ルールを適用するには、既存のクライアントを再認証する必要があります。
コンテキスト・ベースの制限によるサービス間 (サービス間) の接続のサポート
Event Streams サービス・インスタンスが お客様管理の暗号化 を使用するように構成されている場合は、選択した IBM 鍵管理サービスに接続する権限もサービスに付与する必要があります。
アカウントの管理者は、これを以下のようにセットアップできます。
- Event Streams サービスのサービス参照を必要なネットワーク・ゾーンに追加します。
- このゾーンからのアクセスが、他のクラウド・サービスに適用されるコンテキスト・ベースの制限ルールによって許可されていることを確認してください。
サービス参照の作成について詳しくは、 サービス参照を参照してください。
コンテキスト・ベースの制限ルールとプライベート IP 許可リストの共存
Event Streams インスタンスに対して許可リストを実装するための推奨アプローチとして、コンテキスト・ベースの制限ルールがプライベート IP 許可リストの使用に優先するようになりました。 プライベート IP 許可リストの使用は引き続きサポートされますが、非推奨になりました。
コンテキスト・ベースの制限ルールと IP 許可リストの両方が同じ Event Streams インスタンスに対して定義されている場合、コンテキスト・ベースの制限ルールが以前のプライベート IP 許可リストをオーバーライドするため、IP 許可リストは無視されます。
プライベート IP 許可リストからコンテキスト・ベースの制限へのマイグレーション
移行は顧客の責任である。 コンテキスト・ベースの制限ネットワーク・ゾーンとして IP 許可リスト定義を再度作成し、コンテキスト・ベースの制限ルールを作成してそれらをサービス・インスタンスに適用することができます。 その後、以前のプライベート IP 許可リストを削除できます。