ワークロード レベルのネットワーク ポリシーを作成する

このページでは、Google Distributed Cloud(GDC)エアギャップでワークロード レベルのネットワーク ポリシーを構成する手順について説明します。

ワークロード単位のネットワーク ポリシーを使用すると、プロジェクト内の個々のワークロード間の通信をきめ細かく制御できます。この粒度により、ネットワーク アクセスをより厳密に制御できるため、セキュリティとリソースの使用率が向上します。

ワークロード単位のネットワーク ポリシーは、単一のゾーンに沿って PNP を適用できます。特定のラベルを単一ゾーン内のワークロードに追加すると、そのゾーンのプロジェクト内または異なるプロジェクト内の個々のワークロード間の通信を制御できます。詳細については、単一ゾーンのワークロード レベルのネットワーク ポリシーをご覧ください。

ワークロード レベルのプロジェクト内トラフィック ポリシーを作成する

ワークロード レベルのプロジェクト内トラフィック ポリシーを作成すると、プロジェクト内のワークロード間のトラフィックのネットワーク アクセスを有効または無効にできます。

上り(内向き)ワークロード レベルのプロジェクト内トラフィック ネットワーク ポリシー

プロジェクトを作成すると、すべてのワークロード間のプロジェクト内通信を可能にするデフォルトのベース ProjectNetworkPolicy リソースが暗黙的に作成されます。このポリシーでは、同じプロジェクト内の他のワークロードからのインバウンド トラフィックが許可されます。

ワークロード レベルのプロジェクト内トラフィック ポリシーを作成するには、まずデフォルトのベースポリシーを削除する必要があります。そうしないと、予期しない動作が発生する可能性があります。

  1. デフォルトのベースポリシーを削除するには、次のコマンドを実行します。

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. 上り(内向き)のワークロード レベルのプロジェクト内トラフィック ネットワーク ポリシーを作成するには、次のカスタム リソースを作成して適用します。

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-intra-project-inbound-traffic-from-target-to-subject
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
    EOF
    

    次のように置き換えます。

    • GLOBAL_API_SERVER: グローバル API サーバーの kubeconfig パス。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインで詳細を確認してください。
    • PROJECT: ワークロード レベルのプロジェクト内インバウンド トラフィックを許可するプロジェクトの名前。
    • SUBJECT_LABEL_KEY: ソース ワークロードの選択に使用されるラベルのキー。例: apptier、または role
    • SUBJECT_LABEL_VALUE: SUBJECT_LABEL_KEY に関連付けられた値。許可されたトラフィックの送信元となるワークロードを指定します。たとえば、SUBJECT_LABEL_KEYapp で、SUBJECT_LABEL_VALUEbackend の場合、ラベル app: backend のワークロードがトラフィック ソースになります。
    • TARGET_LABEL_KEY: 宛先ワークロードの選択に使用されるラベルのキー。
    • TARGET_LABEL_VALUE: TARGET_LABEL_KEY に関連付けられた値。許可されたトラフィックの宛先となるワークロードを指定します。

ワークロード レベルのプロジェクト間トラフィック ポリシーを作成する

ワークロード レベルのプロジェクト間トラフィック ポリシーを作成して、異なるプロジェクトのワークロード間のトラフィックに対するネットワーク アクセスを有効または無効にできます。

下り(外向き)ワークロード レベルのクロス プロジェクト トラフィック ネットワーク ポリシー

  • 下り(外向き)ワークロード レベルのクロス プロジェクト トラフィック ネットワーク ポリシーを作成するには、次のカスタム リソースを作成して適用します。

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_1
      name: allow-cross-project-outbound-traffic-to-subject-from-target
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT_2
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
    EOF
    

    次のように置き換えます。

    • GLOBAL_API_SERVER: グローバル API サーバーの kubeconfig パス。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインで詳細を確認してください。
    • PROJECT_1: ワークロード レベルのクロス プロジェクト アウトバウンド トラフィックを許可するプロジェクトの名前。
    • PROJECT_2: ワークロード レベルのクロス プロジェクト アウトバウンド トラフィックを送信するプロジェクトの名前。
    • SUBJECT_LABEL_KEY: ソース ワークロードの選択に使用されるラベルのキー。例: apptier、または role
    • SUBJECT_LABEL_VALUE: SUBJECT_LABEL_KEY に関連付けられた値。許可されたトラフィックの送信元となるワークロードを指定します。たとえば、SUBJECT_LABEL_KEYapp で、SUBJECT_LABEL_VALUEbackend の場合、ラベル app: backend のワークロードがトラフィック ソースになります。
    • TARGET_LABEL_KEY: 宛先ワークロードの選択に使用されるラベルのキー。
    • TARGET_LABEL_VALUE: TARGET_LABEL_KEY に関連付けられた値。許可されたトラフィックの宛先となるワークロードを指定します。

単一ゾーンのワークロード レベルのプロジェクト内トラフィック ポリシーを作成する

単一ゾーンのワークロード レベルのプロジェクト内トラフィック ポリシーを作成すると、特定のゾーンのプロジェクト内のワークロード間のトラフィックのネットワーク アクセスを有効または無効にできます。

単一ゾーンの上り(内向き)ワークロード レベルのプロジェクト内トラフィック ネットワーク ポリシー

プロジェクトを作成すると、すべてのワークロード間のプロジェクト内通信を可能にするデフォルトのベース ProjectNetworkPolicy リソースが暗黙的に作成されます。このポリシーでは、同じプロジェクト内の他のワークロードからのインバウンド トラフィックが許可されます。

