Azure Stream Analyticsでは、Azure SQL DatabaseおよびAzure Synapse Analytics出力シンクの Managed Identity authentication がサポートされます。 マネージド ID では、パスワードの変更や 90 日ごとに発生するユーザー トークンの有効期限が原因で再認証する必要があるなど、ユーザーベースの認証方法の制限がなくなります。 手動による認証の必要がなくなると、Stream Analytics のデプロイを完全に自動化できます。
マネージド ID は、特定の Stream Analytics ジョブを表す Microsoft Entra ID に登録されているマネージド アプリケーションです。 マネージド アプリケーションは、対象のリソースに対する認証を行うために使用されます。 この記事では、Azure ポータルを使用して、Stream Analytics ジョブのAzure SQL DatabaseまたはAzure Synapse Analytics出力に対してマネージド ID を有効にする方法について説明します。
概要
この記事では、マネージド ID 認証モードを使用して Stream Analytics ジョブをAzure SQL Databaseまたは SQL プールAzure Synapse Analytics接続するために必要な手順について説明します。
まず、Stream Analytics ジョブのシステム割り当てマネージド ID を作成します。 これは、Microsoft Entra ID におけるあなたのジョブ ID です。
Active Directory管理者を SQL Server または Synapse ワークスペースに追加します。これにより、そのリソースのMicrosoft Entra ID (マネージド ID) 認証が有効になります。
次に、Stream Analytics ジョブの ID を表す包含ユーザーをデータベースに作成します。 Stream Analytics ジョブが SQL DB または Synapse SQL DB リソースと対話するたびに、Stream Analytics ジョブに与えるアクセス許可を確認するために参照される ID です。
SQL Database または Synapse SQL プールにアクセスするためのアクセス許可を Stream Analytics ジョブに付与します。
最後に、stream Analytics ジョブの出力としてAzure SQL Database/Azure Synapse Analyticsを追加します。
Prerequisites
この機能を使用するには、以下が必要です。
Azure Stream Analytics ジョブ。
Azure SQL Database リソース。
マネージド ID の作成
まず、Azure Stream Analytics ジョブのマネージド ID を作成します。
Azure ポータルで、Azure Stream Analytics ジョブを開きます。
左側のナビゲーション メニューから、 [構成] の下にある [マネージド ID] を選択します。 次に、 [システム割り当てマネージド ID を使用] のチェック ボックスをオンにして、 [保存] を選択します。
Microsoft Entra ID は、Stream Analytics ジョブの ID 向けのサービス プリンシパルを作成します。 Azureは、新しく作成された ID のライフ サイクルを管理します。 Stream Analytics ジョブを削除すると、Azureは関連付けられている ID (つまり、サービス プリンシパル) を自動的に削除します。
ユーザー割り当てマネージド ID に切り替えることもできます。
構成を保存すると、次のセクションに示すように、サービス プリンシパルのオブジェクト ID (OID) がプリンシパル ID として表示されます。
サービス プリンシパルは、Stream Analytics ジョブと同じ名前を持ちます。 たとえば、ジョブの名前が MyASAJob の場合、サービス プリンシパルの名前も MyASAJob になります。
Active Directory管理者を選択する
マネージド ID を作成したら、Active Directory管理者を選択します。
** Azure SQL Database または Azure Synapse Analytics の SQL プール リソースに移動します。 リソースのSQL Serverまたは Synapse ワークスペースを選択します。 これらのリソースへのリンクは、リソースの概要ページの [サーバー名 ] または [ワークスペース名] の横にあります。
Settings で Active Directory Admin または SQL Active Directory Admin を選択して、それぞれ SQL Server と Synapse ワークスペースに適用します。 次に、[ 管理者の設定] を選択します。
Active Directory管理者ページで、SQL Serverの管理者となるユーザーまたはグループを検索し、Select を選択します。 このユーザーは、次のセクションで 包含データベース ユーザー を作成できます。
Active Directory管理ページには、Active Directoryのすべてのメンバーとグループが表示されます。 グレー表示されたユーザーまたはグループは、Microsoft Entra管理者としてサポートされていないため、選択できません。 SQL Database または Azure Synapse での認証に Microsoft Entra 認証を使用する際は、「Microsoft Entra の機能と制限事項」セクションでサポートされている管理者の一覧を参照してください。
Active Directory admin>/c0> ページで を選択します。 管理者を変更するプロセスには数分かかります。Save<
コンテインされたデータベース ユーザーを作成する
次に、Microsoft Entra ID にマップされた包含データベース ユーザーをAzure SQLまたはAzure Synapseデータベースに作成します。 包含データベース ユーザーにはプライマリ データベースのログインはありませんが、データベースに関連付けられているディレクトリ内の ID にマップされます。 Microsoft Entra ID には、個々のユーザー アカウントまたはグループを指定できます。 この場合は、Stream Analytics ジョブの包含データベース ユーザーを作成します。
詳細については、SQL Database と Azure Synapse Analytics を使用したユニバーサル認証 (SSMS での MFA のサポート) に関するページをご覧ください。
SQL Server Management Studioを使用して、Azure SQLまたはAzure Synapse データベースに接続します。 User name は、ALTER ANY USER アクセス許可を持つMicrosoft Entra ユーザーです。 SQL Serverに設定した管理者が例です。 Microsoft Entra ID – ユニバーサルのMFA機能に対応した 認証を使用します。
サーバー名
<SQL Server name>.database.windows.netは、リージョンによって異なる場合があります。 たとえば、中国リージョンでは<SQL Server name>.database.chinacloudapi.cnを使用する必要があります。特定のAzure SQLまたはAzure Synapseデータベースを指定するには、Options > 接続プロパティ > データベースへの接続に移動します。
初めて接続すると、次のウィンドウが表示されることがあります。
- その場合は、Azure ポータルで SQL Server または Synapse Workspace リソースに移動します。 [ セキュリティ ] セクションで、[ ファイアウォールと仮想ネットワーク ] または [ファイアウォール ] ページを開きます。
- 任意のルール名を持つ新しいルールを追加します。
- 新しいファイアウォール規則 ウィンドウの FROM IP アドレスを 開始 IP に使用します。
- [新しいファイアウォール規則] ウィンドウの [宛先 IP アドレス] をエンド IP に使用します。
- Saveを選択し、SQL Server Management Studioから再度接続を試みます。
接続したら、包含データベース ユーザーを作成します。 次の SQL コマンドは、Stream Analytics ジョブと同じ名前の包含データベース ユーザーを作成します。 ASA_JOB_NAME の周りに角かっこを付けるようにしてください。 次の T-SQL 構文を使用し、クエリを実行します。
CREATE USER [ASA_JOB_NAME] FROM EXTERNAL PROVIDER;包含データベース ユーザーを正しく追加したかどうかを確認するには、関連するデータベースの SSMS で次のコマンドを実行し、 ASA_JOB_NAME が "name" 列の下にあるかどうかを確認します。
SELECT * FROM <SQL_DB_NAME>.sys.database_principals WHERE type_desc = 'EXTERNAL_USER'MicrosoftのMicrosoft Entra IDで Stream Analytics ジョブが SQL Database にアクセスできるかどうかを確認するには、データベースと通信するためのMicrosoft Entraアクセス許可を付与する必要があります。 これを行うには、Azure ポータルの ファイアウォールと仮想ネットワーク または ファイアウォール ページに再度移動し、Azure サービスとリソースがこのサーバーまたはworkspaceにアクセスできるようにするオプションを有効にします。
Stream Analytics ジョブのアクセス許可を付与する
前のセクションで説明したように、包含データベース ユーザーを作成し、ポータルでAzure サービスへのアクセス権を付与すると、Stream Analytics ジョブにはマネージド ID からマネージド ID 経由でAzure SQL データベース リソースに対する CONNECT へのアクセス許可が付与されます。 Stream Analytics ワークフロー内で後に必要となるため、Stream Analytics ジョブにSELECTおよびINSERTのアクセス許可を付与します。 SELECT 権限を使用すると、ジョブはAzure SQL データベース内のテーブルへの接続をテストできます。 INSERT アクセス許可を使用すると、入力とAzure SQL データベース出力を構成した後で、エンドツーエンドの Stream Analytics クエリをテストできます。
これらのアクセス許可は、SQL Server Management Studioを使用して Stream Analytics ジョブに付与できます。 詳細については、GRANT (Transact-SQL) リファレンスを参照してください。
データベース内の特定のテーブルまたはオブジェクトにのみアクセス許可を付与するには、次の T-SQL 構文を使用してクエリを実行します。
GRANT CONNECT TO ASA_JOB_NAME;
GRANT SELECT, INSERT ON OBJECT::TABLE_NAME TO ASA_JOB_NAME;
または、SQL Server Management StudioでAzure SQLまたはAzure Synapse データベースを右クリックし、 Properties > 権限を選択することもできます。 [アクセス許可] メニューから、前に追加した Stream Analytics ジョブが表示され、必要に応じてアクセス許可を手動で付与または拒否できます。
ASA_JOB_NAME ユーザーに追加したすべてのアクセス許可を確認するには、関連する DB の下にある SSMS で次のコマンドを実行します。
SELECT dbprin.name, dbprin.type_desc, dbperm.permission_name, dbperm.state_desc, dbperm.class_desc, object_name(dbperm.major_id)
FROM sys.database_principals dbprin
LEFT JOIN sys.database_permissions dbperm
ON dbperm.grantee_principal_id = dbprin.principal_id
WHERE dbprin.name = '<ASA_JOB_NAME>'
Azure SQL DatabaseまたはAzure Synapse出力を作成する
Note
SQL Managed Instance (MI) を参照入力として使用する場合は、SQL Managed Instanceでパブリック エンドポイントを構成する必要があります。
データベース プロパティを構成するときは、ポートで完全修飾ドメイン名を指定する必要があります。 たとえば、 sampleserver.public.database.windows.net,3342と指定します。
マネージド ID を構成したら、stream Analytics ジョブにAzure SQL DatabaseまたはAzure Synapse出力を追加する準備ができました。
適切な出力スキーマを使用して、SQL Database にテーブルを作成してください。 SQL Database の出力を Stream Analytics ジョブに追加するときに、このテーブルの名前を指定する必要があります。 また、接続をテストして Stream Analytics クエリを実行するための SELECT および INSERT アクセス許可がジョブに付与されていることを確認します。 まだ行っていない場合は、「 Stream Analytics ジョブのアクセス許可の付与 」セクションを参照してください。
Stream Analytics ジョブに戻り、[ジョブ トポロジ] の [出力] ページに移動します。
SQL データベース を追加> を選択します。 SQL Database 出力シンクの出力プロパティ ウィンドウで、[認証モード] ドロップダウンから [マネージド ID] を 選択します。
残りのプロパティを入力します。 SQL Database 出力の作成の詳細については、「 Stream Analytics を使用した SQL Database 出力の作成」を参照してください。 完了後は、保存 を選択します。
[保存] を選択すると、リソースへの接続テストが自動的にトリガーされます。 そのテストが正常に完了したら、マネージド ID 認証モードを使用して、Azure SQL Databaseまたは Synapse SQL Database に接続するように Stream Analytics ジョブを構成しました。
SQL 参照データの追加手順
SQL 参照データを使用する場合、Azure Stream Analyticsジョブのストレージ アカウントを構成する必要があります。 このジョブでは、このストレージ アカウントを使用して、SQL 参照データ スナップショットなど、Stream Analytics ジョブに関連するコンテンツを格納します。
関連付けられているストレージ アカウントを設定するには、次の手順に従います。
Stream Analytics ジョブ ページの左側のメニューの [構成] で、[ストレージ アカウントの設定] を選択します。
Stream Analytics ジョブ ページで、左側のメニューの [構成] で [ストレージ アカウントの設定] を選択します。
[ ストレージ アカウントの設定] ページで、[ ストレージ アカウントの追加] を選択します。
手順に従って、ストレージ アカウントの設定を構成します。
Important
- 接続文字列を使用して認証するには、ストレージ アカウントのファイアウォール設定を無効にする必要があります。
- マネージド ID を使用して認証するには、ストレージ BLOB データ共同作成者ロールとストレージ テーブル データ共同作成者ロールのストレージ アカウントのアクセス制御リストに Stream Analytics ジョブを追加する必要があります。 ジョブにアクセス権を付与しない場合、ジョブは操作を実行できません。 アクセス権を付与する方法の詳細については、「Azure RBAC を使用してマネージド ID アクセスを別のリソースに割り当てる」を参照してください。
ユーザー割り当てマネージド ID を使用した追加の手順
ASA を Synapse に接続するためにユーザー割り当てマネージド ID を選択した場合は、手順を繰り返します。
- 専用のデータベースユーザーを作成します。 ASA_Job_Nameをユーザー割り当てのマネージドIDに置き換えます。 次の例を参照してください。
CREATE USER [User-Assigned Managed Identity] FROM EXTERNAL PROVIDER; - User-Assigned マネージド ID にアクセス許可を付与します。 ASA_Job_Nameをユーザー割り当てのマネージドIDに置き換えます。
詳細については、前のセクションを参照してください。
マネージド ID を削除する
Stream Analytics ジョブ用に作成したマネージド ID は、ジョブを削除した場合にのみ削除します。 ジョブを削除しないと、マネージド ID を削除することはできません。 マネージド ID を使用しなくなった場合は、出力の認証方法を変更します。 マネージド ID は、ジョブを削除するまで存在し続け、マネージド ID 認証をもう一度使用する場合に使用されます。
次のステップ
- Azure Stream Analytics からの出力を理解する
- Azure SQL Database への Azure Stream Analytics の出力
- Azure Stream Analytics から Azure SQL Database へのスループットのパフォーマンスを向上させる
- Azure Stream Analytics ジョブに SQL Database からの参照データを使用する
- Azure FUNCTIONS を使用して Azure SQL Database のレコードを更新またはマージする
- クイック スタート: Azure Portal を使用して Stream Analytics ジョブを作成する