セキュリティ ポスチャーを管理する

このページでは、Security Command Center を有効にした後にセキュリティ ポスチャー サービスを構成して使用する方法について説明します。開始するには、ポリシーセットで整理されたポリシーを含む対策を作成し、対策のデプロイを使用して対策をデプロイする必要があります。対策がデプロイされた後、ブレをモニタリングし、時間の経過とともに対策をさらに絞り込むことができます。

始める前に

以下のタスクを完了してから、このページの残りのタスクを完了してください。

Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする

Security Command Center のプレミアム ティアまたはエンタープライズ ティアが組織レベルで有効になっていることを確認します。

Security Health Analytics 検出機能をポリシーとして使用する場合は、有効化プロセスで Security Health Analytics サービスを選択します。

権限を設定する

ポスチャ―の使用に必要な権限を取得するには、セキュリティ ポスチャー管理者roles/securityposture.admin)IAM のロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

セキュリティ対策のロールとセキュリティ対策の権限の詳細については、組織レベルで有効にするための IAM をご覧ください。

Google Cloud CLI を設定する

Google Cloud CLI バージョン 461.0.0 以降を使用する必要があります。

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

ユーザー認証情報ではなく、サービス アカウントの権限借用を使用して Google API の認証を行うように gcloud CLI を設定するには、次のコマンドを実行します。

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

詳細については、サービス アカウントの権限借用をご覧ください。

API を有効にする

組織のポリシー サービスとセキュリティ対策サービス API を有効にします。

gcloud services enable orgpolicy.googleapis.com  securityposture.googleapis.com

AWS への接続を構成する

AWS に固有の組み込みの Security Health Analytics 検出機能を使用するには、Security Command Center Enterprise を有効化して、脆弱性検出のために AWS に接続する必要があります。

対策を作成してデプロイする

セキュリティ対策の使用を開始するには、次の手順を完了する必要があります。

  • セキュリティ対策に適用されるポリシーを定義する対策 YAML ファイルを作成します。
  • 対策 YAML ファイルに基づいて、Google Cloud で対策を作成します。
  • 対策をデプロイします。

以降のセクションで、詳細な手順を説明します。

対策 YAML ファイルを作成する

対策は、一緒にデプロイする 1 つ以上のポリシーセットで構成されます。これらのポリシーセットには、対策に含めるすべての予防的ポリシーと検出ポリシーが含まれています。

対策を作成するには、次のいずれかを行います。

ポスチャ―で使用できるフィールドの詳細については、Posture リファレンスPolicySet リファレンスをご覧ください。

事前定義された対策テンプレートから対策ファイルを作成する

事前定義された対策テンプレートを使用して、対策ファイルを作成できます。

コンソール

  1. Google Cloud コンソールで、[ポスチャ―管理] ページに移動します。

    [ポスチャ―管理] に移動

  2. Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にした組織が表示されていることを確認します。

  3. [テンプレート] タブで、使用するテンプレートをクリックします。

  4. [テンプレートの詳細] ページで、[対策を作成] をクリックします。

  5. 対策の一意の名前を指定して、[作成] をクリックします。[対策の詳細] ページが開きます。

  6. 次のいずれかの操作を行います。

    • 変更せずに対策を使用できる場合(たとえば、_essentials テンプレートのいずれかを使用した場合)は、対策をデプロイできます。手順については、対策をデプロイするをご覧ください。
    • ポリシーセットやポリシーを変更する必要がある場合(_拡張テンプレート)、完了した対策 YAML ファイルを変更する対策の状態を ACTIVEに設定します。

gcloud

  1. 事前定義された対策テンプレートを確認して、環境に適用するテンプレートを決定します。変更せずに適用できるものもありますが、環境に合わせてポリシーをカスタマイズする必要があるものもあります。
  2. 次のいずれかの方法で、YAML ファイルを独自のテキスト エディタにコピーします。

    • 事前定義された対策テンプレートのリファレンス コンテンツから YAML ファイルをコピーします。
    • gcloud scc posture-templates describe コマンドを実行して YAML ファイルをコピーします。
    gcloud scc posture-templates describe \
        organizations/ORGANIZATION_ID/locations/LOCATION/postureTemplates/POSTURE_TEMPLATE \
        --revision-id=REVISION_ID
    
    gcloud scc posture-templates describe \
    organizations/ORGANIZATION_ID/locations/global/postureTemplates/POSTURE_TEMPLATE \
    --revision-id=REVISION_ID

    次の値を置き換えます。

    • ORGANIZATION_ID は、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にした組織です。
    • LOCATION は、対策をデプロイして保存するロケーションです。サポートされているロケーションは global のみです。
    • POSTURE_TEMPLATE は、事前定義されたポスチャ― テンプレートで説明されているように、事前定義されたポスチャ―のテンプレート名です。
    • REVISION_ID は、事前定義された対策のリビジョン バージョンです。リビジョン ID を含めない場合は、事前定義された対策の最新バージョンが表示されます。

    たとえば、安全な AI(3589215982 組織の事前定義済みの対策)を表示するには、次のコマンドを実行します。

    gcloud scc posture-templates describe \
        organizations/3589215982/locations/global/postureTemplates/secure_ai_essential \
        --revision-id=v.1.0
    
  3. 次のいずれかの操作を行います。

    • 変更せずに対策を使用できる場合(たとえば、_essentials テンプレートのいずれかを使用した場合)は、対策を作成できます。手順については、対策の作成をご覧ください。
    • ポリシーセットまたはポリシーを変更する必要がある場合は、対策 YAML ファイルの変更を完了します。

