このドキュメントでは、Rego ポリシー言語を使用してカスタムルールを作成する方法について説明します。Workload Manager でこれらのルールを使用して、組織に定義されたベスト プラクティスと照らし合わせてワークロードを評価できます。
詳細については、Workload Manager のカスタムルールについてをご覧ください。
始める前に
- 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
ルール定義。ルールを定義する一連の手順。
ルールの例
次のサンプルルールは、GitHub リポジトリ GoogleCloudPlatform/workload-manager で入手できます。これらのルールをそのまま Cloud Storage バケットにアップロードして、評価の実行に使用できます。または、組織のポリシーに従ってルールを変更し、ファイルを Cloud Storage バケットにアップロードします。
- 例 1: VM に少なくとも 1 つのラベルがあることを確認します。
- 例 2: ワークロードで Compute Engine のデフォルトのサービス アカウントが使用されないようにします。
- 例 3: ワークロード内の VM が外部 IP アドレスを使用しないようにします。
Workload Manager で使用できるサンプルルールの一覧については、GitHub の GoogleCloudPlatform/workload-manager リポジトリをご覧ください。
例 1
Compute Engine リソースに少なくとも 1 つのタグがあることを確認します。
例 2
ワークロードで Compute Engine のデフォルトのサービス アカウントが使用されないようにする
例 3
ワークロード内の VM が外部 IP アドレスを使用しないようにします。
ルールを Cloud Storage バケットにアップロードする
.rego
ファイルを作成したら、Cloud Storage バケットにアップロードします。Cloud Storage バケットの最上位レベルには、/lib
フォルダと /rules
フォルダを含める必要があります。
lib
parameters.rego
utils.rego
/rules
rule_name1.rego
rule_name2.rego
次のステップ
- ワークロード評価の詳細
- 評価を作成して実行する方法を学習する。