Azure Data Studio - Azure の接続性

Azure Data Studio では、Microsoft 認証ライブラリ (MSAL) が既定で使用され、Microsoft Entra ID からアクセス トークンが取得されます。 Microsoft Entra 認証に適用される設定と、一般的に観察される問題とその解決策について説明します。

Note

Microsoft Entra ID はAzure Active Directory (Azure AD) の新しい名前ですが、既存の環境の中断を防ぐために、UI フィールド、接続プロバイダー、エラー コード、コマンドレットなど、ハードコーディングされた一部の要素でAzure AD が残ります。 この記事では、2 つの名前は交換可能です。

Azure: 認証ライブラリ

この設定は、Azure Data Studio 1.41 から 1.45 でのみ使用できます。 Azure Data Studio 1.46 以降のバージョンでは使用できなくなりました。

この設定は、Microsoft Entra アカウントを追加するときに Azure Data Studio によって使用される認証ライブラリを制御します。 Microsoft 認証ライブラリ (MSAL) は、OAuth 2.0 と OpenID Connect (OIDC) 1.0 の標準に準拠した実装を使用して、認証と認可のサービスを提供します。 詳細については、Microsoft 認証ライブラリ (MSAL) に関する記事を参照してください。 Azure Data Studio 1.46 以降のバージョンでは、使用されている唯一のライブラリは MSAL であり、ADAL (Active Directory 認証ライブラリ) は非推奨です。

Azure の認証方法

Azure Data Studio では、次のモードを使用した Microsoft Entra 多要素認証 (MFA) がサポートされています。

  • コード付与認証の使用 (既定で有効)
  • デバイス コード認証の使用

アカウント > Azure > 認証: コード付与

Settings.json

"accounts.azure.auth.codeGrant": true

Screenshot of Azure authentication Code Grant option.

[Code Grant method] (コード付与方法) をオンにすると、ユーザーはブラウザー ベースの認証で認証するように求められます。 既定では、このオプションは有効になっています。

アカウント > Azure > 認証: デバイス コード

Settings.json

"accounts.azure.auth.deviceCode": true

Screenshot of Azure authentication Device Code option.

[Device Code method] (デバイス コード方法) が有効になっている場合、ユーザーには、入力することでサインインに使用できるコードと URL が提供されます。

両方のオプションがチェックされると、Microsoft Entra アカウントを追加するときに、2 つの認証モードのいずれかを選択するように求められます。

Azure クラウドの構成

Azure Data Studio では、各国のクラウドでの Microsoft Entra 認証がサポートされています。 既定では Azure パブリック クラウド が有効になっていますが、ユーザーは必要に応じて他の国のクラウドを有効にすることができます。

Settings.json

"accounts.azure.cloud.enableChinaCloud": false,
"accounts.azure.cloud.enablePublicCloud": true,
"accounts.azure.cloud.enableUsGovCloud": false

Screenshot of Azure authentication National Clouds.

また、カスタム クラウド エンドポイントを定義することもできます。 「カスタム クラウド エンドポイントの構成」を参照してください。

Azure リソース構成

これらの設定によって、Azure のリソースとテナントにフィルターが適用されます。

  • リソース構成フィルター: 表示する必要があるリソースに包含フィルターが適用されます。
  • テナント構成フィルター: 無視する必要があるテナントに除外フィルターが適用されます。

Settings.json

"azure.resource.config.filter": [],
"azure.tenant.config.filter": [
    "313b5f9e-9b92-414c-8d87-a317e42d0222"
]

Screenshot of Azure authentication resource configuration options.

Microsoft Entra 認証のプロキシセットアップ

プロキシの背後で Azure Data Studio を使用する場合、ユーザーは Azure Data Studio が外部エンドポイントと通信するためのプロキシ設定を指定する必要があります。 Azure Data Studio で使用するプロキシ設定を提供するには、次の 2 つの方法があります。

  • Azure Data Studio でプロキシ構成を設定する ([設定] > [Http: プロキシ設定])、または
  • プロキシ構成の環境変数を設定する

Azure Data Studio の設定は、環境変数よりも優先されます。

Azure Data Studio のプロキシ設定

次の設定を、Azure Data Studio で利用できます。

Settings.json

"http.proxy": "https://userName@fqdn:yourPassword@yourProxyURL.com:8080",
"http.proxyStrictSSL": true,
"http.proxyAuthorization": "",
"http.proxySupport" : "override"

