設定するGitHubリポジトリ
のGit Repos and Issue Trackingツールの統合は、ウェブベースのホスティングサービスであるGithubに基づいています。Gitリポジトリ (repos)。 リポジトリーのローカルとリモートの両方のコピーを持つことができます。 詳細については、Git Repos and Issue Tracking{: external}。
ブランチ保護ポリシーは、セキュリティーとコラボレーションを実施し、チームがコード品質と変更管理の標準に確実に準拠するようにします。 このトピックは、ブランチ・ポリシーの設定および管理に役立ちます。 DevSecOps ブランチ保護ルールを設定する必要がありますGitHubリポジトリ。
支店保護の利点
-
コードの品質とコラボレーションの向上: ブランチ保護によるプル要求と承認が必要なため、コードの品質とコラボレーションが向上します。 これにより、コードの一貫性が確保され、チームのコーディング標準に準拠することが保証されます。 変更はレビューされ、早期にバグやエラーをキャッチするのに役立ちます。その結果、コードの信頼性と保守性が向上します。
-
変更の可視性の向上: プル要求を必要とすると、コード変更に対する可視性が向上します。 このステップにより、変更の追跡と潜在的な問題の特定が簡素化されます。
-
コード保全性の確保: プル要求の状況チェックは、プル要求をマージする前に、事前定義された標準およびリンターに対して自動テストを実行することによって、コードを検証します。 このステップでは、開発サイクルの早い段階でバグやその他の問題をキャッチすることにより、コードの整合性を維持します。
GitHub でのブランチ保護ルールの構成
リポジトリーの GitHub でブランチ保護ルールを構成するには、以下の手順を実行します。
ブランチ保護設定へのアクセス
- GitHubでリポジトリーの 「設定」 タブにナビゲートします。
- 左側のサイドバーで、 「ブランチ」 をクリックしてブランチ設定ページにアクセスします。
- 「ブランチ保護ルール」 セクションまでスクロールダウンします。
- 構成したいブランチ (通常は「メイン」ブランチ) を見つけます。
- ブランチ名の横にある 「編集」 ボタンを選択して、その保護ルールを変更します。

ブランチ保護ルールの追加
既存のルールがセットアップされていない場合は、 「ルールの追加」 ボタンをクリックして、対応するブランチ名を **Branch name pattern**
フィールドに入力します。 次に、次の手順に進みます。
- 「マージ前にプル要求が必要」 オプションを有効にします。
- 「承認が必要」 オプションを有効にして、 「マージ前に必要な承認の数」 を
1
以上に設定するか、チーム内で必要な承認の数に設定します。 - 「新規コミットがプッシュされたときに失効したプル要求の承認を破棄する」 オプションを有効にして、最新のすべての変更を確認してから別のブランチにマージできるようにします。

Pull Requests は、マスター・ブランチにマージする前に承認する 必要があります。 このルールにより、チーム・メンバーによる変更のレビューと精査が確実に行われ、コラボレーション、コード品質、およびプロジェクト標準への準拠が促進されます。
ステータス検査の構成
ステータスチェックは、DevSecOpsコードに対して包括的な品質およびセキュリティ対策を実施します。 これにより、コード変更は、保護されたブランチにマージされる前に、安全で信頼できるものになります。 マージの前に状況検査に合格するように要求することにより、破損したコードやテストされていないコードが実動にデプロイされないようにすることができます。
プル要求が送信されると、PR/CI パイプラインは、一連のテスト、検証、およびその他のチェックを自動的にトリガーして、提案された変更を検証します。
必要なすべての状況検査が正常に合格した場合にのみ、プル要求は保護されたブランチへのマージに適格であると見なされます。
ステータスチェックを活用することでDevSecOps,プロジェクトの保護されたブランチに変更を組み込む前に、コードの品質を維持し、コーディング標準に準拠し、脆弱性や重大な欠陥がないことを確認できます。
状況検査の構成について詳しくは、参照実装の「 状況検査のみの構成(状況検査構成) 」セクションを参照してください。
Require status checks to pass before merging
オプションを有効にします。
必要なステータス・チェックとして設定できるようにするには、まず、PR/CI パイプラインを事前にトリガーする必要があります (既存のステータス・チェックのみが UI にリストされます)。
Require status checks to pass before merging
オプションを有効にした後、プル要求をマージする前に合格する必要がある特定の状況検査を構成する必要があります。
- 使用可能な状況チェックのリストで、チェックに対して以下のオプションを有効にします。
tekton/code-branch-protection
tekton/code-cis-check
tekton/code-detect-secrets
tekton/code-unit-tests
tekton/code-vulnerability-scan

