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 バージョンを制限する手順は次のとおりです。
コンソール
Cloud コンソールで [組織のポリシー] ページを開きます。
ページの上部にあるプロジェクト選択ツールを選択します。
プロジェクト選択ツールから、組織のポリシーを設定するリソースを選択します。
[組織のポリシー] ページのリストから、[TLS バージョンを制限] 制約を選択します。
このリソース用に組織のポリシーを更新するには、[編集] をクリックします。
[編集] ページで、[カスタマイズ] を選択します。
[ポリシーの適用] で、適用オプションを選択します。
組織ポリシーを結合してまとめて評価するには、[親と結合する] を選択します。継承とリソース階層の詳細については、階層評価についてをご覧ください。
親リソースから継承されたポリシーをオーバーライドするには、[置換] を選択します。
[ルールを追加] をクリックします。
[ポリシーの値] で、デフォルト値は [すべて拒否] に設定されています。代わりに [カスタム] を選択します。
[ポリシーの種類] で [拒否] を選択します。
[カスタム値] で、拒否する TLS バージョンを入力します。有効なカスタム値は次のとおりです。
- TLS 1.0 の場合
TLS_VERSION_1
- TLS 1.1 の場合
TLS_VERSION_1_1
複数の TLS バージョンを制限する場合は、[値を追加] をクリックして追加フィールドに値を入力します。
- TLS 1.0 の場合
組織のポリシーを完成させて適用するには、[保存] をクリックします。
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_TYPE
はorganizations
、folders
、またはprojects
です。RESOURCE_ID
は、RESOURCE_TYPE
で指定されたリソースのタイプに応じた、組織 ID、フォルダ ID、プロジェクト ID またはプロジェクト番号です。
次のコマンドを実行して、ポリシーが適用されていることを確認します。
gcloud org-policies describe gcp.restrictTLSVersion --RESOURCE_TYPE=RESOURCE_ID --effective
次のように置き換えます。
RESOURCE_TYPE
はorganization
、folder
、または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.0
や1.1
などの TLS バージョンです。
次の curl
リクエストの例では、GCS_BUCKET_NAME が mybucketname
に、TLS_VERSION が 1.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 Balancing と SSL セキュリティ ポリシーを使用します。
次のステップ
- 各コントロール パッケージでサポートされているプロダクトを確認する。