Screenshot of Azure authentication proxy settings.

プロキシでサポートされている環境変数

  • 'HTTP_PROXY': 'http://userName@fqdn:yourPassword@yourProxyURL.com:8080'
  • 'HTTPS_PROXY': 'https://userName@fqdn:yourPassword@yourProxyURL.com:8080'

許可リストの URL

プロキシ環境では、Azure Data Studio で使用される特定のドメインをユーザー アプリケーションで許可する必要がある場合があります。 通信の許可が必要となると思われるホスト名は次のとおりです。

Azure Public

  • https://management.azure.com
  • https://login.microsoftonline.com/

Azure (US Government)

  • https://management.core.usgovcloudapi.net/
  • https://login.microsoftonline.us/

21Vianet 運営による Azure

  • https://management.core.chinacloudapi.cn/
  • https://login.partner.microsoftonline.cn/

許可する URL は、状況によって異なる場合があります。 ブロックされている URL がないことを確認するには、[ヘルプ] > [開発者ツールの切り替え] の順に移動し、[ネットワーク] タブを選択します。ブロックされているすべての URL が一覧表示され、それらの URL がアカウントを正常に追加できるようにする必要がある場合があります。

カスタム クラウド エンドポイントの構成

Azure Data Studio 1.46 では、非パブリック クラウドのカスタム エンドポイントを追加するためのサポートが導入されています。

カスタム クラウド エンドポイントの追加

Azure Data Studio で[設定] を開き ([Ctrl/Cmd + Shift + P])、「Azure: Custom Provider 設定」と入力し、[settings.json で編集] を選択すると、settings.json ファイルが自動的に開き、次のように azure.customProviderSettings が追加されます。

Screenshot of azure.customProviderSettings added to settings.json file.

エンドポイントを機能させるには、次のエントリが必要です。

  • host
  • clientId
  • scopes
  • sqlResource
  • microsoftResource
  • armResource
  • graphResource
  • azureStorageResource

1 つのプロバイダーの JSON エントリの例をガイドとして次に示します。

"azure.customProviderSettings": [
    {
        "name": "Azure Custom",
        "settings": {
            "metadata": {
                "displayName": "Azure Custom Cloud",
                "id": "azure_customCloud",
                "endpoints": {
                    "host": "https://hostendpoint.com/",
                    "clientId": "test",
                    "microsoftResource": "https://microsoftresource.com/",
                    "graphResource": "https://graphresource.com/",
                    "msGraphResource": "https://msgraphresource.com/",
                    "armResource": "https://armresource.com/",
                    "sqlResource": "https://sqlresource.net/",
                    "azureKeyVaultResource": "https://azurekeyvault.net/",
                    "azureLogAnalyticsResource": "https://azure.loganalytic.io/",
                    "azureStorageResource": {
                        "endpoint": "",
                        "endpointSuffix": ".azurestorage.net/"
                    },
                    "azureKustoResource": "https://kusto.net/",
                    "powerBiResource": "https://powerbi.net/",
                    "scopes": "https://management.net/scopes",
                    "portalEndpoint": "https://portal.azure.com"
                }
            }
        }
    }
]

エンドポイントを追加した後、settings.json ファイルを保存します。 Azure Data Studio から、アプリケーションを再読み込みするように通知されます。 再読み込みが完了すると、カスタム エンドポイントが読み込まれたことが通知されます。

Screenshot after reloading Azure Data Studio indicating custom endpoints have been loaded.

このメッセージが表示されない場合は、エンドポイントのすべてのエントリが存在し、入力されていることを確認します。

カスタム クラウドを追加した後、[Azure のリンクされたアカウント] ウィンドウを開くと、カスタム クラウド ビューレットが表示されます。 [アカウントの追加] を選択し、メッセージが表示されたら認証モードを選択します。 認証を行うには、ホスト エンドポイントに移動します。

Screenshot of a custom cloud provider in the Azure accounts pane.

複数のカスタム クラウド プロバイダー

同じ形式を使用して、追加のクラウド プロバイダーを settings.json ファイルに追加できます。

