ポリシーディレクトリ構造
InfraGuardは、ポリシーを読み込むための明確な優先順位システムを持つ複数のポリシーソースをサポートしています。
ディレクトリ構造
標準ポリシーディレクトリ構造
ポリシーはプロバイダー優先のディレクトリ構造に従います:
{policy-root}/
├── {provider}/
│ ├── rules/
│ │ ├── rule1.rego # 個別のルール
│ │ └── rule2.rego
│ └── packs/
│ ├── pack1.rego # コンプライアンスパック
│ └── pack2.rego
例:
.infraguard/policies/
├── solution/
│ ├── rules/
│ │ ├── metadata-ros-composer-check.rego
│ │ ├── metadata-templatetags-check.rego
│ │ ├── parameter-sensitive-noecho-check.rego
│ │ └── security-group-open-ports-except-whitelist.rego
│ └── packs/
│ └── ros-best-practice.rego
ポリシー読み込み優先順位
InfraGuardは、次の優先順位(高から低)で複数のソースからポリシーを読み込みます:
- ワークスペースローカルポリシー:
.infraguard/policies/(現在の作業ディレクトリ) - ユーザーローカルポリシー:
~/.infraguard/policies/(ユーザーのホームディレクトリ) - 組み込みポリシー:バイナリに組み込まれています
より高い優先順位のソースからの同じIDのポリシーは、より低い優先順位のソースのポリシーを上書きします。
ワークスペースローカルポリシー
ワークスペースローカルポリシーは、現在の作業ディレクトリ内の.infraguard/policies/ディレクトリに保存されます。これは最高優先順位の場所で、以下に最適です:
- プロジェクト固有のカスタムルールとパック
- 特定のプロジェクトの組み込みポリシーの上書き
- ユーザーローカルまたは組み込みに昇格する前に新しいポリシーをテスト
ワークスペースポリシーの使用
- ディレクトリ構造を作成:
mkdir -p .infraguard/policies/myprovider/{rules,packs}
-
カスタムルールまたはパックを適切なディレクトリに追加
-
利用可能なポリシーをリスト:
infraguard policy list
ワークスペースポリシーは、ID形式rule:myprovider:rule-nameまたはpack:myprovider:pack-nameで表示されます
- スキャンで使用:
infraguard scan template.yml -p "pack:myprovider:my-pack"
ユーザーローカルポリシー
ユーザーローカルポリシーは、ホームディレクトリの~/.infraguard/policies/に保存されます。これらのポリシーは、ユーザーアカウントのすべてのプロジェクトで利用可能です。
ID生成
InfraGuardは、ディレクトリ構造に基づいてポリシーIDを自動生成します:
- ルール:
rule:{provider}:{rule-id} - パック:
pack:{provider}:{pack-id}
{provider}は親ディレクトリ名(例:solution、aliyun、custom)から派生します。