既存の環境からポリシーを抽出して対策ファイルを作成する

既存のプロジェクト、フォルダ、または組織で構成したポリシー(カスタム ポリシーとすべての Security Health Analytics 検出機能、カスタム検出機能を含む組織のポリシー)を抽出して、対策ファイルを作成できます。すでに対策が適用されている組織、フォルダ、プロジェクトからポリシーを抽出することはできません。

このコマンドは、組織、フォルダ、またはプロジェクトに対して以前に構成したポリシーのみを抽出します。親のフォルダや組織からポリシーは抽出しません。

Security Command Center Enterprise を AWS に接続した場合、このコマンドは AWS に固有の検出機能(プレビュー)も抽出します。

  1. gcloud scc postures extract コマンドを実行して、環境内の既存の組織のポリシーと Security Health Analytics の検出機能を抽出します。

    gcloud scc postures extract POSTURE_NAME \
      --workload=WORKLOAD
    

    次の値を置き換えます。

    • POSTURE_NAME は、対策の相対的なリソース名です。例: organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID

      • POSTURE_ID は、組織に固有の対策の英数字名です。POSTURE_ID は 63 文字に制限されています。
    • WORKLOAD は、ポリシーを抽出するプロジェクト、フォルダ、または組織です。ワークロードは次のいずれかです。

    • projects/PROJECT_NUMBER

    • folder/FOLDER_ID

    • organizations/ORGANIZATION_ID

    たとえば、6589215984 組織の 3589215982 フォルダからポリシーを抽出するには、次のコマンドを実行します。

    gcloud scc postures extract \
      organizations/6589215984/locations/global/postures/myStagingPosture \
      workload=folder/3589215982 > posture.yaml
    
  2. 結果の posture.yaml ファイルを開いて編集します。

  3. 次のいずれかの操作を行います。

    • 変更せずに対策を使用できる場合(たとえば、_essentials テンプレートのいずれかを使用した場合)は、対策を作成できます。手順については、対策の作成をご覧ください。
    • ポリシーセットまたはポリシーを変更する必要がある場合は、対策 YAML ファイルの変更を完了します。

ポリシー定義を含む Terraform リソースを作成する

Terraform 構成を作成して、対策リソースを作成できます。

たとえば、組み込みとカスタムの組織のポリシー制約と、組み込みとカスタムの Security Health Analytics 検出機能を含む体制リソースを作成できます。AWS に固有の、組み込みの Security Health Analytics 検出機能のポスチャ―管理サポートはプレビュー版です。

resource "google_securityposture_posture" "posture_example" {
  posture_id  = "<POSTURE_ID>"
  parent      = "organizations/<ORGANIZATION_ID>"
  location    = "global"
  state       = "ACTIVE"
  description = "a new posture"
  policy_sets {
    policy_set_id = "org_policy_set"
    description   = "set of org policies"
    policies {
      policy_id = "canned_org_policy"
      constraint {
        org_policy_constraint {
          canned_constraint_id = "storage.uniformBucketLevelAccess"
          policy_rules {
            enforce = true
          }
        }
      }
    }
    policies {
      policy_id = "canned_org_policy_for_service"
      constraint {
        org_policy_constraint {
          canned_constraint_id = "run.allowedVPCEgress"
          policy_rules {
            allow_all: true
            condition {
              expression: "!(parameters.denyAll or resource.location in parameters.deniedLocations) && (parameters.allowAll or resource.location in parameters.allowedLocations)"
            }
            parameters {
              fields {
                key: "denyAll"
                value {
                  bool_value: false
                }
              }
              fields {
                key: "allowAll"
                value {
                  bool_value: false
                }
              }
              fields {
                key: "deniedLocations"
                value {
                  null_value: NULL_VALUE
                }
              }
              fields {
                key: "allowedLocations"
                value {
                  string_value: "allowedLocations.all(location, location in [\342\200\230US\342\200\231, \342\200\230EU\342\200\231])"
                }
              }
            }
            resource_types {
              included: "run.googleapis.com/Service"
            }
          }
        }
      }
    }
  }
  policy_sets {
    policy_set_id = "sha_policy_set"
    description   = "set of sha policies"
    policies {
      policy_id = "sha_builtin_module"
      constraint {
        security_health_analytics_module {
          module_name             = "BIGQUERY_TABLE_CMEK_DISABLED"
          module_enablement_state = "ENABLED"
        }
      }
      description = "enable BIGQUERY_TABLE_CMEK_DISABLED"
    }
    policies {
      policy_id = "aws_sha_builtin_module"
      constraint {
        security_health_analytics_module {
          module_name             = "S3_BUCKET_LOGGING_ENABLED"
          module_enablement_state = "ENABLED"
        }
      }
      description = "enable S3_BUCKET_LOGGING_ENABLED"
    }
    policies {
      policy_id = "sha_custom_module"
      constraint {
        security_health_analytics_custom_module {
          display_name = "custom_SHA_policy"
          config {
            predicate {
              expression = "resource.rotationPeriod > duration('2592000s')"
            }
            custom_output {
              properties {
                name = "duration"
                value_expression {
                  expression = "resource.rotationPeriod"
                }
              }
            }
            resource_selector {
              resource_types = ["cloudkms.googleapis.com/CryptoKey"]
            }
            severity       = "LOW"
            description    = "Custom Module"
            recommendation = "Testing custom modules"
          }
          module_enablement_state = "ENABLED"
        }
      }
    }
  }
}

