bb-audit Gruntタスクを使用したアプリケーションの監査
Visual Builderには、ビジュアル・アプリケーションの監査に使用できるvb-audit Gruntタスクを含むNPMパッケージ(grunt-vb-audit)が用意されています。
ビジュアル・アプリケーションのルート・フォルダには、Gruntがアプリケーションを監査するときに使用する2つのリソース・ファイルが含まれます。 : Gruntfile.jsとpackage.json :
| ファイル | 説明 |
|---|---|
Gruntfile.js |
カスタム監査タスクを追加したり、組込みタスクを構成するために変更できる基本的なGruntスクリプトが含まれています。 |
package.json |
依存関係を宣言し、ビジュアル・アプリケーションを監査するGruntタスクを提供するgrunt-vb-audit NPMパッケージへのURL参照を指定します。 Visual Builderは、Oracleがパッケージの新しいバージョンを公開するたびに、パッケージのバージョンとURLを自動的に更新します。
|
ビジュアル・アプリケーションのビルドおよびデプロイに使用するGruntタスクと同様に、Node.jsとそのパッケージ・マネージャ(npm)をローカル・システムにインストールする必要があります。 ビジュアル・アプリケーションのソースをローカル・システムに保存する必要もあります。
vb-auditを使用してアプリケーションを監査するには:
- コマンドライン・インタフェースで、
package.jsonおよびGruntfile.jsファイルを含むローカル・システム上のフォルダに移動します。 npm installを入力して、アプリケーションの監査に必要なノード依存性を取得します。installコマンドは、
package.jsonで定義されているgrunt-vb-auditNPMパッケージを取得します。- アプリケーションを監査するには、コマンドライン・インタフェースで
grunt vb-auditと入力します。 次の図は、このタスクの実行方法を示しています。# Audit application sources ./node_modules/.bin/grunt vb-audit \ --url=<https://Visual-Builder-runtime-instance-url/ic/builder/> \ --username=<Visual-Builder-runtime-username> \ --password=<Visual-Builder-runtime-password> \ --id=<your visual app ID> \ --ver=<your visual app version>
監査するビジュアル・アプリケーションに、監査を完了するためにビジネス・オブジェクトなどのサーバー接続を必要とするモジュールが含まれていない場合は、タスク・パラメータ(URL、usernameなど)を省略できます。 サーバー接続が必要なときにタスク・パラメータの値を指定しないと、コマンドライン・インタフェースにエラー・メッセージが表示され、対応するモジュールは監査に失敗します。
デフォルトでは、vb-auditは次のglobパターンに従ってアプリケーション内のすべてのファイルを監査します:
[
'**/*',
// Ignore npm directories during audit
'!node/**',
'!**/node_modules/**',
]
監査するファイルを独自のglobパターンでオーバーライドできます。 デフォルトのglobパターンの除外パターンは、指定したglobパターンに追加されます。
Gruntfile.jsでの監査オプションの構成
ビジュアル・アプリケーションのGruntfile.jsファイルで、サーバー接続プロパティおよびvb-auditプロパティを指定できます。
次の例に、使用可能なオプションを示します。
grunt.initConfig({
vb: {
url: '<VB-instance-url>',
id: <your visual app ID>,
ver: <your visual app version>,
username: <username>,
password: <password>, // This is not encrypted
},
'vb-audit': {
options: {
config: {
auditors: {
// Disable specific auditors
'lcm.VirtualRolesAuditor': { // Requires backend
enabled: false,
},
'components.InstalledComponentsAuditor': { // Requires backend
enabled: false,
},
'serviceConnectionAuditor': { // Requires backend
enabled: false,
},
'deploymentProfileAuditor': { // Requires backend
enabled: false,
},
},
},
files: [ // Globbing patterns to use for this application
'*',
'process/**',
'services/**',
'settings/**',
'webApps/**',
'!**/package-lock.json',
],
processResults: (results) => { // Supply an alternate results processor
grunt.log.writeln(`Processed ${results.auditedResourceCount} files`);
},
outputFile: 'auditoutput.txt', // Output file to receive the audit results (e.g. auditoutput.txt, auditoutput.csv)
},
},
});'vb-audit': { options: { config: {のエントリは監査システムに渡され、Visual Builderの監査機能を使用して後者のファイルでオプションを構成した場合は、ビジュアル・アプリケーションのsettings/audit.jsonファイルで設定したオプションをオーバーライドまたは拡張します。
出力には、processResultsまたはoutputFileを指定できます。 どちらも指定しない場合、vb-auditは出力をコマンドライン・インタフェースに書き込みます。 前述のGruntfile.jsの例は、使用可能なオプションの例であるため、両方のオプションが表示されることに注意してください。 使用しないオプション(processResultsまたはoutputFile)を省略するか、コマンドライン・インタフェースに出力を書き込む場合は両方のオプションを省略します。
processResultsの結果パラメータの形式は次のとおりです:
{
auditedResourceCount, <number of resources audited>
totalResourceCount, <number of resources checked (some resources may not have auditors)>
issues[{
ruleId, // String id of the rule
severity, // ['error' | 'warning' | 'info' | 'todo']
message, // String message
filePath, // resource's file path
location: {
line,
col,
endLine,
endCol,
length,
},
}]
}標準オプションをオーバーライドまたは拡張するターゲット・ベースのオプションをGruntfile.jsで指定できます。 次の例では、webAppsディレクトリ内のモジュールを監査します:
grunt.initConfig({
vb: {
...
},
'vb-audit': {
options: {
...
},
webApps: { // target to audit the modules in the webApps directory
files: [
'webApps/**'
],
},
},
});webAppsターゲットを監査するには、vb-auditタスクを実行し、ターゲットを指定します:
./node_modules/.bin/grunt vb-audit:webApps
ノート:
grunt.config.mergeは、前述の例のwebAppsなどのターゲット・オプションをvb-auditオプションにマージします。 配列プロパティとオブジェクト・プロパティを再帰的にマージします。 たとえば、optionsが5つの要素を持つfiles配列を定義し、2つの要素を持つfiles配列を持つターゲット・オプションを指定した場合、optionsファイル配列の最初の2つの要素は上書きされ、残りの3つの要素は変更されません。
Gruntfile.jsファイルのfilesオプションとsettings/audit.jsonファイルのpaths/excludeオプションの違いは、Gruntfile.jsファイル・オプションがvb-auditが監査システムに送信するファイルのセットをアセンブルするのに対し、audit.jsonパターンは監査システムで無視されることです。 特に、Gruntfile.jsでfilesオプションを指定する場合、node_modulesの下の数千のファイルの処理には時間がかかる可能性があるため、node_modulesのような除外パターンが必要です。 この除外パターンは、デフォルト構成に含まれています。
Gruntfile.jsの構成オプションのオーバーライド
コマンドライン・インタフェースでプロパティを指定することで、vb-auditのGruntfile.js構成オプションをオーバーライドできます。
次の例に、使用可能なオプションを示します。
./node_modules/.bin/grunt vb-audit \
--audit.files='webApps/**' \
--audit.disabledauditors='lcm.VirtualRolesAuditor,components.InstalledComponentsAuditor' \
--audit.outputfile='auditoutput.txt'