マネージド ID を使用して更新ポリシーを実行する
適用対象: ✅Azure データ エクスプローラー
更新ポリシーは、次のシナリオで 管理 ID で構成する必要があります。
- 更新ポリシー クエリが他のデータベースのテーブルを参照する場合
- 更新ポリシー クエリが、有効な 行レベルのセキュリティ ポリシーを持つテーブルを参照する場合
マネージド ID で構成された更新ポリシーは、マネージド ID に代わって実行されます。
この記事では、システム割り当てマネージド ID またはユーザー割り当てマネージド ID を構成し、その ID を使用して更新ポリシーを作成する方法について説明します。
前提条件
- クラスターとデータベース クラスターとデータベースを作成します。
- データベースに対する AllDatabasesAdmin アクセス許可。
マネージド ID の構成
マネージド ID には、次の 2 種類があります。
システム割り当て: システム割り当て ID はクラスターに接続され、クラスターが削除されると削除されます。 クラスターごとに許可されるシステム割り当て ID は 1 つだけです。
ユーザー割り当て: ユーザー割り当てマネージド ID は、スタンドアロンの Azure リソースです。 クラスターには、複数のユーザー割り当て ID を割り当てることができます。
次のいずれかのタブを選択して、優先するマネージド ID の種類を設定します。
ユーザー割り当て ID の追加手順に従います。
Azure portal のマネージド ID リソースの左側のメニューで、 Properties を選択します。 次の手順で使用するために、 Tenant Id と Principal ID をコピーして保存します。
次の .alter-merge policy managed_identity コマンドを実行し、
<objectId>
を前の手順のマネージド ID Principal ID に置き換えます。 このコマンドは、マネージド ID を更新ポリシーと共に使用できるようにする管理 ID ポリシーをクラスターに設定します。.alter-merge cluster policy managed_identity ```[ { "ObjectId": "<objectId>", "AllowedUsages": "AutomatedFlows" } ]```
Note
特定のデータベースにポリシーを設定するには、
cluster
ではなくdatabase <DatabaseName>
を使用します。次のコマンドを実行して、更新ポリシー クエリによって参照されるすべてのデータベースに対するマネージド ID Database Viewer アクセス許可を付与します。
.add database <DatabaseName> viewers ('aadapp=<objectId>;<tenantId>')
<DatabaseName>
を関連するデータベースに置き換え、<objectId>
は手順 2 のマネージド ID Principal ID、<tenantId>
は手順 2 の Microsoft Entra ID Tenant Id に置き換えます。
更新ポリシーを作成する
次のいずれかのタブを選択して、ユーザー割り当てマネージド ID またはシステム割り当てマネージド ID に代わって実行される更新ポリシーを作成します。
ManagedIdentity
プロパティをマネージド ID オブジェクト ID に設定して、.alter table policy update コマンドを実行します。
たとえば、次のコマンドは、データベース MyDatabase
内のテーブル MyTable
の更新ポリシーを変更します。 Source
パラメーターとQuery
パラメーターの両方が、更新ポリシーが定義されている同じデータベース内のオブジェクトのみを参照する必要があることに注意してください。 ただし、 Query
パラメーターに指定された関数に含まれるコードは、他のデータベースにあるテーブルと対話できます。 たとえば、関数MyUpdatePolicyFunction()
は、ユーザー割り当てマネージド ID の代わりにOtherDatabase
のOtherTable
にアクセスできます。 <objectId>
はマネージド ID オブジェクト ID である必要があります。
.alter table MyDatabase.MyTable policy update
```
[
{
"IsEnabled": true,
"Source": "MyTable",
"Query": "MyUpdatePolicyFunction()",
"IsTransactional": false,
"PropagateIngestionProperties": false,
"ManagedIdentity": "<objectId>"
}
]
```