TLS インスペクションを有効にする

このページでは、Secure Web Proxy インスタンスに対して Transport Layer Security(TLS)検査を有効にする方法について説明します。

準備

TLS 検査用に Secure Web Proxy を構成する前に、次のセクションのタスクを完了してください。

CAS を有効にする

Secure Web Proxy は、Certificate Authority Service(CAS)を使用して、TLS インスペクションに使用される証明書を生成します。

CAS を有効にするには、次のコマンドを使用します。

  gcloud services enable privateca.googleapis.com
  

CA プールを作成します

CAS を使用して CA を作成する前に、認証局(CA)プールを作成する必要があります。このセクションでは、このタスクを完了するために必要な権限について説明してから、CA プールの作成方法について説明します。

TLS インスペクションでは、証明書を生成するために、プロジェクトごとに service-{project ID}@gcp-sa-certmanager.iam.gserviceaccount.com という個別のサービス アカウントを使用します。このサービス アカウントに CA プールを使用する権限が付与されていることを確認します。このアクセス権が取り消されると、TLS インスペクションは機能しなくなります。

プールを作成するには、gcloud privateca pools create コマンドを使用して、下位プール ID、階層、プロジェクト ID、ロケーションを指定します。

gcloud privateca pools create SUBORDINATE_POOL_ID \
    --tier=TIER \
    --project=PROJECT_ID \
    --location=REGION

