Azure 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 サーバー プロキシは、構成ノートブックに含まれる DBR のバージョンを使用するように専用設計されています。 プロキシ クラスターの DBR バージョンは更新しないことをお勧めします。
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 データ プレーン (ドライバー ノード) からアクセスできる必要があります。
企業ネットワークがプライベート (VPN) アクセスのみ (パブリック アクセスなし) の場合は、Git サーバー プロキシを実行して、その外部にある Git リポジトリにアクセスし、Git フォルダーをワークスペースに追加する必要があります。
Databricks Git フォルダーの Git サーバー プロキシはどのように動作しますか?
Databricks Git フォルダーの Git サーバー プロキシでは、Databricks コントロール プレーンから、ご利用の Databricks ワークスペースのコンピューティング プレーン内で実行されている "プロキシ クラスター" に Git コマンドをプロキシします。 ここでは、プロキシ クラスターとは、Databricks Git フォルダーからセルフホステッド Git リポジトリに Git コマンドのプロキシ サービスを実行するように設定されたクラスターです。 このプロキシ サービスは、Databricks コントロール プレーンから Git コマンドを受け取り、Git サーバー インスタンスに転送します。
次の図は、システム アーキテクチャ全体を示しています。
重要
Databricks には、Databricks Git フォルダーのプロキシ コマンドに Git サーバー インスタンスを構成するために実行できる有効化ノートブックが用意されています。 GitHub で有効化ノートブックを取得してください。
現在、Git サーバー プロキシでは、すべてのユーザーに対する CAN_ATTACH_TO
アクセス許可が必要なくなりました。 既存のプロキシ クラスターを持つ管理者は、クラスター ACL アクセス許可を変更してこの機能を有効にできるようになりました。 これを有効にするには、次の手順を行います。
サイドバーから [コンピューティング] を選択し、実行中の Git サーバー プロキシのコンピューティング エントリの横にある ケバブ メニューをクリックします。
ダイアログから、[すべてのユーザー] の [アタッチ可] エントリを削除します。
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 サーバー インスタンスを設定するには:
Git サーバーにプロキシ クラスター ドライバー ノードがアクセスできるようにします。
エンタープライズ Git サーバーは、アクセスが許可される IP アドレスの
allowlist
を持つことができます。- プロキシ クラスターから生成されるトラフィックに静的送信 IP アドレスを関連付けます。 これは、Azure Firewall またはエグレス アプライアンスを使用して行うことができます。
- 前の手順の IP アドレスを Git サーバーの許可リストに追加します。
HTTPS トランスポートを許可するように Git サーバー インスタンスを設定します。
- GitHub Enterprise については、GitHub Enterprise ヘルプのどのリモート URL を使用するべきかに関するトピックを参照してください。
- Bitbucket の場合は、Bitbucket サーバーの管理ページに移動し、サーバー設定を選択します。 HTTP(S) SCM ホスティング セクションで、[HTTP(S) enable] (HTTP(S) が有効) チェックボックスを有効にします。
手順 2: 有効化ノートブックを実行する
プロキシを有効にするには:
クラスターを作成するためのアクセス権を持つワークスペース管理者として Azure Databricks ワークスペースにログインします。
このノートブックをインポートします。これにより、Git プロキシを実行するためにクラウド プロバイダーから使用できる最小のインスタンスの種類が選択されます。
ノートブック: Git フォルダーでプライベート Git サーバー接続に対して Databricks Git フォルダーの Git サーバー プロキシを有効にします。
[すべて実行] をクリックしてノートブックを実行すると、次のタスクが実行されます。
- 自動終了しない単一ノード コンピューティング リソースを "Databricks Git Proxy" という名前で作成します。 これは、Azure Databricks ワークスペースからオンプレミスの Git サーバーに Git コマンドを処理して転送する "Git プロキシ サービス" です。
- Databricks Git フォルダーの Git 要求をコンピューティング インスタンスでプロキシするかどうかを制御する機能フラグを有効にします。
ベスト プラクティスとして、Git プロキシ コンピューティング リソースを実行する単純なジョブを作成することを検討してください。 これは、"Git プロキシ サービスが実行中" などの状態を出力またはログに記録する単純なノートブックです。 ユーザーが Git プロキシ サービスを常に使用できるように、ジョブを一定の時間間隔で実行するように設定します。
Note
プロキシ ソフトウェアをホストするために長時間実行するコンピューティング リソースを追加で実行すると、追加の DBU が発生します。 コストを最小限に抑えるため、ノートブックは、安価なノード タイプの単一ノード コンピューティング リソースを使用するようにプロキシを設定します。 ただし、ニーズに合わせてコンピューティング オプションを変更することもできます。 コンピューティング インスタンスの価格の詳細については、Databricks 料金計算ツールを参照してください。
手順 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 を構成した場合は、次の手順に従ってこれらのアクセス許可を削除します。
サイドバーから [コンピューティング] を選択し、それから実行中の Git Server Proxy のコンピューティング エントリの横にある ケバブ メニューをクリックします。
ダイアログから、[すべてのユーザー] の [アタッチ可] エントリを削除します。
トラブルシューティング
Databricks Git フォルダーの Git サーバー プロキシの構成中にエラーが発生しましたか? いくつかの一般的な問題と、それらをより効果的に診断する方法を次に示します。
一般的な問題のチェックリスト
エラーの診断を開始する前に、以下の手順が完了していることを確認します。
- プロキシ クラスターが実行されていることを確認します。
- 自分がワークスペース管理者であることを確認します。
- 有効化ノートブックをもう一度実行し、まだ行っていない場合は結果をキャプチャします。 問題をデバッグできない場合は、Databricks サポートで結果をレビューできます。 有効化ノートブックは DBC アーカイブとしてエクスポートおよび送信できます。
Git プロキシ構成を変更する
Git プロキシ サービスが既定の構成で動作しない場合は、特定の環境変数を設定して変更を加えて、ネットワーク インフラストラクチャをより適切にサポートすることができます。
Git プロキシ サービスの構成を更新するには、次の環境変数を使用します。
環境変数 | 書式 | 説明 |
---|---|---|
GIT_PROXY_ENABLE_SSL_VERIFICATION |
true /false |
プライベート Git サーバーに自己署名証明書を使用している場合は、これを false に設定します。 |
GIT_PROXY_CA_CERT_PATH |
ファイルパス (文字列) | これを、SSL 検証に使用される CA 証明書ファイルのパスに設定します。 例: /FileStore/myCA.pem |
GIT_PROXY_HTTP_PROXY |
https://<hostname>:<port #> |
これを、HTTP トラフィック用のネットワークのファイアウォール プロキシの HTTPS URL に設定します。 |
GIT_PROXY_CUSTOM_HTTP_PORT |
ポート番号 (整数) | これを、Git サーバーの HTTP ポートに割り当てられているポート番号に設定します。 |
これらの環境変数を設定するには、Azure Databricks ワークスペースの [コンピューティング] タブに移動し、Git プロキシ サービスのコンピューティング構成を選択します。 [構成] ペインの下部にある [詳細オプション] を展開し、その下にある [Spark] タブを選択します。 これらの環境変数の 1 つ以上を、 [環境変数] テキスト領域に追加して設定します。
プロキシ クラスターのログを検査する
プロキシ クラスター上の /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 資格情報の不足または無効" エラーが発生してリポジトリの複製に失敗する
まず、ユーザー設定で 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 つだけです。
パブリック Git リポジトリの場合でも、すべての Databricks Git フォルダー関連の Git トラフィックはプロキシ クラスター経由でルーティングされますか?
はい。 現在のリリースでは、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) で指定されたアクセス許可によって制限されます。