Databricks Git フォルダー (Repos) のプライベート Git 接続を設定する

Databricks Git フォルダーの Git サーバー プロキシについて学習し、構成します。これは、Databricks ワークスペースの Git フォルダーから、GitHub Enterprise Server、Azure DevOps Server、Bitbucket Server、GitLab のセルフマネージドで提供されるオンプレミス リポジトリに Git コマンドをプロキシできるようにする構成可能なサービスです。

Note

プレビュー期間中に Databricks Git Server Proxy を構成したユーザーは、最適なパフォーマンスを得るためにクラスターのアクセス許可をアップグレードする必要があります。 「グローバル CAN_ATTACH_TO アクセス許可を削除する」をご参照ください。

Databricks Git フォルダーの Git サーバー プロキシとは何ですか?

Git フォルダーの Databricks Git サーバー プロキシは、Azure Databricks ワークスペースからオンプレミスの Git サーバーに Git コマンドをプロキシできる機能です。

Databricks Git フォルダー (旧称 Repos) では、接続された Git リポジトリがフォルダーとして表されます。 これらのフォルダーの内容は、接続されている Git リポジトリに同期することでバージョン制御されます。 既定では、Git フォルダーはパブリック Git プロバイダー (パブリック GitHub、GitLab、Azure DevOps など) とのみ同期できます。 ただし、独自のオンプレミス Git サーバー (GitHub Enterprise Server、Bitbucket Server、GitLab セルフマネージドなど) をホストする場合は、ご利用の Git サーバーへのアクセスを Databricks に提供するために、Git フォルダーで Git サーバー プロキシを使用する必要があります。 Git サーバーは、Azure Databricks データ プレーン (ドライバー ノード) からアクセスできる必要があります。

Note

現在、Databricks Git フォルダーには、Databricks ノートブックとサブフォルダーと、他の資産の種類の特定のセットのみを含めることができます。 サポートされている資産の種類の現在のリストについては、「Git と Databricks Git フォルダーの統合に関する制限事項と FAQ」を参照してください。

Databricks Git フォルダーの Git サーバー プロキシはどのように動作しますか?

Databricks Git フォルダーの Git サーバー プロキシでは、Databricks コントロール プレーンから、ご利用の Databricks ワークスペースのコンピューティング プレーン内で実行されている "プロキシ クラスター" に Git コマンドをプロキシします。 ここでは、プロキシ クラスターとは、Databricks Git フォルダーからセルフホステッド Git リポジトリに Git コマンドのプロキシ サービスを実行するように設定されたクラスターです。 このプロキシ サービスは、Databricks コントロール プレーンから Git コマンドを受け取り、Git サーバー インスタンスに転送します。

次の図は、システム アーキテクチャ全体を示しています。

お客様のコンピューティング プレーンから実行するように Databricks Git フォルダーの Git サーバー プロキシを構成する方法を示す図

現在、Git サーバー プロキシでは、すべてのユーザーに対する CAN_ATTACH_TO アクセス許可が必要なくなりました。 既存のプロキシ クラスターを持つ管理者は、クラスター ACL アクセス許可を変更してこの機能を有効にできるようになりました。 これを有効にするには、次の手順を行います。

  1. サイドバーから [コンピューティング] を選択し、実行中の Git サーバー プロキシのコンピューティング エントリの横にある Kebab メニュー ケバブ メニューをクリックします。

    サイドバーから [コンピューティング] を選択し、Git プロキシ サーバーのコンピューティング リソースの右側にあるケバブを選択します

  2. ダイアログから、[すべてのユーザー][アタッチ可] エントリを削除します。

    ポップアップ表示されるモーダル ダイアログ ボックスで、[すべてのユーザー]、[アタッチ可能] の右側にある [X] をクリックします

Databricks Git フォルダーの Git サーバー プロキシはどのように設定しますか?

このセクションでは、Databricks Git フォルダーの Git サーバー プロキシ用に Git サーバー インスタンスを準備し、プロキシを作成して、構成を検証する方法について説明します。

開始する前に

プロキシを有効化する前に、次の前提条件と計画タスクを検討してください。

  • ワークスペースで Databricks Git フォルダー機能が有効になっています。
  • Git サーバー インスタンスは、Azure Databricks ワークスペースのコンピューティング プレーン VPC からのアクセスが可能であり、HTTPS と個人用アクセス トークン (PAT) の両方が有効になっています。

Note

Git Server Proxy for Databricks は、VPC でサポートされているすべてのリージョン内で機能します。

手順 1: Git サーバー インスタンスを準備する

Git サーバー インスタンスを設定するには:

  1. Git サーバーにプロキシ クラスター ドライバー ノードがアクセスできるようにします。

    エンタープライズ Git サーバーは、アクセスが許可される IP アドレスの allowlist を持つことができます。

    1. プロキシ クラスターから生成されるトラフィックに静的送信 IP アドレスを関連付けます。 これは、Azure Firewall またはエグレス アプライアンスを使用して行うことができます。
    2. 前の手順の IP アドレスを Git サーバーの許可リストに追加します。
  2. HTTPS トランスポートを許可するように Git サーバー インスタンスを設定します。

    • GitHub Enterprise については、GitHub Enterprise ヘルプのどのリモート URL を使用するべきかに関するトピックを参照してください。
    • Bitbucket の場合は、Bitbucket サーバーの管理ページに移動し、サーバー設定を選択します。 HTTP(S) SCM ホスティング セクションで、[HTTP(S) enable] (HTTP(S) が有効) チェックボックスを有効にします。

