コードリポジトリの接続

これは、リポジトリを Tenable One Cloud Exposure に接続するための統合ガイドです。

  • Tenable ですでに接続されているリポジトリを管理する方法については、「コード」を参照してください。
  • IaC 検出結果のモニタリングに関するハウツーガイドについては、 IaC 検出結果を参照してください。
  • Tenable の CI/CD とコード機能の概要については、「コードを参照してください。

コードリポジトリのスキャンを開始するには

  1. リポジトリの接続。組織を接続して、コードリポジトリ全体を クラウドサイバーエクスポージャー に追加します。
  2. リポジトリコード。リポジトリの管理とトラブルシューティング、フォルダー経由でのリポジトリの整理、関連するタスクの実行を行います。
  3. IaC 検出結果。インフラのセキュリティに対して予測されるリスクをもたらすコードリポジトリ内の状況を追跡および監視します。

リポジトリの接続

CI/CD の接続する代わりに、組織を接続してコードリポジトリ全体を クラウドサイバーエクスポージャー に追加することもできます。

リポジトリを接続すると、 Tenable は関連するサービス (Azure Repos など) に定期的に接続し、最後の接続以降にメイン ブランチへの新しいコミットをチェックします。コミットが存在する場合、Tenable はメインブランチのすべてのコードをスキャンし、クラウドサイバーエクスポージャー コンソールに問題を表示します。同じコミットが CI/CD とリポジトリスキャンの両方でスキャンされた場合、両方が別々のスキャンとして表示されます。

注意: 各リポジトリタイプでサポートされている IaC 機能を確認するには、 IaC 互換性マトリクス を参照してください。

Azure Repos 組織の追加

Azure Repos 組織を追加して、組織内のコード リポジトリ全体における IaC 関連の問題を完全に可視化します。リポジトリに追加するには、 クラウドサイバーエクスポージャー アプリにアクセス許可を付与し、Azure Repos 組織を Tenable に接続します。

必要なアクセス許可
Tenable Azure Repos アプリには、次のアクセス許可が必要です。

  • コード (読み取り)。 コミット、変更セット、ブランチ、およびその他のバージョン管理アーティファクトに関するソースコードとメタデータを読み取る権限を付与します。また、サービスフックを介して、コードを検索し、バージョン管理イベントに関する通知を受け取る権限も付与します。
  • プロジェクトとチーム (読み取り)。 プロジェクトとチームを読む権限を付与します。
  • サインインしてユーザープロファイルを読みます。ユーザーのアプリへのサインインを許可します。アプリはサインインしたユーザーのプロファイルを読み取ることができます。また、アプリはサインインしているユーザーの基本的な会社情報も読み取ることができます。

