次の方法で共有


マネージド ID を使用して Azure Stream Analytics ジョブから Azure Cosmos DB にアクセスする

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

マネージド ID は、特定の Stream Analytics ジョブを表す Microsoft Entra ID に登録されているマネージド アプリケーションです。 マネージド アプリケーションは、対象のリソースに対する認証を行うために使用されます。 Azure Stream Analytics のマネージド ID の詳細については、「Azure Stream Analytics のマネージド ID」を参照してください。

この記事では、Azure portal を使用して Stream Analytics ジョブの Azure Cosmos DB 出力に対して、システム割り当てマネージド ID を有効にする方法について説明します。 システム割り当てのマネージド ID を有効にするには、まず Stream Analytics ジョブと Azure Cosmos DB リソースが必要です。

マネージド ID の作成

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

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

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

    システム割り当てマネージド ID

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

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

    プリンシパル ID

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

Azure Cosmos DB アカウントにアクセスするためのアクセス許可を Stream Analytics ジョブに付与する

Stream Analytics ジョブがマネージド ID を使用して Azure Cosmos DB にアクセスするには、作成したサービス プリンシパルに Azure Cosmos DB アカウントに対する特別なアクセス許可が必要です。 このステップでは、ストリーム分析ジョブのシステム割り当て管理対象 ID にロールを割り当てることができます。 Azure Cosmos DB には、マネージド ID に割り当てることが可能な複数の組み込みロールがあります。 このソリューションでは、次のロールを使用します。

組み込みのロール
Cosmos DB 組み込みデータ共同作成者

重要

Azure Cosmos DB データ プレーンの組み込みロールベースのアクセス制御 (RBAC) は、Azure portal を介して公開されません。 Cosmos DB の組み込みデータ共同作成者ロールを割り当てるには、Azure Powershell を使用してアクセス許可を付与する必要があります。 Microsoft Entra ID を使用した Azure Cosmos DB アカウントについてのロールベースのアクセス制御の詳細については、「Microsoft Entra ID を使用した Azure Cosmos DB アカウントのロールベースのアクセス制御の構成に関するドキュメント」をご覧ください。

次のコマンドを使用して、Azure Cosmos DB に対して ASA ジョブを認証できます。 $accountName$resourceGroupName は Azure Cosmos DB アカウント用で、$principalId は、前の手順で ASA ジョブの [ID] タブで取得した値です。 このコマンドを適切に動作させるには、Azure Cosmos DB アカウントに対する "共同作成者" アクセス権が必要です。

New-AzCosmosDBSqlRoleAssignment -AccountName $accountName -ResourceGroupName $resourceGroupName -RoleDefinitionId '00000000-0000-0000-0000-000000000002' -Scope "/" -PrincipalId $principalId

注意

グローバル レプリケーションまたはキャッシュの待機時間が原因で、アクセス許可が取り消されたり付与されたりすると、遅延が発生することがあります。 変更は 10 分以内に反映される必要があります。 テスト接続は最初に成功する可能性がありますが、アクセス許可が完全に伝達される前にジョブが開始されると失敗する可能性があります。

重要

CosmosDB アカウントがすべてのネットワークからの接続を受け入れるように構成されていない場合は、[パブリック Azure データセンター内からの接続を受け入れる] を選択する必要があります。

Azure Cosmos DB を出力として追加する

マネージド ID が構成されたので、Azure Cosmos DB リソースを出力としてStream Analytics ジョブに追加する準備ができました。 

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

  2. [Azure Cosmos DB の追加] を選択します。> 出力プロパティ ウィンドウで、Azure Cosmos DB アカウントを検索して選択し、[認証モード] ドロップダウン メニューから [マネージド ID: システム割り当て] を選択します。

  3. 残りのプロパティを入力し、 [保存] を選択します。

次のステップ