次の方法で共有


Azure Data Factory および Synapse Analytics でのセキュリティとアクセス制御に関するイシューのトラブルシューティング

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

この記事では、Azure Data Factory および Synapse Analytics パイプラインでのセキュリティとアクセス制御に対する一般的なトラブルシューティングの方法について説明します。

一般的なエラーとメッセージ

クラウド データストアのコピー アクティビティにおける接続の問題

現象

ソースまたはシンクのデータストアで接続の問題が発生すると、さまざまなエラー メッセージが返されることがあります。

原因

この問題は、通常、次のいずれかの要因が原因で発生します。

  • セルフホステッド統合ランタイム (IR) を使用している場合は、セルフホステッド IR ノードのプロキシ設定。

  • セルフホステッド IR を使用している場合は、セルフホステッド IR ノードのファイアウォール設定。

  • クラウド データストアのファイアウォール設定。

解決方法

  • これが接続の問題であることを確認するには、次の点をチェックしてください。

    • エラーは、ソースまたはシンク コネクタからスローされている。
    • 障害は、コピー アクティビティの開始時に発生している。
    • 障害は、Azure IR、または 1 つのノードのセルフホステッド IR で一貫している。これは、一部のノードのみに問題がある場合、複数ノードのセルフホステッド IR でランダムに障害が発生している可能性があるからです。
  • セルフホステッド IR を使用している場合は、プロキシ、ファイアウォール、およびネットワークの設定を確認してください。これは、Azure IR を使用している場合、同じデータストアへの接続が成功する可能性があるからです。 このシナリオのトラブルシューティングを行うには、次を参照してください。

  • Azure IR を使用している場合は、データストアのファイアウォール設定を無効にしてみてください。 この方法で、次の 2 つの状況における問題を解決できます。

    • Azure IR の IP アドレスが許可リストに載っていません。
    • [信頼された Microsoft サービスによるこのストレージ アカウントに対するアクセスを許可します] 機能が Azure Blob Storage および Azure Data Lake Storage Gen 2 に対してオフになっている。
    • [Azure サービスへのアクセスを許可する] 設定が Azure Data Lake Storage Gen1 に対してオンになっていない。

前述のいずれの方法も機能しない場合は、Microsoft にお問い合わせください。

プライベート エンドポイントを削除または拒否しても、ADF で承認済みと表示される

現象

ADF からマネージド プライベート エンドポイントを作成し、承認済みのプライベート エンドポイントを取得しました。 しかし、後でプライベート エンドポイントを削除または拒否した後も、ADF のマネージド プライベート エンドポイントは引き続き存在し、"承認済み" と表示されます。

原因

現在、ADF は承認後にプライベート エンドポイントの状態のプルを停止します。 そのため、ADF に表示される状態は古くなっています。

解像度

既存のプライベート エンドポイントがソースまたはシンク データセットから拒否または削除されたら、ADF のマネージド プライベート エンドポイントを削除する必要があります。

パブリック ネットワーク アクセスを無効にした後に認証キーが無効または空である

現象

サービスのパブリック ネットワーク アクセスを無効にした後、セルフホステッド統合ランタイムによって次のエラーがスローされます。The Authentication key is invalid or empty. または Cannot connect to the data factory. Please check whether the factory has enabled public network access or the machine is hosted in a approved private endpoint Virtual Network.

原因

パブリック接続を無効にしてプライベート エンドポイントを確立すると再接続ができないので、この問題は、ドメイン ネーム システム (DNS) の解決の問題が原因である可能性が最も高くなります。

サービスの完全修飾ドメイン名 (FQDN) がパブリック IP アドレスに解決されるかどうかを確認するには、次の手順を実行します。

  1. サービスのプライベート エンドポイントと同じ仮想ネットワーク内に Azure 仮想マシン (VM) が作成されていることを確認します。

  2. Azure VM からサービスの FQDN に対して PsPing と Ping を実行します。

    psping.exe <dataFactoryName>.<region>.datafactory.azure.net:443 ping <dataFactoryName>.<region>.datafactory.azure.net

    Note

    PsPing コマンドのポートを指定する必要があります。 ここではポート 443 が示されていますが、必須ではありません。

  3. 両方のコマンドが、指定されたリージョンに基づいた Azure Data Factory のパブリック IP に解決されるかどうかを確認します。 IP は、xxx.xxx.xxx.0 の形式にする必要があります。

解決方法