Azure Repos 組織に接続するには、次のようにします。

  1. クラウドサイバーエクスポージャー コンソールで、[設定] > [統合] の順に移動し、[統合を追加] をクリックします。
  2. 統合ライブラリで、 [Azure Repos 組織] をクリックします。[Add Azure Repos Organization] (Azure Repos 組織の追加) ウィザードが開きます。
  3. 管理者の同意を付与 します (ウィザードのステップ 1):
    • [同意の付与] をクリックして Azure で Azure Repos アプリを クラウドサイバーエクスポージャー 承認し、必要なアクセス許可を付与します。組織を代表して同意することを許可されたユーザーとしてサインインする必要があります。
    • [許容] をクリックします。同意が承認されると、クラウドサイバーエクスポージャー ウィザードにリダイレクトされます。

      注意: Azure ポータルで Entra ID > Enterprise Applications に移動し、クラウドサイバーエクスポージャー Azure Repos を検索することで、同意が付与されたことを確認できます。
  4. [コンソールクラウドサイバーエクスポージャー ] 組織を選択します (ウィザードのステップ 2)。追加する組織をドロップダウンメニューから選択し、以下の設定を行います。
    • フォルダー構造を自動的に更新します。リポジトリの構造を Tenable 内のフォルダーとしてミラーリングし、その階層を維持して、ビューを同期させます (デフォルトで有効)。詳細は、アカウント階層とフォルダーを参照してください。
    • クラウドからコードまで同期します。クラウドリソースをコードのオリジンまでトレースします (デフォルトで有効)。詳細については クラウドからコードまで同期 を参照してください。
    • プルリクエストをスキャンします。すべてのプルリクエストに対して自動セキュリティスキャンを有効にして、セキュリティポリシーに照らしてコード変更を評価します。この機能を有効にすると、定義したスキャン失敗しきい値を満たすか、それを超えるセキュリティ設定ミスが含まれている場合、マージをブロックできます。詳細については、「 プルリクエストスキャンを参照してください。
      • [Scan Failure Threshold] (スキャン失敗のしきい値) セクションで、以下のいずれかを選択します。
        • 親レベルのアカウント範囲の設定を継承 (デフォルト)。
        • このアカウント範囲の親レベルの範囲の設定をオーバーライドします。
      • この 設定を有効にした場合 は、ドロップダウンからポリシーの深刻度を選択します。

        注意: この機能は早期リリース版として提供されており、変更される可能性があります。機能およびサポートが制限される場合があります。アクセス権のリクエストやフィードバックの提供については、Tenable の担当者までご連絡ください。

        注意:

        • 既存の CI/CD 統合がある場合、ここで設定されたスキャン失敗しきい値は、CI/CD パイプラインのしきい値設定をオーバーライドします。
        • スキャン失敗しきい値は、 Settings > クラウドサイバーエクスポージャー > IaC で更新できます。
    • [次へ] をクリックします。
  5. (Azure DevOps ポータル) 組織にアクセス許可を付与します (ウィザードのステップ 3):
    1. Azure DevOps にログインし、左下にある [組織の設定] をクリックします。
    2. [一般 >ユーザー] に移動し、[ユーザーの追加] をクリックします。
    3. 次のユーザーの詳細を入力します。
      1. ユーザーまたはサービスプリンシパル: [クラウドサイバーエクスポージャー Azure DevOps] を選択し、objectID を含むサービスプリンシパルのポップアップを必ずクリックします。

        このサービスプリンシパルが表示されない場合は、先ほど (ステップ 3) 管理者の同意を付与したときに使用したものと同じ Azure Active Directory (Microsoft Entra) テナントに Azure Repos 組織が接続されていることを確認してください。これは、Azure DevOps ポータルの [Organization Settings] > [General > Microsoft Entra] で確認できます。

        Azure DevOps Organization Settings, showing the connected Microsoft Entra directory

      2. アクセスレベル: [基本] を選択します。
      3. [Add to projects] (プロジェクトに追加): クラウドサイバーエクスポージャー で使用するプロジェクトを選択します。
      4. Azure DevOps グループ: [プロジェクト管理者] を選択します。
      5. [追加] をクリックします。

        The Azure DevOps Add new users dialog, with the service principal, Basic access level, and Project Administrators group

  6. リポジトリを選択します (ウィザードのステップ 4)。スキャン Tenable リポジトリを選択します (許可されたプロジェクト内):

    • すべてのリポジトリを同期する (推奨)
    • 特定のフォルダーとリポジトリを含める
    • 特定のフォルダーとリポジトリを除外する

    注意:

    • すべてのリポジトリを同期する場合、またはフォルダー全体を含める/除外する場合、フォルダー内の現在および将来のすべてのリポジトリが含まれるか、または除外されます。
    • フォルダー内の特定のリポジトリを含める/除外する場合、選択したリポジトリのみが含まれます/除外されます。
  7. [終了] をクリックします。

Bitbucket ワークスペースの追加

Bitbucket ワークスペースを追加して、ワークスペース内のコードリポジトリ全体における IaC 関連の問題を完全に可視化します。

要件

  • Bitbucket Cloud プレミアム プラン
  • 次のワークスペースアクセストークンのアクセス許可が必要です。
    • アカウント> 読み取り
    • 書き込み>リポジトリ
    • プルリクエスト> 書き込み