以下を置き換えます。

  • SUBORDINATE_POOL_ID: CA プールの名前
  • TIER: CA 階層(devops または enterprise

    個別に発行された証明書を追跡する必要がないため、devops 階層に CA プールを作成することをおすすめします。

  • PROJECT_ID: CA プール プロジェクトの ID

  • REGION: CA プールのロケーション

下位 CA プールを作成する

下位 CA プールを作成すると、ルート CA はそのプール内のすべての CA に署名します。これらの証明書は、TLS インスペクション用に生成されたサーバー証明書に署名するために使用されます。

下位プールを作成するには、次のいずれかの方法を使用します。

CAS 内に保存されている既存のルート CA を使用して下位 CA プールを作成する

下位 CA を生成にするには、次の手順を行います。

  1. CA プールを作成します
  2. CA プール内に下位 CA を作成する

外部に保持されている既存のルート CA を使用して下位 CA プールを作成する

下位 CA を生成にするには、次の手順を行います。

  1. CA プールを作成します
  2. 外部ルート CA によって署名された下位 CA を作成します

ルート CA を作成する

既存のルート CA がない場合は、CAS 内に作成できます。ルート CA を作成するには、次の手順を行います。

  1. ルート CA を作成します
  2. CAS 内に保存されている既存のルート CA を使用して下位 CA プールを作成するの手順に沿って操作します。

CA プールの詳細については、Certificate Authority Service のドキュメントをご覧ください。

サービス アカウントを作成する

サービス アカウントがない場合は、サービス アカウントを作成して必要な権限を付与する必要があります。

  1. サービス アカウントの作成:

    gcloud beta services identity create \
        --service=networksecurity.googleapis.com \
        --project=PROJECT_ID
    

    レスポンスとして、Google Cloud CLI によって service-{project ID}@gcp-sa-networksecurity.iam.gserviceaccount.com という名前のサービス アカウントが作成されます。

  2. 作成したサービス アカウントに、CA プールで証明書を生成する権限を付与します。

    gcloud privateca pools add-iam-policy-binding CA_POOL \
        --member='serviceAccount:SERVICE_ACCOUNT' \
        --role='roles/privateca.certificateManager' \
        --location='REGION'
    

TLS 検査用に Secure Web Proxy を構成する

このセクションのタスクを進めるには、始める前にセクションに記載されている前提条件となるタスクを完了している必要があります。

TLS インスペクションを構成するには、次のセクションの作業を完了します。

TLS 検査ポリシーの作成

  1. TLS_INSPECTION_FILE.yaml ファイルを作成します。TLS_INSPECTION_FILE は、任意のファイル名に置き換えます。

  2. 目的の TlsInspectionPolicy を構成するには、YAML ファイルに次のコードを追加します。

    name: projects/PROJECT_ID/locations/REGION/tlsInspectionPolicies/TLS_INSPECTION_NAME
    caPool: projects/PROJECT_ID/locations/REGION/caPools/CA_POOL
    

    以下を置き換えます。

    • PROJECT_ID: プロジェクト番号
    • REGION: ポリシーを作成するリージョン。
    • TLS_INSPECTION_NAME: Secure Web Proxy の TLS 検査ポリシーの名前
    • CA_POOL: 証明書を作成する CA プールの名前

      CA プールは同じリージョン内に存在する必要があります。

TLS インスペクション ポリシーをインポートする

前の手順で作成した TLS インスペクション ポリシーをインポートします。

gcloud network-security tls-inspection-policies import TLS_INSPECTION_NAME \
  --source=TLS_INSPECTION_FILE.yaml \
  --location=REGION

TLS インスペクション ポリシーをセキュリティ ポリシーに追加する

Console

ウェブプロキシ ポリシーを作成する

  1. Google Cloud コンソールで [ネットワーク セキュリティ] ページに移動します。

    [ネットワーク セキュリティ] に移動

  2. [Secure Web Proxy] をクリックします。

  3. [ポリシー] タブをクリックします。

  4. [Create a policy] をクリックします。

  5. 作成するポリシーの名前を入力します(例: myswppolicy)。

  6. レスポンス ポリシーの説明(My new swp policy など)を入力します。

  7. [リージョン] リストで、Secure Web Proxy ポリシーを作成するリージョンを選択します。

  8. TLS インスペクションを構成するには、[TLS インスペクションを構成する] を選択します。

  9. [TLS インスペクション ポリシー] リストで、作成した TLS インスペクション ポリシーを選択します。

  10. ポリシーのルールを作成する場合は、[続行] をクリックしてから、[ルールを追加] をクリックします。詳しくは、Secure Web Proxy ルールを作成するをご覧ください。

  11. [作成] をクリックします。

ウェブプロキシ ルールを作成する

  1. Google Cloud コンソールで [ネットワーク セキュリティ] ページに移動します。

    [ネットワーク セキュリティ] に移動

  2. [Secure Web Proxy] をクリックします。

  3. プロジェクト セレクタ メニューで、組織 ID またはポリシーを含むフォルダを選択します。

  4. ポリシーの名前をクリックします。

  5. [ルールを追加] をクリックします。

  6. ルール フィールドに、次の内容を入力します。

    1. 名前
    2. 説明
    3. ステータス
    4. 優先度: ルールの数値評価順序。ルールは、最も高い優先度から順番に評価されます(最も高い優先度は 0)。
    5. [アクション] セクションで、ルールに一致する接続を許可する(許可)か、拒否する(拒否)かを指定します。
    6. [セッションの一致] セクションで、セッションの一致条件を指定します。SessionMatcher の構文の詳細については、CEL マッチャーの言語リファレンスをご覧ください。
    7. TLS インスペクションを有効にするには、[TLS インスペクションを有効にする] を選択します。
    8. [アプリケーションの一致] セクションで、リクエストの一致条件を指定します。TLS インスペクションのルールを有効にしないと、リクエストは HTTP トラフィックのみと一致します。
    9. [作成] をクリックします。
  7. [ルールを追加] をクリックして別のルールを追加します。

  8. [Create] をクリックしてポリシーを作成します。

ウェブプロキシを設定

  1. Google Cloud コンソールで [ネットワーク セキュリティ] ページに移動します。

    [ネットワーク セキュリティ] に移動

  2. [Secure Web Proxy] をクリックします。

  3. [ウェブプロキシ] タブをクリックします。

  4. [ウェブプロキシを設定] をクリックします。

  5. 作成するウェブプロキシの名前を入力します(例: myswp)。

  6. ウェブプロキシの説明を入力します(例: My new swp)。

  7. [リージョン] リストで、ウェブプロキシを作成するリージョンを選択します。

  8. [ネットワーク] リストで、ウェブプロキシを作成するネットワークを選択します。

  9. [サブネットワーク] リストで、ウェブプロキシを作成するサブネットワークを選択します。

  10. ウェブプロキシの IP アドレスを入力します。

  11. [証明書] リストで、ウェブプロキシの作成に使用する証明書を選択します。

  12. [ポリシー] リストで、ウェブプロキシに関連付けるために作成したポリシーを選択します。

  13. [作成] をクリックします。

Cloud Shell

  1. ファイルpolicy.yamlを作成する

      description: basic Secure Web Proxy policy
      name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1
      tlsInspectionPolicy: projects/PROJECT_ID/locations/REGION/tlsInspectionPolicies/TLS_INSPECTION_NAME
    
  2. Secure Web Proxy ポリシーを作成します。

      gcloud network-security gateway-security-policies import policy1 \
          --source=policy.yaml --location=REGION
    
  3. ファイルrule.yamlを作成する

      name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/policy1/rules/allow-example-com
      description: Allow example.com
      enabled: true
      priority: 1
      basicProfile: ALLOW
      sessionMatcher: host() == 'example.com'
      applicationMatcher: request.path.contains('index.html')
      tlsInspectionEnabled: true
    
  4. セキュリティ ポリシー ルールを作成します。

      gcloud network-security gateway-security-policies rules import allow-example-com \
          --source=rule.yaml \
          --location=REGION \
          --gateway-security-policy=policy1
    
  5. TLS インスペクション ポリシーを既存のセキュリティ ポリシーに適用するには、POLICY_FILE.yaml ファイルを作成します。POLICY_FILE は、任意のファイル名に置き換えます。

      description: My Secure Web Proxy policy
      name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
      tlsInspectionPolicy: projects/PROJECT_ID/locations/REGION/tlsInspectionPolicies/TLS_INSPECTION_NAME
    

次のステップ