このドキュメントでは、 Rego ポリシー言語を使用してカスタムルールを作成する方法について説明します。 これらのルールをワークロード マネージャーで使用して、組織で定義されたベスト プラクティスに照らしてワークロードを評価できます。
詳細については、ワークロード マネージャーのカスタムルールについてをご覧ください。
始める前に
- Rego ポリシー言語を理解しておきます。
Rego を使用してカスタムルールを作成する
Google は、ワークロードの評価に使用できる事前定義されたルールセットを含むサンプル GitHub
リポジトリを提供しています。これらのサンプルは、複数のユースケースに対応しています。
リポジトリからルールを選択するか、評価要件を記述するルール(.rego)ファイルを作成します。
カスタムルールには次のセクションがあります。
メタデータ 。次のフィールドでルール メタデータを定義します。
DETAILS: ルールの簡単な説明。SEVERITY: ルールの違反の重大度を定義するユーザー定義の値。たとえば、HIGH、CRITICAL、MEDIUM、LOWなどです。ASSET_TYPE: サポートされているアセットのいずれか。詳しくは、サポートされるデータソースをご覧ください。TAGS: ルールの 1 つ以上のタグ。これらのタグは、ルールをフィルタするのに役立ちます。
パッケージ宣言 。例:
templates.google.compute.instance.labelインポート ステートメント 。例:
data.validator.google.lib as libルール定義 。ルールを定義する一連の命令。
ルールの例
次のサンプルルールは、 GoogleCloudPlatform/workload-manager GitHub リポジトリで入手できます。これらのルールをそのまま Cloud Storage バケットにアップロードして、評価の実行に使用できます。または、組織のポリシーに従ってルールを変更し、ファイルを Cloud Storage バケットにアップロードします。
- 例 1: VM に少なくとも 1 つのラベルがあることを確認します。
- 例 2: ワークロードが Compute Engine のデフォルトのサービス アカウントを使用しないようにします。
- 例 3: ワークロード内の VM が外部 IP アドレスを使用しないようにします。
Workload Manager で使用できるサンプルルールの完全なリストについては、 GoogleCloudPlatform/workload-manager GitHub リポジトリをご覧ください。
例 1
Compute Engine リソースに少なくとも 1 つのタグがあることを確認します。
例 2
ワークロードが Compute Engine のデフォルトのサービス アカウントを使用しないようにします。
例 3
ワークロード内の VM が外部 IP アドレスを使用しないようにします。
ルールを Cloud Storage バケットにアップロードする
.rego ファイルを作成したら、Cloud Storage バケットにアップロードします。Cloud Storage
バケットの最上位レベルには、/lib フォルダと /rules フォルダを含める必要があります。
libparameters.regoutils.rego
/rulesrule_name1.regorule_name2.rego