マネージド ID 認証を使用したインジェスト用のキュー BLOB
独自のストレージ アカウントからのインジェスト用に BLOB をキューに入れる場合は、Shared Access Signature (SAS) トークンと共有キー認証方法の代わりにマネージド ID を使用することができます。 マネージド ID は、顧客の SAS トークンや共有キーをサービスと共有する必要がないため、データを取り込むためのより安全性の高い方法です。 代わりに、マネージド ID がクラスターに割り当てられ、データの取り込みに使用するストレージ アカウントの読み取りアクセス許可が付与されます。 これらのアクセス許可はいつでも取り消すことができます。
Note
- この認証方法は、顧客所有のストレージ アカウントに存在する Azure BLOB および Azure Data Lake ファイルにのみ適用されます。 Kusto SDK を使用してアップロードされたローカル ファイルには適用されません。
- キューに入れられたインジェストのみがサポートされます。 Kusto 照会言語でのインライン インジェストと SDK API を使用した直接インジェストはサポートされていません。
クラスターにマネージド ID を割り当てる
「マネージド ID の概要」に従って、システムまたはユーザー割り当てマネージド ID をクラスターに追加します。 クラスターに必要なマネージド ID が既に割り当てられている場合は、次の手順に従ってそのオブジェクト ID をコピーします。
クラスターが含まれる Azure サブスクリプションに関連付けられているアカウントを使用して、Azure portal にサインインします。
クラスターに移動し、[ID] を選択します。
適切な ID の種類、システムまたはユーザー割り当てを選択し、必要な ID のオブジェクト ID をコピーします。
マネージド ID にアクセス許可を付与する
Azure portal で、取り込むデータが含まれているストレージ アカウントに移動します。
[アクセス制御] を選択してから、[+ 追加]>[ロール割り当ての追加] の順に選択します。
DeleteSourceOnSuccess ソース オプションを使用する場合は、マネージド ID のストレージ BLOB データ閲覧者またはストレージ BLOB データ共同作成者に、ストレージ アカウントへのアクセス許可を付与します。
Note
所有者または共同作成者のアクセス許可を付与するだけでは不十分であり、インジェストが失敗します。
重要
ネットワークの問題が発生した場合、Azure Storage によって Download Forbidden
エラーが返されることがあります。
このエラーは、プライベート リンクを使用してストレージ アカウントにアクセスする場合に発生する可能性があります。
このような場合、アクセス許可が正しければ、ストレージ アカウントへの接続を確認します。
Azure Data Explorer でマネージド ID ポリシーを設定する
マネージド ID を使用してデータをクラスターに取り込むには、選択したマネージド ID の NativeIngestion
使用オプションを許可します。 ネイティブ インジェストとは、外部ソースからのインジェストに SDK を使用する機能を指します。 使用可能な SDK の詳細については、「クライアント ライブラリ」を参照してください。
使用状況のマネージド ID ポリシーは、ターゲット クラスターのクラスターまたはデータベース レベルで定義できます。
データベース レベルでポリシーを適用するには、次のコマンドを実行します。
.alter-merge database <database name> policy managed_identity "[ { 'ObjectId' : '<managed_identity_id>', 'AllowedUsages' : 'NativeIngestion' }]"
クラスター レベルでポリシーを適用するには、次のコマンドを実行します。
.alter-merge cluster policy managed_identity "[ { 'ObjectId' : '<managed_identity_id>', 'AllowedUsages' : 'NativeIngestion' }]"
<managed_identity_id>
を、必要なマネージド ID のオブジェクト ID に置き換えます。
Note
マネージド ID ポリシーを編集するには、クラスターに対する All Database Admin
アクセス許可が必要です。
Kusto SDK を使用したマネージド ID によるインジェスト用のキュー BLOB
Kusto SDK を使用してデータを取り込む場合は、承認されていない BLOB URI に ;managed_identity={objectId}
を追加し、マネージド ID 認証を使用して BLOB URI を生成します。 クラスターのシステム割り当てマネージド ID を使用してデータを取り込む場合は、;managed_identity=system
を BLOB URI に追加できます。
重要
キューに入れられたインジェスト クライアントを使用する必要があります。 Kusto 照会言語での直接インジェストまたはインライン インジェストでのマネージド ID の使用はサポートされていません。
システムおよびユーザー割り当てマネージド ID の BLOB URI の例を次に示します。
- システム割り当て:
https://demosa.blob.core.windows.net/test/export.csv;managed_identity=system
- ユーザー割り当て:
https://demosa.blob.core.windows.net/test/export.csv;managed_identity=6a5820b9-fdf6-4cc4-81b9-b416b444fd6d
重要
- マネージド ID を使用して C# SDK でデータを取り込む場合は、
StorageSourceOptions
で BLOB サイズを指定する必要があります。 サイズが設定されていない場合、SDK はストレージ アカウントにアクセスして BLOB サイズの入力を試み、その結果エラーが発生します。 - size パラメーターは、BLOB サイズではなく、未加工の (圧縮されていない) データ サイズにする必要があります。
- インジェスト時のサイズがわからない場合は、値ゼロ (0) を指定します。 サービスによって、認証にマネージド ID が使用されサイズの検出が試行されます。