コネクタを使用すると、オンプレミスの認証局(CA)から発行されたデバイス証明書を配布して、ChromeOS デバイスから組織の Wi-Fi ネットワーク、内部アプリ、内部ウェブサイトへのユーザー アクセスを制御できます。Google Cloud Certificate Connector は Windows サービスであり、CAサーバーからユーザーのデバイスに証明書と認証鍵を安全に配布します。
ChromeOS デバイスの場合、証明書の秘密鍵はデバイスで生成されます。対応する公開鍵は Google のサーバーに一時的に保存され、証明書のインストール後に削除されます。
システム要件
- バージョン 138 以降の ChromeOS デバイス。
- 請求先アカウントが設定されている Google Cloud プロジェクト(GCP)。
始める前に
- SCEP を使用して証明書のデプロイを設定するには、組織で Microsoft Active Directory 証明書サービスを管理するための専門知識と権限が必要です。次に進む前に、関連する専門知識を持つ人が組織内にいることをご確認ください。
- 証明書のサブジェクト名で Active Directory のユーザー名を使用する必要がある場合は、Active Directory および Google Directory を Google Cloud Directory Sync(GCDS)と同期する必要があります。必要に応じて、GCDS を設定します。
- ChromeOS 証明書登録用に Windows Network Device Enrollment Service(NDES)サーバー、Google 管理コンソール、GCP を構成するには、SCEP に基づく ChromeOS 用の証明書登録を構成するをご覧ください。
ステップ 1: Google Cloud Certificate Connector をダウンロードする
注: モバイル デバイス用に Google Cloud Certificate Connector をすでに設定している場合は、このステップをスキップしてステップ 3: Google Cloud Certificate Connector を構成するに進みます。
CA サーバー、またはサーバーにアクセスできる Windows マシンで、次の手順を実施します。組織に複数のサーバーがある場合は、そのすべてのサーバーで同じ証明書コネクタ エージェントを使用できます。
インストール ファイルをダウンロードしてインストールする手順は次のとおりです。
注: Google Cloud Certificate Connector とそのコンポーネントは、組織用の証明書を最初に設定するときに一度だけダウンロードします。証明書と 証明書プロファイルでは、1 つの証明書コネクタを共有できます。
-
管理者アカウントで Google 管理コンソール にログインします。
管理者アカウントを使用していない場合は、管理コンソールにアクセスできません。
-
[デバイス] > [ネットワーク] にアクセスします。
共有デバイス設定の管理者権限が必要です。
- [証明書]
[認証局の接続]
[コネクタをダウンロード] をクリックします。
- [ダウンロード] をクリックします。
- 管理者として証明書コネクタ インストーラを実行します。
重要: デフォルトでは、インストーラによってサービスが登録され、ログインに LocalService アカウントが使用されます。サービスが登録されると、ソフトウェアはインストール済みとマークされます。その後、インストーラはサービスの開始を試みます。初めてコネクタをインストールする場合は、必要な構成ファイルが見つからないためサービスが開始されません。これらの構成ファイルを取得するには、この記事の残りの手順に沿って操作します。
ステップ 2: Pub/Sub サービス アカウント キーをダウンロードする
- Google Cloud プロジェクト(GCP)から、[サービス アカウント] に移動します。
- Google Cloud Certificate Connector 用に作成されたサービス アカウントをクリックします。
- [Keys] に移動します。
- [鍵を追加]
[新しい鍵を作成]
[JSON]
[作成] をクリックします。
- ダウンロードした JSON ファイルをコネクタのインストール ディレクトリに移動します。
ステップ 3: Google Cloud Certificate Connector を構成する
- (省略可)管理者として設定ツール(
C:\Program Files\Google Cloud Certificate Connector\Config Tool.exe)を実行し、デフォルトの LocalService アカウント以外のアカウント名でサービスを再登録します。 - インストール中に作成された Google Cloud Certificate Connector フォルダ(
C:\Program Files\Google Cloud Certificate Connector)に、新しいファイル adapter_config.json を作成し、必要な構成を入力します。構成パラメータの一覧については、Google Cloud Certificate Connector - 構成パラメータをご覧ください。
注: 下位互換性をサポートするため、コネクタは以前の構成ファイル config.json で動作します。adapter_config.json ファイルが存在しない場合、以前の構成ファイルが自動的に検索されます。 - Google Cloud Certificate Connector サービスを起動します。
- Windows サービスを開きます。
- [Google Cloud Certificate Connector] を選択します。
- [開始] をクリックします。ステータスが [実行中] に変わることを確認します。マシンを再起動すると、サービスは自動的に再起動します。
新しいサービス アカウント キーをダウンロードするか、構成ファイルを編集する場合は、サービスを再起動して変更を有効にします。
Google Cloud Certificate Connector を使用した証明書認証の仕組み
Google Cloud Certificate Connector は、CAサーバーと Google との間に専用の接続を確立する Windows サービスです。証明書コネクタは、組織が管理する構成ファイルと鍵ファイルによって構成、保護されます。
証明書プロファイルを使用してユーザーとデバイスに証明書を割り当てます。プロファイルを適用するには、組織部門を選択し、その組織部門にプロファイルを追加します。プロファイルには、証明書を発行する認証局が含まれています。ChromeOS デバイスを登録すると、設定済みのポリシーがデバイスに送信されます。デバイス証明書をデプロイする場合は、ユーザーのログイン前にデバイスに証明書がインストールされます。ユーザー証明書をデプロイする場合は、ユーザーのログイン後にデバイスに証明書がインストールされます。デバイスをすでに登録済みの場合、またはユーザー プロファイルがすでに存在する場合は、デバイスまたはユーザーが管理コンソールから更新済みポリシーを受け取ると証明書がインストールされます。
Google Cloud Certificate Connector - 構成パラメータ
定義
Google Cloud Certificate Connector で受け入れられる構成オブジェクトの定義は次のとおりです。
adapter_config.json ファイルには、このオブジェクトの単一の構成が含まれていることが想定されており、JSON ファイルの最上位のオブジェクトです。使用できるキーと対応する値は次のとおりです。
| キー | 必須 / オプション | 値の型 |
|---|---|---|
| legacy_configuration | adapter_configuration が指定されている場合は省略可 |
以前の構成 指定された場合、コネクタは、この構成に含まれる Pub/Sub サブスクリプション ID に関連付けられたリクエストに以前のプロトコルを使用します。利用可能な機能は、この構成で提供される機能に限定されます。指定されたサブスクリプション ID は、アダプタ構成または以前の構成の(両方ではなく)いずれかに存在する必要があります。 |
| adapter_configuration | legacy_configuration が指定されている場合は省略可 |
アダプタの構成 指定された場合、コネクタは、この構成に含まれる Pub/Sub サブスクリプション ID に関連付けられたリクエストに新しいプロトコルを使用し、この構成で指定された属性を使用してコネクタ自体を構成します。 |
| profile_configurations | 省略可 | []プロファイルの構成 |
| ca_configurations | adapter_configuration または profile_configurations が指定されている場合は必須 | []CA 構成 |
ここでは、コネクタでサポートされている以前の構成について説明しています。この構成タイプは、現在のユーザーのために下位互換性を維持する目的で引き続きサポートされます。
現在のコネクタは、この構成を認識し、legacy_configuration に含まれる指定された subscription_id からのリクエストを、Certificate Provisioning API を使用せずに、以前のプロトコルを使用して処理します。
コネクタは、Pub/Sub 通信のサービス アカウントを認証するためのキーファイル(key.json)を見つけることを想定しています。これは変更されていない動作です。
| キー | 必須 / オプション | 値の型 |
|---|---|---|
| request_subscription | 必須 |
文字列 これは、コネクタがリクエストをリッスンするサブスクリプション ID の名前です。 |
| response_topic | 必須 |
文字列 これは、コネクタが発行された証明書を送信する先のトピックの名前です。 |
| max_scep_queries_per_second | 省略可 |
float コネクタは、このパラメータを使用して、CA サーバーにトラフィックを送信するペースを制御します。この値が見つからない場合は、デフォルト値の 2 が使用されます。 |
| poll_period | 省略可 |
文字列 このパラメータは廃止されました。解析はされますが、Google Cloud Certificate Connector の内部では使用されません。 |
この構成のパラメータは、コネクタ自体の属性です。次のフィールドがあります。
| キー | 必須 / オプション | 値の型 |
|---|---|---|
| instance_id | 省略可 |
文字列 コネクタが使用する固有識別子。コネクタはこの ID で識別できます。同じプロジェクト内のすべてのコネクタで一意である必要があります。存在しない場合、コネクタは識別に使用するランダムな GUID を生成します。 |
| request_subscriptions | 必須 |
[]文字列 コネクタがリッスンする完全修飾サブスクリプション名。サブスクリプションは projects/<projectid>/subscriptions/<id> の形式にする必要があります。このリスト内のすべてのサブスクリプションは、同じプロジェクトに属している必要があります。 |
| key_filename | 必須 |
文字列 コネクタが認証に使用するキーファイルのファイル名。キーファイルは、コネクタ実行可能ファイルと同じディレクトリに配置する必要があります。コネクタは、このキーファイルを使用して、新しいフローで使用される Google サービスを認証します。このフローは、request_subscription_ids 属性で指定されたサブスクリプションをリッスンし、CertificateProvisioningAPI を呼び出します。 |
| proxy_mode | 省略可 |
文字列 この属性は、コネクタがトラフィックのルーティングに使用するプロキシモードを記述します。現在、使用可能なモードは次のとおりです。
proxy_mode が指定されていない場合は、デフォルトとして system が使用されます。 |
| proxy_server | fixed_servers として fixed_servers が使用されている場合は必須です。それ以外の場合は無視されます。 | 文字列 |
| proxy_bypass_list | 省略可 |
文字列 fixed_servers として fixed_servers が使用されている場合に使用されます。省略すると、空のバイパスリストが使用されます。 |
| log_level | 省略可 |
文字列 これは、コネクタが出力するログのレベルを表します。指定できる値は、debug、info、warn、error です。コネクタは、指定されたレベル以上のイベントを出力します。省略した場合、デフォルトとして info が使用されます。 |
| max_number_of_ongoing_requests | 省略可 |
int コネクタは、同時に処理できるリクエストの数が制限されています。デフォルトは 500 です。この上限に達すると、登録が完了するかタイムアウトしてスポットに空きができるまで、新しいリクエストは受け付けられません。応答しないクライアント デバイスまたは CA は、登録をブロックし、解決されるまでスポットを占有します。上限を増やすと、メモリ使用量が増加します。 |
Google 管理コンソールで汎用プロファイル(汎用 CA 接続を使用するプロファイル)を使用する場合にのみ必要です。次の構成は、発行される証明書の属性の概要を示しています。
| キー | 必須 / オプション | 値の型 |
|---|---|---|
| profile_config_id | 必須 |
文字列 構成の固有識別子。コネクタは、一致する証明書のプロビジョニング プロファイル構成リファレンス ID を持つ証明書プロファイルにこの構成を使用します。 |
| subject_name | subject_alt_names が指定されていない場合は必須 |
構造体
|
| subject_alt_names |
subject_name が指定されていない場合は必須。 |
[]subject_alt_name これは、2 つの必須キーで構成されるオブジェクトです。最初のキー type は、「USER_PRINCIPLE」、「RFC822」、「DNS」、「URI」のいずれかになります。2 番目のキーは name で、選択したタイプと同等の文字列値を保持する必要があります。 コネクタは、このパラメータを使用して、CA サーバーにトラフィックを送信するペースを制御します。この値が見つからない場合は、デフォルト値の 2 が使用されます。 注: subject_name と subject_alt_names の値は、プレースホルダにすることができます。プレースホルダは、ユーザーとデバイスの属性に基づいて値に置き換えられます(利用可能な場合)。プレースホルダには次のいずれかを指定できます。
|
| key_usages | キーの用途を 1 つ以上指定する必要があります。 |
[]文字列 各用途は単一の鍵用途を指定します。指定できる値は、「KEY_ENCIPHERMENT」、「SIGNING」です。 |
| extended_key_usages | 省略可 |
[]文字列 各用途は単一の鍵用途を指定します。指定できる値は、「CLIENT_AUTH」、「SERVER_AUTH」です。 |
| template_name | 省略可 |
文字列 CA にリクエストするテンプレート名。 ここで指定する名前は、CA のテンプレート名(表示名ではない)と一致している必要があります。 |
| signature_algorithm | 必須 |
文字列 秘密鍵を保持しているクライアント デバイスが、証明書署名リクエスト(CSR)の署名に使用することを要求される署名アルゴリズム。ここで指定する値は、管理コンソールで選択したキータイプと互換性がある必要があります。現在、鍵タイプごとに 1 つの署名アルゴリズムのみが提供されています。指定できる値は、「RSA_SHA256」、「ECDSA_SHA256」です。 |
この構成では、CA との通信で使用されるパラメータが記述されます。
| キー | 必須 / オプション | 値の型 |
|---|---|---|
| type | 必須 |
文字列 CA 接続のタイプ。現時点でサポートされているのは SCEP のみです。 |
| ca_connection_config_id | 必須 |
文字列 構成の固有識別子。コネクタは、一致する認証局の接続構成 ID の証明書プロビジョニング プロセスを受信すると、CA 通信にこの構成を使用します。 |
| ca_endpoint_url | 必須 |
文字列 コネクタが証明書をリクエストするためにアクセスする CA サーバーの URL。 |
| max_scep_queries_per_second | 省略可 |
float コネクタは、このパラメータを使用して、CA サーバーにトラフィックを送信するペースを制御します。この値が見つからない場合は、デフォルト値の 2 が使用されます。 |
| challenge_filename | 省略可 |
文字列 これは、CA からの証明書リクエストの静的チャレンジを含むファイルを指定します。 コネクタのサービス アカウントには、このファイルに対する読み取り権限が必要です。 CA ごとに構成できるのは、challenge_filename または dynamic_challenge のいずれか 1 つだけです。 |
| dynamic_challenge | 省略可 |
動的チャレンジ構成 1 つの CA 構成で設定できるのは、challenge_filename または dynamic_challenge のいずれか 1 つのみです。 |
この構成では、外部エンドポイントから動的チャレンジを取得して抽出する際に使用するパラメータが記述されます。
| キー | 必須 / オプション | 値の型 |
|---|---|---|
| challenge_endpoint_url | 必須 |
文字列 コネクタがチャレンジをリクエストするために使用するエンドポイントの URL。 |
| number_of_challenge_fetchers | 省略可 |
int チャレンジ エンドポイントからチャレンジを取得するために同時に動作するフェッチャーの数。この数は、エンドポイントがチャレンジを使い果たすことなく発行できるチャレンジの数よりも常に小さくする必要があります。デフォルト値は 2 です。 |
| retry_interval_minutes | 省略可 |
float チャレンジ フェッチャーが取得に失敗してから、新しいチャレンジの取得を再度試みるまでの待機時間(分単位)。値は 0.016(約 1 秒)未満にすることはできません。デフォルト値は 1 分です。 |
| challenge_validity_minutes | 省略可 |
int チャレンジが有効な時間(分単位)。デフォルト値は 60 です。 |
| challenge_page_parser | 省略可 |
チャレンジ パーサーの構成 指定しない場合は、デフォルト値が使用されます。デフォルト値は、MS AD/CS 管理ページの動作に基づいています。 |
| kerberos | 省略可 |
Kerberos の設定 指定されていない場合、コネクタはチャレンジ エンドポイントにアクセスする際に認証要件がないことを想定します。 |
この構成では、チャレンジ エンドポイントから返されたページのチャレンジを解析して抽出する際に使用するオプションについて説明します。
| キー | 必須 / オプション | 値の型 |
|---|---|---|
| convert_html_to_utf8 | 省略可 |
ブール値 チャレンジ エンドポイントから取得した HTML を UTF-8 に変換するかどうかを示すフラグ。デフォルト値は true です。 |
| is_challenge_space_wrapped | 省略可 |
ブール値 パスワードがスペースでラップされているかどうかを示すフラグ。デフォルト値は true です。 |
| challenge_xpath | 省略可 |
文字列 チャレンジ エンドポイントから返された HTML ページのチャレンジを指す XPath 式。デフォルト値は「//*[@id="locPageFont"]/p[4]/b」です。 |
| out_of_challenges_xpath | 省略可 |
文字列 チャレンジ サーバーで登録パスワードがなくなったことを示す要素の XPath(見つかった場合)。この要素は、特定のエラーページにのみ表示されるようにします。デフォルト値は「//*[@id="locPageFont"]/ul/li[3]」です。 |
これは、チャレンジ エンドポイントとの Kerberos ベースの通信に関するコネクタの構成を記述します。
| キー | 必須 / オプション | 値の型 |
|---|---|---|
| config_filename | 必須 |
文字列 Kerberos 構成ファイルのファイル名。 |
| keytab_filename | 必須 |
文字列 Keytab ファイルのファイル名。 |
| レルム | 必須 |
文字列 コネクタが使用するレルム名。これは、Kerberos 構成ファイル内のレルムのエントリと一致する必要があります。 |
| ユーザー名 | 必須 |
文字列 コネクタが Kerberos 認証に使用する Windows サービス アカウント(SA)の名前。これは、keytab ファイルが生成される SA と一致している必要があります。 |
| server_spn | 必須 |
文字列 コネクタがサービス チケットをリクエストするチャレンジ エンドポイントのサービス プリンシパル名(SPN)。空の文字列("")が指定された場合、コネクタはチャレンジ エンドポイント URL から SPN を推測します。 |
| enable_fast | 省略可 |
文字列 クライアントが Flexible Authentication Secure Tunneling(FAST)アルゴリズムを使用するかどうかを示すフラグ。このオプションは、まずサーバーマシンで有効にする必要があります。デフォルト値は false です。 |
例
Google Cloud Certificate Connector で受け入れられる構成オブジェクトの例を次に示します。
{
"adapter_configuration": {
"request_subscriptions": [
"projects/project-2/subscriptions/request-subscription-C02keao",
"projects/project-2/subscriptions/request-subscription-A2Oqeo"
],
"key_filename": "adapter_key.json"
},
"profile_configurations": [
{
"profile_config_id": "profile_1",
"subject_name": {
"common_name": "Common Name 1",
"organization": "Company 1",
"organizational_unit": ["Org Unit 1"]
},
"subject_alt_names": [
{
"type": "RFC822",
"name": "${USER_EMAIL}"
}
],
"key_usages": ["SIGNING", "KEY_ENCIPHERMENT"],
"template_name": "SCEPTemplate",
"signature_algorithm" : "RSA_SHA256"
},
{
"profile_config_id": "profile_2",
"subject_name": {
"common_name": "Common Name 2",
"organization": "Company 2",
"organizational_unit": ["Org Unit 2"]
},
"subject_alt_names": [
{
"type": "RFC822",
"name": "${USER_EMAIL}"
}
],
"key_usages": ["SIGNING", "KEY_ENCIPHERMENT"],
"template_name": "SCEPTemplate2",
"signature_algorithm" : "RSA_SHA256"
}
],
"ca_configurations": [
{
"type": "SCEP",
"ca_connection_config_id": "NDES_CA_CONFIG_1",
"ca_endpoint_url": "http://cert-test-ad-new/certsrv/mscep/",
"challenge_filename": "challenge-file.txt"
},
{
"type": "SCEP",
"ca_connection_config_id": "dynamic_ca_config",
"ca_endpoint_url": "https://dynamic-ca.example.org/certsrv/mscep/",
"dynamic_challenge": {
"challenge_endpoint_url": "http://dynamic-ca.example.org/certsrv/mscep_admin",
"challenge_validity_minutes": 30,
"kerberos": {
"config_filename": "kerberos.conf",
"keytab_filename": "scepsvc.keytab",
"realm": "EXAMPLE.ORG",
"username": "scepsvc",
"server_spn": ""
}
}
}
],
"legacy_configuration": {
"response_topic": "projects/mdm-certificate/topics/response-C02gxaaci",
"request_subscription": "projects/mdm-certificate/subscriptions/request-subscription-C02gxaaci"
}
} {
"adapter_configuration": {
"request_subscriptions": [
"projects/project-2/subscriptions/request-subscription-C02keao"
],
"key_filename": "adapter_key.json",
"instance_id": "instance_12345"
},
"ca_configurations": [
{
"type": "SCEP",
"ca_connection_config_id": "NDES_CA_CONFIG_1",
"ca_endpoint_url": "http://cert-test-ad-new/certsrv/mscep/"
}
]
} {
"legacy_configuration": {
"response_topic": "projects/mdm-certificate/topics/response-C02gxaaci",
"request_subscription": "projects/mdm-certificate/subscriptions/request-subscription-C02gxaaci"
}
}既知の問題と制限事項
デバイスにインストールした後の証明書を取り消すことはできません。
Google および関連するマークとロゴは Google LLC の商標です。その他すべての企業名および商品名は関連各社の商標です。