この問題を解決するには、以下の手順を実行します。

  • オプションとして、サービスの "プライベート リンク DNS ゾーン" の下に "仮想ネットワークのリンク" を手動で追加することをお勧めします。 詳細については、Azure Private Link に関する記事を参照してください。 この手順では、プライベート DNS ゾーンまたはカスタム DNS サーバーを構成して、サービスの FQDN をプライベート IP アドレスに解決します。

  • ただし、プライベート DNS ゾーンまたはカスタム DNS サーバーを構成したくない場合は、次の一時的なソリューションを試してください。

    1. Windows で host ファイルを変更し、プライベート IP (サービスのプライベート エンドポイント) をサービスの FQDN にマップします。

      Azure VM で C:\Windows\System32\drivers\etc にアクセスし、メモ帳で host ファイルを開きます。 プライベート IP を FQDN にマップする行をファイルの末尾に追加し、変更を保存します。

      プライベート IP からホストへのマップのスクリーンショット。

    2. 前の検証手順と同じコマンドを再実行して、応答を確認します。プライベート IP が含まれているはずです。

    3. セルフホステッド統合ランタイムを再登録すると、問題が解決されるはずです。

現象

プライベート リンクが有効になっているため、セルフホステッド VM 上で IR の認証キーを登録できません。 次のエラー メッセージが表示されます。

"キー *************** を使用して ADF サービスからサービス トークンを取得できませんでした。時間コスト: 0.1250079 秒、エラー コード: InvalidGatewayKey、アクティビティ ID: XXXXXXX、エラー メッセージの詳細: クライアント IP アドレスは有効なプライベート IP ではありません。原因: Data Factory のパブリック ネットワーク IP にアクセスできなかったため、クラウドにアクセスして正常に接続を確立できませんでした。"

原因

この問題は、セルフホステッド IR をインストールしようとしている VM が原因で発生する可能性があります。 クラウドに接続するには、パブリック ネットワーク アクセスが有効になっていることを確認します。

解決方法

解決策 1

この問題を解決するには、以下の手順を実行します。

  1. ファクトリ - 更新に関するページにアクセスします。

  2. 右上にある [試してみる] ボタンを選択します。

  3. [パラメーター] で、必要な情報を入力します。

  4. [本文] で、次のプロパティを貼り付けます。

    { "tags": { "publicNetworkAccess":"Enabled" } }
    
  5. [実行] を選択して、関数を実行します。

  6. [パラメーター] で、必要な情報を入力します。

  7. [本文] で、次のプロパティを貼り付けます。

    { "tags": { "publicNetworkAccess":"Enabled" } }
    
  8. [実行] を選択して、関数を実行します。

  9. 応答コード:200 が表示されていることを確認します。 貼り付けたプロパティも JSON 定義に表示されているはずです。

  10. 統合ランタイムで、IR 認証キーをもう一度追加します。

解決策 2

この問題を解決するには、Azure Private Link にアクセスします。

次のスクリーンショットに示すように、ユーザー インターフェイスでパブリック ネットワーク アクセスを有効にします。

サービスのプライベート DNS ゾーンで、"見つかりません" エラーの原因となっている Azure Resource Manager の DNS 解決が上書きされます

原因

Azure Resource Manager とサービスが両方とも同じプライベート ゾーンを使っています。これにより、お客様のプライベート DNS で競合が発生する可能性があり、Azure Resource Manager レコードが見つからないことがあります。

解決方法

  1. Azure portal でプライベート DNS ゾーン privatelink.azure.com を検索します。 プライベート DNS ゾーンの検索のスクリーンショット。
  2. A レコード adf があるかどうかを調べます。 A レコードのスクリーンショット。
  3. 仮想ネットワークのリンクにアクセスし、すべてのレコードを削除します。 仮想ネットワークのリンクのスクリーンショット。
  4. Azure portal でお使いのサービスに移動し、ポータル用のプライベート エンドポイントを再作成します。 プライベート エンドポイントの再作成のスクリーンショット。
  5. プライベート DNS ゾーンに戻り、新しいプライベート DNS ゾーン privatelink.adf.azure.com があるかどうかを調べます。 新しい DNS レコードのスクリーンショット。

パブリック エンドポイントでの接続エラー

現象

Azure Blob Storage アカウントのパブリック アクセスを使用してデータをコピーすると、パイプラインは次のエラーでランダムに失敗します。

例: Azure Blob Storage シンクで Azure IR (マネージド仮想ネットワークではなくパブリック) が使われており、Azure SQL Database ソースがマネージド仮想ネットワーク IR を使っていました。 または、ソースとシンクが、ストレージ パブリック アクセスでのみマネージド仮想ネットワーク IR を使っています。

<LogProperties><Text>Invoke callback url with req: "ErrorCode=AzureBlobFailedToCreateContainer,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Unable to create Azure Blob container. Endpoint: XXXXXXX/, Container Name: test.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=Microsoft.WindowsAzure.Storage.StorageException,Message=Unable to connect to the remote server,Source=Microsoft.WindowsAzure.Storage,''Type=System.Net.WebException,Message=Unable to connect to the remote server,Source=System,''Type=System.Net.Sockets.SocketException,Message=A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond public ip:443,Source=System,'","Details":null}}</Text></LogProperties>.

