Google Cloud仮想マシンスキャンのセットアップ
仮想マシンをスキャンする理由
Section titled “仮想マシンをスキャンする理由”仮想マシンスキャンを使用すると、AikidoはGoogle Compute EngineのVMのディスクをスキャンし、脆弱なパッケージ、古くなったランタイム、リスクのあるライセンスを検出します。
Google Cloudインスタンスのスキャンを有効にするには、まずGoogle CloudプロジェクトをAikidoに接続する必要があります。まだ接続していない場合は、こちらの手順に従ってください。
クラウドの接続が完了したら、Virtual Machinesページに移動し、**「Connect VMs」**をクリックします。

**「Connect your Virtual Machines」モーダルで、「Agentless scanning」の下から「Google Cloud」**を選択します。Aikidoが以下の4ステップをガイドします。
カスタムロールとサービスアカウントには必要最小限の権限のみが付与され、ストレージ権限もプロジェクト全体ではなくスナップショットバケットのみに限定されます。これにより、意図しないリソースの変更のリスクを負うことなく、Aikidoがセキュリティチェックを実行できるようになっています。
1. 必要なGoogle Cloud APIを有効にする
Section titled “1. 必要なGoogle Cloud APIを有効にする”Aikidoがコンピュートインスタンスをスキャンするには、プロジェクトでいくつかのGoogle Cloud APIを有効にする必要があります。
- GCPコンソールで、右上の**「Activate Cloud Shell」**アイコンをクリックします。
- 画面下部に開いたシェルで、セットアップページに表示されているコマンドを実行します。これにより以下のAPIが有効になります。
compute.googleapis.comiam.googleapis.com
- コマンドの実行が完了したら、**「Continue」**をクリックします。
2. カスタムロールを作成する
Section titled “2. カスタムロールを作成する”Aikidoは2つのカスタムロールを使用します。
- インスタンスの一覧取得、ディスクの読み取り、スナップショットの作成、スナップショットの読み取りを行うメインロール
- Aikidoが作成したスナップショットを削除するための削除専用ロール
セットアップウィザードに表示されるコマンドを実行し、両方のロールを作成してください。
メインロールには以下が含まれます。
compute.instances.listcompute.instanceGroups.getcompute.instanceGroups.listcompute.disks.createSnapshotcompute.disks.getcompute.snapshots.createcompute.snapshots.getcompute.snapshots.listcompute.snapshots.setLabelscompute.snapshots.useReadOnly
2つ目のロールには以下が含まれます。
compute.snapshots.delete
ロールを作成したら、そのIDをメモしておいてください(変更していなければ aikidoSecurityVmScannerRole および aikidoSecurityVmScannerSnapshotDeleteRole です)。
**「Continue」**を押してください。
3. アクセス権を付与する
Section titled “3. アクセス権を付与する”Aikidoは、セットアップウィザード内でAikidoが管理するGoogle Cloudサービスアカウントのメールアドレスを表示します。ステップ2で作成したロールを、そのAikido管理のサービスアカウントに付与します。
- ウィザードに表示されるコマンドを使用して、作成したメインカスタムロールをそのサービスアカウントに付与します。
- 次に、ウィザードに表示される2つ目のコマンドを使用して削除専用ロールを付与します。このバインディングには条件が含まれており、Aikidoが作成したスナップショットにのみ適用されます。これにより、Aikidoは自身が作成したスナップショットのみを削除できるようになります。
大まかな流れは以下の通りです。
AikidoはGoogle Cloudプロジェクト内のGCEインスタンスを検出します。
Aikidoはプロジェクト内の該当するディスクのスナップショットを作成します。
続いてAikidoは、Aikido管理のプロジェクト内に、各スナップショットから一時ディスクを作成します。
一時ディスクは、実際のスキャンを行う分離された一時ジョブにアタッチされます。
一時ディスクはAikido管理のプロジェクトから削除されます。
VPC Service Controls環境でのGCP VMスキャンの利用
Section titled “VPC Service Controls環境でのGCP VMスキャンの利用”GCPプロジェクトがVPC Service Controlsの境界で保護されている場合、上記のIAM権限に加えて、追加のクロスプロジェクト操作を1つ許可する必要がある場合があります。
「仕組み」セクションで説明した通り、Aikidoはお使いのプロジェクト内にスナップショットを作成し、そのスナップショットからAikidoのスキャナープロジェクト内に一時ディスクを作成します。このディスク作成操作は、VPC Service Controlsによってブロックされる可能性があります。
許可すべき内容
- サービス:
compute.googleapis.com - メソッド:
compute.v1.DisksService.Insert - 対象プロジェクト:
aikido-vm-scanning - サービスアカウント:
aikido-vm-scanner-batch@aikido-vm-scanning.iam.gserviceaccount.com