ワークスペースを接続するには

  1. クラウドサイバーエクスポージャー コンソールで、[設定] > [統合] の順に移動し、[統合を追加] をクリックします。
  2. 統合ライブラリで、[Bitbucket ワークスペース] をクリックします。[Add Bitbucket Workspace] (Bitbucket Workspace の追加) ウィザードが開きます。
  3. ワークスペースを設定します (ウィザードのステップ 1):
    1. Bitbucket にログインし、接続するワークスペースのワークスペースページに移動します。
    2. 右上にある [ワークスペース設定 > Settings] をクリックします。
    3. サイドバーで、[セキュリティ]> [アクセストークン] をクリックします。
    4. [Create Workspace Access Token] (ワークスペースのアクセストークンを作成) をクリックします。
    5. 次の詳細を入力します。
      • 名前: Bitbucketで クラウドサイバーエクスポージャー アプリケーションに割り当てる名前。
      • 範囲: 書き込み>リポジトリを選択し、書き込み >プルリクエストを選択します。
    6. [作成] をクリックします。
    7. [コピー] ボタンを使用して ワークスペースアクセストークン をコピーし、 クラウドサイバーエクスポージャー コンソールウィザードに貼り付けます。
    8. [Tenable] ウィザードで、次の設定を行います。
      1. クラウドからコードまで同期します。クラウドリソースをコードのオリジンまでトレースします (デフォルトで有効)。詳細については クラウドからコードまで同期 を参照してください。
      2. フォルダー構造を自動的に更新します。リポジトリの構造を Tenable 内のフォルダーとしてミラーリングし、その階層を維持して、ビューを同期させます (デフォルトで有効)。詳細は、アカウント階層とフォルダーを参照してください。
    9. [ 次へ] をクリックします。
  4. リポジトリを選択します (ウィザードのステップ 2)。スキャン Tenable リポジトリを選択します (許可されたプロジェクト内):

    • すべてのリポジトリを同期する (推奨)
    • 特定のフォルダーとリポジトリを含める
    • 特定のフォルダーとリポジトリを除外する

    注意:

    • すべてのリポジトリを同期する場合、またはフォルダー全体を含める/除外する場合、フォルダー内の現在および将来のすべてのリポジトリが含まれるか、または除外されます。
    • フォルダー内の特定のリポジトリを含める/除外する場合、選択したリポジトリのみが含まれます/除外されます。
  5. [終了] をクリックします。

GitHub 組織の追加

クラウドサイバーエクスポージャー GitHub アプリをインストールして GitHub リポジトリを追加すると、組織内のコードリポジトリ全体における IaC 関連の問題を完全に可視化できます。リポジトリが GitHub Enterprise Server でセルフホストされている場合、またはデータ常駐のある GitHub Enterprise Cloud でホストされている場合は、組織の追加に進む前にサーバーを クラウドサイバーエクスポージャーに追加する必要があります。

必要なアクセス許可
リポジトリをスキャンし、自動修正機能を使用し、チェックステータス Tenable レポートするには、GitHubアプリに次のアクセス許可が必要です。

  • リポジトリスキャンのアクセス許可
    • への読み取りアクセス metadata
    • への読み取りアクセス code
  • 自動修正機能のアクセス許可
    • への書き込みアクセス code
    • への書き込みアクセス commit statuses
    • への書き込みアクセス pull requests
  • プルリクエストステータスレポートアクセス許可
    • への読み取りと書き込みのアクセス権 checks
    • への読み取りアクセス commit statuses
    • への読み取りアクセス pull requests

