AWSではなくGoogle Cloudでの OS Patch Management を設定と補足

# はじめに
ComupteEngineの運用をするにあたって定期でのパッチ適用の要件があり、Googleで自動適用を行う場合、どういった形で実現できるのか、実際に設定しましたので、その内容について纏めます。

# 機能について
OS Patch ManagementはVM Managerの機能の一部でその名の通りOSのパッチを管理する機能です。
VM Managerでは以下の3つの機能が提供されていて、AWSでいうSSMのような機能だな、と思いました。
- OS Patch Management
    - ミドルに対する脆弱性有無の表示、パッチ提供及び適用状況の表示
    - スケジュール実行
- OS Inventory Management
    - OS情報の表示
- OS Configuration Management
    - ポリシーに従った構成の適用及び管理

# OS Patch Managementについて
## 今回の目的
冒頭でも記載したとおり、スケジュールによる自動適用が今回の目的となるので、そこに向けた内容を記載します。

## OS Patch Managementで実現できること
OS Patch Managementを利用してOSへ自動でパッチ適用ができるように設定します。
そのためには、まずOS Config APIを設定し、OS Configエージェントをインストールします。
これらOS Configによってパッチを管理することが可能になります。
その後、パッチ適用のジョブを作成します。ジョブ内でOSに応じてパッチの適用コマンドや、適用対象VM及びパッチ、パッチ適用前後に実施したいコマンドを設定することも可能です。

## 手順
### まずはパッチ適用のジョブの作成手順です。

1.以下の設定を行い、パッチ管理できるようにしておきます。
https://cloud.google.com/compute/docs/manage-os?hl=ja

2.上記設定がされているか、は以下にて確認可能です。
https://cloud.google.com/compute/docs/troubleshooting/vm-manager/verify-setup?hl=ja#api-enabled

3.ComputeEngineからOS PatchManagementを選択します
事前設定する前はこんな感じです。
![スクリーンショット 2022-08-01 17.32.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720034/fa5c436f-67bb-8b52-083b-39bed9ab925a.png)

ですが事前設定後、VMに対するOSの種類が表示されます
![スクリーンショット 2022-07-13 13.18.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720034/8075af4b-f728-c2fe-2e7c-bb047c98cb97.png)

4.新しいパッチのデプロイを選択しパッチジョブの作成にうつります
ここではゾーンやラベルでの対象の絞り込み、手動でインスタンスを決めることも可能です。
![スクリーンショット 2022-07-13 16.04.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720034/8043d286-ba2a-4d54-9213-eb1bd37b0a10.png)

5.パッチの構成を決めます
パッチの適用対象の属性をOS単位で選ぶことが可能です。
また以下ではupgradeとして更新除外パッケージを選んでいますが、更新を選択とすることで更新対象を選択することも可能です。
※ここらへんとか視覚的にわかりやすくて好印象です
![スクリーンショット 2022-07-13 16.04.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720034/f98dc309-3587-06c5-6d23-33b05dcdc7a2.png)

6.スケジュールを決めます
ここはあんまりコメントありませんがスケジュールを決めます。
今すぐ開始、後でスケジュール設定、繰り返しのスケジュールから選べます。
繰り返しのスケジュールは毎日、毎週の決まった曜日、毎月決まった日付、毎月第何曜日、時間を設定できます。
あとは期間という枠があり、その時間内に適用するイメージになります。

7.ゾーンのロールアウト
1つのゾーンずつ行うか、複数のゾーンで行うか選択可能です。
また、ゾーンのしきい値を設けることでゾーン内でどの程度の台数ないし割合で適用するようにしきい値を決めることが可能です。
![スクリーンショット 2022-07-13 16.06.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720034/791a9761-fd1e-273c-5380-c0ef01f42ed5.png)

8.詳細オプション
再起動オプションにてデフォルトでは既知のOSのシグナルに応じて必要に応じて再起動します、それ以外では常にするか、しないか、を選択することが可能です。
あとはパッチ適用前後で指定したスクリプトを実行することが可能です。事前にプロセス落としたい場合や、サービス停止順など決まりがあるようであれば、指定することが可能です。
![スクリーンショット 2022-07-13 16.18.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720034/40563b42-ce58-3ffa-9f17-4b068c1af7bb.png)


9.スケジュール済みのジョブ確認
以下のようにスケジュール済みのジョブが閲覧可能です。
![スクリーンショット 2022-08-01 19.50.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720034/8a20dcff-a860-7dfc-7b38-13174c6c1f98.png)


10.実行結果確認
仮に実行した場合以下のようにパッチジョブタブにて結果の確認が可能です
![スクリーンショット 2022-08-01 19.52.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720034/1275efd2-e463-6037-bb1c-42462995765d.png)


11.パッチ適用状況の確認
VMインスタンスタブにて脆弱性があればその情報と利用可能な更新が表示できます
以下残りのパッチがほぼないためわかりづらいですがCVE番号を表示し脆弱性内容も確認可能です
![スクリーンショット 2022-08-01 20.32.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720034/9ac739a6-dafe-bb11-c938-ca18bf4f6a64.png)


※パッチ適用のジョブ作成については以下を参照しております。
https://cloud.google.com/compute/docs/os-patch-management/create-patch-job?hl=ja#create-patch-console

## 感想
OS Path Managementには事前事後のコマンドが設定可能であるため、OSやシステム特有の部分を吸収できるのはいいな、と思いました。
OS単位のパッケージ表示なども見やすく、それに関連するCVE番号も表示され、そこについても見やすいと思いました。
また、ラベル単位でグループ分けをすることでスケジュールもそうですが、システム単位でラベリングしてパッチ適用対象も細かく調整できるのは便利だなと思いました。
運用面のGoogleの機能について理解が行き届いていない部分が多いので、今後も機会があれば取り組んでいきたいと思います。
AWSで組んでいる人がいればそこと比較してもらえるといいかな、と思いました。