シークレットスキャンとは?
シークレットスキャンは、コードリポジトリ、実行パイプライン、設定ファイル、コミット、およびその他のデータソースに対して自動スキャンを実行して、公開されたシークレットによってもたらされる潜在的なセキュリティ脅威を防ぐ方法です。
シークレットスキャンは、シークレット管理の広範な範囲の一部であり、権限のないエンティティからシークレットを保存および保護するためのプロセスとツールが含まれます。
The Secure Coding Best Practices [Cheat Sheet]
With curated insights and easy-to-follow code snippets, this 11-page cheat sheet simplifies complex security concepts, empowering every developer to build secure, reliable applications.
Download Cheat Sheetシークレットとは?
シークレットは、企業のITシステムで機密性の高いアクションを実行するための認証または許可されたアクセスを取得するために使用される資格情報です。
ソフトウェアプロジェクトは、コンテナやコンテナオーケストレーションプラットフォーム、DevOpsやCI/CDツール、データベース、リポジトリなど、サードパーティのコンポーネントに依存することがよくあります。 これらのサードパーティ サービスに接続し、さまざまなアプリ コンポーネント間の通信を有効にするには、ソフトウェア環境にサービスまたはアプリ コンポーネントを認証する方法が必要です。これは通常、「シークレット」、つまりキー、パスワード、証明書、またはトークンの形で行われます。
シークレットと機密データの違いは何ですか?
機密データ(社会保障番号やクレジットカード情報など)は、通常はエンドユーザーに属しますが、シークレットは企業のものです。 シークレットの例を次に示します。
LDAP パスワード
PKI/TLS 証明書
暗号化キー
コンテナの資格情報
SSH キー
API トークン
開発者は、シークレットを使用して、システムと他のクラウドサービス間の通信を認証および確立したり、機密性の高いシステムへの人間とマシンのアクセスを制御したりします。
As digital authentication credentials, secrets—if exposed—can grant adversaries unauthorized access to a company’s code bases, databases, and other sensitive digital infrastructure.
シークレットスキャンが重要なのはなぜですか?
デジタル認証の認証情報として、シークレットが公開されると、敵対者は企業のコードベース、データベース、その他の機密性の高いデジタルインフラストラクチャに不正にアクセスできるようになります。
残念ながら、シークレットのセキュリティを確保するのは簡単な作業ではありません。 シークレットは暗号化され、厳密に制御される必要がありますが、エンジニアリングチーム、アプリ、および環境全体でアクセスできるようにする必要があります。
その結果、ソフトウェア開発ライフサイクル (SDLC) のある時点で、継続的インテグレーションおよび継続的デリバリー (CI/CD) パイプラインのハードコードされた資格情報、コード リポジトリ、 バージョン管理システム (VCS)、セキュリティソフトウェア、コンテナ化環境、または職場のコミュニケーションチャネル(Slack、Teamsなど)。
これは、開発者が高品質のコードを猛烈なスピードで作成し、出荷することに集中しているためです。 そのため、ソフトウェアがまだ開発とテストの段階にある場合、開発をスピードアップし、フィードバックループを高速化するために、シークレットをローカルマシンに保存することが理想的であると考えるかもしれません。
シークレットスキャンの登場です。 開発者がそれを実装すべき4つの主な理由について説明しましょう。
機密データとシークレットの保護
保護するために 機密データ、転送中および保存中に暗号化し、データベースに保存します。 その後、シークレットを使用してデータベースをゲートキープし、許可された人間とマシンのみにアクセスを制限します。
たとえば、エンド・ユーザーが入力したユーザー名/パスワードのペアを確認するには、ログイン・ポータルでデータベースへの自動接続を確立する必要があります。 この接続はシークレットで認証され、データベース内の機密情報へのポータルのアクセスが許可されます。 このシークレットが途中で漏洩したり、セキュリティで保護されていないスペースに流れ込んだりすると、権限のない個人がランサムウェア攻撃のためにデータにアクセスしたり、データを盗んだり、公開したり、暗号化したりする可能性があります。
ザ Microsoft 2023 データ漏洩インシデント Wizの研究チームによって発見されたことは、シークレットスキャンの重要性を完璧に示しています。 Microsoft の研究チームは、AI ベースのトレーニング データを GitHub で公開しようとして、Microsoft Azure ストレージ アカウントに保存されている 38 TB のプライベート データ (秘密キー、シークレット、パスワード、30,000 を超える内部 Microsoft Teams メッセージを含む) を公開するリンクを誤って共有しました。
このインシデントは、チームがGitHubへのリンクをリリースする前にアカウントのシークレットをスキャンしていれば防げたはずです。
サイバー攻撃の阻止
ザ Wiz研究チーム また、CI/CD パイプラインの複数の見落とされた場所、特にコンテナイメージのベースレイヤーと Linux bash 履歴ファイルで忘れられたシークレットも見つかりました。 攻撃者は、このような公開された秘密を利用して、さまざまなシナリオでサイバー攻撃を行うことができます。 忘れられた秘密は、横方向の移動を容易にすることができます。 リモート・コード実行 ソフトウェアサプライチェーン攻撃では、ハッカーが企業のソースコードを変更したり、本番環境のアーティファクトに悪意のあるコードを埋め込んだり、イメージのビルドプロセスを改ざんしたりできるようになります。
シークレットスキャンツールは、忘れられた秘密やハードコードされた秘密を公開される前に見つけることで、さまざまな形態のサイバー攻撃者の芽を摘むのに役立ちます。
Many companies are subject to regulatory standards designed to protect end users’ sensitive personal, financial, and health-related information. As secrets guard this data, any accidental release of secrets may result in a data breach that could result in hefty noncompliance fines.
コンプライアンスの向上
多くの企業は、エンドユーザーの機密性の高い個人情報、財務情報、および健康関連情報を保護するために設計された規制基準の対象となっています。 このデータはシークレットが保護されているため、シークレットを誤って公開すると、データ侵害が発生し、多額のコンプライアンス違反の罰金が科せられる可能性があります。
シークレット スキャンは、シークレットが侵害されるのを検出して防止するのに役立ちます。
風評被害や金銭的損失からの保護
侵害やサイバー攻撃は、重大な評判の低下を引き起こし、収益に悪影響を及ぼし、罰金、弁護士費用、和解金などの費用を増加させます。
機密情報を積極的にスキャンして保護することで、このような深刻な結果を回避できます。
シークレットスキャンはどのように機能しますか?
シークレットスキャンには、専用のツールと方法を使用して実行されるいくつかの手順が必要です。 その仕組みは次のとおりです。
ステップ1:スキャン
シークレットスキャナーがインストールされ、ITスタックのすべての関連部分に接続されると、スタックのリアルタイムスキャンまたは静止スキャンが実行されます。
リアルタイムスキャンはイベント駆動型で、バージョン管理システム (VCS) のプルリクエストや、スタックの次のコンポーネントのいずれかでコードが変更されることによってトリガーされます。
コード: コードリポジトリ、設定ファイル
コンテナー: コンテナイメージとKubernetesアーキテクチャ
DevOpsテクノロジースタック: ビルドシステム、チケットシステム、コミュニケーションチャネル、ナレッジ管理システム、バグ追跡ソフトウェア、サポートスタックなど
オブザーバビリティパイプライン: 可観測性/ロギングソフトウェア、およびデータストア
保存時スキャンは、スケジュールされた間隔で同じコンポーネントの履歴スキャンを実行します。
シークレットスキャン技術
シークレットはコードやログなどに埋め込まれていることが多いため、それらを特定するのは難しい場合があります。 次の表に、4つのシークレットスキャン手法の詳細を示します。
If the scanner detects a potential secret, it either corresponds with the service provider or extracts metadata within your stack to identify the service that the secret pattern matches; it then detects if it is still valid.
ステップ 2: シークレットの特定と検証
スキャナーが潜在的なシークレットを検出した場合、スキャナーはサービスプロバイダーに対応するか、スタック内のメタデータを抽出して、シークレットパターンが一致するサービスを識別します。その後、まだ有効かどうかを検出します。
ステップ 3: レポートとアラート
一致が確認されると、スキャナーは公開されたシークレットを通知します。 ツールの包括性によっては、問題を解決するための推奨事項も提供される場合があります。 手記: このレポートには機密データが含まれているため、許可された関係者のみがこのレポートにアクセスできることを確認してください。
オープンソースのシークレットスキャンツール
以下では、5つの一般的なオープンソースのシークレットスキャンツールについて説明します。
シークレットの検出
Detect-secrets は、ヒューリスティックと正規表現を使用してプロジェクトの Git 履歴をスキャンする Microsoft プロジェクトです。
Gitleaks scans repos, directories, files, and entire Git histories to detect past and present exposed secrets. It can be installed using Docker, Go, or Homebrew.
ギットリークス
Gitleaksは、リポジトリ、ディレクトリ、ファイル、およびGitの履歴全体をスキャンして、過去と現在の公開されたシークレットを検出します。 Docker、Go、またはHomebrewを使用してインストールできます。
Whispers scans static structured text files such as configs, XML, JSON, and Python3 for hard-coded secrets. Unlike the others, it doesn't scan code but instead parses known data formats and extracts key-value pairs to detect secrets.
ささやき
Whispers は、config、XML、JSON、Python3 などの静的構造化テキスト ファイルをスキャンして、ハードコードされたシークレットを探します。 他のものとは異なり、そうではありません't はコードをスキャンしますが、代わりに既知のデータ形式を解析し、キーと値のペアを抽出してシークレットを検出します。
Git-secrets is an AWS command-line tool for scanning commits, commit messages, and “–no-ff” merges.
Git-シークレット
Git-secrets は、コミット、コミットメッセージ、および "–no-ff" マージをスキャンするための AWS コマンドラインツールです。
Git-all-secrets is an aggregation of multiple secret scanners, including TruffleHog (a regular expression-based scanner) and repo-supervisor (a high entropy-based scanner).
Git-all-secrets (英語)
Git-all-secrets は、TruffleHog (正規表現ベースのスキャナー) や repo-supervisor (高エントロピーベースのスキャナー) など、複数のシークレットスキャナーの集合体です。
Secret scanning can be approached in a few different ways, including open-source and commercial options. Each brings strengths that can be valuable depending on your environment and use case.
プロプライエタリなツールはどうですか?
シークレットスキャンは、独自のツールを使用して行うこともできます。 オープンソースツールは、金銭的なコストがほとんどまたはまったくかかりませんが、プロプライエタリなツールほどのカバレッジを提供しない場合もあります。 逆に、プロプライエタリなツールは、さまざまな程度の財政的コミットメントを必要としますが、通常はより多くの機能と提供物を備えています。
どちらを選択する場合でも、ツールが使用するスキャン技術に注意してください。たとえば、ハイブリッドスキャナーは、誤検知を減らし、より多くのシークレットタイプを検出するのに役立ちます。 さらに、プロバイダーの評判と、リアルタイムの監視/アラートを実行するツールの能力を考慮してください。 インシデント対応、およびリスクの優先順位付け。
シークレット管理の 6 つのベスト プラクティス
シークレットのスキャンに加えて、シークレットを適切に管理するために、次のベスト プラクティスを実装することも重要です。
1. シークレットマネージャーを使用したシークレットの保存と暗号化
シークレットの無秩序な増加を防ぐために、コンテナイメージ、設定ファイル、コード、その他の保護されていない場所にシークレットを保存することは避けてください。 代わりに、専用のシークレット管理ツール (HashiCorp Vault や AWS Secrets Manager など) を使用して、保存中および転送中のシークレットを暗号化します。
2. (通常の) シークレット ローテーションと動的シークレットを採用する
シークレットのローテーションには、事前に構成された間隔でシークレットを定期的に変更するか、手動で変更をトリガーすることが含まれます。 動的シークレットの使用は、シークレットのローテーションを実装する 1 つの方法です。静的なシークレットとは対照的に、これらは短命であり、特定の時間枠の後、または特定の条件が満たされた後に期限切れになります。
シークレットを定期的にローテーションすることで、ハッカーのチャンスを制限し、侵害されたシークレットがサイバー攻撃に使用される可能性を減らすことができます。
3. シークレットへのアクセスを制限する
スタック全体で一貫性のあるシークレットアクセスポリシーを作成し、その適用を自動化します。 これには、 最小特権の原則 (PoLP)、アクセス制御リスト (ACL)、およびロールベースのアクセス制御 (RBAC)。これにより、ユーザーとアプリのシークレット、データ、インフラストラクチャへのアクセスは、使用する必要がある場合にのみ制限されます。
認証情報が誤って侵害された場合、PoLP、ACL、RBAC は攻撃対象領域を縮小し、脅威アクターが環境内を横方向に移動する能力を制限するのに役立ちます。
4. プレースホルダーを使用する
シークレットのハードコーディングは、公開リポジトリでコードを共有する必要がある場合があるため、避けてください。 上記のMicrosoftのインシデントは、その一例です。 ハードコードされたシークレットの代わりに、 環境変数 を使用して、コード内のシークレットを参照します。
5. シークレットのライフサイクルを追跡する
現在使用されているシークレットを追跡し、侵害されたシークレットを取り消し、アクセスイベント (誰がいつ何にアクセスしたか) を包括的な監査ログに記録します。
6. 脅威パス分析の実装
シークレットスキャンツールを選択する 高度な攻撃パス分析;これにより、シークレットを検出し、それらを関連するシステムと関連付け、攻撃パス上のリソースとシステムの明確なマップが得られます。
What is the Principle of Least Privilege (PoLP)? Use Cases, Benefits, and Implementation
もっと読むWizでシークレットをスキャンする
Wizコード コードベース全体で公開された認証情報、API キー、機密情報を検出し、本番環境に到達する前に確実にキャッチすることで、シークレット スキャンの取り組みを強化します。
の一部として ウィズ'の包括的なクラウドセキュリティプラットフォーム、Wiz Codeは、Terraform、CloudFormation、Ansible、Google Deployment Manager、ARM、Kubernetes、Helm、Docker全体で35+のサポートされているコンプライアンスフレームワークを使用して、ワークフロー全体の脅威と脆弱性をスキャンします。
Wiz は、コード リポジトリと自動的に統合され、次のことを行います。
システムボリュームを分析し、クラウドプラットフォームのアクセスキー、ドメイン証明書、SSHキーなどの公開されたシークレットを検出します
シークレットに関連する既知のデータをスキャンし、メタデータを抽出してコンテキストを提供します
アルゴリズムとビット長の情報を抽出して、SSH 秘密鍵を認証されたキー設定にリンクします
サブジェクト、有効期限、重要な属性などの詳細をプルして、証明書をそれが使用されているリソースにリンクします
潜在的な攻撃パスを追跡するためのセキュリティグラフを提供
シークレットが検出されたときに関係者に警告する
Wizは、クラウドネイティブスキャナーを導入して、速度、効率性、包括的なスキャンを実現しています。
リクエストする デモ 今日は、Wizがあなたの秘密を安全に保つのにどのように役立つかをご覧ください。