GitHub リポジトリを接続するには

  1. クラウドサイバーエクスポージャー コンソールで、[設定] > [統合] の順に移動し、[統合を追加] をクリックします。
  2. 統合ライブラリで、[GitHub 組織] をクリックします。[GitHub組織] ウィザードが開きます。
  3. GitHub Server を選択します (ウィザードのステップ 1)。リポジトリがホストされている場所を選択します。
    • GitHub.com
    • GitHub Enterprise Server (セルフホスト型) または データレジデンシー (GHE.com) を備えた GitHub Enterprise Cloud。サーバーがドロップダウンに表示されない場合、組織の追加に進む前に Tenable に追加 する必要があります。
  4. GitHub で認証します (ウィザードのステップ 2)。接続する組織のアプリ インストールにアクセスできる GitHub ユーザーで認証します。[GitHub ユーザーの認証] をクリックします。
  5. クラウドサイバーエクスポージャーをインストールするアプリ (ウィザードのステップ 3):
    1. ここをクリックして、 クラウドサイバーエクスポージャー アプリページに移動します。
    2. [インストール/構成] をクリックします。
    3. [Install クラウドサイバーエクスポージャー] (インストール) ページで組織名をクリックします。
    4. すべてのリポジトリに Tenable アクセスを付与する場合は、[すべてのリポジトリ] を選択します。それ以外の場合は、 [選択したリポジトリのみ] を選択し、少なくとも 1 つのリポジトリを選択します。
    5. [インストール] をクリックします。必要に応じてパスワードを入力し、アプリがインストールされていることを確認します。上記のアプリに必要なアクセス許可の完全なリストを確認できます。
    6. [クラウドサイバーエクスポージャー コンソール] ウィザードで、[次へ] をクリックします。
  6. 組織を選択します (ウィザードのステップ 4)。追加する組織をドロップダウンメニューから選択し、次の設定を行います。
    • フォルダー構造を自動的に更新します。リポジトリの構造を Tenable 内のフォルダーとしてミラーリングし、その階層を維持して、ビューを同期させます (デフォルトで有効)。詳細は、アカウント階層とフォルダーを参照してください。
    • クラウドからコードまで同期します。クラウドリソースをコードのオリジンまでトレースします (デフォルトで有効)。詳細については クラウドからコードまで同期 を参照してください。
    • プルリクエストをスキャンします。すべてのプルリクエストに対して自動セキュリティスキャンを有効にします。この機能を有効にすると、定義したスキャン失敗しきい値を満たすか、それを超えるセキュリティ設定ミスが含まれている場合、マージをブロックできます。詳細については、「 プルリクエストスキャンを参照してください。
      • [組織] ツリーのドロップダウンで、[コード] アカウントの範囲 を選択します。
      • [Scan Failure Threshold] (スキャン失敗のしきい値) セクションで、以下のいずれかを選択します。

        • 親レベルのアカウント範囲の設定を継承 (デフォルト)。

          注意: 組織全体を範囲として選択した場合、[継承] オプションは使用できません。
        • 親レベルの範囲の設定を、このアカウント範囲固有の設定 (有効 / 無効) でオーバーライドします。この固有の構成は、親レベルの範囲で行われた変更に関係なく、子レベルの範囲に残ります。
      • この 設定を有効にした場合 は、ドロップダウンからポリシーの深刻度を選択します。

        注意: この機能は早期リリース版として提供されており、変更される可能性があります。機能およびサポートが制限される場合があります。アクセス権のリクエストやフィードバックの提供については、Tenable の担当者までご連絡ください。

        注意:

        • 既存の CI/CD 統合がある場合、ここで設定されたスキャン失敗しきい値は、CI/CD パイプラインのしきい値設定をオーバーライドします。
        • スキャン失敗しきい値は、Settings > クラウドサイバーエクスポージャー > IaC ::: で更新できます
  7. [次へ] をクリックします。
  8. リポジトリを選択します (ウィザードのステップ 5)。スキャン Tenable リポジトリを選択します。

    • すべてのリポジトリを同期する (推奨)
    • 特定のフォルダーとリポジトリを含める
    • 特定のフォルダーとリポジトリを除外する

    注意:

    • すべてのリポジトリを同期する場合、またはフォルダー全体を含める/除外する場合、フォルダー内の現在および将来のすべてのリポジトリが含まれるか、または除外されます。
    • フォルダー内の特定のリポジトリを含める/除外する場合、選択したリポジトリのみが含まれます/除外されます。
  9. [終了] をクリックします。

GitHub Enterprise Server の追加

リポジトリが GitHub Enterprise Server でセルフホストされている場合、またはデータ所在地 (GHE.com) のある GitHub Enterprise Cloud でホストされている場合は、組織の追加に進む前にサーバーを クラウドサイバーエクスポージャー に追加する必要があります。

この統合では以下がサポートされます。

  • GitHub Enterprise Server、インターネットに接続し、ネットワーク分離の両方。ネットワーク分離サーバーの操作の詳細については、「 ネットワーク分離されたサーバーの接続 を参照してください。
  • EU リージョンにデータ所在地を持つ GitHub Enterprise Cloud。

