CSRF の保護
TeamCity のクロスサイトリクエストフォージェリ(CSRF)保護は、HTTP リクエストに関するいくつかの要件を意味します。
バージョン 2020.1 以降、TeamCity は保護手段として CSRF トークンのみを使用します。TeamCity の以前のバージョンでは、Origin/Referer ヘッダーも使用されていました。
セキュリティトークンを取得するには、GET https://your-server/authenticationTest.html?csrf 要求を送信します。
トークンを渡すには、X-TC-CSRF-Token HTTP リクエストヘッダーまたは tc-csrf-token HTTP パラメーターを使用します。
HTTP リクエストの CSRF チェック
TeamCity の観点から HTTP リクエストの安全性を検討するときは、次のチェックが順番に行われます。
HTTP リクエストが(
GETなどの)変更されていないリクエストである場合、安全と見なされます。HTTP リクエストのパラメーターまたは HTTP ヘッダーにセキュアな CSRF トークンがあり、このトークンがユーザセッションに格納されているものと一致する場合、安全であると見なされます。
ブラウザー以外の HTTP クライアントへの影響
ブラウザー以外の API アクセスの場合は、トークンベースの認証の使用をお勧めします。
CORS クライアントへの影響
CORS リクエストを使用するには、ここで説明されているように CORS サポートを構成します。この構成は、GET リクエストには十分です。
CORS 経由で POST/PUT/DELETE リクエストを送信する必要がある場合は、authenticationTest.html?csrf 呼び出しを使用して CSRF トークンを取得し、このトークンを変更する HTTP リクエストに提供する必要があります。
トラブルシューティング
TeamCity で CSRF 保護に関する問題が発生した場合 (たとえば、サーバーから「CSRF チェックに失敗したため、403 ステータスコードで応答します」応答が返された場合)、次の手順を試してください。
2020.1 より前の TeamCity バージョンでの動作と同様に、
teamcity.csrf.paranoid=false内部プロパティを設定して、CORS 操作のOrigin/Refererヘッダーの検証を強制します(詳細については、アップグレードノートを参照してください)。teamcity.csrf.origin.check.enabled=logOnly内部プロパティを設定して、CSRF 保護を一時的に無効にします。失敗した CSRF 試行に関する情報は、
TeamCity/logs/teamcity-auth.logファイルに記録されます。リクエストのより詳細な診断を行うには、debug-auth ロギングプリセットを有効にします。「安全でない」(
PUT、POST、DELETE) リクエストがアクセストークンを使用して Bearer 認証スキームを採用する場合は、セッション Cookie をクリアすることを検討してください。これにより、TeamCity は CSRF トークンの検証を完全にスキップできるようになります。環境またはシナリオでセッションクッキーの存在が必須である場合は、期限切れのセッションに対応する CSRF トークンがリクエストで使用されていないことを確認してください。回避策として、最初の HTTP リクエストのセッションクッキーを次のリクエストに再利用することもできます。cURL でこれを行うには、
--cookie-jarおよび--cookieコマンドラインオプション(英語)を使用して、ファイルへのクッキーの保存とファイルからのクッキーの読み取りを行います。さらに、teamcity.tokenAuth.setSessionCookie=true内部プロパティを追加して、TeamCity にセッションの作成を強制します (次のリクエストに対してセッションクッキーを期待します)。
リストされている手順のいずれも問題の解決に役立たない場合は、サポートに連絡し、teamcity-auth.log ログに有効な teamcity-auth ロギングプリセットを提供してください。
関連ページ:
ユーザープロファイルの構成
ユーザープロファイル設定にアクセスするには、ヘッダーのアバターをクリックし、ドロップダウンメニューからプロファイルを選択します。パスワードを変更する:組み込み認証が設定されている場合、TeamCity サーバーはユーザー認証用のパスワードを保持します。プロファイル | 一般 | 組み込み認証でパスワードを変更できます。既存のパスワードと新しいパスワードを入力し、変更を保存をクリックします。パスワードは、組み込みの認証でのみ変更できます。これらのフィールドが表示されない場合は、TeamCity...
アップグレードノート
2025.11.4 から 2026.1 への変更:TeamCity サーバーおよびビルドエージェントは、Java 21 より古い Java バージョンをサポートしなくなりました。サーバーはこのバージョンのみをサポートしますが、ビルドエージェントはより新しいバージョンで起動できます。AWS 接続でキーを回転させるを押すと、5 分後に以前使用したキーが削除されます。以前は、古いキーは 24 時間保持されていました。S3 アーティファクトストレージでは、仮想ホストのアドレス指定がデフォルトで有効にな...
問題の報告
TeamCity の実行中に問題が発生し、それがソフトウェアに関連していると思われる場合は、問題の詳細な説明を添えて弊社までご連絡ください。問題を解決するには、システムに関するさまざまな情報とさまざまなログが必要になる場合があります。以下のセクションでは、さまざまな問題についてそのような情報を収集する方法について説明します。問題を報告する際のベストプラクティス:これらのガイドラインに従うことで、タイムリーな対応と効果的な問題解決が保証されます。適切な連絡方法については、フィードバックを確認して...
TeamCity サーバー起動プロパティの設定
TeamCity サーバーの動作のさまざまな側面は、起動時に渡されるオプションを介してカスタマイズできます。TeamCity 自体に影響を与える内部プロパティ、Java 仮想マシン(JVM)のプロパティ、TeamCity の内部プロパティ:TeamCity には、内部ロジックのさまざまな側面に影響を与える内部構成プロパティがあります。これらは通常、デバッグ、内部定数の変更、実験的な動作の有効化を目的としています。TeamCity サポートチームからの要請がない限り、内部プロパティを変更しないで...
TeamCity サーバーへの HTTPS アクセスの構成
HTTPS プロトコルは、コンピューターネットワーク上でサーバーとクライアントの安全な通信を行うために暗号化を使用します。TeamCity サーバーがパブリックインターネットアドレスで利用できる場合は、セキュリティを大幅に強化するために HTTPS 接続を構成することを強くお勧めします。安全な HTTPS アクセスを構成するには、証明書が必要です。手動で取得してロードすることも、TeamCity に暗号化しましょう経由で有効な証明書を自動的に発行させることもできます。Let's Encrypt...