このドキュメントでは、アーティファクト保護ポリシーを作成して管理する方法について説明します。サービスの概要については、アーティファクト保護の概要をご覧ください。
始める前に
アーティファクト ガードポリシーを作成する前に、Security Command Center でアーティファクト保護を有効にし、必要な Identity and Access Management(IAM)ロールを取得する必要があります。
また、アーティファクト保護の制限事項についても理解しておいてください。
gcloud CLI を使用してポリシーまたは CI/CD コネクタを管理する場合は、gcloud CLI の前提条件を確認してください。
アーティファクト保護を有効にする
Security Command Center サービスを構成するの手順に沿って、アーティファクト保護を有効にします。
必要なロール
アーティファクト保護の使用に必要な権限を取得するには、プロジェクトまたは組織に対する次の Identity and Access Management(IAM)ロールを付与するよう管理者に依頼してください。
- Artifact Scan Guard Evaluation 管理者(
roles/artifactscanguard.policyEvaluator)
このロールは、 Google Cloud コンソールを使用するか、次の gcloud CLI コマンドを実行して付与できます。
project
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role="roles/artifactscanguard.policyEvaluator"
次のように置き換えます。
PROJECT_ID: プロジェクト ID。SERVICE_ACCOUNT_EMAIL: サービス アカウントのメールアドレス。
組織
gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
--member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role="roles/artifactscanguard.policyEvaluator"
次のように置き換えます。
ORGANIZATION_ID: 組織 ID。SERVICE_ACCOUNT_EMAIL: サービス アカウントのメールアドレス。
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
アーティファクト保護のロールの詳細については、アーティファクト保護のロールと権限をご覧ください。
gcloud CLI の前提条件
gcloud CLI を使用してポリシーまたは CI/CD コネクタを管理するには、環境が次の要件を満たしていることを確認してください。
- gcloud CLI のバージョンが 559.0.0 以降である。
- プロジェクトが構成プロジェクトとして設定されます。
gcloud CLI を更新してプロジェクトを設定するには、次のコマンドを実行します。
gcloud components update --version=559.0.0
gcloud config set project PROJECT_ID
PROJECT_ID は、実際のプロジェクト ID に置き換えます。
ポリシーを作成する
コンソール
Google Cloud コンソールでアーティファクト保護ポリシーを作成する手順は次のとおりです。
- Google Cloud コンソールで、[セキュリティ] > [ルール] に移動し、[アーティファクト保護ポリシーを作成] または [ポリシーを作成] をクリックします。
- ポリシー ID とポリシーの説明を入力し、[続行] をクリックします。
- ポリシーのスコープとアクションを選択します。
- CI/CD プラットフォーム
- コネクタを選択: このポリシーに関連付けるコネクタを選択します。スキャナは、選択したコネクタに関連付けられているすべての CI/CD ビルドに対してこのポリシーを評価します。
- ポリシー アクション: ポリシー違反が発生した場合に実行するアクションを選択します。
- ポリシーに違反しているビルドをブロックする: ポリシーに違反している場合、ビルドはブロックされます。
- ビルドを許可する(アラートを送信): 接続されたビルド パイプラインに、CI/CD スキャナ ポリシーの評価結果が表示されます。
- レジストリ
- Container Analysis プロジェクト: この設定は、プロジェクトではなく組織にのみ適用されます。このポリシーを適用する Google Cloud プロジェクトを追加します。
- Artifact Registry リポジトリ: このポリシーを適用するリポジトリを選択します。これらは有効な Artifact Registry リポジトリである必要があります。空白のままにすると、アーティファクト保護はすべてのリポジトリにポリシーを適用します。
- ポリシー アクション: ポリシー違反が発生した場合に実行するアクションを選択します。
- 監査のみ: アーティファクト保護はポリシーを評価し、リソースをブロックせずに監査目的で違反をログに記録します。
- アドミッション制御: ポリシーの評価中に違反が発生した場合、アドミッション制御によりリソースのデプロイがブロックされます。
- Binary Authorization ポリシーをドライラン モードに設定する: ドライラン モードの詳細については、ドライラン モードを有効にするをご覧ください。
- Binary Authorization プロジェクト: この設定は、プロジェクトではなく組織にのみ適用されます。アドミッション コントロールを適用する Google Cloud プロジェクトを追加します。
- GKE クラスタ: 空白のままにすると、アドミッション コントロールはすべての GKE クラスタに適用されます。
- Binary Authorization ポリシーをオーバーライドする: このチェックボックスをオンにすると、アドミッション コントロールの Binary Authorization ポリシーが更新されます。
- ランタイム
- ランタイム プロジェクト: この設定は、プロジェクトではなく組織にのみ適用されます。GKE クラスタを含むランタイム プロジェクトを追加します。
- GKE クラスタ: このポリシーを適用する GKE クラスタを選択します。空白のままにすると、アーティファクト保護は、選択したプロジェクト内のすべての GKE クラスタにポリシーを適用します。
- CI/CD プラットフォーム
- ポリシールールを定義します。ポリシー ルールは、環境で許可される脆弱性とパッケージを決定する一連の条件です。ポリシー ルールには次のものが含まれます。
- 重大度のしきい値: ポリシー評価に含める脆弱性の最小重大度レベルを設定します。脆弱性がこのしきい値を満たしているか、超えている必要があります。
たとえば、ルールを [中] に構成すると、評価に [中]、[高]、[重大] のすべての脆弱性が含まれます。
- 脆弱性数のしきい値: 他のポリシー フィルタが適用された後に許容される脆弱性の最大数を設定します。このポリシーに違反するのは、これらの特定のフィルタリングされた脆弱性の数が上限を超えた場合のみです。
たとえば、重大度のしきい値を [高] に設定し、修正が利用できない脆弱性を除外し、カウントのしきい値を 5 に設定すると、高または重大と評価された修正可能な脆弱性が 5 つ以上含まれている場合、ビルドは失敗します。
- 脆弱性のステータス: 修正が利用可能な脆弱性のみを含めるかどうかを指定します。これにより、すべての脆弱性または修正可能な脆弱性のみを対象として、優先順位付けされた修復が可能になります。
- 例外と制限: このセクションでは、一般的なポリシーをオーバーライドする特定の許可またはブロックを作成できます。
- 除外される CVE: 指定した期間、環境内で許容されると見なされる CVE を指定します。これは、一時的な回避策を実装する際に役立ちます。これらの例外の有効期限を設定できます。この日以降、この脆弱性は許可されなくなり、ポリシーが失敗します。
- 制限される CVE: 重大度に関係なく常にブロックする CVE を指定します。これは、特定のアプリケーションやインフラストラクチャに固有のリスクをもたらす脆弱性を特定する場合に特に役立ちます。
- 許可されたパッケージ: 安全と見なされるパッケージのリスト。パッケージ バージョンを定義できます。定義しない場合は、すべてのバージョンが許可されます。
- 制限されるパッケージ: 制限するパッケージをリストします。制限付きパッケージがあると、ポリシーが失敗します。パッケージ バージョンを定義できます。定義しない場合は、すべてのバージョンが制限されます。
- 重大度のしきい値: ポリシー評価に含める脆弱性の最小重大度レベルを設定します。脆弱性がこのしきい値を満たしているか、超えている必要があります。
- [作成] をクリックします。
使用可能なアーティファクト保護ポリシーは、[ルール] ページの表に表示されます。
gcloud CLI
gcloud CLI を使用してポリシーを作成するには、次のコマンドを実行します。
gcloud alpha scc artifact-guard policies create \ (POLICY_ID --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \ --policy-file-path=PATH_TO_FILE
次のように置き換えます。
- POLICY_ID: ポリシーの ID(
my-policyなど)。 - LOCATION: データが保存されている Security Command Center のロケーション。
globalのみがサポートされています。 - ORGANIZATION_ID: 組織 ID。
- PROJECT_NUMBER: 数値のプロジェクト番号。
- PATH_TO_FILE: ポリシー定義を含む YAML ドキュメントのローカルパス。YAML ファイルの構造について詳しくは、このドキュメントの YAML ファイルのセクションをご覧ください。
ポリシーを更新する
コンソール
Google Cloud コンソールでアーティファクト保護ポリシーを更新する手順は次のとおりです。
- Google Cloud コンソールで、[セキュリティ] > [ルール] に移動します。
- ルールの表で、編集するポリシーの名前をクリックします。
- ポリシーの詳細ページで、[編集] をクリックするか、スコープ、脆弱性ルール、有効化状態など、更新するフィールドを変更します。
- [保存] または [更新] をクリックします。
gcloud CLI
gcloud CLI を使用して既存のポリシーを表示して更新するには、次のコマンドを使用します。
リスト型ポリシー
gcloud alpha scc artifact-guard policies list PARENT
次のように置き換えます。
PARENT: 組織またはプロジェクト。親リソースに使用できる形式は次のとおりです。organizations/ORGANIZATION_ID/locations/LOCATIONprojects/PROJECT_NUMBER/locations/LOCATION
ポリシーの説明を取得する
gcloud alpha scc artifact-guard policies describe \ (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER))
次のように置き換えます。
POLICY: ポリシーの完全な識別子。次のいずれかの形式で指定します。organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_IDprojects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_IDPOLICY_ID --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)
ポリシーを更新する
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]
--allow_missing は省略可能なフラグです。このフラグを指定すると、指定されたポリシーが存在しない場合に新しいポリシーが作成されます。
次のように置き換えます。
UPDATE-MASK: 更新するフィールドのカンマ区切りのリスト。空の文字列または* は、ポリシーの完全な更新を意味します。更新マスクの有効なフィールドは次のとおりです。
display_namedescriptionscopeenablement_statevulnerability_policyannotations
ポリシーの検証
Artifact Guard は、ポリシーの作成または更新時にポリシー定義を検証します。検証に失敗すると、アーティファクト保護はリクエストを拒否し、詳細なエラー メッセージを提供します。
ポリシーを削除する
コンソール
Google Cloud コンソールでアーティファクト保護ポリシーを削除する手順は次のとおりです。
- Google Cloud コンソールで、[セキュリティ] > [ルール] に移動します。
- ルールテーブルで、削除するポリシーの横にある をクリックし、[削除] を選択します。
- 確認メッセージに沿ってポリシーを削除します。中止するには、[キャンセル] をクリックします。
gcloud CLI
gcloud CLI を使用してポリシーを削除するには、次のコマンドを実行します。
gcloud alpha scc artifact-guard policies delete \ (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \ [--etag=ETAG]
次のように置き換えます。
ETAG: 同時実行制御に使用されるオプションのエンティティ タグ。値を指定した場合、リソースのetag が一致する場合にのみリクエストが処理されます。YAML ファイル
gcloud CLI を使用してアーティファクト保護ポリシーを作成または管理する場合、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
トラブルシューティング
このセクションでは、アーティファクト保護ポリシーのフィールドと、一般的なエラーとその解決策について説明します。
一般ポリシーのフィールド
| 名前 | 説明 | 必須 | 制約 | サンプル値 |
|---|---|---|---|---|
| 親 | ポリシーの適用範囲を定義します。 | ○ | global ロケーションのポリシーのみがサポートされています。 |
|
| ポリシー ID | ポリシーの一意の識別子。 | ○ | 100 文字まで。先頭は英字、末尾は英数字にする必要があります。使用できるのは英字、数字、ハイフン、アンダースコアのみです。 | my-policy-1 |
| 表示名 | 人が読める形式のポリシーの名前。 | いいえ | 63 文字以内。一意にすることをおすすめします。 | My vulnerability policy |
| 説明 | ポリシーの説明。 | いいえ | 2,048 文字まで。 | Checks for critical vulnerabilities. |
| ポリシータイプ | 定義するポリシーのタイプ。 | ○ | vulnerability_policy のみがサポートされています。 |
vulnerability_policy |
| 有効化の状態 | ポリシーの有効状態。 | ○ | ACTIVE または INACTIVE にする必要があります。 |
ACTIVE |
脆弱性ポリシー
| 名前 | 説明 | 複数値 | 制約 | サンプル値 |
|---|---|---|---|---|
| maximumAllowedVulnerabilities | ポリシー違反になる前に許容される脆弱性の最大数。 | いいえ | 設定する場合は、0 または正の数にする必要があります。 | 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 の脆弱性検出結果メッセージに追加されます。
// SCC の「メッセージ検出結果」に追加されました ArtifactGuardPolicies artifact_guard_policies = X;
message ArtifactGuardPolicies { string resource_id = 1; // 例: //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; // 例: organizations/3392779/locations/global/policies/prod-policy string failure_reason = 3; // 例: severity=HIGH AND max_vuln_count=2 } ```
違反措置
BLOCK_BUILD アクションと BLOCK_DEPLOYMENT アクションの場合、ポリシー評価は推奨される適用アクションを返します。ただし、この推奨事項を使用して、パイプライン構成で実際の適用を構成する必要があります。
ポリシーの削除
FAILED_PRECONDITION エラーが表示された場合は、アクティブなポリシーを削除しようとしています。ポリシーを削除するには、まず状態を Inactive に変更する必要があります。
一般的なエラー
次の表に、一般的なエラーとその解決方法を示します。
| エラー メッセージのヒント | 原因 | 解決策 |
|---|---|---|
| 親は必須です | リクエストに親フィールドがありません。 | 次のいずれかの形式で有効な親を指定します。
|
| ポリシー定義が必要です | リクエストにポリシー オブジェクトがありません。 | リクエストで有効なポリシー オブジェクトを指定します。 |
| 表示名の最大長は... | 表示名が 63 文字を超えています。 | 表示名を 63 文字以下にしてください。 |
| description の最大長は... | 説明文が 2,048 文字を超えています。 | 説明文を 2,048 文字以下にしてください。 |
| ポリシータイプは必須です | リクエストにポリシータイプ(vulnerabilityPolicy など)がありません。 |
ポリシーに vulnerabilityPolicy などのポリシータイプを追加します。 |
| 有効化の状態が無効です | 無効または非推奨の有効化状態が使用されました。 | 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 リポジトリ名のパターンは... | レジストリ スコープに無効なリポジトリ パターンが指定されています。 | パターンが有効な Google Cloud Artifact Registry リポジトリ形式と一致していることを確認します。 |
| プロジェクト ID は有効な GCP プロジェクト ID である必要があります... | レジストリまたはランタイム スコープで無効なプロジェクト 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 サポートにお問い合わせください。 |