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
は、mybucketname
などのプロジェクトの Cloud Storage バケット名です。TLS_VERSION
は、構成されたポリシーで拒否された TLS バージョン(1.0
や1.1
など)です。
次の 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 バージョンの制限は、Google Front End(GFE) によって署名されたヘッダーを持つすべての Google Cloud リソース API でサポートされています。
サポートされていないサービス
TLS のバージョン制限に関する組織のポリシーの制約は、次のサービスには適用されません。
- App Engine(
*.appspot.com
) - Cloud Run 関数(
*.cloudfunctions.net
)、 - Cloud Run(
*.run.app
) - Private Service Connect
- カスタム ドメイン
これらのサービスの TLS バージョンを制限するには、SSL ポリシーとともに Cloud Load Balancing を使用します。事前定義された constraints/compute.requireSslPolicy
制約と SSL ポリシーのカスタム制約を使用して、ロードバランサの TLS バージョンと暗号スイートの制限を適用することもできます。
次のステップ
- 各コントロール パッケージでサポートされているプロダクトを確認する。