手順 2: 有効化ノートブックを実行する

プロキシを有効にするには:

  1. クラスターを作成するためのアクセス権を持つワークスペース管理者として Azure Databricks ワークスペースにログインします。

  2. このノートブックを次のようにインポートします。

    Git フォルダーでプライベート Git サーバー接続に対して Databricks Git フォルダーの Git サーバー プロキシを有効にします

  3. [すべて実行] を選択して、次のタスクを実行します。

    • 自動終了しない単一ノード クラスターを "Databricks Git Proxy" という名前で作成します。 これは、Azure Databricks ワークスペースからオンプレミスの Git サーバーに Git コマンドを処理して転送する "プロキシ クラスター" です。
    • Databricks Git フォルダーの Git 要求をクラスター経由でプロキシするかどうかを制御する機能フラグを有効にします。

重要

クラスターを作成するには、アクセス権を持つワークスペースの管理者である必要があります。

Note

以下の点に注意してください。

  • プロキシ ソフトウェアをホストするために長時間実行クラスターを追加で実行すると、追加の DBU が発生します。 コストを最小限に抑えるため、ノートブックは、安価なノード タイプの単一ノード クラスターを使用するようにプロキシを設定します。 ただし、ニーズに合わせてクラスター オプションを変更することもできます。

手順 3: Git サーバーの構成を検証する

Git サーバーの構成を検証するには、プロキシ クラスター経由でプライベート Git サーバーでホストされているリポジトリを複製してみます。 複製が成功すれば、ワークスペースに対して Git Server Proxy が正常に有効になっていることになります。

手順 4: プロキシが有効なリポジトリを作成する

ユーザーが Git 資格情報を設定した後は、リポジトリの作成または同期に必要なその他の手順はありません。 Databricks Git フォルダーで資格情報を構成し、リポジトリを作成するには、「Git 資格情報を構成し、リモート リポジトリを Azure Databricks に接続する」を参照してください。

グローバル CAN_ATTACH_TO アクセス許可を削除する

既存のプロキシ クラスターを持つ管理者は、一般公開されている Git Server Proxy の動作を活用するために、クラスター ACL アクセス許可を変更することができるようになりました。

以前に CAN_ATTACH_TO 特権を使用して Databricks Git Server Proxy を構成した場合は、次の手順に従ってこれらのアクセス許可を削除します。

  1. サイドバーから [コンピューティング] を選択し、それから実行中の Git Server Proxy のコンピューティング エントリの横にある Kebab メニュー ケバブ メニューをクリックします。

    サイドバーから [コンピューティング] を選択し、Git プロキシ サーバーのコンピューティング リソースの右側にあるケバブを選択します

  2. ダイアログから、[すべてのユーザー][アタッチ可] エントリを削除します。

    ポップアップ表示されるモーダル ダイアログ ボックスで、[すべてのユーザー]、[アタッチ可能] の右側にある [X] をクリックします

トラブルシューティング

Databricks Git フォルダーの Git サーバー プロキシの構成中にエラーが発生しましたか? いくつかの一般的な問題と、それらをより効果的に診断する方法を次に示します。

一般的な問題のチェックリスト

エラーの診断を開始する前に、以下の手順が完了していることを確認します。

  • プロキシ クラスターが実行されていることを確認します。
  • Databricks Git フォルダーのユーザーがプロキシ クラスターに対する "アタッチ可能" アクセス許可があることを確認します。
  • 有効化ノートブックをもう一度実行し、まだ行っていない場合は結果をキャプチャします。 問題をデバッグできない場合は、Databricks サポートで結果をレビューできます。 有効化ノートブックは DBC アーカイブとしてエクスポートおよび送信できます。

プロキシ クラスターのログを検査する

プロキシ クラスター上の /databricks/git-proxy/git-proxy.log にあるファイルには、デバッグに役立つログが含まれています。

ログ ファイルは、Data-plane proxy server binding to ('', 8000)… 行で始まるはずです。そうでない場合は、プロキシ サーバーが正常に起動しなかったことを意味します。 クラスターを再起動するか、作成したクラスターを削除して、有効化ノートブックをもう一度実行してください。

ログ ファイルがこの行で始まる場合、Databricks Git フォルダーの Git 操作によって開始された Git 要求ごとに、その後に続くログ ステートメントを確認します。

