secret scanningについて
Secret scanning は、リポジトリにチェックインされたトークンまたは認証情報を自動的に検出します。 GitHub リポジトリの [セキュリティ] タブで、コード内で見つけるシークレットの アラートを表示して、どのトークンや認証情報を危険なものとして扱うかわかるようにします。詳細な情報については、「シークレット スキャン アラートについて」を参照してください。
シークレット スキャン
からのディレクトリの除外について
ドキュメントやサンプルアプリケーションで偽のシークレットを提供する場合など、リポジトリにシークレットをコミットする場合が考えられます。 これらのシナリオでは、アラートをすばやく無視して理由を文書化できます。 ただし、大規模な誤検知アラートの作成をしないようにするために、ディレクトリを完全に無視したい場合もあります。 たとえば、多数の誤ったアラートをトリアージに発せられる可能性があるダミー キーのファイルを含む複数の統合を持つモノリシック アプリケーションがあるとします。
プッシュ保護を使用する場合を含め、ディレクトリを secret scanning から除外するように secret_scanning.yml
ファイルを設定できます。
シークレット スキャン
からディレクトリを除外する
-
GitHub で、リポジトリのメイン ページに移動します。
-
ファイル リストの上で、[ファイルの追加] ドロップダウン メニューを選んで、 [新しいファイルの作成] をクリックします。
または、左側のファイル ツリー ビューの をクリックしてもかまいません。
-
ファイル名フィールドに「.github/secret_scanning.yml」と入力します。
-
[新しいファイルの編集] で、
paths-ignore:
と入力してから、secret scanningから除外するパスを入力します。YAML paths-ignore: - "docs/**"
paths-ignore: - "docs/**"
これにより、secret scanning に、
docs
ディレクトリ内のすべての要素を無視するよう指示されます。 このサンプル ファイルをテンプレートとして使用して、独自のリポジトリから除外するファイルとフォルダーを追加できます。*
などの特殊文字を使用して、パスをフィルター処理することもできます。 フィルター パターンの詳細については、「GitHub Actions のワークフロー構文」を参照してください。YAML paths-ignore: - "foo/bar/*.js"
paths-ignore: - "foo/bar/*.js"
注:
paths-ignore
に 1,000 を超えるエントリがある場合、secret scanningでは、最初の 1,000 個のディレクトリのみがスキャンから除外されます。secret_scanning.yml
が 1 MB を超える場合、secret scanning ではファイル全体が無視されます。
フォルダーが secret scanning から除外されていることを確認
- シークレット スキャンから除外したディレクトリ内のファイルを開く
- 事前に無効化されたシークレットまたはテスト シークレットを貼り付けます。
- 変更をコミットします。
- GitHub で、リポジトリのメイン ページに移動します。1. リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。 ファイルに導入したばかりのシークレットに対する新しいオープン アラートは存在しないはずです。
ベスト プラクティス
ベスト プラクティスには次のようなものがあります。
- 除外するディレクトリの数を最小限に抑え、除外を定義するときに可能な限り正確にします。 これにより、指示が可能な限り明確になり、除外が意図したとおりに機能するようになります。
secret_scanning.yml
ファイル内のコメントで特定のファイルまたはフォルダーが除外される理由を説明します。 通常のコードと同様に、コメントを使用すると意図が明確になり、他のユーザーが目的の動作を理解しやすくなります。secret_scanning.yml
ファイルを定期的に確認します。 一部の除外は時間と共に適用されなくなる可能性があり、ファイルをクリーンで最新の状態に保つことをお勧めします。 上記で説明したように、コメントの使用はこれに役立ちます。- 除外したファイルとフォルダーとその理由をセキュリティ チームに通知します。 すべてのユーザーが同じページに存在し、特定のフォルダーまたはファイルが除外される理由を理解するには、適切なコミュニケーションが不可欠です。