企業で IP 許可リストを使用している場合は、リージョンの IP アドレス クラウドサイバーエクスポージャー を追加します。「 許可が必要な Tenable IP アドレス」を参照してください。

  1. クラウドサイバーエクスポージャー コンソールで、[設定] > [統合] の順に移動し、[統合を追加] をクリックします。
  2. 統合ライブラリで、 GitHub Enterprise をクリックします。[GitHub Enterprise の追加] ウィザードが開きます。
  3. サーバーの詳細を設定します (ウィザードのステップ 1):
    1. クラウドサイバーエクスポージャーコンソールに表示するサーバーの名前を入力します。
    2. Tenable のサーバーへの接続方法を選択します。サーバーがネットワークから分離されている場合、Tenable エンドポイントコネクタを使用して接続を確立します。データ所在地のある GitHub Enterprise Cloud の場合は、 [エンドポイント (インターネット向け)] を選択します。エンドポイントコネクタも SSL 証明書の設定も必要ありません。
      • エンドポイント (internet-facing)。 GitHub Enterprise Server エンドポイントを入力します (https:// プロトコルプレフィックスなし)。たとえば、「github.tenable.com」や「192.82.156.1:8443」と入力します。
      • エンドポイントコネクタ (ネットワーク分離)。 ドロップダウンから関連するコネクタを選択します。このオプションが無効になっている場合は、まだコネクタを追加していないということです。追加方法については、「 ネットワーク分離されたサーバーの接続 を参照してください。
    3. サーバーで SSL が有効になっている場合は 、すべてのサーバー SSL 証明書を受け入れ るにチェックを入れます。
    4. クラウドサイバーエクスポージャーコンソールで、[次へ] をクリックします。
  4. アプリの詳細を設定します (ウィザードのステップ 2):
    1. クラウドサイバーエクスポージャー GitHub アプリをホストする組織の [アプリケーション組織名] (Application Organization Name) を入力します。これは、 Tenable に接続した組織とは異なる場合があります。
    2. [GitHub アプリの登録] をクリックします。

      注意: 組織を クラウドサイバーエクスポージャー に正常に追加している場合、GitHub アプリはすでに設定されているため、この手順をスキップできます。
    3. (GitHub)開いた [新しい GitHub アプリの登録] ページで、下にスクロールして [GitHub アプリの作成] をクリックします。

      重要: 自動入力されている設定を編集または変更しないでください。統合が機能しなくなる可能性があります。
      注意: クラウドサイバーエクスポージャー GitHub アプリに関する以下の詳細は、GitHub Enterprise Server または GHE.com 組織の設定 (Settings > [開発者設定] > [GitHubアプリの一般] ページで確認できます)。
    4. App ID を入力します。
    5. クライアント ID を入力します。
    6. クライアントシークレットを生成してコピーし、ウィザードに入力します。
    7. プライベートキーを生成してダウンロードし、ウィザードに入力します。
    8. [終了] をクリックします。
  5. 正常に終了したら、 GitHub 組織の追加できます (まだ追加していない場合)。

GitLab グループの追加

GitLab グループを追加して、グループ内のコードリポジトリ全体における IaC 関連の問題を完全に可視化します。リポジトリが GitLab Self-Managed Server でセルフホストされている場合は、組織の追加に進む前にサーバーを クラウドサイバーエクスポージャーに追加する必要があります。

要件:

  • プレミアムSaaSプラン以上

GitLab グループを接続するには

  1. クラウドサイバーエクスポージャー コンソールで、[設定] > [統合] の順に移動し、[統合を追加] をクリックします。
  2. 統合ライブラリで、[GitLab Group] をクリックします。[Add GitLab Group] (GitLab グループの追加) ウィザードが開きます。
  3. GitLab Server を選択します (ウィザードのステップ 1)。プロジェクトがホストされている場所を選択します。
    • GitLab.com
    • GitLab セルフマネージドサーバー。サーバーがドロップダウンに表示されない場合は、組織の追加に進む前に [ クラウドサイバーエクスポージャーに追加] を行う必要があります。
  4. [次へ] をクリックします。
  5. グループを設定します (ウィザードのステップ 2):
    1. GitLab にログインし、[グループ] をクリックします。
    2. 接続するルート、親グループをクリックします。サブグループは接続できません。
    3. 左側のメニューで、[Settings > アクセストークン] をクリックします。
    4. [新しいトークンの追加] をクリックします。
    5. 次の詳細を入力します。
      1. [Token name] (トークン名)。
      2. [Expiration date] (有効期限日): この日付以降、トークンの更新と Tenable の設定の更新が必要になります。
      3. ロールの選択: [開発者] を選択します。
      4. [スコープの選択]: api を選択します。
    6. [グループアクセストークンの作成] をクリックしてトークンをコピーします。
    7. [クラウドサイバーエクスポージャー] コピーした ルートグループのアクセストークン を入力します。
    8. [Tenable] ウィザードで、次の設定を行います。
      • クラウドからコードまで同期します。クラウドリソースをコードのオリジンまでトレースします (デフォルトで有効)。詳細については クラウドからコードまで同期 を参照してください。
      • フォルダー構造を自動的に更新します。リポジトリの構造を Tenable 内のフォルダーとしてミラーリングし、その階層を維持して、ビューを同期させます (デフォルトで有効)。詳細は、アカウント階層とフォルダーを参照してください。
    9. [次へ] をクリックします。
  6. プロジェクトを選択します (ウィザードのステップ 3): Tenable スキャンするプロジェクトを選択します。

    • すべてのリポジトリを同期する (推奨)
    • 特定のフォルダーとリポジトリを含める
    • 特定のフォルダーとリポジトリを除外する

    注意:

    • すべてのリポジトリを同期する場合、またはフォルダー全体を含める/除外する場合、フォルダー内の現在および将来のすべてのリポジトリが含まれるか、または除外されます。
    • フォルダー内の特定のリポジトリを含める/除外する場合、選択したリポジトリのみが含まれます/除外されます。
  7. [終了] をクリックします。

GitLab セルフマネージドサーバーの追加

グループが GitLab Self-Managed Server でセルフホストされている場合は、グループの追加に進む前にサーバーを クラウドサイバーエクスポージャー に追加する必要があります。

この統合は、インターネット向けサーバーとネットワーク分離されたサーバーの両方をサポートしています。ネットワーク分離サーバーの操作の詳細については、「 ネットワーク分離されたサーバーの接続 を参照してください。

  1. クラウドサイバーエクスポージャー コンソールで、[設定] > [統合] の順に移動し、[統合を追加] をクリックします。
  2. 統合ライブラリで、[GitLab Self-Managed Server] をクリックします。[Add GitLab Self-Managed Server] (GitLab Self-Managed Server の追加) ウィザードが開きます。
  3. サーバーの詳細を設定します (ウィザードのステップ 1):
    1. クラウドサイバーエクスポージャーコンソールに表示するサーバーの名前を入力します。
    2. Tenable のサーバーへの接続方法を選択します。サーバーがネットワークから分離されている場合、Tenable エンドポイントコネクタを使用して接続を確立します。
      • エンドポイント (internet-facing)。 GitLab Self-Managed Server エンドポイントを入力します (https:// プロトコルプレフィックスなし)。たとえば、「gitlab.tenable.com」や「192.82.156.1:8443」と入力します。
      • エンドポイントコネクタ (ネットワーク分離)。 ドロップダウンから関連するコネクタを選択します。このオプションが無効になっている場合は、まだコネクタを追加していないということです。追加方法については、「 ネットワーク分離されたサーバーの接続 を参照してください。
    3. サーバーで SSL が有効になっている場合は 、すべてのサーバー SSL 証明書を受け入れ るにチェックを入れます。
    4. クラウドサイバーエクスポージャーコンソールで、[次へ] をクリックします。
  4. 正常に終了すると、 GitLab グループの追加できます (まだ追加していない場合)。

クラウドからコードまで同期

問題をコードのオリジンまでトレースするには、コードリポジトリを クラウドサイバーエクスポージャー に接続して、クラウドリソースに関連付けられたコードを同期します (クラウドからコードまで)。

注意: コードまで問題をトレースするのにサポートされているプラットフォーム/リポジトリについては、 IaC 互換性マトリクス を参照してください。

Terraform コードの状態データファイルを保存しているクラウドストレージリソース (S3 バケットなど) を読み取るアクセス許可を Tenable に付与します。状態ファイルには、データファイルの保存を定義するバック エンドが設定されている必要があります。

AWS: Terraform のアクセス許可を付与する

  1. トレースする Terraform の状態データを含む S3 バケットがすべて クラウドサイバーエクスポージャー に対して可視化されることを確認します。バケットは、 Tenable に接続されているアカウントにある必要があります。
  2. コードリポジトリをクラウドサイバーエクスポージャー に接続します。[Sync Cloud to Code] (クラウドからコードまで同期) チェックボックスが有効になっていることを確認します。
  3. AWS> [Settings > Accounts] に移動し、S3バケットがあるアカウントを見つけます。[Status] (ステータス) 列は、関連するバケットのリストとともに、Terraform の状態ファイルを読み取るためのアクセス許可がないことを示しているはずです。

    An account status of Connected with issues, listing S3 buckets whose Terraform state files can't be read

  4. アカウントの横にある三点リーダーアイコンをクリックし、[編集] をクリックします。
  5. ウィザードで、[Next] ( 次へ ) をクリックしてステップ 2 (アクセス許可) に移動し、
    Terraform (S3) を有効にします。接続済みのアカウントに関連付けられているバケットのリストが表示されます。
  6. [Next] ( 次へ ) をクリックしてステップ 3 (IAM ロール) に移動し、表示される Terraform アクセス許可ポリシー JSON (3B) をコピーします。
  7. AWS 管理コンソールで、[IAM] > [ロール] に移動し、アカウントを接続したときに作成したロールを検索します (ロール名は クラウドサイバーエクスポージャー ウィザードのステップ 3 で表示されます)。
  8. [アクセス許可] タブで、[アクセス許可の追加] > [インラインポリシーの作成] をクリックします。
  9. 先ほどコピーしたポリシーを [JSON] エディターに貼り付けます。
  10. [次へ] をクリックして、ポリシーの作成を完了します。
コピー

JSON

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::<bucket_name>",
        "arn:aws:s3:::<bucket_name>/*",
      ]
    }
  ]
}