原因

サービスでは引き続きマネージド仮想ネットワーク IR を使用できますが、マネージド仮想ネットワークとマネージド プライベート エンドポイントに関する記事で説明されているように、マネージド仮想ネットワーク内の Azure Blob Storage へのパブリック エンドポイントにテスト結果に基づく信頼性がなく、Azure Blob Storage と Azure Data Lake Gen2 がサービスのマネージド仮想ネットワークからのパブリック エンドポイント経由の接続でサポートされていないため、このようなエラーが発生することがあります。

解決方法

  • マネージド仮想ネットワーク IR を使う場合は、ソース側と同じようにシンク側でもプライベート エンドポイントを有効にします。
  • それでもパブリック エンドポイントを使いたい場合は、ソースとシンクにマネージド仮想ネットワーク IR を使うのではなく、パブリック IR のみに切り替えることができます。 パブリック IR に戻した場合でも、マネージド仮想ネットワーク IR がまだ存在する場合は、サービスでマネージド仮想ネットワーク IR が引き続き使われる可能性があります。

カスタマー マネージド キー (CMK) とユーザー割り当てマネージド ID (UA-MI) を使用してデータ ファクトリまたは Synapse ワークスペースの削除を試みたときに発生する内部エラー

現象

{\"error\":{\"code\":\"InternalError\",\"message\":\"Internal error has occurred.\"}}

原因

CMK に関連する操作を実行する場合は、まずサービスに関連するすべての操作を完了してから、外部操作 (マネージド ID やキー コンテナーの操作など) を実行する必要があります。 たとえば、すべてのリソースを削除する場合は、まずサービス インスタンスを削除してから、キー コンテナーを削除する必要があります。 最初にキー コンテナーを削除すると、サービスが必要なオブジェクトを読み取れなくなるため、このエラーが発生し、削除が可能かどうかを検証できなくなります。

解決方法

この問題を解決する可能性のある 3 つの方法があります。 制限事項は次のとおりです。

  • CMK キーが格納されたキー コンテナーへのサービスのアクセスが取り消されました。 以下の権限へのアクセス許可は、再度割り当てることができます: 取得、キーのラップ解除、キーのラップ。 これらのアクセス許可は、カスタマー マネージド キーを有効にするために必要です。 カスタマー マネージド キーへのアクセスの許可に関する記事をご覧ください。 権限が付与されれば、サービスを削除することができます。

  • サービスを削除する前に、顧客によって Key Vault/CMK が削除されました。 サービス内の CMK では、「Soft Delete」を有効にし、既定のアイテム保持ポリシーが 90 日の「Purge Protect」を有効にしなければなりません。 削除されたキーを復元することができます。
    削除されたキーの回復削除されたキーの値に関する記事をご覧ください

  • サービスの前にユーザー割り当てマネージド ID (UA-MI) が削除されました。 REST API 呼び出しを使って、この状況から復旧できます。 これは、任意の http クライアントで、任意のプログラミング言語を使って行うことができます。 Azure 認証に関する REST API の呼び出しについてまだ何も設定していない場合、これを行う最も簡単な方法は Fiddler を使うことです。 次の手順のようにします。

    1. 次のような Method: GET URL を使用して、GET 呼び出しを行います: https://management.azure.com/subscriptions/YourSubscription/resourcegroups/YourResourceGroup/providers/Microsoft.DataFactory/factories/YourFactoryName?api-version=2018-06-01

    2. 別の名前で新しいユーザー マネージド ID を作成する必要があります (同じ名前でも機能する場合がありますが、念のため GET 応答とは異なる名前を使う方が安全です)

    3. encryption.identity プロパティと identity.userassignedidentities を変更して、新たに作成されたマネージド ID を指し示すようにします。 userAssignedIdentity オブジェクトから clientId と principalId を削除します。

    4. 同じ URL に対して PUT 呼び出しを行い新しい本文を渡します。 GET 応答で取得したすべての情報を、ID のみを変更して渡すことが重要です。 これを行わなければ、他の設定に対する意図しないオーバーライドが発生してしまいます。

    5. 呼び出しが成功すると、エンティティが再び表示され、削除をもう一度試すことができます。

セルフホステッド統合ランタイムの共有

異なるテナントからのセルフホステッド IR の共有がサポートされない

現象

UI からセルフホステッド IR を共有しようとしているときに、(異なるテナントにある) 他のデータ ファクトリを見つけますが、異なるテナントにあるデータ ファクトリ間でそれを共有することができません。

原因

複数のテナントにまたがってセルフホステッド IR を共有することはできません。

トラブルシューティングの詳細について、次のリソースを参照してください。