マネージド ID を使用して Azure Stream Analytics ジョブから Azure SQL Database または Azure Synapse Analytics にアクセスする

Azure Stream Analytics は、Azure SQL Database および Azure Synapse Analytics の出力シンクに対してマネージド ID 認証をサポートしています。 マネージド ID を使用すると、パスワードの変更や 90 日ごとに発生するユーザー トークンの有効期限切れによる再認証の必要性など、ユーザー ベースの認証方法に伴う制限がなくなります。 手動による認証の必要がなくなると、Stream Analytics のデプロイを完全に自動化できます。

マネージド ID は、特定の Stream Analytics ジョブを表す Microsoft Entra ID に登録されているマネージド アプリケーションです。 マネージド アプリケーションは、対象のリソースに対する認証を行うために使用されます。 この記事では、Azure portal を使用して、Stream Analytics ジョブの Azure SQL Database または Azure Synapse Analytics の出力に対してマネージド ID を有効にする方法を示します。

概要

この記事では、マネージド ID 認証モードを使用して Stream Analytics ジョブを Azure SQL Database または Azure Synapse Analytics SQL プールに接続するために必要な手順について説明します。

  • まず、Stream Analytics ジョブに対するシステム割り当てのマネージド ID を作成します。 これは、Microsoft Entra ID でのユーザーのジョブの ID です。

  • SQL サーバーまたは Synapse ワークスペースに Active Directory 管理者を追加します。これにより、そのリソースに対して Microsoft Entra ID (マネージド ID) 認証が有効になります。

  • 次に、データベース内の Stream Analytics ジョブの ID を表す包含ユーザーを作成します。 Stream Analytics ジョブは、SQL DB または Synapse SQL DB リソースと対話するときは常に、この ID を参照して、Stream Analytics ジョブにどのようなアクセス許可があるかを確認します。

  • SQL Database または Synapse SQL プールにアクセスするための許可を Stream Analytics ジョブに付与します。

  • 最後に、Azure SQL Database または Azure Synapse Analytics を出力として Stream Analytics ジョブに追加します。

前提条件

この機能を使用するには、次のものが必要です。

  • Azure Stream Analytics ジョブ。

  • Azure SQL Database リソース。

マネージド ID の作成

まず、Azure Stream Analytics ジョブに対するマネージド ID を作成します。

  1. Azure portal で、Azure Stream Analytics ジョブを開きます。

  2. 左側のナビゲーション メニューから、 [構成] の下にある [マネージド ID] を選択します。 次に、 [システム割り当てマネージド ID を使用] のチェック ボックスをオンにして、 [保存] を選択します。

    Select system-assigned managed identity

    Stream Analytics ジョブの ID 用のサービス プリンシパルが Microsoft Entra ID に作成されます。 新しく作成された ID のライフ サイクルは、Azure によって管理されます。 Stream Analytics ジョブが削除されると、関連付けられた ID (つまりサービス プリンシパル) も Azure によって自動的に削除されます。

  3. ユーザー割り当てマネージド ID に切り替えることもできます。

  4. 構成を保存すると、サービス プリンシパルのオブジェクト ID (OID) が、次に示すようにプリンシパル ID として表示されます。

    Object ID shown as Principal ID

    サービス プリンシパルは、Stream Analytics ジョブと同じ名前を持ちます。 たとえば、ジョブの名前が MyASAJob であれば、サービス プリンシパルの名前も MyASAJob になります。

Active Directory 管理者を選択する

マネージド ID を作成した後は、Active Directory 管理者を選択します。

  1. Azure SQL Database または Azure Synapse Analytics SQL プール リソースに移動し、リソースがある SQL Server または Synapse ワークスペースをそれぞれ選択します。 これらへのリンクは、リソースの概要ページの [サーバー名] または [ワークスペース名] の横にあります。

  2. SQL Server と Synapse ワークスペースについてそれぞれ、 [設定] の下にある [Active Directory 管理者] または [SQL Active Directory 管理者] を選択します。 次に、 [管理者の設定] を選択します。

    Active Directory admin page

  3. Active Directory 管理者ページで、SQL Server の管理者にするユーザーまたはグループを探して、 [選択] をクリックします。 これは、次のセクションで包含データベース ユーザーを作成することができるユーザーです。

    Add Active Directory admin

    [Active Directory 管理者] ページには、Active Directory のメンバーとグループがすべて表示されます。 淡色表示されているユーザーまたはグループは、Microsoft Entra 管理者としてサポートされていないため、選択できません。 SQL Database または Azure Synapse での認証に対する Microsoft Entra 認証の使用に関する記事の「Microsoft Entra の機能と制限事項」セクションで、サポートされている管理者の一覧をご覧ください。

  4. [Active Directory 管理者] ページの [保存] を選択します。 管理者を変更するプロセスには数分かかります。