詳細については、google_securityposture_posture をご覧ください。

対策 YAML ファイルを変更する

対策 YAML ファイルを変更するには次の手順を実施します:

  1. テキスト エディタで対策の YAML ファイルを開きます。
  2. ファイルの先頭にある namedescriptionstate を確認します。

  3. ファイルの先頭にある namedescriptionstate を確認します。

    name: organizations/ORGANIZATION_ID/locations/global/posture/POSTURE_ID
    description: DESCRIPTION
    state: STATE
    

    これらのフィールドの詳細については、Posture リファレンスをご覧ください。

    次に例を示します。

    name: organizations/3589215982/locations/global/posture/stagingAIPosture
    description: This posture applies to staging environments for Vertex AI.
    state: ACTIVE
    
  4. 要件を満たすようにファイル内のポリシーをカスタマイズします。

    使用できるフィールドの詳細については、PolicySet リファレンスをご覧ください。

    1. 既存のポリシーとその値を確認します。環境に固有の情報が必要なポリシーの場合は、値を適切に設定します。たとえば、安全な AI の ainotebooks.accessMode ポリシー(拡張された事前定義済みの対策)の場合は、policy_rules の下に許可モードを追加します。

      - policy_id: Define access mode for Vertex AI Workbench notebooks and instances
        compliance_standards:
        - standard: NIST SP 800-53
          control: AC-3(3)
        - standard: NIST SP 800-53
          control: AC-6(1)
        constraint:
          org_policy_constraint:
            canned_constraint_id: ainotebooks.accessMode
            policy_rules:
            - values:
                allowed_values: service-account
        description: This list constraint defines the modes of access allowed to Vertex AI Workbench notebooks and instances where enforced. The allow or deny list can specify multiple users with the service-account mode or single-user access with the single-user mode. The access mode to be allowed or denied must be listed explicitly.
      
    2. 組織のポリシーの制約に記載されている説明に沿って、組織のポリシーの制約を追加します。カスタム組織のポリシーを定義する場合は、YAML ファイルにカスタム制約の定義が含まれていることを確認します。他の方法(Google Cloud コンソールなど)で作成したカスタム制約は使用できません。

      たとえば、compute.trustedImageProjects 制約を設定して、どのプロジェクトがイメージ ストレージとディスクのインスタンス化に使用できるのかを定義できます。この例をコピーする場合は、allowed_values を適切なプロジェクトのリストに置き換えてください。

      - policy_id: Define projects with trusted images.
        compliance_standards:
        - standard:
          control:
        constraint:
          org_policy_constraint:
            canned_constraint_id: compute.trustedImageProjects
            policy_rules:
            - values:
                allowed_values:
                - project1
                - project2
                - projectN
        description: This is a complete list of projects from which images can be used.
      
    3. Security Health Analytics の検出結果などのドキュメントで説明されているように、Security Health Analytics の検出機能を追加します。たとえば、プロジェクトで認証に API キーを使用していない場合に、Security Health Analytics の検出機能を追加して検出結果を作成します。

      - policy_id: API Key Exists
        constraint:
          securityHealthAnalyticsModule:
            moduleEnablementState: ENABLED
            moduleName: API_KEY_EXISTS
      

      別の例として、Security Health Analytics カスタム モジュールを追加して、Vertex AI データセットが暗号化されているかどうかを検出します。

      - policy_id: CMEK key is use for Vertex AI DataSet
        compliance_standards:
        - standard: NIST SP 800-53
          control: SC-12
        - standard: NIST SP 800-53
          control: SC-13
        constraint:
          security_health_analytics_custom_module:
            display_name: "vertexAIDatasetCMEKDisabled"
            config:
              customOutput: {}
              predicate:
                expression: "!has(resource.encryptionSpec)"
              resource_selector:
                resource_types:
                - aiplatform.googleapis.com/Dataset
              severity: CRITICAL
              description: "When enforced, this detector finds whether a dataset is not encrypted using CMEK."
              recommendation: "Restore the SHA module. See https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview."
            module_enablement_state: ENABLED
      

      もう 1 つの例として、Security Command Center Enterprise では、AWS に固有の Security Health Analytics 検出機能を追加します(プレビュー)。

      - policy_set_id: AWS policy set
        description:  Policy set containing AWS built-in SHA modules for securing S3 buckets.
        policies:
        - policy_id: S3 bucket replication enabled
          compliance_standards:
          - standard: NIST 800-53 R5
            control: SI-13(5)
          constraint:
            securityHealthAnalyticsModule:
              moduleEnablementState: ENABLED
              moduleName: S3_BUCKET_REPLICATION_ENABLED
          description: This control checks whether an Amazon S3 bucket has Cross-Region Replication enabled. The control fails if the bucket does not have Cross-Region Replication enabled or if Same-Region Replication is also enabled.
      
        - policy_id: S3 bucket logging enabled
          compliance_standards:
          - standard: NIST 800-53 R5
            control: SI-7(8)
          - standard: PCI DSS 3.2.1
            control: 10.3.1
          constraint:
            securityHealthAnalyticsModule:
              moduleEnablementState: ENABLED
              moduleName: S3_BUCKET_LOGGING_ENABLED
          description: AWS S3 Server Access Logging feature records access requests to storage buckets which is useful for security audits. By default, server access logging is not enabled for S3 buckets.
      

      AWS に固有の検出機能を追加する場合は、組織レベルでポスチャーをデプロイする必要があります。

  5. 対策ファイルをバージョン管理されたソース リポジトリにアップロードすることで、時間の経過とともに変更された変更を追跡できます。

