TLS バージョンを制限する

このページでは、Transport Layer Security(TLS)1.0 または 1.1 を使用して行われたリクエストを拒否することで、 Google Cloud リソースへのアクセスを防止する方法を説明します。TLS 1.2 の使用も禁止する場合は、TLS 暗号制限ポリシーを使用して TLS 1.3 暗号のみを許可します。詳細については、TLS 暗号スイートを制限するをご覧ください。

概要

Google Cloud は複数の TLS プロトコル バージョンをサポートしています。コンプライアンス要件を満たすため、古い TLS バージョンを使用しているクライアントからの handshake リクエストを拒否する場合があります。これは、gcp.restrictTLSVersion 組織のポリシー制約を使用して行うことができます。

このgcp.restrictTLSVersion制約は、リソース階層内の組織、フォルダ、プロジェクトに適用できます。 この制約では、明示的な値を拒否し、他のすべての値を許可する拒否リストが使用されます。許可リストを使用しようとするとエラーになります。

組織のポリシー階層の評価の動作により、TLS バージョン制限は指定されたリソースノードとそのすべての子に適用されます。たとえば、組織で TLS バージョン 1.0 を拒否すると、その組織からの子孫であるすべてのフォルダとプロジェクト(子)に対しても拒否されます。

子リソースの組織のポリシーを更新すると、継承された TLS バージョン制限をオーバーライドできます。たとえば、組織のポリシーが組織レベルで TLS 1.0 を拒否する場合、そのフォルダに別の組織のポリシーを設定することで子フォルダの制限を解除できます。フォルダに子がある場合、ポリシーの継承により、フォルダのポリシーが各子リソースにも適用されます。

準備

  • 組織のポリシーの設定、変更、削除を行うには、まず組織のポリシー管理者roles/orgpolicy.policyAdmin)Identity and Access Management(IAM)ロールを付与される必要があります。

TLS バージョンを制限する

1 つ以上の TLS バージョンを制限する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで [組織のポリシー] ページを開きます。

    [組織のポリシー] に移動

  2. ページの上部にあるプロジェクト選択ツールを選択します。

  3. プロジェクト選択ツールから、組織のポリシーを設定するリソースを選択します。

  4. [組織のポリシー] ページのリストから、[TLS バージョンを制限] 制約を選択します。

  5. このリソース用に組織のポリシーを更新するには、[編集] をクリックします。

  6. [編集] ページで、[カスタマイズ] を選択します。

  7. [ポリシーの適用] で、適用オプションを選択します。

    • 組織ポリシーを結合してまとめて評価するには、[親と結合する] を選択します。継承とリソース階層の詳細については、階層評価についてをご覧ください。

    • 親リソースから継承されたポリシーをオーバーライドするには、[置換] を選択します。

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

  9. [ポリシーの値] で、デフォルト値が [すべて拒否] に設定されています。代わりに [カスタム] を選択します。

  10. [ポリシーの種類] で [拒否] を選択します。

  11. [カスタム値] で、拒否する TLS バージョンを入力します。有効なカスタム値は次のとおりです。

    • TLS 1.0 の場合 TLS_VERSION_1
    • TLS 1.1 の場合 TLS_VERSION_1_1

    複数の TLS バージョンを制限する場合は、[値を追加] をクリックし、追加のフィールドに値を入力します。

  12. 組織のポリシーを完成させて適用するには、[保存] をクリックします。

gcloud

gcloud org-policies set-policy コマンドを使用して、リソースに組織のポリシーを設定します。

gcloud org-policies set-policy POLICY_PATH

POLICY_PATH は、組織のポリシー ファイルへのフルパスです。YAML 形式を使用する場合は、次のようになります。

name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictTLSVersion
spec:
  rules:
  - values:
    deniedValues:
    - TLS_VERSION_1
    - TLS_VERSION_1_1

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

  • RESOURCE_TYPEorganizationsfolders、または projects です。

  • RESOURCE_ID は、RESOURCE_TYPE で指定されたリソースのタイプに応じた、組織 ID、フォルダ ID、プロジェクト ID またはプロジェクト番号です。

次のコマンドを実行して、ポリシーが適用されたことを確認します。

gcloud org-policies describe gcp.restrictTLSVersion --RESOURCE_TYPE=RESOURCE_ID --effective

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

  • RESOURCE_TYPEorganizationfolder、または project です。

  • RESOURCE_ID は、RESOURCE_TYPE で指定されたリソースのタイプに応じた、組織 ID、フォルダ ID、プロジェクト ID またはプロジェクト番号です。

ポリシーのテスト

TLS バージョン制限ポリシーの制約は、任意のスコープ内サービスでテストできます。次の curl コマンドの例は、Cloud Storage バケットの TLS バージョンの制限を検証します。

  curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.googleapis.com/storage/v1/b/GCS_BUCKET_NAME/o" \
  --tlsvTLS_VERSION --tls-max TLS_VERSION --ciphers DEFAULT@SECLEVEL=0

--tlsv と値の間にスペースはありません。例: --tlsv1.1

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

  • GCS_BUCKET_NAME は、mybucketname などのプロジェクトの Cloud Storage バケット名です。

  • TLS_VERSION は、構成されたポリシーで拒否された 1.01.1 などの TLS バージョンです。

次の curl リクエストの例では、GCS_BUCKET_NAMEmybucketname に設定され、TLS_VERSION1.1 に設定されています。

  curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.googleapis.com/storage/v1/b/mybucketname/o" \
  --tlsv1.1 --tls-max 1.1 --ciphers DEFAULT@SECLEVEL=0

組織のポリシーが TLS_VERSION_X を制限するように構成されている場合、この例のコマンドでポリシー制限されたプロジェクトで、TLS_VERSION_X を使用してリソースにアクセスしようとすると失敗します。失敗の理由を説明するエラー メッセージが返されます。

Request is disallowed by organization's constraints/gcp.restrictTLSVersion
constraint for 'projects/PROJECT_NUMBER' to use service
'SERVICE_NAME.googleapis.com' by violated TLS version `TLS_VERSION_X`

この出力には次の値が含まれます。

  • PROJECT_NUMBER: 前のコマンドで参照されているリソースをホストするプロジェクト番号。
  • SERVICE_NAME: TLS 制限ポリシーによってブロックされたスコープ内サービスの名前。

サポート対象のサービス

TLS バージョンの制限は、Google Front End(GFE) によって署名されたヘッダーを持つすべての Google Cloud リソース API でサポートされています。

サポートされていないサービス

TLS のバージョン制限に関する組織のポリシーの制約は、次のサービスには適用されません

  • Apigee
  • App Engine(*.appspot.com
  • Cloud Run functions(*.cloudfunctions.net)、
  • Cloud Run(*.run.app
  • Private Service Connect
  • カスタム ドメイン

これらのサービスの TLS バージョンを制限するには、SSL ポリシーとともに Cloud Load Balancing を使用します。事前定義された constraints/compute.requireSslPolicy 制約と SSL ポリシーのカスタム制約を使用して、ロードバランサの TLS バージョンと暗号スイートの制限を適用することもできます。

次のステップ