独自のストレージ アカウントからのインジェストのために BLOB をキューに入れる場合は、 Shared Access Signature (SAS) トークンと 共有キー 認証方法の代わりにマネージド ID を使用します。 マネージド ID は、顧客の SAS トークンや共有キーをサービスと共有する必要がないため、データをより安全に取り込む方法を提供します。 代わりに、マネージド ID をクラスターに割り当て、データの取り込みに使用されるストレージ アカウントの読み取りアクセス許可を付与します。 これらのアクセス許可はいつでも取り消すことができます。
注意
- この認証方法は、顧客所有のストレージ アカウントに存在する 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 データ共同作成者に、ストレージ アカウントへのアクセス許可を付与します。
注意
所有者または共同作成者のアクセス許可を付与するだけでは不十分であり、インジェストが失敗します。
重要
ネットワークの問題が発生した場合、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 に置き換えます。
注意
マネージド ID ポリシーを編集するには、クラスターに対する All Database Admin アクセス許可が必要です。
Kusto SDK を使用してマネージド ID を使用してインジェスト用の BLOB をキューに入れます
Kusto SDK を使用してデータを取り込む場合は、未承認;managed_identity={objectId}して BLOB URI を生成します。 クラスターのシステム割り当てマネージド ID を使用してデータを取り込む場合は、blob URI に ;managed_identity=system を追加できます。
重要
キューに入れられたインジェスト クライアントを使用する必要があります。 Kusto クエリ言語での直接インジェストまたはインライン インジェストでのマネージド ID の使用はサポートされていません。
次の例は、システム割り当てマネージド 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 を使用してサイズの検出を試みます。