単一ゾーンのワークロード レベルのプロジェクト内トラフィック ネットワーク ポリシーを作成するには、まずデフォルトの基本ポリシーを削除する必要があります。そうしないと、予期しない動作が発生する可能性があります。

  1. デフォルトのベースポリシーを削除するには、次のコマンドを実行します。

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. 単一ゾーンの Ingress ワークロード レベルのプロジェクト内トラフィック ネットワーク ポリシーを作成するには、次のカスタム リソースを作成して適用します。

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-single-zone-intra-project-inbound-traffic-from-target-to-subject
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
            ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
                ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE
    EOF
    

    次のように置き換えます。

    • GLOBAL_API_SERVER: グローバル API サーバーの kubeconfig パス。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインで詳細を確認してください。
    • PROJECT: 単一ゾーンのワークロード レベルのプロジェクト内インバウンド トラフィックを許可するプロジェクトの名前。
    • SUBJECT_LABEL_KEY: ソース ワークロードの選択に使用されるラベルのキー。例: apptier、または role
    • SUBJECT_LABEL_VALUE: SUBJECT_LABEL_KEY に関連付けられた値。許可されたトラフィックの送信元となるワークロードを指定します。たとえば、SUBJECT_LABEL_KEYapp で、SUBJECT_LABEL_VALUEbackend の場合、ラベル app: backend のワークロードがトラフィック ソースになります。
    • TARGET_LABEL_KEY: 宛先ワークロードの選択に使用されるラベルのキー。
    • TARGET_LABEL_VALUE: TARGET_LABEL_KEY に関連付けられた値。許可されたトラフィックの宛先となるワークロードを指定します。
    • ZONE_SUBJECT_LABEL_KEY: ソースゾーンの選択に使用されるラベルのキー。例: zone、または region
    • ZONE_SUBJECT_LABEL_VALUE: ZONE_SUBJECT_LABEL_KEY に関連付けられた値。許可されたトラフィックの送信元ゾーンを指定します。たとえば、ZONE_SUBJECT_LABEL_KEYzone で、ZONE_SUBJECT_LABEL_VALUEus-central1-a の場合、ラベル zone: us-central1-a のワークロードがトラフィック ソースになります。
    • ZONE_TARGET_LABEL_KEY: 宛先ゾーンの選択に使用されるラベルのキー。
    • ZONE_TARGET_LABEL_VALUE: ZONE_TARGET_LABEL_KEY に関連付けられた値。許可されたトラフィックの宛先となるゾーンを指定します。

単一ゾーンのワークロード レベルのプロジェクト間トラフィック ポリシーを作成する

単一ゾーンのワークロード レベルのクロス プロジェクト トラフィック ポリシーを作成して、特定のゾーン内の異なるプロジェクトのワークロード間のトラフィックのネットワーク アクセスを有効または無効にできます。

単一ゾーンの下り(外向き)ワークロード レベルのクロス プロジェクト トラフィック ネットワーク ポリシー

  • 単一ゾーンの下り(外向き)ワークロード レベルのプロジェクト内トラフィック ネットワーク ポリシーを作成するには、次のカスタム リソースを作成して適用します。

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_1
      name: allow-single-zone-cross-project-outbound-traffic-to-subject-from-target
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
            ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT_2
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
                ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE
    EOF
    

    次のように置き換えます。

    • GLOBAL_API_SERVER: グローバル API サーバーの kubeconfig パス。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインで詳細を確認してください。
    • PROJECT_1: 単一ゾーンのワークロード レベルのクロス プロジェクト アウトバウンド トラフィックを許可するプロジェクトの名前。
    • PROJECT_2: 単一ゾーン ワークロード レベルのクロス プロジェクト アウトバウンド トラフィックを送信するプロジェクトの名前。
    • SUBJECT_LABEL_KEY: ソース ワークロードの選択に使用されるラベルのキー。例: apptier、または role
    • SUBJECT_LABEL_VALUE: SUBJECT_LABEL_KEY に関連付けられた値。許可されたトラフィックの送信元となるワークロードを指定します。たとえば、SUBJECT_LABEL_KEYapp で、SUBJECT_LABEL_VALUEbackend の場合、ラベル app: backend のワークロードがトラフィック ソースになります。
    • TARGET_LABEL_KEY: 宛先ワークロードの選択に使用されるラベルのキー。
    • TARGET_LABEL_VALUE: TARGET_LABEL_KEY に関連付けられた値。許可されたトラフィックの宛先となるワークロードを指定します。
    • ZONE_SUBJECT_LABEL_KEY: ソースゾーンの選択に使用されるラベルのキー。例: zone、または region
    • ZONE_SUBJECT_LABEL_VALUE: ZONE_SUBJECT_LABEL_KEY に関連付けられた値。許可されたトラフィックの送信元ゾーンを指定します。たとえば、ZONE_SUBJECT_LABEL_KEYzone で、ZONE_SUBJECT_LABEL_VALUEus-central1-a の場合、ラベル zone: us-central1-a のワークロードがトラフィック ソースになります。
    • ZONE_TARGET_LABEL_KEY: 宛先ゾーンの選択に使用されるラベルのキー。
    • ZONE_TARGET_LABEL_VALUE: ZONE_TARGET_LABEL_KEY に関連付けられた値。許可されたトラフィックの宛先となるゾーンを指定します。