対策を作成する

このタスクを完了して、デプロイ可能な Security Command Center に対策リソースを作成します。Google Cloud コンソールを使用して、事前定義された対策テンプレートから対策を作成した場合は、対策リソースが自動的に作成されます。

コンソール

  1. Google Cloud コンソールで、[ポスチャ―管理] ページに移動します。

    [ポスチャ―管理] に移動

  2. Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にした組織が表示されていることを確認します。

  3. [姿勢を作成] をクリックします。ポスチャーは、既存のポスチャーまたはテンプレートから作成することも、リソースに適用されているポリシーを使用して作成することもできます。

    既存のポスチャーまたはテンプレートを使用してポスチャーを作成する

    1. [既存のポスチャーまたはテンプレートを使用して開始する(ポスチャーを参照)] を選択します。
    2. 姿勢の名前や説明などの姿勢の詳細を指定します。
    3. [姿勢を選択] をクリックします。既存のポスチャまたはテンプレートに基づいてポスチャを作成できます。
      • [ポスチャー] を選択して、既存のポスチャーを使用してポスチャーを作成します。表示された姿勢のリストから姿勢を選択し、選択した姿勢で使用可能なリビジョンのリストから 1 つ以上のリビジョンを選択します。
      • [テンプレート] を選択してテンプレートを使用してポスチャを作成し、表示されたテンプレートのリストから 1 つ以上のテンプレートを選択します。
    4. [保存] をクリックします。[ポリシーセット] セクションには、選択したポスチャに関連付けられているポリシーセットのリストが表示されます。
    5. ポリシーセットのリストからポリシーを選択します。このページでポリシーを編集し、ポリシーを別のポリシーセットに移動することもできます。同じポリシーセット内に同じ名前のポリシーを 2 つ含むポスチャを作成することはできません。
    6. [作成] をクリックします。

    リソースに適用されたポリシーを使用してポスチャーを作成する

    1. [リソースに適用するポスチャーを使用して開始する(ポスチャーを参照)] を選択します。
    2. 姿勢の名前や説明などの姿勢の詳細を指定します。
    3. [リソースの選択] をクリックします。
    4. 表示されたリソースのリストからリソースを選択し、[作成] をクリックします。

    作成した対策に関する情報が表示された [ポスチャーの詳細] ページにリダイレクトされます。その対策に関連付けられているポリシーセットを確認できます。

gcloud

  1. gcloud scc postures create コマンドを実行し、posture.yaml ファイルを使用して対策を作成します。

    gcloud scc postures create POSTURE_NAME \
        --posture-from-file=POSTURE_FROM_FILE
    

    次の値を置き換えます。

    • POSTURE_NAME は、対策の相対的なリソース名です。例: organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID

      • POSTURE_ID は、組織に固有の対策の英数字名です。POSTURE_ID は 63 文字に制限されています。

    たとえば、組織 organizations/3589215982 の下に ID が posture-example-1 の対策を作成するには、次のコマンドを実行します。

    gcloud scc postures create \
        organizations/3589215982/locations/global/postures/posture-example-1 \
        --posture-from-file=posture.yaml
    

    対策の作成プロセスが失敗した場合は、対策を削除し、エラーをトラブルシューティングしてから、もう一度試してください。

  2. 対策が正常に作成されたことを確認するには、対策を表示するをご覧ください。

この対策を環境に適用するには、対策をデプロイする必要があります。

Terraform

対策リソースの Terraform 構成を作成した場合は、Infrastructure as Code パイプラインを使用してプロビジョニングする必要があります。

詳細については、Google Cloud での Terraform をご覧ください。

対策をデプロイする

対策を作成したら、プロジェクト、フォルダ、または組織にデプロイして、組織内の特定のリソースにポリシーとその定義を適用し、ブレをモニタリングできるようになります。プロジェクト、フォルダ、組織にデプロイできる対策は 1 つのみです。

対策の状態が ACTIVE であることを確認します。

対策をデプロイすると、次のアクションが発生します。

  • 組織のポリシーと Security Health Analytics の検出機能の定義が適用されます。
  • カスタム組織のポリシーのカスタム制約は、制約 ID を使用して作成され、対策で定義した制約 ID の末尾には対策のリビジョン ID が含まれます。
  • カスタム モジュールのデフォルトの状態は [有効] に設定されています。

コンソール

  1. Google Cloud コンソールで、[ポスチャ―管理] ページに移動します。

    [ポスチャ―管理] に移動

  2. Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にした組織が表示されていることを確認します。

  3. [ポスチャー] タブで、デプロイする対策をクリックします。

  4. [ポスチャーの詳細] ページで、対策のリビジョンを選択します。選択するポーズのリビジョンは、有効な状態である必要があります。

  5. [リソースに適用] をクリックします。

  6. [選択] をクリックして、対策をデプロイする組織、フォルダ、またはプロジェクトを選択します。

  7. [姿勢を適用] をクリックします。