包含データベース ユーザーを作成する

次に、Microsoft Entra の ID にマップされる Azure SQL または Azure Synapse データベースの包含データベース ユーザーを作成します。 包含データベース ユーザーは、プライマリ データベースに対するログインは持っていませんが、データベースに関連付けられているディレクトリ内の ID にマップされます。 Microsoft Entra の ID は、個人のユーザー アカウントでもグループでもかまいません。 この場合は、Stream Analytics ジョブに対する包含データベース ユーザーを作成する必要があります。

詳しくは、SQL Database と Azure Synapse Analytics でのユニバーサル認証 (SSMS での MFA のサポート) に関する記事で、Microsoft Entra 統合の背景をご覧ください

  1. SQL Server Management Studio を使用して Azure SQL または Azure Synapse データベースに接続します。 [ユーザー名] は、ALTER ANY USER アクセス許可を持っている Microsoft Entra ユーザーです。 たとえば、SQL Server で設定した管理者です。 [Microsoft Entra ID - MFA で汎用] を使います。

    Connect to SQL Server

    サーバー名 <SQL Server name>.database.windows.net は、リージョンによって異なる場合があります。 たとえば、中国リージョンでは <SQL Server name>.database.chinacloudapi.cn を使用する必要があります。

    [オプション] > [接続プロパティ] > [データベースへの接続] に移動することで、特定の Azure SQL または Azure Synapse データベースを指定できます。

    SQL Server connection properties

  2. 初めて接続するときは、次のようなウィンドウが表示される場合があります。

    New firewall rule window

    1. その場合は、Azure portal で SQL Server または Synapse ワークスペース リソースに移動します。 [セキュリティ] セクションで、 [ファイアウォールと仮想ネットワーク] / [ファイアウォール] ページを開きます。
    2. 任意の規則名で新しい規則を追加します。
    3. "開始 IP" には [新しいファイアウォール規則] ウィンドウの "開始" IP アドレスを使用します。
    4. "終了 IP" には [新しいファイアウォール規則] ウィンドウの "終了" IP アドレスを使用します。
    5. [保存] を選択し、SQL Server Management Studio から再び接続を試みます。
  3. 接続したら、包含データベース ユーザーを作成します。 次の SQL コマンドを使用して、Stream Analytics ジョブと同じ名前の包含データベース ユーザーを作成します。 ASA_JOB_NAME の前後を角かっこで必ず囲みます。 次の T-SQL 構文を使用して、クエリを実行します。

    CREATE USER [ASA_JOB_NAME] FROM EXTERNAL PROVIDER;
    

    包含データベース ユーザーが正しく追加されたかどうかを確認するには、関連するデータベースにおいて SSMS で次のコマンドを実行して、 ASA_JOB_NAME が [名前] 列の下にあるかどうかを確認します。

    SELECT * FROM <SQL_DB_NAME>.sys.database_principals
    WHERE type_desc = 'EXTERNAL_USER'
    
  4. Stream Analytics ジョブに SQL Database へのアクセス権があるかどうかを Microsoft の Microsoft Entra ID で確認するため、データベースと通信するためのアクセス許可を Microsoft Entra に付与する必要があります。 これを行うには、Azure portal の [ファイアウォールと仮想ネットワーク] / [ファイアウォール] ページに再び移動し、[Azure サービスおよびリソースにこのサーバー/ワークスペースへのアクセスを許可する] を有効にします。

    Firewall and virtual network

Stream Analytics ジョブにアクセス許可を付与する

