セキュアなチェーン依存関係
ビルドチェーンは複数のプロジェクトにまたがることができ、強力ですがリスクも生じます。あるチームの構成が、別のチームが所有する構成に依存し、その結果としてそれをトリガーしてアーティファクトを取得できるようになります。
リスク
制限がない場合、プロジェクトの プロジェクトビューアー ロールを持つユーザーは誰でも、自分のプロジェクトからそのプロジェクトの構成への依存関係を作成できます。 つまり、外部ユーザーは、直接実行する権限がなくても、構成を実行したり、そのアーティファクトをインポートしたりできます。
可視性を制限するだけでは不十分です。 ターゲットプロジェクトが UI に表示されないプロジェクト管理者でも、構成 ID が分かっていれば、 バージョン化設定を通じてそのプロジェクトへの依存関係を作成できます:低めです。誤って削除する可能性はありますが、短期的にはそれほど痛手になりません。復旧の方法もありそうです。やるべきことはほかにもあります。重要なドキュメントですが、緊急ではありません。
TeamCity は、機密性の高い構成やリソースを大量に消費する構成を保護するため、相互に補完し合う三つの制御を提供します。
プロジェクトの分離
プロジェクト分離は、主な適用メカニズムです。 構成は プロジェクトの分離 タブ (プロジェクト設定) で行います。

信頼済みプロジェクトのみ モードでは、プロジェクトとそのサブプロジェクトを分離し、そのブランチの外部にある構成が内部の構成に依存できないようにします。 信頼されていない外部プロジェクトからの依存関係は開始に失敗します。
- デフォルトの信頼関係
分離されたブランチ内では、すべてのサブプロジェクトが相互に信頼され、トップダウンとボトムアップのどちらでも自由に相互依存できます。 親は子孫を信頼し、その逆も同様です。
分離されたブランチの外部から 内部への依存関係は、外部プロジェクトが許可リストに追加されていない限り失敗します。 ブランチから 外へ出て非分離プロジェクトへ向かう依存関係は、常に許可されます。
サブプロジェクトも 信頼済みプロジェクトのみ モードに切り替えることで、トップダウンの信頼を強化し、そのサブブランチをさらに分離できます。
- 信頼済みプロジェクトリスト
外部プロジェクトが分離されたプロジェクトに依存できるようにするには、 新しい信頼済みプロジェクトを追加 をクリックしてリストに追加します。 信頼はすべての直接および間接の子に伝播するため、設定を保守しやすくするには、分離されたブランチの 最上位 プロジェクトで信頼済みプロジェクトを追加します。
このページでは、現在のプロジェクトで宣言された信頼関係と、親から継承された信頼関係が分けて表示されます。

プロジェクトを 信頼済みプロジェクトのみ モードに切り替えるときは、 現在依存しているプロジェクトを信頼済みに追加 を有効化して、TeamCity が階層をスキャンし、許可リストを事前入力できるようにします。 TeamCity は静的なスナップショット依存関係とアーティファクト依存関係のみを検出します。動的な依存関係 (ブランチ固有のバージョン化設定で宣言されたもの、または REST API 経由で作成されたもの) は手動で追加してください。
- 設定の継承
親で分離が強制されていない場合、プロジェクトでは すべてのプロジェクト モードと 信頼済みプロジェクトのみ モードを利用できます。 親ですでに分離が強制されている場合、 すべてのプロジェクト は 親プロジェクトから設定を継承 に置き換えられます。

継承モードでは、プロジェクトは自身の子孫、分離を適用している親までの祖先、および親の許可リスト内のプロジェクトを信頼します。
- 分離とバージョン化設定
信頼モードと許可リストは 含まない バージョン化設定に保存され、 UI 経由でのプロジェクト設定の編集を許可 が無効になっている場合でも UI で編集できます。 これにより、信頼ポリシーは、通常の開発者が編集できる可能性のある構成ファイルではなく、プロジェクト管理者が UI を通じてのみ変更できることが保証されます。
ビルド承認
ビルド承認 は補完的なゲートです。外部チームは構成への依存関係を引き続き作成できますが、トリガーされた各ビルドは、指定されたレビュー担当者が承認するまでキューに残ります。
ユーザー権限
最後に、厳格な ユーザー権限を設定します。 プロジェクトビューアー ロールだけでプロジェクトへの依存関係を作成するには十分であり、UI の可視性を制限しても、バージョン化設定を介した依存関係の作成は防げないことに注意してください。 そのため、実際の境界は、可視性ではなくプロジェクト分離だと考えてください。