プル要求をマージする前に、表示されている状況検査に合格する必要があります。
上記のチェックは、パイプラインで予期されるデフォルトのプル要求状況チェックです。
コンプライアンス検査のカスタマイズ・リストの設定
また、パイプラインによって検証される状況チェックの独自のリストを取り込むこともできます。 これを実現するには、まず、必要な状況検査のリストをリポジトリーに設定します。また、 branch-protection-rules-path
値設定を、同じリスト状況検査を含む JSON ファイル (アプリケーション・リポジトリーを基準とする) へのパスに設定します。
|branch-protection-rules-path
|text | 必要なコンプライアンス検査のカスタマイズされたリストを含む JSON ファイルへのパスを、統合アプリケーション・リポジトリーに対して相対的に設定します。 | オプション |
JSON ファイルの形式は次のとおりです。
[{
"type": "branch-protection",
"name": "code-review",
"params": {
"checks": [
"tekton/code-branch-protection",
"tekton/code-unit-tests",
"tekton/code-cis-check",
"tekton/code-vulnerability-scan",
"tekton/code-detect-secrets"
]
}
}]
注記 :DevSecOpsデフォルトでは、ブランチ保護チェックの結果は、tekton/
接頭辞。
準拠性検査のためのカスタマイズされた接頭部の設定
変更したい場合は tekton
他のものに接頭辞をつけるGitHub,値を設定する必要があります branch-protection-status-check-prefix
パイプラインの環境プロパティ。
|branch-protection-status-check-prefix
|text | ブランチ保護状況検査の接頭部テキスト (デフォルトは tekton
) | オプション |
ブランチ保護設定を構成すると、必要な条件が満たされない限り、プル要求を保護されたブランチにマージしようとしても拒否されます。
オプションの設定
上記の設定に加えて、ブランチ保護ルールの以下の追加設定を構成することもできます。 ステータスチェックは、DevSecOpsこれらの設定は検証も強制もされません。
-
署名付きコミットが必要: この設定では、保護されたブランチへのすべてのコミットが署名されている必要があり、コードに悪意のある変更が加えられないようにします。
-
線形履歴が必要: この設定では、保護されたブランチへのすべてのコミットに線形履歴が必要です。 これは、保護されたブランチにマージされたプル要求はすべて、squash マージまたはリベース・マージを使用する必要があることを意味します。 厳密に線形のコミット履歴を使用すると、チームはより簡単に変更を元に戻すことができます。
これらの追加設定はオプションであり、特定の要件および設定に基づいてカスタマイズできます。
CURL コマンドを使用したブランチ保護ルールの設定
すべてのブランチ保護ルールの追加 (完全な構成)
ブランチ保護ルールは、 $GH_TOKEN
、 $OWNER
、 $APP_API_URL
$REPO
、 $BRANCH
の各変数を置き換えた後に、curl コマンドを使用して設定することもできます。
curl -u ":$GH_TOKEN" $APP_API_URL/repos/$OWNER/$REPO/branches/$BRANCH/protection -XPUT -d '{"required_pull_request_reviews":{"dismiss_stale_reviews":true},"required_status_checks":{"strict":true,"contexts":["tekton/code-branch-protection","tekton/code-unit-tests","tekton/code-cis-check","tekton/code-vulnerability-scan","tekton/code-detect-secrets"]},"enforce_admins":null,"restrictions":null}'
この CURL コマンドは、必要な状況検査とプル要求のレビュー設定の両方をセットアップします。
これらの設定が構成されると、プル要求が少なくとも 1 人の他のユーザーによって承認されていない限り、プル要求を $BRANCH
にマージしようとしても拒否されます。
ステータス・チェックのみの構成 (ステータス・チェック構成)
必要な状況検査のみを構成する場合は、以下の CURL コマンドを参照として使用できます。
curl -H "Authorization: Bearer $(cat ${APP_TOKEN_PATH})" "${APP_API_URL}/repos/${APP_REPO_OWNER}/${APP_REPO_NAME}/branches/master/protection" \
-XPUT -d '{"required_pull_request_reviews":{"dismiss_stale_reviews":true},"required_status_checks":{"strict":true,"contexts":["tekton/code-branch-protection","tekton/code-unit-tests","tekton/code-cis-check","tekton/code-vulnerability-scan","tekton/code-detect-secrets"]},"enforce_admins":null,"restrictions":null}'
リファレンス実装では、 hello-compliance-app リポジトリーのサンプル構成が既に提供されているため、それを開始点として使用し、必要に応じてカスタマイズすることができます。
前の例に従って、コードの品質とリポジトリーのセキュリティー対策への準拠を確認します。 これを確実に行うには、必要なブランチ保護ルールおよび状況検査を構成します。