前のセクションで説明したように、包含データベース ユーザーを作成し、ポータルで Azure サービスへのアクセス許可を付与すると、Stream Analytics ジョブには、マネージド ID を介して Azure SQL Database リソースに接続するためのマネージド ID からのアクセス許可が付与されます。 SELECT および INSERT のアクセス許可を Stream Analytics ジョブに付与することをお勧めします。これらは後で Stream Analytics ワークフローで必要になるためです。 SELECT のアクセス許可により、ジョブは Azure SQL Database 内のテーブルへの接続をテストできます。 INSERT のアクセス許可により、入力と Azure SQL Database の出力を構成した後に、エンドツーエンドの 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 データベースを右クリックし、[プロパティ] > [アクセス許可] を選択します。 アクセス許可のメニューから、前に追加した 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 ジョブに追加するときに入力する必要がある必須プロパティの 1 つです。 また、接続をテストして Stream Analytics クエリを実行するための SELECT および INSERT のアクセス許可がジョブにあることを確認します。 まだ行っていない場合は、「Stream Analytics ジョブにアクセス許可を付与する」セクションを参照してください。

  1. Stream Analytics ジョブに戻り、 [ジョブ トポロジ] の下にある [出力] ページに移動します。

  2. [追加] > [SQL Database] を選択します。 SQL Database 出力シンクの出力プロパティ ウィンドウで、[認証モード] ドロップダウンから [マネージド ID] を選択します。

  3. 残りのプロパティを入力します。 SQL Database 出力の作成の詳細については、Stream Analytics での SQL Database 出力の作成に関する記事を参照してください。 終わったら、 [保存] を選択します。

  4. [保存] をクリックすると、リソースへの接続テストが自動的にトリガーされます。 正常に完了したら、マネージド ID 認証モードを使用して Azure SQL Database または Synapse SQL Database に接続するように Stream Analytics ジョブが正常に構成されています。

SQL 参照データの追加手順

Azure Stream Analytics では、SQL 参照データを使用するときにジョブのストレージ アカウントを構成する必要があります。 このストレージ アカウントは、SQL の参照データのスナップショットなど、Stream Analytics ジョブに関連するコンテンツを保存するために使用されます。

次の手順に従って、関連付けられたストレージ アカウントを設定します。

  1. [Stream Analytics ジョブ] ページの左側のメニューで、[構成][ストレージ アカウントの設定] を選びます。

  2. [ストレージ アカウントの設定] ページで、[ストレージ アカウントの追加] を選びます。

  3. 手順に従って、ストレージ アカウントの設定を構成します。

    Screenshot of the Storage account settings page of a Stream Analytics job.

重要

  • 接続文字列を使って認証を行うには、ストレージ アカウントのファイアウォールの設定を無効にする必要があります。
  • マネージド ID で認証するには、Stream Analytics ジョブを、ストレージ BLOB データ共同作成者ロールとストレージ テーブル データ共同作成者ロール用のストレージ アカウントのアクセス制御リストに追加する必要があります。 ジョブにアクセス権を付与しない場合は、そのジョブではどのような操作も実行できなくなります。 アクセス権を付与する方法に関する詳細については、「Azure RBAC を使用して他のリソースにマネージド ID アクセスを割り当てる」を参照してください。

ユーザー割り当てマネージド ID を使用した追加の手順

ASA を Synapse に接続するためにユーザー割り当てマネージド ID を選択した場合は、この手順を繰り返します。

  1. 包含データベース ユーザーを作成します。 ASA_Job_Name をユーザー割り当てマネージド ID に置き換えます。 次の例を見てください。
    CREATE USER [User-Assigned Managed Identit] FROM EXTERNAL PROVIDER;
    
  2. ユーザー割り当てマネージド ID にアクセス許可を付与します。 ASA_Job_Name をユーザー割り当てマネージド ID に置き換えます。

詳細については、上記のセクションを参照してください。

マネージド ID の削除

Stream Analytics ジョブに対して作成されたマネージド ID は、ジョブが削除されたときにのみ削除されます。 ジョブを削除せずにマネージド ID を削除することはできません。 マネージド ID を使用する必要がなくなった場合は、出力の認証方法を変更できます。 マネージド ID は、ジョブが削除されるまで存在し続け、マネージド ID の認証を再度使用する場合に使用されます。

次のステップ