オンプレミスレジストリプロキシ
概要
Aikido On-Prem Registry Proxy は、次のようにデプロイできます。 透過的なパッケージファイアウォール、これにより組織は、開発者や CI システムにパッケージマネージャーの設定変更を求めることなく、パッケージのセキュリティポリシーを適用できます。
クライアントをプライベートなレジストリ URL や特別なプロキシパスを使用するように設定する代わりに、組織は社内 DNS を使用して、対応する公開パッケージレジストリを Aikido Registry Proxy にリダイレクトします。開発者は引き続きデフォルトのパッケージマネージャー設定を使用し、プロキシは公開レジストリからコンテンツを取得する前に要求を透過的に評価します。
アーキテクチャ

プロキシの実行
プロキシはポート上で動作し 8080 、TLS は ingress レイヤーで終了されることを想定しています。ingress は元の ホスト ヘッダーを転送するか、 X-Forwarded-Hostを設定して、プロキシがエコシステムを識別できるようにする必要があります。
ヘルスエンドポイントは次で利用できます GET /health (認証不要)で、Kubernetes の liveness/readiness probe に適しています。
構成
DEPLOYMENT_MODE
デフォルトを上書きして次に設定するには必須 onprem
DNS プロキシをセットアップするために必須
UPSTREAM_DNS
1.1.1.1
プロキシ自身の外向き通信で使用するパブリック DNS リゾルバー。インターセプトする社内 DNS ではなく、実際のパブリックリゾルバーを指している必要があります。複数のリゾルバーはカンマ区切りで指定できます。
MINIMUM_PACKAGE_AGE_HOURS
48
このしきい値より新しく公開されたパッケージをブロックします。
NPM_UPSTREAM_URL
https://registry.npmjs.org
内部 npm ミラーを指すように上書きします。
PYPI_UPSTREAM_URL
https://pypi.org
内部 PyPI ミラーを指すように上書きします。
PYPI_FILES_UPSTREAM_URL
https://files.pythonhosted.org
内部 PyPI files ミラーを指すように上書きします。
MAVEN_UPSTREAM_URL
https://repo1.maven.org/maven2
内部 Maven ミラーを指すように上書きします。
サポートされるホストのマッピング
Registry Proxy は、受信した HTTP Host ヘッダーに基づいて、要求を適切なエコシステムにルーティングします。
registry.npmjs.org
npm
pypi.org
PyPI
files.pythonhosted.org
PyPI
repo1.maven.org
Maven Central
Registry 互換性
メタデータ応答では、URL をプロキシパスに書き換えません。クライアントは元の公開レジストリ形式の URL を受け取り、インターセプトされていないホストへリダイレクトされることはありません。
npm
Packument 応答は引き続き互換性があります
registry.npmjs.org.Tarball のダウンロードは標準の npm ワークフローを使用します。
PyPI
メタデータ要求は〜から提供されます
pypi.org.パッケージのダウンロードは〜から提供されます
files.pythonhosted.org.
Maven
Maven Central への要求は標準の
/maven2/...パスを使用します。
Egress IP とレート制限
すべてのプロキシ経由トラフィックが 1 つの IP(または 2 つのレプリカで 2 つの IP)から外向きに出るため、Maven Central やその他の公開レジストリは、その IP から発信された要求をレート制限したりブロックしたりする場合があります。これは透過プロキシモデルの既知の制限です。
これを軽減するには、複数の IP を持つ NAT ゲートウェイ経由で外向きトラフィックをルーティングするか、上流 URL の上書きを公開レジストリのレート制限を受けない内部ミラーに向けることを検討してください。
上流ルーティングループの防止
プロキシは自身のすべての外向き通信を〜を使用して解決します UPSTREAM_DNS リゾルバー(デフォルト 1.1.1.1)を使用し、コンテナのシステム DNS を完全にバイパスします。つまり、pod がインターセプトする社内 DNS を継承していても、プロキシの上流フェッチは常に実際の公開レジストリに到達し、ループバックしません。
プロキシホスト自体に split-horizon DNS の設定は不要です。追加の安全策として、Kubernetes 経由で pod の DNS リゾルバーを明示的に設定できます dnsConfig.
リクエストフロー
開発者または CI システムが、標準のパッケージマネージャーを使用してパッケージをインストールします。
社内 DNS が公開レジストリのホスト名を内部 Registry Proxy に解決します。
Registry Proxy は、元の HTTP Host ヘッダーを使用してリクエストを受け取ります。
プロキシは、要求されたホスト名に基づいて対象のエコシステムを判定します。
マルウェア検出と最小パッケージ経過時間ポリシーが評価されます。
リクエストが許可されると、プロキシは対応する公開レジストリからパッケージまたはメタデータを取得します。
応答は透過的にクライアントへ返されます。
最終更新
役に立ちましたか?