Azure: Terraform のアクセス許可を付与する

  1. トレースする Terraform の状態データを含む Blob コンテナがすべて クラウドサイバーエクスポージャー に対して可視化されることを確認します。コンテナは、 Tenable に接続されたサブスクリプションに含まれている必要があります。
  2. コードリポジトリをクラウドサイバーエクスポージャー に接続します。[Sync Cloud to Code] (クラウドからコードまで同期) チェックボックスが有効になっていることを確認します。
  3. Azure > Settings > アカウントに移動し、Blob コンテナがあるサブスクリプションを見つけます。[Status] (ステータス) 列は、Blob コンテナがある関連するストレージアカウントのリストとともに、Terraform の状態ファイルを読み取るためのアクセス許可がないことを示しているはずです。

    A subscription status of Connected with issues, listing storage accounts whose Terraform state files can't be read

  4. サブスクリプションの横にある三点リーダーアイコンをクリックし、[編集] をクリックします。
  5. ウィザードで、[Next] ( 次へ ) をクリックしてステップ 3 (アクセス許可) に移動し、
    Terraform (Blob コンテナ) を有効にします。接続されているサブスクリプションに関連付けられている Blob コンテナのリストが表示されます。ストレージアカウントと Blob コンテナ名をコピーします。
  6. Azure ポータルで、前の手順で一覧表示されたストレージアカウントに移動します。
  7. [データストレージ] の下にある [コンテナ] に移動し、 クラウドサイバーエクスポージャー ウィザードに一覧表示されている Blob コンテナをクリックします。
  8. [アクセス制御 (IAM)] に移動し、[追加] > [ロール割り当ての追加] をクリックします。
  9. ウィザードのリストから ストレージ BLOB データ閲覧者 ロールを検索して選択し、[次へ] をクリックします。
  10. [+ メンバーを選択する] をクリックします。
  11. クラウドサイバーエクスポージャー コネクタ を検索して選択し、[選択] をクリックします。
  12. [次へ] をクリックし、[レビューと割り当て] をクリックして終了します。追加するすべてのロールに対してこのステップを繰り返します。

