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

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

  • 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 を作成できます。ルート 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. 次のコードを YAML ファイルに追加して、必要な TlsInspectionPolicy を構成します。

    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 検査ポリシーをセキュリティ ポリシーに追加する

コンソール

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

  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. Description
    3. ステータス
    4. 優先度: ルールの数値評価順序。ルールは、最も高い優先度から順番に評価されます(最も高い優先度は 0)。
    5. [アクション] セクションで、ルールに一致する接続を許可する(許可)か、拒否する(拒否)かを指定します。
    6. [Session Match] セクションで、セッションを照合するための条件を指定します。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
    

次のステップ