gcloud

gcloud scc posture-deployments create コマンドを実行して、プロジェクト、フォルダ、または組織に対策をデプロイします。

gcloud scc posture-deployments create POSTURE_DEPLOYMENT_NAME \
    --posture-name=POSTURE_NAME \
    --posture-revision-id=POSTURE_REVISION_ID \
    --target-resource=TARGET_RESOURCE

次の値を置き換えます。

  • POSTURE_DEPLOYMENT_NAME は、対策のデプロイの相対的なリソース名です。形式は organizations/ORGANIZATION_ID/locations/global/postureDeployments/POSTURE_DEPLOYMENT_ID です。

  • LOCATIONglobal です。

  • POSTURE_ID は、組織に固有の対策の英数字名です。

  • --posture-name=POSTURE_NAME は、デプロイする対策の名前です。形式は organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID です。

ポスチャーに AWS 固有の検出機能が含まれている場合は、組織レベルでポスチャーをデプロイする必要があります(プレビュー)。

たとえば、対策をデプロイするには、次のコマンドを実行します。

gcloud scc posture-deployments create \
  organizations/3589215982/locations/global/postureDeployments/postureDeployment123 \
  --posture-name=organizations/3589215982/locations/global/postures/StagingAIPosture \
  --posture-revision-id=version1 \
  --target-resource=projects/4589215982

コマンドが完了すると、ステータス情報が表示されます。対策のデプロイの作成プロセスが失敗した場合は、デプロイを削除し、エラーをトラブルシューティングして、もう一度試してください。

Terraform

Terraform リソースを作成して対策をデプロイできます。

resource "google_securityposture_posture_deployment" "posture_deployment_example" {
  posture_deployment_id          = "<POSTURE_DEPLOYMENT_ID>"
  parent = "organizations/<ORGANIZATION_ID>"
  location = "global"
  description = "a new posture deployment"
  target_resource = "<TARGET_RESOURCE>"
  posture_id = "<POSTURE_NAME>"
  posture_revision_id = "<POSTURE_REVISION_ID>"
}

詳細については、google_securityposture_posture_deployment をご覧ください。

Terraform リソースを作成したら、Infrastructure as Code パイプラインを使用してプロビジョニングします。

対策と対策のデプロイ情報を表示する

対策と対策のデプロイ情報を表示して、次のような情報を確認できます。

  • どの対策がデプロイされているか、それが適用されるリソース階層のどこか(組織、プロジェクト、フォルダ)。
  • 対策のリビジョンと状態
  • 対策のデプロイのオペレーションの詳細

対策を表示する

対策に関する情報(状態やポリシーの定義など)を表示できます。

コンソール

  1. Google Cloud コンソールで、[ポスチャ―管理] ページに移動します。

    [ポスチャ―管理] に移動

  2. Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にした組織を選択します。

  3. [ポスチャー] タブで、表示する対策をクリックします。対策の詳細が表示されます。

gcloud

gcloud scc postures describe コマンドを実行して、作成した対策を表示します。

gcloud scc postures describe POSTURE_NAME \
    --revision-id=REVISION_ID

次の値を置き換えます。

  • POSTURE_NAME は、対策の相対的なリソース名です。例: organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID

  • LOCATIONglobal です。

  • POSTURE_ID は、組織に固有の対策の英数字名です。

  • revision-id=REVISION_ID は、表示する対策のバージョンを指定するオプションのフラグです。フラグを指定しない場合は、最新バージョンが返されます。

たとえば、名前が organizations/3589215982/locations/global/postures/posture-example-1 でリビジョン ID が abcdefgh の対策を表示するには、次のコマンドを実行します。

gcloud scc postures describe \
    organizations/3589215982/locations/global/postures/posture-example-1 \
    --revision-id=abcdefgh

対策のデプロイ オペレーションに関する情報を表示する

gcloud scc posture-operations describe コマンドを実行して、対策のデプロイ オペレーションのオペレーションの詳細を表示します。

gcloud scc posture-operations describe OPERATION_NAME

ここで、OPERATION_NAME は、オペレーションの相対的なリソース名です。形式は organizations/ORGANIZATION_ID/locations/global/operations/OPERATION_ID です。 OPERATION_ID は、対策コマンドを実行するときに --async 引数を使用して取得できます。

たとえば、organizations/3589215982/locations/global/operations/operation-1694515698847-605272e4bcd7c-f93dade6-067467ae という名前のスキャン オペレーションを表示するには、次のコマンドを実行します。

gcloud scc posture-operations describe \
    organizations/3589215982/locations/global/operations/operation-1694515698847-605272e4bcd7c-f93dade6-067467ae

対策のデプロイに関する情報を表示する

対策のデプロイ先とデプロイの状態を確認できます。

コンソール

  1. Google Cloud コンソールで、[ポスチャ―管理] ページに移動します。

    [ポスチャ―管理] に移動

  2. Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にした組織が表示されていることを確認します。

  3. [ポスチャー] タブで、デプロイした対策をクリックします。

  4. [リソース] タブに移動して、対策がデプロイされているプロジェクト、フォルダ、組織、およびデプロイの状態を表示します。

gcloud

gcloud scc posture-deployments describe コマンドを実行して、デプロイされた対策に関する情報を表示します。