GCP: Terraform のアクセス許可を付与する

  1. トレースする Terraform の状態データを含むバケットがすべて クラウドサイバーエクスポージャーに対して表示されていることを確認します。バケットは、 Tenable に接続されているプロジェクト内にある必要があります。
  2. コードリポジトリをクラウドサイバーエクスポージャー に接続します。[Sync Cloud to Code] (クラウドからコードまで同期) チェックボックスが有効になっていることを確認します。
  3. GCP > [Settings > Accounts] (アカウント) に移動し、バケットがあるプロジェクトを見つけます。[Status] (ステータス) 列は、関連するバケットのリストとともに、Terraform の状態ファイルを読み取るためのアクセス許可がないことを示しているはずです。

    An account status of Connected with issues, listing storage buckets whose Terraform state files can't be read

  4. アカウントの横にある三点リーダーアイコンをクリックし、[編集] をクリックします。
  5. ウィザードで、[Next] ( 次へ ) をクリックしてステップ 3 (アクセス許可) に移動し、
    Terraform の状態 (ストレージバケット) を有効にします。接続済みのアカウントに関連付けられているバケットのリストが表示されます。
  6. [次へ] を 2 回クリックして、手順 5 (ロールの割り当て) に移動します。以降の手順でここの情報が必要になるため、このページは開いたままにしておきます。
  7. Google Cloud コンソールで、[Cloud Storage > Buckets] に移動します。
  8. Tenableウィザードのステップ 5 (ロールの割り当て) で一覧表示されているバケットの名前の横にあるボックスにチェックを入れます。
  9. 上部にある [buckets selected] (選択済みのバケット) バーで、[Permissions] をクリックします。
  10. 右側のサイドビューで、[プリンシパルの追加] をクリックします。
  11. Tenableウィザードの値のステップ 5 (ロールの割り当て) にリストされているサービスアカウントのメール値をコピーして、[新しいプリンシパル] フィールドに貼り付けます。
  12. 次のロールをコピーして [ロール] フィールドに 1 つずつ貼り付けます。追加のロールごとに [+ 別のロールを追加] をクリックします。
    • Storage Insights Collector Service
    • Storage Object Viewer
  13. [保存] をクリックします。
  14. (クラウドサイバーエクスポージャー コンソール) ウィザードで [次へ] (Next) をクリックし、 [完了] (Finish) をクリックします。

