Xray DevSecOpsをAzure上のArtifactory Enterpriseに追加する
以前のブログ記事ではコーヒーの注文がカウンターに届くまでの時間程度でAzure MarketplaceからArtifactoryをインストールまたはアップデートする方法を説明しました。
セルフマネージド(BYOL)のArtifactoryに加えて、ソフトウェア構成分析(SCA)ツールのXrayもAzure Marketplaceで追加することができるようになりました。
JFrog XrayはArtifactoryとネイティブに統合されたSCAソリューションであり、開発者とDevSecOpsチームにリスクのあるアプリケーションを本番環境にリリースする前にオープンソースの脆弱性とライセンス違反に対して事前に対処可能な手段を提供します。
Xray SCAを追加する理由
Xrayは主要なパッケージタイプとインテグレーションしており、それぞれのパッケージをどのように展開し、すべてのレイヤーに何が含まれているかを把握しています。Xrayの再帰的スキャンはDockerイメージやZIPファイルでパッケージ化されたものでさえ、コンポーネントのすべてのレイヤーや依存関係をチェックします。
展開された各コンポーネントはタイムリーで包括的なVulnDBにより、潜在的な脆弱性とライセンス違反を検査されます。
このデータからXrayはすべてのアーティファクトと依存関係を確認し、検出されたすべてのリスクの影響を判断するための独自のコンポーネントグラフ分析結果を提供します。
必要なもの
始める前に必要なものがいくつかあります:
- Azureサブスクリプション
- Azureリージョンで利用可能な予備のvCPU
- Xrayライセンス(試用期間を超えて使用するために)
- Azure上のArtifactory Enterprise
- Azure PostgreSQLサービス
Azure PostgreSQLサーバーのインストール
Xrayはデータベースを使用してコンポーネントの脆弱性データのインデックスを作成します。
XrayのベストプラクティスはArtifactoryとXrayが実行されるノードとは別のノードでデータベースサーバーを構成することです。
そのため、Xrayをインストールする前にAzure PostgreSQLサービスを作成する必要があります。その後、そのデータベースを使用するXrayをインストールします。
Xrayで使用するための最適な設定でAzure PostgreSQLサービスをデプロイするARMテンプレートを作成しました。このテンプレートはJFrog-Cloud-Installersリポジトリにありますが、公式なAzureリポジトリから選択することもできます。
JFrogリポジトリをクライアント環境にクローンします:
$ git clone https://github.com/jfrog/JFrog-Cloud-Installers.git
$ cd ~/JFrog-Cloud-Installers/AzureResourceManager/Postgresql
postgres.parameters.jsonファイルのdb_user、db_password、db_serverの値を設定します。
azurePostgresDBDeploy.jsonファイルはARMテンプレートで推奨値が設定されています。skuSizeMBパラメータはデータベースのストレージをXrayの推奨サイズである200GBに設定します。
Azure CLIを使用してPostgreSQLサービスをArtifactoryのデプロイメントと同じリソースグループにデプロイします。
$ az deployment group create --resource-group --template-file azurePostgresDBDeploy.json --parameters @postgres.parameters.json
azurePostgresDBDeploy.json –parameters @postgres.parameters.json
デプロイ完了後、リソースグループにPostgreSQLサービスが表示されます:
これでこのサーバーがXrayで使えるようになりました。
AzureクラウドへのBYOLインストール
以下を確認後、Azure Marketplaceからインストールを開始します。
- Microsoft Azure Marketplaceへ
- “JFrog”または“Xray”を検索
- JFrog Xray ARM Templateを選択
または直接JFrog Xray ARM Templateへ
インストール手順を開始:
- 「GET IT NOW」ボタンをクリック
サインインしていない場合、MarketplaceはAzureアカウントの認証情報を求めてきます。 - 表示されたポップアップで「マイクロソフトの規約」に同意し、「Continue」をクリック
- 「Create」をクリック
ここからはタブを使って情報を入力します。
Basic
ここでは、このインスタンスのアクティブなサブスクリプションとそのリージョンを選択します。
また、インスタンスのAzureリソースグループも選択する必要があります。Artifactoryと同じリソースグループを選択することはできません。それ以外はAzure Resource Managerで既に作成済のリソースを選択またはCreate newをクリックして定義することができます。
VM Credential
このタブではJFrog Xrayを実行するために作成されるVMのログイン認証情報を指定する必要があります。VM管理者用の有効なユーザー名を入力し、12文字のパスワードまたはSSH公開鍵を指定することができます。
XrayインスタンスはArtifactoryインスタンスと同じ仮想ネットワーク上に存在する必要があります。Artifactoryをデプロイしたリソースグループから仮想ネットワークを選択し、その仮想ネットワーク内の利用可能なサブネットを選択します。推奨のVMサイズはStandard D4s v3で最小要件は4 vCPUです。
Xray Settings
Xrayバージョンを選択後、クラスタ名を設定し、マスターキーを生成します。
Artifactory join keyはArtifactoryの管理モジュールにあります。Security > SettingsタブでConnection detailsにパスワードを入力し、プラットフォームの接続詳細をロック解除します。次にjoin keyを表示後にコピーし、ARMテンプレートフォームにペーストします。最後にArtifactoryのデプロイメントへのURLを指定します。
Database Configuration
この画面でXrayのデータベースを作成または接続することができます。別のノードでPostregSQLサービスを作成している場合はUse existing postgresql instanceを選択します。次にPostgreSQLインスタンスのデータベースサーバー名、接続文字列、ユーザー名、パスワードを入力します。
接続文字列の例:
postgres://<db_server_name>.postgres.database.azure.com:5432/<db_name>?sslmode=disable
Review + Create
この最後のタブではAzureが構成の検証をします。検証をパスした場合、Createをクリックし、デプロイを開始します。
デプロイメント後
作業が完了しました。ARMテンプレートを利用し、XrayとそのコンポーネントパーツをAzure VMにデプロイし、Artifactoryと結合します。
デプロイが完了後、Artifactoryインスタンスにログインします。Index Resourcesのポップアップが表示され、Xrayが稼働していることを確認します。ここからXrayにインデックスを作成するリポジトリを選択できます。
Xrayウォッチを設定することで重要なコンポーネントに問題が発生した場合にアラートを通知し、安全でないビルドのリリースをブロックすることができます。
Artifactory、PostgreSQL、Xrayのインストールプロセスのデモについては、このチュートリアルビデオをご覧ください。