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

証明書ベースのアクセスは、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 APIs へのアクセスが可能になります。

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

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

  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 リソースに対するきめ細かいアクセス制御を実現できます。証明書ベースのアクセスの場合、Endpoint Verification は、各信頼できるデバイス用に 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 にアクセスできるようになります。