外部リソースから Private または Shield の Kafka クラスターに接続する
最終更新日 2022年11月21日(月)
Table of Contents
外部リソースと、Private Space または Shield Private Space で実行されている Apache Kafka on Heroku クラスターの間に安全で、かつ相互に認証されたチャネルを作成するには、Mutual TLS を使用します。外部リソースには、プライベートデータセンターまたはパブリッククラウドで実行されている任意の mTLS 対応アプリケーションまたはシステムを含めることができます。この機能を使用するには、クラスターに接続するために使用される外部 IP を許可リストに登録する必要があります。
概要
この機能は、Private および Shield の Apache Kafka on Heroku アドオンでのみ使用できます。
Heroku で実行されるすべての Kafka クラスターでは、mTLS がデフォルトで有効です。
Kafka アドオンをプロビジョニングすると、Heroku で使用する mTLS 証明書が自動的に作成されます。Kafka クラスターへの接続には、これらの証明書を使用した認証が必要です。これらは、アプリケーションの KAFKA_TRUSTED_CERT
、KAFKA_CLIENT_CERT
、KAFKA_CLIENT_CERT_KEY
の各環境設定で確認できます。
Private および Shield の Kafka クラスターは、その Private または Shield Space に関連付けられた分離データリソースネットワーク内に存在します。デフォルトでは、クラスターに接続できるのは Private または Shield Space 内のリソースだけです。外部リソースの IP アドレスを設定し、これらのソースからの接続を許可するには、mTLS 機能を使用します。
Heroku の前提条件
Mutual TLS を設定するには、次の Heroku リソースが必要です。
- Private Space または Shield Private Space
- Private または Shield の Apache Kafka on Heroku アドオンがアタッチされた Space で実行されている Heroku アプリ
手順 1: Mutual TLS CLI プラグインをインストールする
$ heroku plugins:install mtls
使用可能なさまざまなコマンドや、このプラグインについての詳細は、「Heroku mTLS プラグインの CLI コマンド」を参照してください。
手順 2: 外部 IP を許可リストに登録する
許可リストに登録できるのは Kafka クラスターあたり 60 個の IP ブロックまでというハード制限があります。次の Heroku CLI コマンドを使用して、Kafka クラスターにアクセスする IP ブロックを許可リストに登録します。
$ heroku data:mtls:ip-rules:create KAFKA_ADDON_NAME --app APP_NAME \
--cidr CIDR_BLOCK \
--description DESCRIPTION
次のパラメータを指定します。
KAFKA_ADDON_NAME
: Kafka クラスターの名前 (例: kafka-sushi-12345
)APP_NAME
: アプリケーションの名前CIDR_BLOCK
: 許可リストに追加する CIDR ブロック。個々の IP アドレスを/32
ブロックとして定義します。DESCRIPTION
: 指定された CIDR ブロックの説明 (例: "Office IP"
)
$ heroku data:mtls:ip-rules:create kafka-sushi-12345 --app example-app \
--cidr "1.2.3.4/32" \
--description "My Office IP"
Creating IP Rule for kafka-sushi-12345... done
cidr: 1.2.3.4/32
created_at: 2021-10-27T15:44:22.901+00:00
description: My Office IP
id: 38c466b6-dcfb-4869-b5ac-40420b786fb4
status: Authorizing
updated_at: 2021-10-27T15:44:22.901+00:00
新しい IP ルールには、ルールの詳細を確認したり、ルールを削除したりするために使用できる ID があります。
通常、外部 IP を許可リストに登録するには 10 ~ 15 分かかります。data:mtls:ip-rules:get
コマンドを使用して進行状況を追跡し、設定された IP 範囲のステータスを確認します。--id
フラグで IP ルールの ID を指定します。
$ heroku data:mtls:ip-rules:get KAFKA_ADDON_NAME --id IP_RULE_ID --app APP_NAME
次に例を示します。
$ heroku data:mtls:ip-rules:get kafka-sushi-12345 --id 38c466b6-dcfb-4869-b5ac-40420b786fb4 --app example-app
cidr: 1.2.3.4/32
created_at: 2021-10-27T15:44:22.901+00:00
description: My Office IP
id: 38c466b6-dcfb-4869-b5ac-40420b786fb4
status: Authorized
updated_at: 2021-10-27T15:44:22.901+00:00
heroku data:mtls:ip-rules KAFKA_ADDON_NAME --app APP_NAME
を使用すると、クラスターの許可リストに登録されているすべての IP アドレスを表示できます。
mTLS CLI プラグイン
mTLS CLI プラグインの完全なドキュメントを参照してください。