マネージド ID を使用して外部テーブルを認証する
外部テーブルは、Azure Data Explorer データベースの外部に格納されているデータを参照するスキーマ エンティティです。 外部テーブルを定義して、Azure Storage または SQL Server のデータを参照し、さまざまな認証方法をサポートできます。
この記事では、 管理された ID で認証する外部テーブルを作成する方法について説明します。
前提条件
- Azure Data Explorer クラスターとデータベース。 クラスターとデータベースを作成します。
- Azure Data Explorer データベースに対するデータベース管理者 アクセス許可。
1 - 外部テーブルで使用するマネージド ID を構成する
マネージド ID には、次の 2 種類があります。
システム割り当て: システム割り当て ID はクラスターに接続され、クラスターが削除されると削除されます。 クラスターごとに許可されるシステム割り当て ID は 1 つだけです。
ユーザー割り当て: ユーザー割り当てマネージド ID は、スタンドアロンの Azure リソースです。 クラスターには、複数のユーザー割り当て ID を割り当てることができます。
次のいずれかのタブを選択して、優先マネージド ID の種類を設定します。
手順に従って ユーザー割り当て ID をクラスターに追加し 後で使用できるように Object (プリンシパル) ID を保存します。
.alter-merge policy managed_identity コマンドを実行します。 このコマンドは、マネージド ID を外部テーブルで使用できるようにする 管理 ID ポリシー をクラスターに設定します。
<objectId>
を Object (プリンシパル) ID に置き換えます。.alter-merge cluster policy managed_identity ```[ { "ObjectId": "<objectId>", "AllowedUsages": "ExternalTable" } ]```
Note
特定のデータベースにポリシーを設定するには、
cluster
ではなくdatabase <DatabaseName>
を使用します。
2 - マネージド ID の外部リソースのアクセス許可を付与する
正常に認証するには、マネージド ID に外部リソースへのアクセス許可が必要です。
関連する種類の外部リソースのタブを選択し、必要なアクセス許可を割り当てます。
次の表に、外部リソースで必要なアクセス許可を示します。 外部リソースからデータをインポートまたはクエリするには、マネージド ID に読み取りアクセス許可を付与します。 外部リソースにデータをエクスポートするには、マネージド ID に書き込みアクセス許可を付与します。
外部データ ストア | 読み取りアクセス許可 | Write 権限 | アクセス許可を付与する |
---|---|---|---|
Azure Blob Storage | ストレージ BLOB データ閲覧者 | ストレージ BLOB データ共同作成者 | Azure ロールを割り当てる |
Data Lake Storage Gen2 | ストレージ BLOB データ閲覧者 | ストレージ BLOB データ共同作成者 | Azure ロールを割り当てる |
Data Lake Storage Gen1 | Reader | Contributor | Azure ロールを割り当てる |
3 - 外部テーブルを作成する
マネージド ID を使用した認証をサポートする外部テーブルには、Azure Storage 外部テーブルSQL Server 外部テーブルの 2 種類があります。
次のいずれかのタブを選択して、Azure Storage または SQL Server 外部テーブルを設定します。
Azure Storage 外部テーブルを作成するには、次の手順を実行します。
storage 接続文字列 テンプレートに基づいて接続文字列を作成。 この文字列は、アクセスするリソースとその認証情報を示します。 管理 ID 認証方法を指定します。
.create または .alter 外部テーブルを実行してテーブルを作成します。 前の手順の接続文字列を storageConnectionString 引数として使用します。
例
次のコマンドは、Azure Blob Storage のmystorageaccount
のmycontainer
で CSV 形式のデータを参照するMyExternalTable
を作成します。 テーブルには、整数 x
用と文字列 s
用の 2 つの列があります。 接続文字列は;managed_identity=system
で終わります。これは、認証にシステム割り当てマネージド ID を使用してデータ ストアにアクセスすることを示します。
.create external table MyExternalTable (x:int, s:string) kind=storage dataformat=csv
(
h@'https://mystorageaccount.blob.core.windows.net/mycontainer;managed_identity=system'
)
Note
ユーザー割り当てマネージド ID で認証するには、 system
をマネージド ID オブジェクト ID に置き換えます。