AppScan Presence を設定して GitHub リポジトリーを直接スキャンする
AppScan Presence を使用して、GitHub Enterprise リポジトリーで静的分析を実行できます。
AppScan Presence には、GitHub アプリを使用して GitHub Enterprise サーバーから GitHub リポジトリーで静的分析を実行するためのオプションのサポートが含まれています。GitHub サーバーにパブリックにアクセスできる必要はありません。ただし、AppScan ユーザーは GitHub サーバーへのネットワーク・アクセス権と GitHub 内のリポジトリーへのアクセス権を持っている必要があります。
GitHub スキャンが有効になっている AppScan Presence のインスタンスは、サーバー上で定義されている 1 つの GitHub アプリケーションを使用して、1 つの GitHub Enterprise サーバーに関連付けることができます。
AppScan Presence を使用して GitHub Enterprise リポジトリーに接続してスキャンするには、次の手順を実行します。
- GitHub Enterprise サーバーにアクセスできるプライベート・ネットワーク上のフォルダーの場所にAppScan Presence を作成 しインストールします。注: 組織内のすべてのユーザーは、単一 GitHub サーバーに接続された単一 Presence により、アクセス権のあるサーバー上のリポジトリーをスキャンできます。
- GitHub Enterprise サーバーに GitHub アプリを作成します。
- AppScan Presence で GitHub 固有のパラメーターをアクティブにして設定します。
- スキャンを作成します。
GitHub アプリケーションの作成
始める前に、GitHub アプリに関する情報を確認してください。
AppScan Presence で作業する GitHub アプリケーションを作成するには、次の手順を実行します。
- GitHub にログインします。
- 「新規 GitHub アプリ」をクリックします。 の順に選択し、
- 以下のアプリ・パラメーターを指定します。
パラメーター 値 GitHub App name アプリの名前 Description アプリの説明(例: 開発サーバーへの ASoC コネクター) Homepage URL HCL AppScan on Cloud のURL例えば、 https://cloud.appscan.com
です。コールバック URL AppScan Presenceに埋め込まれた Web アプリケーションの URL に /signin-github
を加えた URL。例えば、https://my-presence-host-fqdn/signin-github
です。Webhook 「アクティブ」のチェックを外す Repository permissions 「コンテンツ」と「メタデータ」を「読み取り専用」に設定します。 Account permissions 「電子メール・アドレス」を「読み取り専用」に設定します。 Where can this GitHub App be installed? 任意のアカウント - 「GitHub アプリの作成」をクリックします。
- GitHub アプリの設定を表示し、AppScan Presence を構成するために以下の値をメモします。
AppID
AppUrl
ClientId
ClientSecret
AppScan Presence の設定とアクティブ化
- GitHub アプリの秘密鍵を作成します。
- GitHub Enterprise の GitHub アプリ・ウィンドウで、「秘密鍵の生成」をクリックします。
- ダウンロードしたファイルの名前を
GitHubAppKey.pem
に変更し、Presence のインストール・フォルダーにコピーします。
- Presence のインストール・ディレクトリーで、
git_connect_settings.json
ファイルを探して開き、編集します。 git_connect_settings.json
のGitConnectOptions
セクションで、次のようにパラメーターを編集します。パラメーター 説明 例 GitServerName
GitHub サーバーの名前 github01
GitConnectUrl
この AppScan Presence によって公開される Web アプリケーションの URL。これは GitHub アプリを作成したときのコールバック URL と同じ値です。 https://my-presence-host-fqdn:443
GithubAppId
この接続用に作成した GitHub アプリの AppID 55
GithubAppUrl
GitHub アプリのインストール URL https://github01.example.com/github-apps/asoc
ClientId
GitHub アプリのクライアント ID <oauth client id>
ClientSecret
GitHub アプリのクライアント・シークレット <oauth client secret>
GitPlatformDomain
GitHub Enterprise サーバーの URL https://github01.example.com Proxy
GitHub サーバーへの接続にプロキシーが必要な場合は、この行をアンコメントしてプロキシーの詳細を入力 127.0.0.1:8888
Active
AppScan Presence で GitHub 接続機能を有効または無効にします。デフォルト値は false
です。true
- HTTPS を使用することを強くお勧めします。HTTP を使用することを選択すると、サイトは安全でないと見なされるため、安全でないコンテンツを許可するようにブラウザー設定を調整する必要があります。
HTTPS を使用するようにするには、
git_connect_settings.json
のKestrel
セクションで、次のようにパラメーターを編集します。パラメーター 説明 例 Http
AppScan Presence に使用されるプロトコル Https
Url
AppScan Presence で使用されるポート http://*:8080 注: AppScan Presence は Kestrel を使用して Web アプリケーションをホストします。Kestrel は組み込み Web サーバーであり、設定ファイルの「Kestrel」セクションで構成できます。このサーバー設定の構成について詳しくは、「ASP.Net コア Kestrel Web サーバーのエンドポイントの設定」を参照してください。 - GitHub アプリを所有するアカウントにインストールします。
- ブラウザーでアプリケーションのパブリック・リンク (
GithubAppUrl
) を開きます。 - アプリをインストールします。
注: このインストールではプライベート・リポジトリーへのアクセス権を付与する必要はありませんが、アプリケーションはそれを所有するアカウントにインストールする必要があります。 - ブラウザーでアプリケーションのパブリック・リンク (
設定が完了すると、Presence を開始 (または再起動) してスキャンを開始できます。ログはコンソールと logs フォルダー下にあるログ・ファイルに書き込まれます。
AppScan Presence GitHub スキャン・フロー
次の図は、AppScan Presence を使用して GitHub Enterprise サーバーからリポジトリーをスキャンする手順を示しています。

- ユーザーが ASoC にログインします。(1、2)
- ASoC から、接続されているサーバーで設定されている有効な AppScan Presence のリストが返されます。次に、ユーザーがスキャンに使用する GitHub サーバーを選択します。 ASoC AppScan Presence サーバーにアクセスするための URL と GitHub サーバーへの URL を返します。
- ユーザーが「GitHub に接続」をクリックすると、ASoC に新しいブラウザー・タブが開かれ、
oAuth
認可コード・フローが開始される AppScan Presence がポイントされます (3)。その後、ユーザーは GitHub Ent Server にリダイレクトされ (4)、ログインして AppScan Presence が GitHub アカウントにアクセスすることに同意すると、認証コードとともに AppScan Presence にリダイレクトされます。 - AppScan Presence は GitHub Ent サーバーからユーザー・アクセス・トークンを取得し (5)、
window.postMessage
を使用してトークンを ASoC に送信するスクリプトとともにユーザーに返します (3)。 - ASoC は GitHub アクセス・トークンを使用して (4)、ユーザーがアクセスできるリポジトリーと、AppScan Presence が使用する GitHub アプリのリストを取得します。ユーザーはスキャンするリポジトリーを選択できます。
- 選択したリポジトリーのスキャンを作成する前に、ASoC はリポジトリーがユーザーによってアクセス可能であることを確認します。AppScan Presence API (3) 関数 RepoSignature は、レポジトリーの詳細 (レポジトリーの所有者とレポジトリーの名前) の署名を作成します。アクセスが検証されると、リポジトリーの詳細に AppScan Presence 固有の秘密鍵で署名されます。署名は、API 呼び出しによって ASoC に返されます。
- ASoC AppScan Presence ID (Git Connect)、リポジトリーの詳細、署名をプロビジョニングし、UsersAPI を使用してスキャンを作成します (2)。UserAPI は、指定された AppScan Presence インスタンスに関連付けられた公開鍵を使用して署名を検証します。検証が成功すると、リポジトリーのスキャンが作成されます。
- AppScan Presence サービスは AppScan Presence WebAPI にタスクをポーリングし (6)、スキャンされたリポジトリーを取得するための新しいタスクを取得します。Presence は、関連付けられた GitHub アプリケーションの秘密鍵を使用して GitHub Enterprise サーバー に接続し (7)、リポジトリーを ZIP ファイルとして取得して Presence WebAPI (UploadRepo) にストリームします。
- リポジトリーの ZIP ファイルは ASoC に保存され、スキャンできます。スキャンが完了すると、結果が ASoC に表示され、分析されます。結果には、GitHub Enterprise サーバーへのリンクが含まれており、コード内の関連する行を参照してトリアージと再変換を行います。 ASoC 関連するコードを含む新しいタブを開くことができます。