TLS バージョンを制限する

このページでは、Transport Layer Security(TLS)1.0 または 1.1 を使用して行われたリクエストを拒否することで Google Cloud リソースへのアクセスを防止する方法について説明します。

概要

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. 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 は、プロジェクト内の Cloud Storage バケット名です(mybucketname など)。

  • 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 バージョン制限は、次のサービスでサポートされています。

  • apigateway.googleapis.com
  • appengine.googleapis.com
  • artifactregistry.googleapis.com
  • assuredworkloads.googleapis.com
  • bigquery.googleapis.com
  • bigqueryreservation.googleapis.com
  • bigtableadmin.googleapis.com
  • binaryauthorization.googleapis.com
  • cloudasset.googleapis.com
  • cloudbuild.googleapis.com
  • clouddebugger.googleapis.com
  • cloudfunctions.googleapis.com
  • cloudkms.googleapis.com
  • cloudresourcemanager.googleapis.com
  • cloudscheduler.googleapis.com
  • cloudsearch.googleapis.com
  • cloudtasks.googleapis.com
  • cloudtrace.googleapis.com
  • composer.googleapis.com
  • compute.googleapis.com
  • container.googleapis.com
  • containeranalysis.googleapis.com
  • datacatalog.googleapis.com
  • dataflow.googleapis.com
  • datafusion.googleapis.com
  • datalabeling.googleapis.com
  • datamigration.googleapis.com
  • dataproc.googleapis.com
  • datastore.googleapis.com
  • deploymentmanager.googleapis.com
  • dialogflow.googleapis.com
  • dlp.googleapis.com
  • dns.googleapis.com
  • domains.googleapis.com
  • file.googleapis.com
  • firebaserules.googleapis.com
  • firestore.googleapis.com
  • genomics.googleapis.com
  • healthcare.googleapis.com
  • iam.googleapis.com
  • iamcredentials.googleapis.com
  • iap.googleapis.com
  • identitytoolkit.googleapis.com
  • language.googleapis.com
  • lifesciences.googleapis.com
  • logging.googleapis.com
  • managedidentities.googleapis.com
  • memcache.googleapis.com
  • metastore.googleapis.com
  • ml.googleapis.com
  • monitoring.googleapis.com
  • networkmanagement.googleapis.com
  • notebooks.googleapis.com
  • osconfig.googleapis.com
  • policytroubleshooter.googleapis.com
  • privateca.googleapis.com
  • pubsub.googleapis.com
  • pubsublite.googleapis.com
  • recommender.googleapis.com
  • redis.googleapis.com
  • run.googleapis.com
  • runtimeconfig.googleapis.com
  • secretmanager.googleapis.com
  • servicecontrol.googleapis.com
  • servicedirectory.googleapis.com
  • servicenetworking.googleapis.com
  • sourcerepo.googleapis.com
  • spanner.googleapis.com
  • sqladmin.googleapis.com
  • storage.googleapis.com

  • storagetransfer.googleapis.com

  • sts.googleapis.com

  • texttospeech.googleapis.com

  • tpu.googleapis.com

  • videointelligence.googleapis.com

  • vision.googleapis.com

  • workflowexecutions.googleapis.com

  • workflows.googleapis.com

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

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

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

これらのサービスの TLS バージョンを制限するには、Cloud Load BalancingSSL セキュリティ ポリシーを使用します。

次のステップ