プルリクエストスキャン

設定ミスが本番環境に反映されるのを防ぐには、開発者のワークフロー内ですべてのプルリクエストを直接スキャンして、セキュリティゲートを自動化します。

機能の詳細については、「 プルリクエストスキャン

セットアップと要件

PR スキャンを有効にし、セキュリティゲートとして適用するには、次の要件が満たされていることを確認します。

コードリポジトリ 必要なアクセス許可 ゲートに必要な設定
GitHub 読み取り/書き込みアクセス リポジトリ ルールセットを作成し、[ステータス チェックに合格する] を選択します。Tenable スキャンステータスを必須要件として追加します。
Azure DevOps (ADO)
  • 読み取り/書き込みアクセス。
  • プロジェクト管理者 ロールが必要です。
ブランチ保護設定にステータスポリシーを追加します。continuous-integration/TenableCloudSecurity オプションを選択し、[必須] に設定します。

仕組み

Tenable は、イベント駆動型アーキテクチャを使用して Tenable のインフラ上のコードをスキャンするため、ローカルのコンピューティングリソースが不要になります。

  1. イベント トリガー: 統合を有効にすると、 Tenable はリポジトリに Webhook を作成し、新しい PR または更新された PR をプラットフォームに通知します。
  2. リモートスキャンの実行: イベントを受信すると、 Tenable はパイプラインを手動で設定しなくても、コードを安全に複製して分析します。
  3. 結果の配信: スキャン結果は クラウドサイバーエクスポージャー コンソールに報告され、PR 内でインライン コメントとして直接投稿されます。
注意: PR スキャンはコードの差分のみを評価してスピードと開発者の効率を最大化しますが、標準リポジトリスキャンはリポジトリ全体を評価します。

プルリクエストスキャンを無効にする

特定のリポジトリのスキャンを無効にする必要がある場合、または統合を削除する必要がある場合

  1. 設定を無効にします。 特定のリポジトリの クラウドサイバーエクスポージャー コンソール内の [プルリクエストスキャン] 設定をオフにします。
  2. Webhook の削除: 統合が無効化されると、 Tenable はコードリポジトリ用に作成された Webhook を自動的に削除します。