"azure.customProviderSettings": [
    {
        "name": "Azure Custom",
        "settings": {
            "metadata": {
                "displayName": "Azure Custom Cloud",
                "id": "azure_customCloud",
                "endpoints": {
                    "host": "https://hostendpoint.com/",
                    "clientId": "test",
                    "microsoftResource": "https://microsoftresource.com/",
                    "graphResource": "https://graphresource.com/",
                    "msGraphResource": "https://msgraphresource.com/",
                    "armResource": "https://armresource.com/",
                    "sqlResource": "https://sqlresource.net/",
                    "azureKeyVaultResource": "https://azurekeyvault.net/",
                    "azureLogAnalyticsResource": "https://azure.loganalytic.io/",
                    "azureStorageResource": {
                        "endpoint": "",
                        "endpointSuffix": ".azurestorage.net/"
                    },
                    "azureKustoResource": "https://kusto.net/",
                    "powerBiResource": "https://powerbi.net/",
                    "scopes": "https://management.net/scopes",
                    "portalEndpoint": "https://portal.azure.com"
                }
            }
        }
    },
    {
        "name": "Azure Custom 2",
        "settings": {
            "metadata": {
                "displayName": "Azure Custom Cloud 2",
                "id": "azure_customCloud2",
                "endpoints": {
                    "host": "https://hostendpoint.com/",
                    "clientId": "test",
                    "microsoftResource": "https://microsoftresource.com/",
                    "graphResource": "https://graphresource.com/",
                    "msGraphResource": "https://msgraphresource.com/",
                    "armResource": "https://armresource.com/",
                    "sqlResource": "https://sqlresource.net/",
                    "azureKeyVaultResource": "https://azurekeyvault.net/",
                    "azureLogAnalyticsResource": "https://azure.loganalytic.io/",
                    "azureStorageResource": {
                        "endpoint": "",
                        "endpointSuffix": ".azurestorage.net/"
                    },
                    "azureKustoResource": "https://kusto.net/",
                    "powerBiResource": "https://powerbi.net/",
                    "scopes": "https://management.net/scopes",
                    "portalEndpoint": "https://portal.azure.com"
                }
            }
        }
    }
]

認証に関する一般的な問題

Azure アカウントを追加するときに考えられる問題と解決策について説明します。

問題: localhost ページの SSL エラー (ERR_SSL_PROTOCOL_ERROR)

ユーザーがアカウントにサインインすると、SSL エラーが表示される場合があります。 このフローでは、localhost の外部 Web ページが開きます。通常は、ユーザーに標準の Microsoft 認証プロンプトを使用してサインインするように求められます。 このページの URL は http://localhost:50055/signin?nonce=... のようになります

一部のブラウザーで、すべての http リンクを https に自動的にリダイレクトするように設定されている場合があります。この場合、Web ページを提供するローカル サーバーが https をサポートしていないため、このプロセスが中断します。 アドレス バーのリンクが https で始まる場合は、SSL エラーが発生し、ページを読み込めません。 その場合、ここに記載されている回避策で問題が解決される可能性があります。

URL を http に変更する

まず、URL を https:// から http:// に手動で変更します。 ブラウザーによって https に戻される場合があります。その場合は、別のオプションを試す必要があります。

HSTS (HTTP Strict Transport Security) を無効にする

Edge または Chrome ブラウザーの場合、localhost の HSTS を無効にすることができます。

  1. Edge または Chrome を開き、アドレス バーに「edge://net-internals/#hsts」と入力します (または Chrome の場合は chrome://net-internals/#hsts)。
  2. ページの下部までスクロールし、Delete domain security policies セクションに「localhost」と入力して Delete を押します。

完了すると、サインインでき、ブラウザーが localhost リンクを https に自動的にリダイレクトしなくなるはずです。

問題: プロキシの背後にアカウントを追加できない

ユーザー アプリケーションがプロキシの背後にある環境で実行されている場合、ユーザー認証が完了しないことがありますが、次の手順を使用して問題を解決できます。

  1. Azure Data Studio の環境変数と http.proxy 設定をチェックします。 プロキシでユーザー認証が必要な場合、http.proxy URL でユーザー名/パスワードを指定すると認証の問題が解決する可能性があります。それ以外の場合、Azure Data Studio はログインしているユーザー資格情報を読み取ることはできません。 または、Azure Data Studio を別のユーザーとして実行することもできます。これは、プロキシに関する認証の問題を解決するのに役立つ場合があるためです。 ただし、後者は一部のシナリオでのみ機能します。

  2. 許可する URL は、状況によって異なる場合があります。 ブロックされている URL がないことを確認するには、[ヘルプ] > [開発者ツールの切り替え] の順に移動し、[ネットワーク] タブを選択します。ここにブロックされているすべての URL が表示され、アカウントを正常に追加できるようにする必要がある場合があります。

  3. [Http: Proxy Strict SSL] (Http: プロキシ Strict SSL) をオフにします。 信頼された CA の一覧に対してプロキシ証明書を検証できない可能性があります。 Strict SSL を無効にすると、プロキシ証明書が問題として除外される可能性があります。

