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

証明書ベースのアクセスは、X.509 証明書を使用してデバイスを識別することで、多くの Google リソースへのアクセスを保護します。証明書ベースのアクセスにより、Google で生成された証明書を持つ信頼できるデバイスのユーザーのみが Identity-Aware Proxy TCP 転送による管理者権限、または VPC Service Controls サービス境界を介した Google Cloud APIs へのアクセス権を確保できます。

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

証明書ベースのアクセスでサポートされる VPC Service Controls サービス、ツール、クライアント ライブラリの一覧については、証明書ベースのアクセスでサポートされるサービス、ツール、クライアント ライブラリをご覧ください。

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

  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 CLI を使用してカスタム アクセスレベルを作成する場合は、次のコマンドを使用します。

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 CLI の例では TITLE の値になります)を使用して、アクセスレベルでアクセスを制限します。

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

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

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

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

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

Console

ユーザーに安全な Google Cloud コンソールにアクセスしてもらい、VPC Service Controls の証明書ベースのアクセスで保護されているサービスにアクセスできることを確認します。

安全な Google Cloud コンソールに移動

ユーザーがポリシーに含まれていない状態で、証明書ベースのアクセスで保護された Google Cloud コンソール内のサービスにアクセスしようとすると、次のエラー メッセージが表示されます。

VPC Service Controls: Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier

gcloud

  1. ユーザーに gcloud CLI のインストールまたは更新を行ってもらい、証明書ベースのアクセスで動作するバージョン(バージョン 264.0.0 以降)があることを確認してください。

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

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

    gcloud config set context_aware/use_client_certificate true
    
  3. その後、通常どおり gcloud CLI にログインできます。

    gcloud auth login
    

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