gcloud scc posture-deployments describe
POSTURE_DEPLOYMENT_NAME

ここで、POSTURE_DEPLOYMENT_NAME は、対策のデプロイの相対的なリソース名です。形式は organizations/ORGANIZATION_ID/locations/global/postureDeployments/POSTURE_DEPLOYMENT_ID です。

  • LOCATIONglobal です。
  • POSTURE_DEPLOYMENT_ID は、対策のデプロイの一意の名前です。

たとえば、organizations/3589215982/locations/global/postureDeployments/Posture-deployment-example-1 という名前の対策のデプロイの詳細を表示するには、次のコマンドを実行します。

gcloud scc posture-deployments describe \
    organizations/3589215982/locations/global/postureDeployments/Posture-deployment-example-1

対策と対策のデプロイを更新する

以下を更新できます。

  • 対策の状態。
  • 対策のポリシー定義。
  • 対策がデプロイされる組織、フォルダ、またはプロジェクト。

対策でポリシー定義を更新する

より多くの Google Cloud サービスを有効にする場合、追加のリソースをデプロイする場合、新しいコンプライアンス要件を満たすか、新しいコンプライアンス要件を満たすために追加のポリシーが必要な場合は、対策の更新が必要になることがあります。デプロイされた対策リビジョンを更新する場合、このタスクでは新しい対策リビジョンを作成します。それ以外の場合は、更新コマンドの実行時に指定する対策リビジョンが更新されます。

  1. テキスト エディタで YAML ファイルを開きます。更新するフィールドとその値を追加します。ポリシーセットを更新する場合は、すでに存在するポリシーセットを含めて、対策に含めるすべてのポリシーセットがファイルに含まれていることを確認します。手順については、対策 YAML ファイルを変更するをご覧ください。
  2. gcloud scc postures update コマンドを実行して対策を更新します。

    gcloud scc postures update POSTURE_NAME \
        --posture-from-file=POSTURE_FROM_FILE \
        --revision-id=POSTURE_REVISION_ID \
        --update-mask=UPDATE_MASK
    

    次の値を置き換えます。

    • POSTURE_NAME は、対策の相対的なリソース名です。例: organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID

      • POSTURE_ID は、組織に固有の対策の英数字名です。
    • POSTURE_FROM_FILE は、変更を含む posture.yaml ファイルへの相対パスまたは絶対パスです。

      • LOCATIONglobal です。
      • POSTURE_ID は、組織に固有の対策の英数字の名前です。
    • POSTURE_FROM_FILE は、変更を含む posture.yaml ファイルへの相対パスまたは絶対パスです。

    • --revision-id=REVISION_ID は、デプロイする対策リビジョンです。対策がすでにデプロイされている場合、セキュリティ対策サービスは、別のリビジョン ID を使用して、対策の新しいバージョンを自動的に作成し、出力にリビジョン ID を含めます。

    • --update-mask=UPDATE_MASK は、更新するフィールドのカンマ区切り形式のリストです。この引数は省略可能です。 UPDATE_MASK は次のいずれかの値に設定できます。

      • * または未指定: ポリシーセットと対策の説明に加えた変更を適用します。
      • policy_sets: ポリシーセットに対して行った変更のみを適用します。
      • description: 対策の説明のみに行った変更を適用します。
      • policy_sets, description: ポリシーセットと対策の説明に加えた変更を適用します。
      • state: 状態の変更のみを適用します。

    たとえば、組織 organizations/3589215982/locations/globalposture-example-1 という名前で、リビジョン ID が abcd1234 に設定された対策を更新するには、次のコマンドを実行します。

    gcloud scc postures update \
        organizations/3589215982/locations/global/posture-example-1 \
        --posture-from-file=posture.yaml --revision-id=abcd1234 --update-mask=policy_sets
    

    対策の更新プロセスが失敗した場合は、エラーのトラブルシューティングを行ってから、もう一度お試しください。

  3. 対策が正常に更新されたことを確認するには、対策を表示するをご覧ください。

対策の状態を変更する

ポスチャ―の状態によって、プロジェクト、フォルダ、または組織にデプロイできるかどうかが決まります。

対策には、次の状態があります。

  • DRAFT: 対策リビジョンをデプロイする準備ができていません。DRAFT 状態の対策リビジョンはデプロイできません。
  • ACTIVE: 対策リビジョンはデプロイ可能です。状態を ACTIVE から DRAFT または DEPRECATED. に変更できます。
  • DEPRECATED: DEPRECATED 対策リビジョンはリソースにデプロイできません。対策リビジョンを非推奨にする前に、対策の既存の対策デプロイをすべて削除する必要があります。非推奨となった対策リビジョンを再デプロイする場合は、その状態を ACTIVE に変更する必要があります。

コンソール

  1. Google Cloud コンソールで、[ポスチャ―管理] ページに移動します。

    [ポスチャ―管理] に移動

  2. Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にした組織が表示されていることを確認します。

  3. [ポスチャー] タブで、更新する対策をクリックします。

  4. [姿勢の詳細] ページで、[編集] をクリックします。

  5. 姿勢のステータスを選択し、[保存] をクリックします。

gcloud

対策の状態を変更するには、gcloud scc postures update コマンドを実行します。他のフィールドの更新と同時に対策の状態を更新することはできません。gcloud scc postures update コマンドを実行する方法については、対策 YAML ファイルを変更するをご覧ください。

