Apache Kafkaは、アプリが記録のストリームを公開・購読するために利用するオープンソースの分散型ストリーミングプラットフォームです。 メッセージング、ウェブサイトの活動追跡、指標、ログ集約、ストリーム処理などに一般的に使われています。
もしデータがKafkaクラスターを経由しているなら、Azure Stream Analyticsを直接そのクラスターに接続し、カスタムコンシューマーを作らずにデータを取り込み処理できます。 Kafkaの入力はローコードで、ビジネスコンプライアンス基準を満たすためにMicrosoftによって完全に管理され、0.10以降のクライアントバージョンとも後方互換性があります。 既存のKafka設定規則を用いて、仮想ネットワーク内またはパブリックエンドポイントでKafkaクラスタに接続できます。 サポートされている圧縮の種類は、None、Gzip、Snappy、LZ4、Zstd です。
この記事では、Azure Stream Analyticsジョブの入力ソースとしてKafkaクラスタを設定する方法を紹介します。
カフカを入力ソースに設定する
この記事では、Azure Stream Analytics の入力ソースとして Kafka を設定する方法について説明します。 次の手順について説明します。
- Azure Stream Analytics ジョブを作成します。
- mTLS または SASL_SSL セキュリティ プロトコルを使用している場合は、マネージド ID を使用するように Azure Stream Analytics ジョブを構成します。
- mTLSやSASL_SSLセキュリティプロトコルを使っている場合はAzure Key Vault設定してください。
- 証明書を秘密としてAzure Key Vaultにアップロードします。
- アップロードされた証明書にアクセスするためのアクセス許可を Azure Stream Analytics に付与します。
- Azure Stream Analytics ジョブで Kafka 入力を構成します。
注意
Kafkaクラスタの設定や使用しているクラスタの種類によっては、これらのステップの一部はあなたには適用されない場合があります。 例えば、Confluent Cloud Kafkaを使っている場合、Kafkaコネクタを使うために証明書をアップロードする必要はありません。 もしKafkaクラスターが仮想ネットワーク(VNet)内かファイアウォールの背後にある場合、Azure Stream Analyticsジョブを設定してプライベートリンクや専用のネットワーク設定でKafkaトピックにアクセスする必要があるかもしれません。
Kafka入力の設定
Kafka入力を設定して、Azure Stream AnalyticsジョブがKafkaクラスタに接続してトピックから読み取れるようにしてください。
重要
Kafka クラスターを入力として構成するには、入力トピックのタイムスタンプの種類を LogAppendTime にする必要があります。 Azure Stream Analytics でサポートされる唯一のタイムスタンプの種類は、LogAppendTime です。 Azure Stream Analytics では、数値の 10 進形式のみがサポートされています。
Azure Stream Analyticsのジョブで、Kafka入力を追加してください。
各入力プロパティは、以下の表に示された値を用いて設定します。
プロパティ名 説明 入出力エイリアス 入力や出力を指すためにクエリで使われる親しみやすい名前です。 ブートストラップ サーバー アドレス Kafkaクラスタに接続するためのホスト/ポートペアのリストです。 Kafka トピック メッセージの公開・購読およびイベント駆動型処理をサポートする、名前付き、順序付けられ、パーティション化されたデータストリームです。 セキュリティ プロトコル Kafka クラスターへの接続方法。 Azure Stream Analytics は、mTLS、SASL_SSL、SASL_PLAINTEXT、または None をサポートしています。 コンシューマー グループ ID 入力が属する必要がある Kafka コンシューマー グループの名前。 Azure Stream Analyticsは、提供しなければ自動的に割り当ててくれます。 イベント シリアル化形式 受信データストリームのシリアライゼーション形式(JSON、CSV、Avro、Parquet、Protobuf)。 入力設定を保存してください。
認証と暗号化の設定
認証と暗号化を設定し、Azure Stream AnalyticsジョブとKafkaクラスタ間の接続を安全に保ちましょう。 Confluent Cloud Kafkaへの接続に関するステップバイステップのチュートリアルについては、「Stream data from Confluent Cloud Kafka with Azure Stream Analytics」の入力、出力の「Stream data from Azure Stream Analytics into Confluent Cloud」をご覧ください。
重要
Confluent CloudはAPIキー、OAuth、またはSAMLシングルサインオン(SSO)を用いて認証をサポートしています。 Azure Stream Analytics では、OAuth または SAML シングル サインオン (SSO) 認証はサポートされていません。 SASL_SSLセキュリティプロトコルを通じてトピックレベルアクセスを持つAPIキーを使ってConfluent Cloudに接続できます。
以下の表に説明されているように、あなたのKafkaクラスターに合った4つのサポートされたセキュリティプロトコルの中から1つを選択します。
プロパティ名 説明 mTLS 暗号化および認証。 PLAIN、SCRAM-SHA-256、および SCRAM-SHA-512 のセキュリティ メカニズムをサポートします。 SASL_SSL SASL(シンプル認証およびセキュリティ層)とセキュアソケット層(SSL)という2つの異なるセキュリティ機構を組み合わせ、データ伝送のために認証と暗号化の両方が実施されていることを保証します。 SASL_SSL プロトコルは、PLAIN、SCRAM-SHA-256、および SCRAM-SHA-512 セキュリティ メカニズムをサポートします。 SASL_PLAINTEXT ユーザー名は標準認証ですが暗号化はなしです。 なし 認証と暗号化はありません。 Azure Stream Analyticsジョブで選択したプロトコルの認証情報を設定してください。
Azure Key Vault との統合
Azure Stream AnalyticsはAzure Key Vaultと連携し、mTLSやSASL_SSLセキュリティプロトコルを使う際に認証や暗号化に必要な保存された秘密にアクセスします。 あなたのAzure Stream Analyticsジョブは、管理IDを使ってAzure Key Vaultに接続し、安全な接続を確保し、秘密の流出を防ぎます。 証明書はシークレットとしてキー コンテナーに格納され、PEM 形式である必要があります。 Azure Stream AnalyticsのジョブをAzure Key Vaultと統合するには、以下のタスクを行ってください。以下のセクションで詳細に説明されています。
注意
mTLSやSASL_SSLセキュリティプロトコルでトラストストア証明書を使用する場合、Azure Stream AnalyticsジョブのためにAzure Key Vaultおよびマネージデンティティを設定する必要があります。 キー コンテナーのネットワーク設定を確認し、[すべてのネットワークからのパブリック アクセスを許可する] がオンになっていることを確認します。 キーボールトがVNetにあるか、特定のネットワークからのみアクセスできる場合は、Azure Stream Analyticsジョブをキーボールトを含むVNetに注入するか、Azure Stream AnalyticsジョブをVNetに注入し、サービスエンドポイントを使ってキーボールトをVNetを含むジョブに接続する必要があります。
- キーボールトに必要な権限を設定してください。
- 証明書をキーボールトにシークレットとしてアップロードしてください。
- Azure Stream AnalyticsのジョブでマネージドIDを設定してください。
- Stream Analyticsのジョブにキーボールト内の証明書へのアクセス権限を与えてください。
権限を設定してキー ボールトを構成する
キーボールトリソースを作成するには、「クイックスタート:Azureポータルを使ってキーボールトを作成する」をご覧ください。 証明書をアップロードするにはkey vault Key Vault管理者のアクセスが必要です。 管理者権限を付与するには、以下の手順に従ってください:
注意
他のキーボールト権限を付与するには オーナー 権限が必要です。
[アクセス制御 (IAM)] を選択します。
[追加]>[ロールの割り当ての追加] を選択して、[ロールの割り当ての追加] ページを開きます。
以下の構成を使って役割を割り当てます:
設定 値 役割 キーボールト管理者 アクセスを割り当てる ユーザー、グループ、またはサービス プリンシパル メンバー <アカウント情報またはメール アドレス>
証明書をキーボールトにアップロードしてください
Azure CLIはPowerShellでローカルで設定されていることを確認してください。 Azure CLIの設定に関するガイダンスについては、「Azure CLIで始めて」をご覧ください。
以下の手順で証明書を秘密としてキーボールトにアップロードします。
重要
このコマンドが正しく動作するには、key vaultに対してKey Vault管理者権限が必要です。 証明書はシークレットとしてアップロードしなければなりません。 Azure CLI を使って、証明書をシークレットとしてキー コンテナーにアップロードする必要があります。 認証に使われた証明書が期限切れになると、Azure Stream Analyticsのジョブが失敗します。 この問題を解決するには、キーボールト内の証明書を更新または置き換え、Azure Stream Analyticsジョブを再起動してください。
Azure CLIにサインインします。
az login鍵の保管庫を含むサブスクリプションに接続してください。
az account set --subscription <subscription name>証明書をシークレットとしてアップロードしてください。
<your key vault>をキーボールトの名前に置き換え、秘密を付けたい名前に<name of the secret>、証明書ファイルへのパスに<file path to certificate>してください。 右クリックして、証明書へのパスをコピーできます。az keyvault secret set --vault-name <your key vault> --name <name of the secret> --file <file path to certificate>次に例を示します。
az keyvault secret set --vault-name mykeyvault --name kafkasecret --file C:\Users\Downloads\certificatefile.pem
マネージド ID を構成する
Azure Stream AnalyticsはキーボールトにアクセスするためにマネージドIDが必要です。 Azure Stream Analyticsジョブを管理IDを使用するように設定するには、「Configure」の管理付きIDタブに移動します。
マネージドIDを設定するには、以下の手順に従ってください:
設定の下にある管理されたアイデンティティタブを選択します。
スイッチ 識別子を選択し、ジョブで使用する識別子を選択します:システム割り当て識別子またはユーザー割り当て識別子。
ユーザー割り当てIDについては、ユーザー割り当てIDがあるサブスクリプションを選択し、そのID名を選択してください。
レビューして「 保存」を選択してください。
Stream Analyticsのジョブ権限を付与して証明書にアクセスしてください
Azure Stream Analytics ジョブでキー コンテナー内のシークレットを読み取る場合、ジョブにはキー コンテナーにアクセスするためのアクセス許可が必要です。
Stream Analyticsの職に権限を与えるには、以下の手順に従ってください:
[アクセス制御 (IAM)] を選択します。
[追加]>[ロールの割り当ての追加] を選択して、[ロールの割り当ての追加] ページを開きます。
以下の構成を使って役割を割り当てます:
設定 値 役割 Key Vault 秘密ユーザー マネージド ID システム割り当てマネージド ID またはユーザー割り当てマネージド ID の Stream Analytics ジョブ メンバー <Stream Analytics ジョブの名前> または <ユーザー割り当て ID の名前>
カフカ入力の制限と考慮事項
Kafkaクラスターが仮想ネットワーク内またはファイアウォールの背後にある場合は、プライベートリンクや専用ネットワーク設定を使ってAzure Stream AnalyticsジョブにKafkaトピックにアクセスするように設定してください。 詳細については、「Run your Azure Stream Analytics job in an Azure Virtual Network」をご覧ください。
カフカを入力ソースとして使用する際の以下の制限を考慮してください。
- Azure Stream AnalyticsジョブをVirtual Network/SWIFT使用に設定する際は、少なくとも6台のストリーミングユニットか1台のV2ストリーミングユニットで設定してください。
- mTLSやSASL_SSLをAzure Key Vaultで使用する場合、JavaキーストアをPEM形式に変換する必要があります。
- Azure Stream Analyticsが接続できるKafkaの最低バージョンはバージョン0.10です。
- Azure Stream Analyticsは、OAuthやSAMLシングルサインオン(SSO)によるConfluent Cloudへの認証をサポートしていません。 SASL_SSLプロトコルを通じてAPIキーを使用する必要があります。
Azure Stream Analytics の Kafka 入力について直接サポートが必要な場合は、askasa@microsoft.com にお問い合わせください。