このドキュメントでは、アーティファクト保護ポリシーを作成して管理する方法について説明します。サービス、機能、メリットの概要については、アーティファクト保護の概要をご覧ください。
始める前に
アーティファクト保護ポリシーを作成する前に、Security Command Center でアーティファクト保護を有効にして、必要な Identity and Access Management(IAM)ロールと権限を取得する必要があります。
次に、Google Cloud コンソールまたは Google Cloud CLI を使用してポリシーを作成できます。
アーティファクト保護を有効にする
Security Command Center サービスを構成するの手順に沿って、アーティファクト保護を有効にします。
必要なロール
アーティファクト保護の使用に必要な権限を取得するには、プロジェクトまたは組織に対する次の Identity and Access Management(IAM)ロールを付与するよう管理者に依頼してください。
- Artifact Scan Guard Evaluation 管理者(
roles/artifactscanguard.policyEvaluator)
このロールは、 Google Cloud コンソールを使用するか、次の Google Cloud CLI コマンドを実行して付与できます。
project
gcloud organizations add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:YOUR_SERVICE_ACCOUNT_EMAIL" \
--role="roles/artifactscanguard.policyEvaluator" \
次のように置き換えます。
PROJECT_IDYOUR_SERVICE_ACCOUNT_EMAIL
組織
gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
--member="serviceAccount:YOUR_SERVICE_ACCOUNT_EMAIL" \
--role="roles/artifactscanguard.policyEvaluator" \
次のように置き換えます。
ORGANIZATION_IDYOUR_SERVICE_ACCOUNT_EMAIL
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
その他のアーティファクト保護のロールについては、アーティファクト保護のロールと権限をご覧ください。
Google Cloud コンソールでポリシーを作成する
Google Cloud コンソールでアーティファクト保護ポリシーを作成する手順は次のとおりです。
Google Cloud コンソールで、[セキュリティ] > [ルール] に移動し、[アーティファクト保護ポリシーを作成] または [ポリシーを作成] をクリックします。
ポリシーの [ポリシー ID] と [説明] を入力し、[続行] をクリックします。
ポリシーのスコープとアクションを選択します。
CI/CD プラットフォーム
- コネクタを選択: このポリシーを関連付けるコネクタ。選択したコネクタに関連付けられているすべての CI/CD ビルドに対して、このポリシーが評価されます。
- ポリシー アクション: ポリシー違反が発生した場合のアクションを選択します。
- ポリシーに違反しているビルドをブロックする
- ビルドを許可する(アラートを送信): CI/CD スキャナ ポリシーの評価結果が、接続されたビルド パイプラインに表示されます。
レジストリ
- Container Analysis プロジェクト: これはプロジェクトではなく、組織にのみ適用されます。このポリシーを適用する Google Cloud プロジェクトを追加します。
- Artifact Registry リポジトリ: このポリシーを適用するリポジトリを選択します。これらは有効な Artifact Registry リポジトリである必要があります。空白のままにすると、ポリシーはすべてのリポジトリに適用されます。
- ポリシー アクション: ポリシー違反が発生した場合に実行するアクションを選択します。
- 監査のみ: ポリシーが評価され、違反が監査目的でロギングされます。リソースはブロックされません。違反を確認するには、
ListArtifactPoliciesEvaluationsとGetArtifactPoliciesEvaluationを使用して API を呼び出す必要があります。 - アドミッション制御: ポリシーの評価中に違反が発生した場合、リソースは続行をブロックされます。
- Binary Authorization ポリシーをドライラン モードに設定する: 詳細については、ドライラン モードを有効にするをご覧ください。
- Binary Authorization プロジェクト: これはプロジェクトではなく、組織にのみ適用されます。アドミッション コントロールを適用する Google Cloud プロジェクトを追加します。
- GKE クラスタ: 空白のままにすると、アドミッション制御がすべての GKE クラスタに適用されます。
- Binary Authorization ポリシーをオーバーライドする: アドミッション コントロールの Binary Authorization ポリシーを更新するには、このチェックボックスをオンにする必要があります。
- 監査のみ: ポリシーが評価され、違反が監査目的でロギングされます。リソースはブロックされません。違反を確認するには、
ランタイム
- ランタイム プロジェクト: これはプロジェクトではなく、組織にのみ適用されます。GKE クラスタを含むランタイム プロジェクトを追加します。
- GKE クラスタ: このポリシーを適用する GKE クラスタを選択します。空白のままにすると、選択したプロジェクト内のすべての GKE クラスタにポリシーが適用されます。
ポリシー ルールを定義します。ポリシー ルールは、環境で許可される脆弱性とパッケージを決定する一連の条件です。ポリシー ルールには次のものが含まれます。
重大度のしきい値: ポリシー評価に含める脆弱性の最小重大度レベルを設定します。脆弱性がこのしきい値以上である場合に、脆弱性が含まれます。
たとえば、ルールを [中] に構成すると、評価に [中]、[高]、[重大] のすべての脆弱性が含まれます。
脆弱性の数のしきい値: 他のポリシー フィルタが適用された後に許容される脆弱性の最大数を設定します。このポリシーは、これらの特定のフィルタされた脆弱性の数が上限を超えた場合にのみ違反となります。
たとえば、重大度のしきい値を [高] に設定し、修正が利用できない脆弱性を除外し、カウントのしきい値を 5 に設定すると、修正可能な脆弱性が 5 つ以上含まれていて、重大度が [高] または [重大] に分類されている場合、ビルドは失敗します。
脆弱性のステータス: 修正が利用可能な脆弱性のみを含めるかどうかを指定します。これにより、すべての脆弱性または修正可能な脆弱性のみを対象として、優先順位の高い修正が可能になります。
例外と制限: これらのセクションでは、一般的なポリシーをオーバーライドする特定の許可またはブロックを作成できます。
- 除外される CVE: 指定した期間、環境内で許容されると見なされる CVE を指定します。これは、一時的な回避策を実装する際に役立ちます。これらの例外の有効期限を設定できます。この日を過ぎると、脆弱性は許可されなくなり、ポリシーが失敗します。
- 制限される CVE: 重大度に関係なく常にブロックする CVE を指定します。これは、特定のアプリケーションやインフラストラクチャに固有のリスクをもたらす脆弱性を特定する場合に特に役立ちます。
- 許可されたパッケージ: 安全と見なされるパッケージのリスト。パッケージ バージョンを定義できます。定義しない場合は、すべてのバージョンが許可されます。
- 制限されるパッケージ: 制限するパッケージをリストします。制限付きパッケージがあると、ポリシーは失敗します。パッケージ バージョンを定義できます。定義しない場合、すべてのバージョンが制限されます。
[作成] をクリックします。
使用可能なアーティファクト保護ポリシーは、[ルール] ページの表に一覧表示されます。
Google Cloud CLI を使用してポリシーを作成する
このセクションでは、アーティファクト保護で使用できる gcloud CLI コマンドとその使用方法について説明します。
Google Cloud CLI の前提条件
- gcloud CLI のバージョンが 559.0.0 以降であることを確認します。
- プロジェクトを構成プロジェクトとして設定します。
これを行うには、次の gcloud CLI コマンドを実行します。
gcloud components update --version=559.0.0
gcloud config set project PROJECT_ID
Google Cloud CLI コマンド
create
gcloud alpha scc artifact-guard policies create \ (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \ --policy-file-path=PATH_TO_FILE
- POLICY: ポリシーの完全な識別子。次のいずれかの形式で指定します。
{organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID}{projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID}{policy_id -location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)}
- PATH_TO_FILE: ポリシー定義を含む YAML ドキュメントのローカルパス。YAML ファイルの構造の詳細については、このドキュメントの YAML ファイルのセクションをご覧ください。
get
gcloud alpha scc artifact-guard policies describe \ (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER))
- POLICY: ポリシーの完全な識別子。次のいずれかの形式で指定します。
{organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID}{projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID}{policy_id -location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)}
list
gcloud alpha scc artifact-guard policies list PARENT
- PARENT: 組織またはプロジェクト。親リソースに使用できる形式は次のとおりです。
{organizations/ORGANIZATION_ID/locations/LOCATION}{projects/PROJECT_NUMBER/locations/LOCATION}
delete
gcloud alpha scc artifact-guard policies delete \ (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \ [--etag=ETAG]
- POLICY: ポリシーの完全な識別子。次のいずれかの形式で指定します。
{organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID}{projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID}{policy_id -location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)}
- etag: 省略可。同時実行制御。リソースの etag が一致する場合にのみリクエストが処理されます。
update
gcloud alpha scc artifact-guard policies update \ (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \ --policy-file-path=PATH_TO_FILE [--allow-missing] \ [--update-mask=UPDATE_MASK]
- POLICY: ポリシーの完全な識別子。次のいずれかの形式で指定します。
{organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID}{projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID}{policy_id -location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)}
- PATH_TO_FILE: 更新するフィールドの定義を含む YAML ドキュメントのローカルパス。
- allow_missing: 省略可能なブール値。
trueの場合、指定されたポリシーが存在しない場合は新しいポリシーを作成します。 - update-mask: 更新するフィールドのカンマ区切りのリスト。空の文字列または「*」は、ポリシーの完全な更新を意味します。更新マスクの有効なフィールドは次のとおりです。
display_namedescriptionscopeenablement_statevulnerability_policyannotations
YAML ファイル
アーティファクト保護ポリシー定義の YAML ファイルは、次のテンプレートに準拠する必要があります。
displayName: <Human readable display name for the policy>
description: <Description of the policy>
vulnerabilityPolicy: # (at least one of these rules must be defined)
exemptedCves:
- id: <cve-id-1>
gracePeriodExpirationTime: <optional-grace-period-expiration-time>
- id: <cve-id-2>
gracePeriodExpirationTime: <optional-grace-period-expiration-time>
maxAllowedSeverity: <The maximum severity allowed in the detected
vulnerabilities. The severity values can be LOW, MEDIUM, HIGH, CRITICAL>
maximumAllowedVulnerabilities: <The maximum number of vulnerabilities that
can be detected>
excludeUnfixable: <Whether to exclude the vulnerabilities without an
available fix from the purview of the policy evaluation>
restrictedCves:
- <restricted-cve-id-1>
- <restricted-cve-id-2>
allowedPackages:
- name: <allowed_package_name_1>
version: <optional_version_of_allowed_package_1. If unspecified, all the
versions of the package are allowed>
- name: <allowed_package_name_2>
version: <optional_version_of_allowed_package_2>
restrictedPackages:
- name: <restricted_package_name_1>
version: <optional_version_of_restricted_package_1. If unspecified, all
the versions of the package are restricted>
- name: <restricted_package_name_2>
version: <optional_version_of_restricted_package_2>
scope:
pipeline:
connectorIds:
- <connector_id_1>
- <connector_id_2>
enforcementAction: <action to take in case the policy evaluation fails.
The supported values are AUDIT_ONLY or BLOCK_BUILD>
registry:
projectIds:
- <project_id_1>
garRepositoryNamePatterns:
- <repository_name_pattern_1>
imageNamePatterns:
- <image_name_pattern_1>
enforcementAction: <AUDIT_ONLY or ADMISSION_CONTROL>
admissionControl:
deploymentProjectIds:
- <project_id_1>
gkeClusterNames:
- <cluster_name_1>
dryRun: <bool>
overrideBinauthzPolicy: <bool>
runtime:
deploymentProjectIds:
- <project_id_1>
gkeClusterNames:
- <cluster_name_1>
dryRun: <bool>
overrideBinauthzPolicy: <bool>
enforcementAction: <AUDIT_ONLY or BLOCK_DEPLOYMENT>
enablementState: <The enablement state of the policy. The supported values are
ACTIVE, INACTIVE>
アーティファクト保護ポリシー ファイルの例を次に示します。
displayName: 'A sample policy'
description: Vulnerability Policy
vulnerabilityPolicy:
exemptedCves:
- id: CVE-2022-40897
gracePeriodExpirationTime: '2026-09-10T18:58:08Z'
- id: CVE-2024-6345
maxAllowedSeverity: MEDIUM
maximumAllowedVulnerabilities: 5
excludeUnfixable: true
restrictedCves:
- CVE-2013-4392
- CVE-2024-4143
allowedPackages:
- name: systemd
version: '257.7'
- name: util-linux
restrictedPackages:
- name: ncurses
version: 6.5+20250216
- name: setuptools
scope:
pipeline:
connectorIds:
- organizations/123/locations/global/connectors/demoConnector
enforcementAction: BLOCK_BUILD
registry:
projectIds:
- projects/my-registry-project-id
- projects/another-registry-project
garRepositoryNamePatterns:
- us-west1-docker.pkg.dev/my-registry-project-id/my-repo
- gcr.io/team-a/internal-artifacts
imageNamePatterns:
- my-repo/service-a:.*
- my-repo/service-b:v1\..*
enforcementAction: ADMISSION_CONTROL
admissionControl:
deploymentProjectIds:
- projects/my-deployment-project
gkeClusterNames:
- //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-a
- //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-b
dryRun: true
overrideBinauthzPolicy: true
runtime:
deploymentProjectIds:
- projects/my-deployment-project
gkeClusterNames:
- //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-a
- //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-b
dryRun: false
overrideBinauthzPolicy: false
enforcementAction: BLOCK_DEPLOYMENT
enablementState: ACTIVE
パフォーマンスと制限事項
- 親リソースあたりの最大ポリシー数: 親リソース(組織またはプロジェクト)で定義できるポリシーは最大 1,000 個です。これには、アーティファクト保護内で構成されたすべてのタイプのセキュリティ ポリシーが含まれます。
- 親リソースあたりの脆弱性ポリシーの最大数: 全体的なポリシーの上限内で、脆弱性検出に焦点を当てたポリシーの数に上限があります。親リソース(組織またはプロジェクト)には、脆弱性をターゲットとするポリシーを最大 500 個設定できます。
- パイプラインあたりの最大ポリシー数: ビルド時の適用用にアーティファクト保護ポリシーが統合されている個々の CI/CD パイプラインごとに、最大 100 個のポリシーが許可されます。
- ポリシーあたりの 1 週間あたりの最大更新数: 各ポリシーについて、1 週間あたり最大 100 回の更新を行うことができます。
- ポリシーあたりの最大パイプライン コネクタ数: 各ポリシーには、最大 100 個のパイプライン コネクタを関連付けることができます。
- ポリシーあたりの最大除外および制限付き CVE: 各ポリシーで除外および制限できる CVE は最大 100 個です。
- ポリシーあたりの許可および制限されたパッケージの最大数: 各ポリシーで許可および制限できるパッケージの最大数は 100 個です。
その他の制約については、トラブルシューティングをご覧ください。
トラブルシューティング
このセクションでは、アーティファクト保護ポリシーのフィールドと、一般的なエラーとその解決策について説明します。
ポリシーの検証
アーティファクト保護は、ポリシーの作成または更新時にポリシー定義を検証します。検証に失敗すると、アーティファクト保護はリクエストを拒否し、詳細なエラー メッセージを提供します。
一般ポリシーのフィールド
| 名前 | 説明 | 必須 | 制約 | サンプル値 |
|---|---|---|---|---|
| 親 | ポリシーの適用範囲を定義します。 | ○ | global ロケーションのポリシーのみがサポートされています。 |
|
| ポリシー ID | ポリシーの一意の識別子。 | ○ | 最大 100 文字。先頭は英字、末尾は英数字にする必要があります。使用できるのは英字、数字、ハイフン、アンダースコアのみです。 | my-policy-1 |
| 表示名 | 人が読める形式のポリシー名。 | × | 最大 63 文字。一意にすることをおすすめします。 | My vulnerability policy |
| 説明 | ポリシーの説明。 | × | 最大 2,048 文字。 | Checks for critical vulnerabilities. |
| ポリシータイプ | 定義するポリシーのタイプ。 | ○ | vulnerability_policy のみがサポートされています。 |
vulnerability_policy |
| 有効化の状態 | ポリシーの有効状態。 | ○ | ACTIVE または INACTIVE にする必要があります。 |
ACTIVE |
脆弱性ポリシー
| 名前 | 説明 | 複数値 | 制約 | サンプル値 |
|---|---|---|---|---|
| maximumAllowedVulnerabilities | ポリシー違反になる前に許容される脆弱性の最大数。 | × | 設定する場合は、負でない数値を指定する必要があります。 | 10 |
| maxAllowedSeverity | ポリシーで許可される脆弱性の最大重大度。 | × | LOW、MEDIUM、HIGH、または CRITICAL のいずれかにする必要があります。 |
|
| exemptedCves | このポリシーの対象から除外される CVE のリスト。 | ○ | 最大 100 件のエントリ。各 ID は CVE-YYYY-NNNN 形式にする必要があります。猶予期間の終了日を指定する場合は、有効なタイムスタンプである必要があります。restrictedCves と重複することはできません。 |
- id: CVE-2024-12345gracePeriodExpirationTime: 2027-01-01T00:00:00Z- id: CVE-2025-4000 |
| restrictedCves | このポリシーで明示的に禁止されている CVE のリスト。 | ○ | 最大 100 件のエントリ。各 ID は CVE-YYYY-NNNN 形式にする必要があります。exemptedCves と重複することはできません。 |
- CVE-2024-54321- CVE-2025-5001 |
| allowedPackages | 許可されるパッケージのリスト。他のルールをオーバーライドする可能性があります。 | ○ | 最大 100 件のエントリ。パッケージ名は空白にできません。restrictedPackages と競合することはできません。 |
- name: nginxversion: 1.0- name: pythonversion: 3.12.4 |
| restrictedPackages | 明示的に許可されていないパッケージのリスト。 | ○ | 最大 100 件のエントリ。パッケージ名は空白にできません。allowedPackages と競合することはできません。 |
- name: npmversion: 9.0.0 |
| excludeUnfixable | 利用可能な修正がない脆弱性を除外するかどうか。 | × | ブール値。デフォルトは、false です。 |
true |
| exemptionDaysPostDisclosure | 脆弱性の公開日から免除する日数。 | × | 設定する場合は、負でない数値を指定する必要があります。デフォルトは、0 です。 |
30 |
ポリシーの範囲
パイプラインのスコープ
| 名前 | 説明 | 必須 | 制約 | サンプル値 |
|---|---|---|---|---|
| connectorIds | CI/CD パイプライン スキャン中にポリシーが適用されるコネクタ ID のリスト。 | ○ | 最小 1 エントリ、最大 100 エントリ。組織またはプロジェクトが CI/CD スキャンにオンボーディングされている必要があります。各 ID は正しい形式で、組織またはプロジェクトに属し、既存のコネクタを指している必要があります。 |
|
| enforcementAction | ポリシーに違反した場合に実行するアクション。 | ○ | AUDIT_ONLY または BLOCK_BUILD のいずれかを指定する必要があります。 |
BLOCK_BUILD |
レジストリ スコープ
| 名前 | 説明 | 必須 | 制約 | サンプル値 |
|---|---|---|---|---|
| projectIds | ポリシーが適用されるプロジェクト ID のリスト。 | × | 1 件以上のエントリが必要です。各 ID は有効な Google Cloud プロジェクト ID である必要があります。 | projects/123, projects/456 |
| garRepositoryNamePatterns | Google Cloud Artifact Registry リポジトリ名パターンのリスト。 | × | 最大 100 件のエントリ。有効な Google Cloud Artifact Registry リポジトリ パターンである必要があります。 | us-west1-docker.pkg.dev/my-project/my-repo, gcr.io/team-a/* |
| imageNamePatterns | 完全修飾されたイメージ名の正規表現パターン。 | × | 最大 100 件のエントリ。有効な正規表現である必要があります。 | 'my-repo/service-a:.*', 'my-repo/service-b:v1..*' |
| enforcementAction | ポリシーに違反した場合に実行するアクション。 | ○ | AUDIT_ONLY または ADMISSION_CONTROL のいずれかを指定する必要があります。 |
ADMISSION_CONTROL |
| admissionControl | アドミッション コントロールの構成の詳細。 | × | enforcementAction が ADMISSION_CONTROL の場合、指定する必要があります。 |
ランタイム スコープ
ランタイム スコープを使用すると、アーティファクト保護は GKE 環境内でアクティブに実行されているコンテナ イメージをモニタリングできます。このスコープにポリシーが適用されると、Security Command Center の脆弱性検出結果は、指定されたプロジェクトまたはクラスタにデプロイされたイメージのポリシー メタデータで自動的に強化されます。
| 名前 | 説明 | 必須 | 制約 | サンプル値 |
|---|---|---|---|---|
| projectIds | GKE クラスタがデプロイされ、脆弱性評価が有効になっているプロジェクト ID のリスト。 | ○ | 組織レベルで選択する必要があります。 | projects/my-gke-deployment-123 |
| gkeClusterNames | ポリシーを評価する必要がある特定の GKE クラスタ。 | × | 組織レベルまたはプロジェクト レベルで選択できます。 | projects/prod-env/locations/us-central1/clusters/main-cluster |
モニタリング対象の GKE クラスタで実行されているコンテナ イメージがポリシーに違反すると、次のように ArtifactGuardPolicies メタデータが Security Command Center の脆弱性検出結果メッセージに追加されます。
// Added to the SCC 'message Finding'
ArtifactGuardPolicies artifact_guard_policies = X;
message ArtifactGuardPolicies {
string resource_id = 1; // e.g., //us-docker.pkg.dev/google-samples/containers/gke/security/...
repeated Policy failing_policies = 2;
}
message Policy {
enum Type {
TYPE_UNSPECIFIED = 0;
VULNERABILITY = 1;
}
Type type = 1;
string policy_id = 2; // e.g., organizations/3392779/locations/global/policies/prod-policy
string failure_reason = 3; // e.g., severity=HIGH AND max_vuln_count=2
}
違反措置
BLOCK_BUILD アクションと BLOCK_DEPLOYMENT アクションの場合、ポリシー評価は推奨される適用アクションを返します。ただし、この推奨事項を使用して、パイプライン構成で実際の適用を構成する必要があります。
ポリシーの削除
有効なポリシーは削除できず、FAILED_PRECONDITION エラーが発生します。ポリシーを削除するには、まずその状態を Inactive に設定します。
一般的なエラー
次の表に、一般的なエラーとその解決方法を示します。
| エラー メッセージのヒント | 原因 | 解決策 |
|---|---|---|
| parent は必須です | リクエストに親フィールドがありません。 | 次のいずれかの形式で有効な親を指定します。
|
| ポリシー定義が必要です | リクエストにポリシー オブジェクトがありません。 | リクエストに有効なポリシー オブジェクトを指定します。 |
| 表示名の最大長は... | 表示名が 63 文字を超えています。 | 表示名を 63 文字以下にしてください。 |
| description の最大長は... | 説明文が 2,048 文字を超えています。 | 説明文を半角 2,048 文字(全角 1,024 文字)以下にしてください。 |
| ポリシータイプは必須です | リクエストにポリシータイプ(vulnerabilityPolicy など)がありません。 |
ポリシーに vulnerabilityPolicy などのポリシータイプを追加します。 |
| enablement state is invalid(有効化状態が無効です) | 無効または非推奨の有効化状態が使用されました。 | ACTIVE または INACTIVE を使用します。 |
| スコープは必須です | スコープ(パイプライン、レジストリ、ランタイム)が定義されていません。 | ポリシーに有効なスコープを 1 つ以上追加します。 |
| CVE 名は次の形式にする必要があります... | exemptedCves または restrictedCves の CVE ID が無効です。 |
すべての CVE ID が CVE-YYYY-NNNN 形式に準拠していることを確認します。 |
| CVE ... を除外して制限することはできません | 同じ CVE ID が exemptedCves と restrictedCves の両方に存在します。 |
どちらか一方のリストから CVE を削除してください。 |
| package name cannot be empty | allowedPackages または restrictedPackages のパッケージに空の名前があります。 |
すべてのパッケージの名前を指定します。 |
| package ... cannot be allowed and restricted | 同じパッケージが allowedPackages と restrictedPackages の両方に記載されています。 |
どちらか一方のリストから削除してください。 |
| コネクタ ID は必須です | パイプライン スコープに connectorIds フィールドがありません。 |
コネクタ ID を 1 つ以上指定します。 |
| コネクタ ID は次の形式にする必要があります... | コネクタ ID の形式が正しくありません。 | ID が次のいずれかの形式であることを確認します。
|
| connector ID ... does not exist | 指定されたコネクタ ID が存在しません。 | コネクタが存在することを確認するか、リストから削除します。 |
| GAR リポジトリ名のパターンは... | Registry スコープに無効なリポジトリ パターンが指定されました。 | パターンが有効な Google Cloud Artifact Registry リポジトリ形式と一致していることを確認します。 |
| プロジェクト ID は有効な GCP プロジェクト ID である必要があります... | Registry スコープまたは Runtime スコープで無効なプロジェクト ID が指定されました。 | 有効な Google Cloud プロジェクト ID を指定します。 |
| 適用アクションを指定する必要があります | パイプライン スコープまたはランタイム スコープに enforcementAction がありません。 |
適用アクションを設定します(AUDIT_ONLY,
BLOCK_BUILD(パイプラインのみ)、BLOCK_DEPLOYMENT(ランタイムのみ)など)。 |
| 組織あたりのポリシーの数が上限を超えています... | 組織のポリシーの数が上限(1,000 個)に達しました。 | 新しいポリシーを作成する前に、使用していないポリシーを削除します。 |
| 脆弱性ポリシーの数が上限を超えています | 脆弱性ポリシーの最大数(500)に達しました。 | 新しい脆弱性ポリシーを作成する前に、使用されていない脆弱性ポリシーを削除します。 |
| パイプラインあたりのポリシー数が上限を超えています... | コネクタが 100 個以上のポリシーに関連付けられている。 | コネクタに関連付けられているポリシーの数を減らします。 |
| ポリシーの改訂回数が上限を超えています... | 7 日間に 100 回以上ポリシーを更新しています。 | 待機するか、更新の頻度を減らします。 |
オペレーションに関する一般的な問題
ポリシー コンテンツの検証の失敗に加えて、基盤となるGoogle Cloud コントロール プレーンで問題が発生する可能性があります。これらの問題は、API リクエスト、長時間実行オペレーション、リソースの状態に影響する可能性があります。通常、特定のエラーコードまたは異常な動作として現れます。
| 問題 | 症状 | トラブルシューティングの方法 |
|---|---|---|
| 同時変更 | UpdatePolicy または DeletePolicy は、ABORTED エラーコードと "Provided etag is out of date" メッセージで失敗します。 |
トラブルシューティング: これは、リクエストの etag がポリシーの現在のサーバー バージョンと一致しない場合に発生します。これは、別のリクエストによる変更を示しています。解決策: ポリシーを再度読み取って最新の ETag を取得し、新しい ETag を使用してリクエストを再試行します。 |
| リクエストは検証されたが実行されなかった | CreatePolicy、UpdatePolicy、DeletePolicy のリクエストが正常に返されたが、リソースに変更が反映されていない。 |
トラブルシューティング: 通常、このエラーはリクエストで validate_only: true が設定されている場合に発生します。このフラグは、変更をコミットせずにすべての検証を実行するようにサービスに指示します。解決策: validate_only を false に設定するか、リクエストでフィールドを省略します。 |
| 更新により新しいポリシーが作成される | UpdatePolicy リクエストは、ポリシーが存在しない場合に「見つかりません」エラーを返すのではなく、ポリシーを作成します。 |
トラブルシューティング: allow_missing: true が UpdatePolicyRequest に含まれている場合、これは想定内の動作です。解決策: 既存のポリシーのみを更新する場合は、 allow_missing を false に設定するか、フィールドを省略します。 |
| 権限が拒否されたか、API が有効になっていない | リクエストが PERMISSION_DENIED または "Artifact Guard API has not been used in the project before or it is
disabled." などのエラー メッセージで失敗する |
トラブルシューティング: API が無効になっているか、呼び出し元に十分な権限がない可能性があります。 解決策: Google Cloud プロジェクトで、Artifact Guard API( artifactscanguard.googleapis.com)を有効にします。オペレーションを実行するユーザーまたはサービス アカウントに必要な IAM ロールがあることを確認します。 |
| オペレーションのタイムアウト | 長時間実行オペレーション(LRO)を返すリクエストの完了に時間がかかりすぎるか、DEADLINE_EXCEEDED で失敗します。 |
トラブルシューティング: バックエンド サービスの一時的な速度低下または問題を示している可能性があります。 解決策: LRO のステータスをポーリングします。失敗またはタイムアウトした場合は、しばらくしてから操作を再試行してください。問題が解決しない場合は、Google Cloud ステータス ダッシュボードで進行中のインシデントを確認するか、 Google Cloud サポートにお問い合わせください。 |