証明書ベースのアクセスによるリソースの保護

証明書ベースのアクセスは、X.509 証明書を使用してデバイスを識別することで、多くの Google リソースへのアクセスを保護します。この機能は、BeyondCorp Enterprise の既存のコンテキストアウェア アクセス機能(Endpoint Verification、Access Context Manager、VPC Service Controls、Identity-Aware Proxy TCP 転送)を基盤としており、Google で生成された証明書を持つ信頼できるデバイスのユーザーのみが、IAP TCP 転送を使用して管理者権限を取得するか、Google Cloud Console または Go 用 Google Cloud クライアント ライブラリを使用して Google Cloud API にアクセスできます。

これにより、デバイス ID のシグナルが強化されます。また、もっとも重要なのは、認証情報と元のデバイス証明書の両方が提示されたときにのみアクセス権が付与されるため、認証情報の盗難や偶発的な紛失からユーザーを保護できることです。

証明書ベースのアクセスは、次の VPC Service Controls サービス、コマンドライン インターフェース(CLI)、ツール、クライアント ライブラリでサポートされています。

サービス Compute Engine、Google Kubernetes Engine(GKE)、Pub/Sub、Cloud Spanner、Cloud Key Management Service、Cloud Storage、BigQuery、Cloud Logging
CLI/ツール gcloud、gsutil、Terraform、IAP Desktop
クライアント ライブラリ Go、Python、Java

この機能は、次の手順によって設定できます。

  1. 組織内のデバイスに Endpoint Verification をデプロイします。
  2. Access Context Manager でアクセスレベルを作成します(アクセス用のデバイス証明書を照合する必要があります)。
  3. IAP TCP 転送または VPC Service Controls サービス境界を介してアクセスレベルを適用することにより、アクセス制限を適用します。
  4. ユーザーは、証明書ベースのアクセスで保護されるようになった VM インスタンスまたは Google Cloud APIs へのアクセスを有効にできます。

Endpoint Verification をデプロイする

Endpoint Verification では、組織のデータにアクセスしているデバイスのインベントリを作成できます。また、BeyondCorp Enterprise ソリューションの一部として、デバイスの信頼とセキュリティ ベースによる重要なアクセス制御を提供します。これにより、Google Cloud リソースに対するきめ細かいアクセス制御を実現できます。 証明書ベースのアクセスの場合、エンドポイントの確認は、信頼できるデバイスごとに Google 検証済み X.509 証明書を生成、登録、提示する責任を担っています。

Endpoint Verification は、Mac、Windows、Linux のユーザーに対して、デスクトップおよびノートパソコンで Chrome 拡張機能として実行されます。管理者は、Google Workspace 管理コンソールから会社所有のデバイスにデプロイできます。また、組織のメンバーは、自分でインストールできます。

初めてインストールする場合は、最新バージョンを使用する必要がありますが、証明書ベースのアクセスをサポートするには、次のバージョンの Endpoint Verification が必要です。

  • Endpoint Verification Chrome 拡張機能: 1.0.38 以降
  • ネイティブ ヘルパー: 0.4.40.0 以降(Mac)、0.4.36.0 以降(Windows)、20191007 以降(Linux)

アクセスレベルの作成

Access Context Manager でカスタム アクセスレベルを作成して、リソースへのアクセスを決定するときに、証明書を必要とするアクセスレベルを定義する必要があります。

アクセスレベル名、説明、わかりやすいタイトルなどに使用する値は、自分で意味のわかるものであれば何でもかまいませんが、カスタム アクセス レベルの式は次のようにする必要があります。

certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE

たとえば、gcloud ツールを使用してカスタム アクセスレベルを作成する場合は、次のコマンドを使用します。

gcloud access-context-manager levels create LEVEL_NAME \
  --title=TITLE \
  --custom-level-spec=FILE \
  --description=DESCRIPTION \
  --policy=POLICY_NAME

FILE が参照する .yaml ファイルのコンテンツは、単純にカスタム式となります。

expression: "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE"

アクセスレベルの適用

アクセスレベルが作成されたので、最後の管理手順では、それを適用してアクセス制限を適用します。

VM への管理アクセス制限の適用

IAP TCP 転送を使用して、VM インスタンスに(SSH と RDP を使用して)管理アクセスのアクセスレベルを適用できます。

  • IAP で保護されたトンネル ユーザーのロールを付与されたユーザーまたはグループの場合は、権限を編集して条件を追加します。
  • 前の手順で定義したアクセスレベルの名前(gcloud ツールの例では TITLE の値になります)を使用して、アクセスレベルによってアクセスを制限します。

Google Cloud APIs へのアクセスを制限する

VPC Service Controls サービス境界を作成することで、ユーザーが特定の管理 API にアクセスしようとするたびに証明書ベースのアクセスを適用できます。サービス境界を作成(または変更)する場合、証明書ベースのアクセスには、境界外からのリクエストに対するアクセスレベルを指定する必要があります。

以前に作成したカスタム アクセスレベルの名前(gcloud ツールの例では TITLE の値)を使用して、サービス境界に含めます。

保護されたリソースへのユーザー アクセスの有効化

証明書ベースのアクセス制限が有効になったら、ユーザーは保護されたリソースへの自分のアクセスを有効にする必要があります。

  • ユーザーに gcloud ツールのインストールまたは更新を行ってもらい、証明書ベースのアクセスに対応したバージョンにします。

    gcloud ツールがすでにインストールされている場合は、コマンド gcloud --version を使用して、バージョン 264.0.0 以降がインストールされていることを確認できます。必要に応じて、次のコマンドを使用してバージョンを更新できます。

    gcloud components update
    
  • 証明書ベースのアクセスの使用を開始するには、ユーザーが次のコマンドを実行する必要があります。

    gcloud config set context_aware/use_client_certificate true
    
  • すると、通常どおり gcloud ツールにログインできます。

    gcloud auth login
    

これらの手順を完了すると、ユーザーは gcloud ツールを使用して VM インスタンスに対する管理権限と Google Cloud APIs にアクセス権を再び持つことができます。