対策のデプロイを更新する

プロジェクト、フォルダ、または組織で対策デプロイを更新して、新しい対策をデプロイするか、対策の新しいリビジョンをデプロイします。

更新する対策リビジョンに Google Cloud コンソールを使用して削除されたカスタム組織の制約が含まれている場合、同じ対策 ID を使用して対策のデプロイを更新することはできません。組織のポリシー サービスでは、同じ名前の組織のカスタム制約を作成できません。代わりに、対策の新しいバージョンを作成するか、別の対策 ID を使用する必要があります。

また、更新プロセスの一部として削除されたポリシーのデプロイに関する検出結果は無効になります。

コンソール

  1. Google Cloud コンソールで、[ポスチャ―管理] ページに移動します。

    [ポスチャ―管理] に移動

  2. Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にした組織が表示されていることを確認します。

  3. [ポスチャー] タブで、更新する対策をクリックします。

  4. [ポスチャーの詳細] ページで、対策のリビジョンを選択します。

  5. [リソースに適用] をクリックします。

  6. [選択] をクリックして、対策をデプロイする組織、フォルダ、またはプロジェクトを選択します。デプロイメントがすでに存在するというメッセージが表示された場合は、デプロイメントを削除してからもう一度お試しください。

gcloud

gcloud scc posture-deployments update コマンドを実行して対策をデプロイします。

gcloud scc posture-deployments update POSTURE_DEPLOYMENT_NAME \
    --description=DESCRIPTION \
    --update-mask=UPDATE_MASK \
    --posture-id=POSTURE_ID \
    --posture-revision-id=POSTURE_REVISION_ID

次の値を置き換えます。

  • POSTURE_DEPLOYMENT_NAME は、対策のデプロイの相対的なリソース名です。形式は organizations/ORGANIZATION_ID/locations/global/postureDeployments/POSTURE_DEPLOYMENT_ID です。

    • POSTURE_DEPLOYMENT_ID は、対策のデプロイの一意の名前です。
  • --description=DESCRIPTION は、デプロイされた対策の説明です(省略可能)。

  • --posture-id=POSTURE_ID は、組織に固有の対策の名前です。形式は organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_NAME です。

  • --posture-revision-id=POSTURE_REVISION_ID は、デプロイする対策リビジョンです。これは、対策を作成するとき、または対策を表示するときに、受信するレスポンスから取得できます。

  • --update-mask=UPDATE_MASK は、更新するフィールドのカンマ区切り形式のリストです。この引数は省略可能です。

たとえば、次の基準で対策のデプロイを更新するには:

  • 組織: organizations/3589215982/locations/global
  • 対策のデプロイ ID: postureDeploymentexample
  • 対策 ID: StagingAIPosture
  • リビジョン: version2

次のコマンドを実行します。

gcloud scc posture-deployments update \
    organizations/3589215982/locations/global/postureDeployments/postureDeploymentexample \
    --posture-id=organizations/3589215982/locations/global/postures/StagingAIPosture \
    --posture-revision-id=version2

コマンドが完了すると、ステータス情報が表示されます。対策のデプロイの更新プロセスが失敗した場合は、デプロイを削除し、エラーをトラブルシューティングして、もう一度試してください。

対策のブレをモニタリングする

デプロイされた対策で、セキュリティ対策内で定義されたポリシーからのブレをモニタリングできます。ブレは、対策外で発生するポリシーの変更です。たとえば、対策のデプロイを更新するのではなく、管理者がコンソールでポリシー定義を変更すると、ブレが発生します。

セキュリティ ポスチャー サービスは、ブレが発生するたびに検出結果を作成し、Google Cloud コンソールまたは gcloud CLI で確認できます。

コンソール

Vertex AI ワークロードに適用する対策を作成した場合は、[検出結果] ページと [概要] ページからの 2 つの方法でブレをモニタリングできます。他のすべての対策については、[検出結果] ページからブレをモニタリングできます。

[検出結果] ページからブレをモニタリングするには:

  1. Google Cloud コンソールで、[検出結果] ページに移動します。

    [検出結果] に移動

  2. Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にした組織が表示されていることを確認します。

  3. [クイック フィルタ] ペインで、[Posture violation] の検出結果を選択します。[クエリのプレビュー] に次のフィルタを入力することもできます。

    state="ACTIVE" AND NOT mute="MUTED" AND finding_class="POSTURE_VIOLATION"
    
  4. 検出結果の詳細を表示するには、検出結果をクリックします。

[概要] ページからブレをモニタリングするには(Vertex AI ワークロードのみ): 1. Google Cloud コンソールで、[概要] ページに移動します。

[概要] に移動

1. Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にした組織が表示されていることを確認します。1. [AI ワークロードの検出結果] ペインを確認します。

  • [脆弱性] タブには、特に Vertex AI ワークロードに適用される Security Health Analytics のカスタム モジュールに関連するすべての脆弱性が表示されます。
  • [ポリシーのブレ] タブには、体制に適用した Vertex AI の組織のポリシーに関連するブレが表示されます。
  • 検出結果の詳細を表示するには、検出結果をクリックします。

gcloud

gcloud CLI でドリフトの検出結果を表示するには、次のコマンドを実行します。

gcloud scc findings list ORGANIZATION_ID \
    --filter="category=\"SECURITY_POSTURE_DRIFT\""