次に例を示します。

  do_GET: https://server-address/path/to/repo/info/refs?service=git-upload-pack 10.139.0.25 - - [09/Jun/2021 06:53:02] /
  "GET /server-address/path/to/repo/info/refs?service=git-upload-pack HTTP/1.1" 200`

このファイルに書き込まれたエラー ログは、ユーザーまたは Databricks サポートによる問題のデバッグに役立ちます。

一般的なエラー メッセージとその解決策

  • SSL の問題のため、セキュリティで保護された接続を確立できない

    次のエラーが表示されることがあります。

      https://git.consult-prodigy.com/Prodigy/databricks_test: Secure connection to https://git.consult-prodigy.com/Prodigy/databricks_test could not be established because of SLL problems
    

    これは多くの場合、特別な SSL 証明書を必要とするリポジトリを使用していることを意味します。 プロキシ クラスター上の /databricks/git-proxy/git-proxy.log ファイルの内容を確認します。 証明書の検証に失敗した場合は、システム証明書チェーンに証明機関の証明書を追加する必要があります。 まず、ルート証明書 (ブラウザーまたはその他のオプションを使用して) を抽出し、DBFS にアップロードします。 その後、Git フォルダー Git Proxy クラスターを編集し、GIT_PROXY_CA_CERT_PATH 環境変数を使用してルート証明書ファイルをポイントします。 クラスター環境変数の編集の詳細については、「環境変数」を参照してください。

    その手順が完了したら、クラスターを再起動します。

    Git プロキシの環境変数を設定する Databricks モーダル ダイアログ

  • "Git 資格情報の不足または無効" エラーが発生してリポジトリの複製に失敗する

    まず、ユーザー設定で Git 資格情報を設定していることを確認します。

    次のようなエラーが発生する場合があります。

      Error: Invalid Git credentials. Go to User Settings -> Git Integration and check that your personal access token or app password has the correct repo access.
    

    組織で SAML SSO を使用している場合は、トークンが承認されていることを確認します (これは Git サーバーの個人用アクセス トークン (PAT) 管理ページから行うことができます)。

よく寄せられる質問

Git サーバー プロキシのセキュリティへの影響は何ですか?

注意する点は次のとおりです。

  • プロキシは、Databricks コントロール プレーンのセキュリティ アーキテクチャには影響しません。
  • ワークスペースごとに使用できる Git プロキシ サーバー クラスターは 1 つだけです。

はい。 現在のリリースでは、Azure Databricks ワークスペースはプロキシされたリポジトリとプロキシされていないリポジトリを区別しません。

Git プロキシ機能は他の Git エンタープライズ サーバー プロバイダーと連携して機能しますか?

Databricks Git フォルダーでは、GitHub Enterprise、Bitbucket Server、Azure DevOps Server、GitLab セルフマネージドがサポートされています。 他のエンタープライズ Git サーバー プロバイダーも、一般的な Git の仕様に準拠している場合には機能する必要があります。

Databricks Git フォルダーではコミットの GPG 署名がサポートされていますか?

いいえ。

Databricks Git フォルダーでは Git 操作の SSH トランスポートがサポートされていますか?

いいえ。 HTTPS のみがサポートされています。

Git サーバーでの既定以外の HTTPS ポートの使用はサポートされていますか?

現在、有効化ノートブックでは、Git サーバーでデフォルトの HTTPS ポート 443 が使用されていることを前提としています。 環境変数 GIT_PROXY_CUSTOM_HTTP_PORT を設定して、ポートの値を優先値で上書きできます。

複数のワークスペースに対して 1 つのプロキシを共有できますか? または、ワークスペースごとに 1 つのプロキシ クラスターが必要ですか?

Azure Databricks ワークスペースごとに 1 つのプロキシ クラスターが必要です。

プロキシは従来の単一ノートブックのバージョン管理で機能しますか?

いいえ。プロキシは従来の単一ノートブックのバージョン管理では機能しません。 ユーザーは Databricks Git フォルダーのバージョン管理に移行する必要があります。

Databricks はプロキシされた Git サーバー URL を非表示にできますか? ユーザーは、プロキシされた URL ではなく、元の Git サーバー URL を入力できますか?

どちらの質問についても "はい" です。 ユーザーは、プロキシの動作を調整する必要はありません。 現在のプロキシの実装では、Databricks Git フォルダーのすべての Git トラフィックがプロキシ経由でルーティングされます。 ユーザーは、通常の Git リポジトリ URL (https://git.company.com/org/repo-name.gitなど) を入力します。

ユーザーはどのくらいの頻度で Git URL を操作しますか?

通常、ユーザーは、新しいリポジトリを作成するとき、またはまだチェックアウトしていない既存のリポジトリをチェックアウトするときに、Git URL を追加します。

この機能は、Git サーバーに認証データを透過的にプロキシしますか?

はい。プロキシは、ユーザー アカウントの Git サーバー トークンを使用して Git サーバーに対する認証を行います。

Git サーバー コードへの Databricks アクセスはありますか?

Azure Databricks プロキシ サービスは、ユーザー指定の資格情報を使用して Git サーバー上の Git リポジトリにアクセスし、リポジトリ内の任意のコード ファイルをリポジトリと同期します。 アクセスは、ユーザー指定の個人用アクセス トークン (PAT) で指定されたアクセス許可によって制限されます。