結論:

クロスプラットフォーム アプリケーションとして、Azure Data Studio プロキシ解決は、アプリケーション内の設定または環境変数を使用してプロキシをフェッチします。 目的は、オペレーティング システムによって大きく異なる可能性があるシステム設定との対話を回避することです。

問題: Azure Core 拡張機能が無効になっている

Azure Core 拡張機能は、Azure Data Studio の組み込み拡張機能です。 無効にしたり、誤ってアンインストールしたりしていないことを確認します。 この拡張機能は、Microsoft Entra アカウントを認証し、MFA を使用してリソースに接続するために必要です。

Screenshot of built-in Azure Core extension.

問題: システム CA 証明書の有効期限が切れている

Azure Data Studio の既定の動作には、HTTPS プロトコルを使用して REST API 呼び出しを行うときの、システムのルート CA 証明書の検証が含まれています。 検証は、既定で有効になっている http:systemCertificates 設定で制御されます。

Screenshot of system certificates setting.

"http.systemCertificates": true

システムのルート CA 証明書の有効期限が切れている場合、Microsoft Entra ID に対する認証要求は失敗し、Azure アカウント ログにエラーがキャプチャされます。

error: certificate is expired

このエラーを軽減するには、期限切れのルート CA 証明書を削除するか、設定を無効にして、システム証明書を検証しないようにする必要があります。

Azure 認証のログをキャプチャする

Azure Data Studio では、Microsoft Entra アカウント アクティビティのエラー イベントが既定でキャプチャされます。 より詳細なトレースを有効にするために、ユーザーはこれらの設定を変更できます。

Azure: ログ レベル

この設定では、Azure Data Studio でキャプチャできる Azure コアからの情報のログ レベルが構成されます。 認証エラーの診断に役立つ詳細なログをキャプチャするには、[詳細] または [すべて] に変更します。 詳細については、ログ情報をキャプチャする方法については、 「Azure Data Studio のログと場所」を参照してください。

Settings.json

"azure.loggingLevel": "Verbose"

Screenshot of Azure authentication logging Level configuration.

Azure: PII ログ

ユーザーは、ローカル テストとデバッグのために PII (個人を特定できる情報) のログを有効にすることができます。 この設定により、認証プロセスをより詳細にログに記録できますが、Microsoft Entra ID で認証するときに、アクセス トークンやユーザー ID などの機密情報が含まれる場合があります。 このログでは機密情報がキャプチャされるため、次を行うことをお勧めします。

  • 特に GitHub の issue にログを追加する場合は、これらのログを他のユーザーと共有しないでください
  • 必要な情報が収集されたら、設定を無効にしてください
  • 設定が無効になったら、ログ ファイルを削除してください

Settings.json

"azure.piiLogging": true

Screenshot of Azure authentication PII logging option.

Azure: システム キーチェーンなし

この設定により、システム キーチェーン統合が無効にされ、macOS でキーチェーン アクセス プロンプトが繰り返し表示されなくなります。 ユーザー資格情報は、ユーザーのホーム ディレクトリ内のフラット ファイルに格納することもできます。

Settings.json

"azure.noSystemKeychain": true

Screenshot of Azure authentication keychain configuration.

Microsoft Entra アカウント トークン キャッシュをクリアする

Azure Data Studio メインには、Microsoft Entra ID へのトークン要求の調整を防ぐために、アクセス トークンのキャッシュが含まれています。 Azure Data Studio のトークン キャッシュが古くなっている可能性があるため、アプリケーション キャッシュから期限切れのアクセス トークンをクリーンアップする必要があります。

コマンド パレット (Ctrl/CMD + Shift + P) から次のコマンドを実行して、リンクされた Microsoft Entra アカウントのアクセス トークンをクリアします。

Azure Accounts: Clear Azure Account Token Cache (accounts.clearTokenCache)

保存したすべての Microsoft Entra アカウントをクリアする

コマンド パレット (Ctrl/CMD + Shift + P) から次のコマンドを実行して、リンクされているすべての Microsoft Entra アカウントを Azure Data Studio から削除します。

保存されたすべてのアカウントをクリアする (clearSavedAccounts)