ここで、ORGANIZATION_ID は組織の ID です。

これらの検出結果への対応の詳細については、セキュリティ対策サービスの検出結果をご覧ください。これらの検出結果は、Security Command Center から他の検出結果をエクスポートする場合と同じ方法でエクスポートできます。詳細については、統合オプションSecurity Command Center データのエクスポートをご覧ください。

ブレの検出結果を無効にするには、同じポスチャ― ID とポスチャ― リビジョンでポスチャ―のデプロイを更新します。

テスト用にブレの検出結果を生成する

対策をデプロイすると、ポリシーからのブレをモニタリングできます。テスト環境で実際のブレの検出結果を確認するには、次の操作を行います。

  1. コンソールで [組織のポリシー] ページに移動します。

    組織のポリシーに移動

  2. デプロイされた対策に定義したポリシーの 1 つを編集します。たとえば、事前定義された安全な AI 対策を使用する場合は、新しい Vertex AI Workbench のノートブックとインスタンスでパブリック IP アクセスを制限するポリシーを編集できます。

  3. ポリシーを変更したら、[ポリシーを設定] をクリックします。

  4. [検出結果] ページに移動します。

    [検出結果] に移動

  5. [クイック フィルタ] ペインの [ソースの表示名] セクションで、[セキュリティ対策] を選択します。変更に関連する検出結果が 5 分以内に表示されます。

  6. 検出結果の詳細を表示するには、検出結果をクリックします。

対策のデプロイを削除する

対策のデプロイが正しくデプロイされなかった場合、特定の対策が不要になった場合、または特定の対策をプロジェクト、フォルダ、または組織に割り当てる必要がなくなった場合は、対策のデプロイを削除できます。対策のデプロイを削除するには、対策のデプロイが次のいずれかの状態になっている必要があります。

  • ACTIVE
  • CREATE_FAILED
  • UPDATE_FAILED
  • DELETE_FAILED

対策のデプロイの状態を確認するには、対策のデプロイに関する情報を表示するをご覧ください。

対策のデプロイを削除すると、割り当てたリソース(組織、フォルダ、またはプロジェクト)から対策が削除されます。また、関連する検出結果が無効になります。

ポリシーの種類に応じて出力は次のとおりとなります。

  • カスタム組織のポリシーを含む対策のデプロイを削除すると、カスタム組織のポリシーが削除されます。ただし、カスタム制約は引き続き存在します。
  • 組み込みの Security Health Analytics 検出機能を含む対策のデプロイを削除すると、Security Health Analytics モジュールの最終状態は、デプロイが存在する組織、フォルダ、プロジェクトによって異なります。

    • フォルダまたはプロジェクトに対策をデプロイした場合、組み込みの Security Health Analytics 検出機能は、親の組織またはフォルダから状態を継承します。
    • 組織レベルで対策をデプロイした場合、組み込みの Security Health Analytics 検出機能はデフォルトの状態に戻ります。デフォルトの状態の説明については、検出機能を有効または無効にするをご覧ください。

コンソール

  1. Google Cloud コンソールで、[ポスチャ―管理] ページに移動します。

    [ポスチャ―管理] に移動

  2. Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にした組織が表示されていることを確認します。

  3. [ポスチャー] タブで、割り当てられているリソースから削除する対策をクリックします。

  4. [ポスチャーの詳細] ページで、対策のリビジョンを選択し、[リソース] に移動します。

  5. 現在のアクティブなポスチャ リビジョンがデプロイされているリソースのリストで、[削除] をクリックします。

gcloud

gcloud scc posture-deployments delete コマンドを実行して、対策のデプロイを削除します。

gcloud scc posture-deployments deletePOSTURE_DEPLOYMENT_NAME

POSTURE_DEPLOYMENT_NAME は、対策のデプロイの相対的なリソース名です。形式は organizations/ORGANIZATION_ID/locations/global/postureDeployments/POSTURE_DEPLOYMENT_ID です。

  • POSTURE_DEPLOYMENT_ID は、対策のデプロイの一意の名前です。

たとえば、organizations/3589215982/locations/global/postureDeployments/posture-deployment-example-1 という名前の対策のデプロイを削除するには、次のコマンドを実行します。

gcloud scc posture-deployments delete \
    organizations/3589215982/locations/global/postureDeployments/posture-deployment-example-1

対策を削除する

対策を削除すると、すべてのリビジョンも削除されます。リビジョンがデプロイされている対策は削除できません。このタスクを完了する前に、すべての対策デプロイを削除する必要があります。

コンソール

  1. Google Cloud コンソールで、[ポスチャ―管理] ページに移動します。

    [ポスチャ―管理] に移動

  2. Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にした組織が表示されていることを確認します。

  3. [ポスチャー] タブで、削除する対策をクリックします。

  4. [姿勢の詳細] ページで、[削除] をクリックします。

gcloud

gcloud scc postures delete コマンドを実行して、対策を削除します。

gcloud scc postures delete POSTURE_NAME

POSTURE_NAME は、対策の相対的なリソース名です。たとえば、organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID です。対策 ID は、組織に固有の対策の英数字の名前です。

たとえば、organizations/3589215982/locations/global/postures/posture-example-1 という名前の対策を削除するには、次のコマンドを実行します。

gcloud scc postures delete \
    organizations/3589215982/locations/global/postures/posture-example-1

次のステップ