4. LDAP クライアントをセキュア LDAP サービスに接続する

この記事の手順に沿って、LDAP クライアントをセキュア LDAP サービスに接続します。

重要:

  • ベンダーのドキュメントを必ずお読みください
    この記事に記載されている LDAP クライアントをセキュア LDAP サービスに接続する方法は、参照のみを目的としており、変更される可能性があります。これらのヘルプ手順に加えて、ベンダーのドキュメントで、クライアントをセキュア LDAP サービスに接続するための最新の手順を確認してください。
  • 始める前に
    以下の手順に進む前に、セキュア LDAP サービスにクライアントを追加し、アクセス権限を設定し、クライアント証明書と鍵をダウンロードし、必要に応じてアクセス認証情報を作成していることを確認してください。
  • 接続テスト
    必要に応じて、これらの手順を開始する前に、ldapsearch、ADSI、ldp.exe などのシンプルなツールを使用して、簡単な接続テストを行うことをおすすめします。LDAP クライアントをサービスに接続しようとしたときにエラーが発生した場合は、これらのツールを使用してトラブルシューティングを行うこともできます。手順については、セキュア LDAP 接続テストをご覧ください。
  • 設定手順を完了する方法
    このページの手順に沿って LDAP クライアントを接続したら、Google 管理コンソールでサービスのステータスを [オン] に切り替えて、LDAP クライアントの設定を完了する必要があります。手順については、5. LDAP クライアントを [オン] に切り替えます。

この記事の内容

この記事は、以下の項目で構成されています。

以下の手順では、ダウンロードするクライアント鍵ファイルと証明書ファイルの名前がそれぞれ ldap-client.key と ldap-client.crt であることを前提としています。

基本的な構成手順

このセクションでは、LDAP クライアントをセキュア LDAP サービスに接続するための一般的な手順について説明します。お使いの LDAP クライアントが以下の手順に記載されていない場合は、そのアプリケーションのドキュメントを参照してください。

注: Atlassian Jira や SSSD などの特定の LDAP クライアントは、ユーザー認証中にユーザー検索を実行してユーザーに関する詳細情報を取得します。このような LDAP クライアントでユーザー認証が正しく機能するようにするには、[ユーザー認証情報を確認する] が有効になっているすべての組織部門で [ユーザー情報を読み取る] を有効にする必要があります。(手順については、アクセス権限を構成するをご覧ください)。

LDAP クライアントをセキュア LDAP サービスに接続するには:

  1. Cloud Directory を使用して、LDAP クライアントを LDAP サーバーとして設定します。
  2. LDAP クライアントに証明書をアップロードします。

    セキュア LDAP サービスは、TLS クライアント証明書を主な認証メカニズムとして使用します。LDAP クライアントへの証明書のアップロード プロセスを開始するには、LDAP クライアントの認証設定またはディレクトリ設定を開き、以下の表の詳細を入力します。

    注: TLS 証明書をアップロードする方法と場所の詳細については、ベンダーのドキュメントをご覧ください。

基本的な接続情報については、次の表をご確認ください。

Hostname

ldap.google.com

ポート

StartTLS を有効にした LDAP の場合は 389
LDAPS(SSL、TLS 対応)の場合は 636

Base DN

DN 形式のドメイン。以下に例を示します。

example.com の場合は dc=example,dc=com

ユーザー名とパスワード

証明書による認証に加えて、一部の LDAP クライアントではユーザー名とパスワードを入力する必要があります。ユーザー名とパスワードのフィールドが必須でない場合は、この手順をスキップできます。

Google 管理コンソールでユーザー名とパスワードを生成します。手順については、アクセス認証情報を生成するをご覧ください。

クライアント証明書と鍵ファイル

Google 管理コンソールからダウンロードした証明書とキーファイルを使用します。LDAP クライアントにクライアント証明書で認証する方法がない場合は、stunnel をプロキシとして使用するをご覧ください。

重要: Apache Directory Studio などの一部の LDAP クライアントは、デジタル証明書のアップロードをサポートしていません。この場合の対応方法については、stunnel をプロキシとして使用するをご覧ください。

特定の LDAP クライアントの設定手順

ADSI エディター(Windows)

手順は次のとおりです。

  1. ldp.exe(Windows)の手順 1 ~ 11 に沿って、クライアント証明書をインストールします。
  2. [操作] > [接続先] に移動します。
  3. 次の接続設定を入力します。

    Name: 接続の名前(Google LDAP など)を入力します。
    Connection Point: [Select or type a Distinguished Name or Naming Context]
    ドメイン名を DN 形式で入力します(例: example.com の場合は dc=example,dc=com)。

    Computer: "Select or type a domain or server"
    ldap.google.com

    Use SSL-based Encryption: Checked
  4. [Advanced...] をクリックし、次の詳細を入力します。

    [Specify credentials:] オン
    [Username:] 管理コンソールに表示されるアクセス認証情報のユーザー名
    [Password:] 管理コンソールに表示されるアクセス認証情報のパスワード
    [Port Number:] 636
    [Protocol:] LDAP
    [Simple bind authentication:] オン
  5. [OK] をクリックし、再度 [OK] をクリックします。
  6. 接続に成功すると、ベース DN の Active Directory の内容が右側のパネルに表示されます。

Apache Directory Studio

Apache Directory Studio を使用するには、stunnel 経由で接続し、Google 管理コンソールで生成されたアクセス認証情報(ユーザー名とパスワード)を使用します。認証情報が設定されており、stunnel が localhost ポート 1389 でリッスンしていると仮定して、次の手順を行います。

  1. [File] > [New…] をクリックします。
  2. [LDAP Browser] > [LDAP Connection] を選択します。
  3. [次へ] をクリックします。
  4. 接続パラメータを入力します。

    Connection name: 任意の名前(Google LDAP など)
    Hostname: localhost
    Port: 1389(または stunnel の listen/accept ポート)
    Encryption method: 暗号化なし(注: stunnel をリモートで実行している場合は、stunnel とクライアント間の暗号化をおすすめします)
  5. [次へ] をクリックします。
  6. 認証パラメータを入力します。

    認証方法: シンプル認証
    バインド DN またはユーザー: 管理コンソールから取得したアクセス認証情報のユーザー名
    バインド パスワード: 管理コンソールから取得したアクセス認証情報のパスワード
  7. [次へ] をクリックします。
  8. ベース DN を入力します。
    これは、DN 形式のドメイン名です(example.com の場合は dc=example,dc=com)。
  9. [完了] をクリックします。

Atlassian Jira

Atlassian Jira は、ユーザー認証時にユーザー検索を実行して、ユーザーに関する詳細情報を取得します。この LDAP クライアントでユーザー認証が正しく機能するようにするには、[ユーザー認証情報を確認する] がオンになっているすべての組織部門で、[ユーザー情報を読み取る] と [グループ情報を読み取る] をオンにする必要があります。(手順については、アクセス権限を設定するをご覧ください)。

重要: 以下の手順を使用すると、keystorePassword がユーザーとログファイルに公開される可能性があります。ローカルシェル、ログファイル、Google 管理コンソールへの不正アクセスを防ぐための予防措置を講じてください。以下の手順の代わりに、stunnel4 メソッドを使用します(省略可: stunnel をプロキシとして使用するをご覧ください)。

注: 次の手順は、Jira が /opt/atlassian/jira にインストールされていることを前提としています。

Atlassian Jira クライアントをセキュア LDAP サービスに接続するには:

  1. 証明書とキーを Jira サーバーにコピーします(これは、セキュア LDAP サービスに LDAP クライアントを追加する際に Google 管理コンソールで生成される証明書です)。

    例:
    $ scp ldap-client.key user@jira-server:
  2. 証明書とキーを Java キーストア形式に変換します。この操作中に、何度かパスワードを入力することになります。作業を簡素化するためには、安全なパスワードを選び、入力を求められたら毎回同じパスワードを使用してください。

    $ openssl pkcs12 -export -out jira-ldap.pkcs12 -in ldap-client.crt -inkey ldap-client.key

    $ sudo /opt/atlassian/jira/jre/bin/keytool -v -importkeystore -srckeystore jira-ldap.pkcs12 -srcstoretype PKCS12 -destkeystore /opt/atlassian/jira/jira-ldap.jks -deststoretype JKS

  3. 新たに作成したキーストアを使用するように Jira を設定します。こちらの手順に沿って、次のオプションを追加します。

    "-Djavax.net.ssl.keyStore=/opt/atlassian/jira/jira-ldap.jks -Djavax.net.ssl.keyStorePassword=password"

    Linux の場合:
    1. /opt/atlassian/jira/bin/setenv.sh を編集します。
    2. JVM_SUPPORT_RECOMMENDED_ARGS 設定を探します。
    3. 「-Djavax.net.ssl.keyStore=/opt/atlassian/jira/jira-ldap.jks -Djavax.net.ssl.keyStorePassword=password」を追加します。ここで、「password」は上記で選択したパスワードに置き換えます。
  4. Jira を再起動します。

    $ /opt/atlassian/jira/bin/stop-jira.sh
    $ /opt/atlassian/jira/bin/start-jira.sh

  5. Jira ウェブ インターフェースに管理者としてログインします。
    1. [設定] > [ユーザー管理] に移動します。(設定には、右上の歯車アイコンからアクセスします)。
    2. [User Directories] をクリックします。
    3. [ディレクトリを追加] をクリックします。
    4. タイプとして [LDAP] を選択します。
    5. [次へ] をクリックします。
  6. 次のように入力します。

    Name

    Google Secure LDAP

    Directory type

    OpenLDAP

    Hostname

    ldap.google.com

    Port

    636

    Use SSL

    オン

    ユーザー名

    Google 管理コンソールでユーザー名とパスワードを生成します。手順については、アクセス認証情報を生成するをご覧ください。

    パスワード

    Google 管理コンソールでユーザー名とパスワードを生成します。手順については、アクセス認証情報を生成するをご覧ください。

    Base DN

    DN 形式のドメイン名(例: example.com の場合は dc=example,dc=com)

    Additional User DN

    省略可。"ou=Users"

    Additional Group DN

    省略可。"ou=Groups"

    LDAP Permissions

    Read only

    Advanced Settings

    変更なし

    [User Schema Settings] > [
    ユーザー名 Attribute]

    googleUid

    [ユーザー スキーマ設定] > [
    ユーザー名 RDN 属性]

    uid

    Group Schema Settings >
    Group Object Class

    groupOfNames

    Group Schema Settings >
    Group Object Filter

    (objectClass=groupOfNames)

    Membership Schema Settings >
    Group Members Attribute

    member

    Membership Schema Settings >
    Use the User Membership Attribute

    オン
  7. グループに役割を割り当てます。

    Atlassian Jira でユーザーがログインできるようにするには、そのユーザーが Jira へのアクセス権を付与されているグループのメンバーである必要があります。

    グループに役割を付与するには:
    1. [設定] > [アプリケーション] > [アプリケーション アクセス] に移動します。
    2. [グループを選択] テキスト ボックスに、Jira へのアクセス権を付与する Google グループの名前を入力します。

CloudBees Core、Jenkins

CloudBees Core をセキュア LDAP サービスに接続する手順については、Configure CloudBees Core with Google's Cloud Identity Secure LDAP をご覧ください。

FreeRadius

手順は次のとおりです。

  1. /etc/freeradius/3.0/ に FreeRADIUS をインストールして構成します。

    FreeRADIUS をインストールしたら、freeradius-ldap プラグインをインストールして LDAP 設定を追加できます。

    $ sudo apt-get install freeradius freeradius-ldap
  2. LDAP クライアントの鍵ファイルと証明書ファイルを、それぞれ /etc/freeradius/3.0/certs/ldap-client.key と /etc/freeradius/3.0/certs/ldap-client.crt にコピーします。

    $ chown freeradius:freeradius
    /etc/freeradius/3.0/certs/ldap-client.*
    $ chmod 640 /etc/freeradius/3.0/certs/ldap-client.*

  3. LDAP モジュールを有効にします。

    $ cd /etc/freeradius/3.0/mods-enabled/
    $ ln -s ../mods-available/ldap ldap

  4. /etc/freeradius/3.0/mods-available/ldap を編集します。
    1. ldap->server = 'ldaps://ldap.google.com:636'
    2. identity = アプリケーション認証情報のユーザー名
    3. password = アプリケーション認証情報のパスワード
    4. base_dn = 'dc=domain,dc=com'
    5. tls->start_tls = no
    6. tls->certificate_file = /etc/freeradius/3.0/certs/ldap-client.cer
    7. tls->private_key_file = /etc/freeradius/3.0/certs/ldap-client.key
    8. tls->require_cert = 'allow'
    9. 「ldap -> post-auth -> update」セクションを表すブレッドクラムのすべてのフィールドをコメントアウトします。
  5. /etc/freeradius/3.0/sites-available/default を編集します。
    この編集により FreeRadius クライアント接続が変更されます。デフォルトのクライアントを使用していない場合は、設定した関連するクライアント(内部トンネルまたはカスタム クライアント)を必ず更新してください。
    1. authorize セクションを変更して、パスワード認証プロトコル(PAP)ステートメントの後に次のブロックを追加します。

      if (User-Password) {
      update control {
      Auth-Type := ldap
      }
      }

    2. [authorize] セクションで、LDAP の前の「-」記号を削除して LDAP を有効にします。

      #
      # ldap モジュールは LDAP データベースからパスワードを読み取ります。
      ldap
    3. authenticate セクションを変更するには、Auth-Type LDAP ブロックを次のように編集します。

      # Auth-Type LDAP {
      ldap
      # }

    4. Auth-Type PAP ブロックを次のように編集して、authenticate セクションを変更します。

      Auth-Type PAP {
      # pap
      ldap
      }

GitLab

GitLab をセキュア LDAP サービスに接続する手順については、Configure Google Secure LDAP for GitLab をご覧ください。

Itopia、Ubuntu

Itopia または Ubuntu をセキュア LDAP サービスに接続する手順については、Configuring Google Cloud Identity LDAP on Ubuntu 16.04 for user logins をご覧ください。

Ivanti、LanDesk

手順は次のとおりです。

  1. Ivanti ウェブサーバーで、次の両方のフォルダにある OpenLDAPAuthenticationConfiguration.xml または OpenLDAPSSLAuthenticationConfiguration.xml をテキスト エディタで開きます。

    C:\ProgramData\LANDesk\ServiceDesk\servicedesk.Framework および C:\ProgramData\LANDesk\ServiceDesk\servicedesk.WebAccess(servicedesk はインスタンス名)
  2. <Server> の値を ldap.google.com に更新します。
  3. <Port> の値を、StartTLS が有効なクリアテキストの場合はポート 3268 に、SSL/TLS ポートの場合は 3269 に更新します(デフォルトは、クリアテキスト ポートの場合は 389、SSL/TLS ポートの場合は 636 です)。
  4. <TestDN> の値を、DN 形式のドメイン名に設定します。(例: example.com の場合は dc=example,dc=com)。
  5. ..ProgramData\LANDesk\ServiceDesk\ServiceDesk.Framework\tps.config と ..ProgramData\LANDesk\ServiceDesk\WebAccess\tps.config の両方に、次の行を追加します。

    <add key="AuthenticationProvider" value="Touchpaper.Integrations.OpenLDAPLogon.OpenLDAPAuthenticationProvider" />

    または、次の行を追加します。

    <add key="AuthenticationProvider" value="Touchpaper.Integrations.OpenLDAPSSLLogon.OpenLDAPSSLAuthenticationProvider" />
  6. Ivanti の Configuration Center で、必要なインスタンスを開きます。
  7. Service Desk Framework アプリケーションの横にある [Edit] をクリックします。
    Service Desk Framework の [Edit Application] ダイアログが表示されます。
  8. [Configuration parameters] グループの [Logon policy] リストで [Explicit only] を選択し、[OK] をクリックします。
  9. Web Access アプリケーションの横にある [Edit] をクリックします。
    Web Access の [Edit Application] ダイアログが表示されます。
  10. [構成パラメータ] グループの [ログオン ポリシー] リストで [明示のみ] を選択し、[OK] をクリックします。

ログイン時には、対応するドメイン ユーザーのネットワーク パスワードを使用します。

LDAP サーバー認証の例外ロギング

LDAP サーバー認証の構成で問題が発生した場合は、例外ロギングを有効にすると、問題を特定しやすくなります。例外ログはデフォルトで無効になっており、調査が終了したら再び無効にすることをおすすめします。

LDAP サーバー認証の例外ロギングを有効にするには:

  1. 該当する認証設定 XML ファイルをテキスト エディタで開きます。

    DirectoryServiceAuthenticationConfiguration.xml、OpenLDAPAuthenticationConfiguration.xml、または OpenLDAPSSLAuthenticationConfiguration.xml
  2. 次の行を変更します。

    <ShowExceptions>false</ShowExceptions>
    を
    <ShowExceptions>true</ShowExceptions>
  3. 変更を保存します。

Ldp.exe(Windows)

手順は次のとおりです。

  1. 証明書ファイルとキーファイルを 1 つの PKCS12 形式のファイルに変換します。コマンド プロンプトで、次のように入力します。

    macOS または Linux を使用している場合は、次のコマンドを使用します。

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    出力ファイルを暗号化するためのパスワードを入力します。

    Windows の場合は、次のコマンドを使用します。

    $ certutil -mergepfx ldap-client.crt ldap-client.p12

    重要: 2 つのファイル(<CERT_FILE>.crt と <CERT_FILE>.key)は同じディレクトリに配置する必要があります。また、key と crt の両方に同じ名前(拡張子は異なる)が付いていることを確認します。この例では、ldap-client.crt と ldap-client.key という名前を使用します。

  2. [コントロール パネル] に移動します。
  3. 検索ボックスで「証明書」を検索し、[ユーザー証明書の管理] をクリックします。
  4. [操作] > [すべてのタスク] > [インポート] に移動します。
  5. [現在のユーザー] を選択し、[次へ] をクリックします。
  6. [参照] をクリックします。
  7. ダイアログ ボックスの右下にあるファイル形式のプルダウン メニューから、[Personal Information Exchange (*.pfx;*.p12)] を選択します。
  8. 手順 2 の ldap-client.p12 ファイルを選択し、[開く]、[次へ] の順にクリックします。
  9. 手順 2 で入力したパスワードを入力し、[次へ] をクリックします。
  10. [個人] 証明書ストアを選択し、[次へ]、[完了] の順にクリックします。
  11. Ldp.exe を実行します。
  12. [Connection] > [Connect...] に移動します。
  13. 次の接続の詳細を入力します。

    Server: ldap.google.com
    Port: 636
    Connectionless: オフ
    SSL: オン
  14. [OK] をクリックします。
  15. [表示]> [ツリー] を選択します。
  16. ベース DN を入力します。これは DN 形式のドメイン名です(例: example.com の場合は dc=example,dc=com)。
  17. [OK] をクリックします。
  18. 接続に成功すると、LDP.exe の右パネルに Active Directory の内容(ベース DN に存在するすべての属性など)が表示されます。

Netgate、pfSense

Netgate/pfSense をセキュア LDAP サービスに接続する手順については、Configuring Google Cloud Identity as an Authentication Source をご覧ください。

OpenLDAP / ldapsearch(Linux)

コマンドラインから LDAP ディレクトリにアクセスするには、OpenLDAP の ldapsearch コマンドを使用します。

クライアント証明書と鍵ファイルが ldap-client.crt と ldap-client.key、ドメインが example.com、ユーザー名が jsmith であると仮定します。

$ LDAPTLS_CERT=ldap-client.crt LDAPTLS_KEY=ldap-client.key ldapsearch -H ldaps://ldap.google.com -b dc=example,dc=com '(uid=jsmith)'

これにより、関連する環境変数がクライアント鍵を指すように設定されます。ldapsearch の他のオプションを、必要なフィルタや属性などで置き換えることができます。その他の詳細については、ldapsearch のマニュアル ページ(「man ldapsearch」)をご覧ください。

ldapsearch(macOS)

手順は次のとおりです。

  1. 証明書ファイルとキーファイルを 1 つの PKCS12 形式のファイルに変換します。コマンド プロンプトで、次のコマンドを入力します。

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    パスワードを入力して、出力ファイルを暗号化します。
  2. メニューバーの右上にある をクリックし、「キーチェーン アクセス」と入力します。
  3. キーチェーン アクセス アプリを開き、左側のリストで [システム] をクリックします。
  4. 左上のメニューバーで [ファイル] オプションをクリックし、[インポート] を選択します。
  5. 生成された ldap-client.p12 がある場所に移動し、ldap-client.p12 を選択して [開く] をクリックします。
    要求された場合は、パスワードを入力します。
    LDAP Client という名前の証明書が、システム キーチェーン証明書のリストに表示されます。
  6. LDAP Client 証明書の横にある矢印をクリックします。その下に秘密鍵が表示されます。
    1. 秘密鍵をダブルクリックします。
    2. ダイアログ ボックスで [アクセス制御] タブを選択し、左下にある [+] をクリックします。
    3. 表示されたウィンドウで Command+Shift+G キーを押して新しいウィンドウを開き、既存のテキストを /usr/bin/ldapsearch に置き換えます。

    4. [Go] をクリックします。

      ウィンドウが開き、ldapsearch がハイライト表示されています。

    5. [追加] をクリックします。

    6. [変更を保存] をクリックします。パスワードの入力を求められたら、パスワードを入力します。

      これで、コマンドラインから OpenLDAP ldapsearch コマンドを使用して LDAP ディレクトリにアクセスできるようになりました。

  7. 先ほどキーチェーンにインポートした ldap-client.p12 ファイルの名前が LDAP Client、ドメインが example.com、ユーザー名が jsmith であると仮定して、次のように入力します。

    $ LDAPTLS_IDENTITY="LDAP Client" ldapsearch -H ldaps://ldap.google.com:636 -b dc=example,dc=com '(uid=jsmith)'

このコマンドを実行すると、関連する環境変数が、読み込まれたクライアント証明書を参照するようになります。ldapsearch の他のオプションを、必要なフィルタや属性などで置き換えることができます。その他の詳細については、ldapsearch のマニュアル ページ(「man ldapsearch」)を参照してください。

OpenVPN(コミュニティ バージョン)

手順は次のとおりです。

  1. 必要に応じて、OpenVPN をインストールして設定します。インストール済みの場合は、OpenVPN の設定ページを開きます。

    VPN の一般的な設定については、このヘルプ記事には記載していません。VPN の設定が済むと、LDAP 経由でユーザー認証と承認を追加できます。特に、openvpn-auth-ldap プラグインをインストールする必要があります。

    $ sudo apt-get install openvpn openvpn-auth-ldap
  2. LDAP クライアントの鍵ファイルと証明書ファイルを /etc/openvpn/ldap-client.key と /etc/openvpn/ldap-client.crt にコピーします。
  3. /etc/openvpn/auth-ldap.conf ファイルを作成し、次の内容を記述します(example.com がドメイン名であると仮定します)。

    <LDAP>
    URL ldaps://ldap.google.com:636 #
    Timeout 15
    TLSEnable false
    TLSCACertDir /etc/ssl/certs
    TLSCertFile /etc/openvpn/ldap-client.crt
    TLSKeyFile /etc/openvpn/ldap-client.key
    </LDAP>
    <Authorization>
    BaseDN "dc=example,dc=com"
    SearchFilter "(uid=%u)" # (or choose your own LDAP filter for users)
    RequireGroup false
    </Authorization>

  4. OpenVPN 構成ファイルを編集します。ほとんどは /etc/openvpn/server.conf のようなファイル名です。ファイルの最後に次の行を追加します。

    plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth-ldap.conf
    verify-client-cert optional

  5. OpenVPN サーバーを再起動します。

    $ sudo systemctl restart openvpn@server
  6. ユーザーのユーザー名とパスワードを使用するように VPN クライアントを構成します。たとえば、OpenVPN クライアント構成では、OpenVPN クライアント構成ファイルの末尾に auth-user-pass を追加し、OpenVPN クライアントを起動します。

    $ openvpn --config /path/to/client.conf
  7. stunnel をプロキシとして使用する手順に沿って操作します。

OpenVPN Access Server(商用バージョン)

OpenVPN Access Server をセキュア LDAP サービスに接続する手順については、Configuring Google Secure LDAP with OpenVPN Access Server をご覧ください。

PaperCut MF、NG

PaperCut をセキュア LDAP サービスに接続する手順については、How to sync and authenticate Google Workspace and Google Cloud Identity users in PaperCut をご覧ください。

Puppet Enterprise

Puppet Enterprise をセキュア LDAP サービスに接続する手順については、Google Cloud Directory for PE をご覧ください。

Softerra LDAP Browser

重要: 始める前に、Softerra LDAP Browser のバージョン 4.5(4.5.19808.0)以降がインストールされていることを確認してください。LDAP Browser 4.5 をご覧ください。

手順は次のとおりです。

  1. 証明書ファイルとキーファイルを 1 つの PKCS12 形式のファイルに変換します。コマンド プロンプトで、次のように入力します。

    macOS または Linux を使用している場合は、次のコマンドを使用します。

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    出力ファイルを暗号化するためのパスワードを入力します。

    Windows の場合は、次のコマンドを使用します。

    $ certutil -mergepfx ldap-client.crt ldap-client.p12

    重要: 2 つのファイル(<CERT_FILE>.crt と <CERT_FILE>.key)は同じディレクトリに配置する必要があります。また、key と crt の両方に同じ名前(拡張子は異なる)が付いていることを確認します。この例では、ldap-client.crt と ldap-client.key という名前を使用します。

  2. Softerra LDAP Browser で、鍵ペアをインストールします。
    1. [Tools] > [Certificate Manager] に移動します。
    2. [Import] をクリックします。
    3. [Next] をクリックします。
    4. [Browse] をクリックします。
    5. ダイアログ ボックスの右下にある [ファイル形式] プルダウン リストで、[Personal Information Exchange (*.pfx;*.p12)] を選択します。
    6. 上述の手順 2 で生成した ldap-client.p12 ファイルを選択します。
    7. [Open]、[Next] の順にクリックします。
    8. 上述の手順 2 のパスワードを入力し、[Next] をクリックします。
    9. [個人] 証明書ストアを選択します。
    10. [次へ] をクリックします。
    11. [完了] をクリックします。
  3. サーバー プロファイルを追加します。
    1. [File] > [New] > [New Profile…] に移動します。
    2. プロファイルの名前を入力します(例: Google LDAP)。
    3. [次へ] をクリックします。

      次のように入力します。

      ホスト: ldap.google.com
      ポート:
      636
      ベース DN: DN 形式のドメイン名。(例: example.com の場合は dc=example,dc=com)
      Use secure connection (SSL): オン
    4. [次へ] をクリックします。
    5. [外部(SSL 証明書)] を選択します。
    6. [次へ] をクリックします。
    7. [完了] をクリックします。

Sophos Mobile

Sophos Mobile をセキュア LDAP サービスに接続する手順については、Connecting Sophos Mobile to Google Cloud Identity / Google Cloud Directory using Secure LDAP をご覧ください。

Splunk

Splunk をセキュア LDAP サービスに接続する場合は、必ず Splunk バージョン 8.1.4 以降を使用してください。Splunk バージョン 8.1.3 などの古い Splunk バージョンを使用している場合、過剰な LDAP クエリが LDAP サーバーに送信され、LDAP 割り当てがすぐに使い果たされる可能性があります。Splunk バージョン 8.1.3 の問題の詳細については、Splunk の既知の問題をご覧ください。

手順は次のとおりです。

  1. LDAP クライアント キーのファイルを /home/splunk/splunkadmin/etc/openldap/certs/ldap-client.key、証明書のファイルを /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.crt にそれぞれコピーします。

    $ cat /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.crt /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.key > /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.pem

    $ sudo chown $(splunkuser):$(splunkuser) /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.*

    $ sudo chmod 644 /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.*

  2. ldap.conf ファイルを編集して、次の設定を追加します。

    ssl start_tls
    TLS_REQCERT never
    TLS_CERT /home/splunkadmin/splunk/etc/openldap/certs/ldap.pem
    TLS_KEY /home/splunkadmin/splunk/etc/openldap/certs/ldap.pem

  3. ユーザーの /home/splunkadmin/.ldaprc ファイルに次の構成を追加します。

    TLS_CERT /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.pem
    TLS_KEY /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.pem

  4. Splunk ウェブ UI を使用して LDAP ストラテジーを追加します。次の詳細情報を入力し、[保存] をクリックします。

名前

Google Secure LDAP

ホスト

ldap.google.com

Port

636

SSL が有効

オン

接続の順序

1

バインド DN

Google 管理コンソールで生成したアクセス認証情報を入力します。

バインド DN パスワード

Google 管理コンソールで生成したアクセス認証情報を入力します。

Base DN

DN 形式のドメイン名(例: ドメイン example.com の場合は dc=example,dc=com)

ユーザーベース フィルタ

ユーザーをフィルタリングする、オブジェクト クラスのユーザーベース フィルタを入力します。

ユーザー名属性

uid

実名属性

displayname

メール属性

mail

グループ マッピング属性

dn

グループ ベース DN

DN 形式のドメイン名(例: ドメイン example.com の場合は ou=Groups,dc=example,dc=com)

静的グループの検索フィルタ

静的グループをフィルタする、オブジェクト クラスの静的グループ検索フィルタを入力します。

グループ名属性

cn

静的メンバー属性

人のメンバー

SSSD(Red Hat Enterprise、CentOS)

SSSD は、より詳細なユーザー情報を取得するために、認証中にユーザーの検索を行います。この LDAP クライアントでユーザー認証が正しく機能するようにするには、[ユーザー認証情報を確認する] がオンになっているすべての組織部門で、[ユーザー情報を読み取る] と [グループ情報を読み取る] をオンにする必要があります。(手順については、アクセス権限を設定するをご覧ください)。

Red Hat 8 または CentOS 8 の SSSD クライアントをセキュア LDAP サービスに接続するには:

  1. SSSD クライアントをセキュア LDAP サービスに追加します。
    1. Google 管理コンソールから、[アプリ] > [LDAP] > [クライアントを追加] に移動します。
      個人用の Gmail アカウントではなく、企業アカウントでログインしてください。
    2. クライアントの詳細を入力し、[続行] をクリックします。
    3. アクセス権限を設定します。
      ユーザー認証情報の確認 - ドメイン全体
      ユーザー情報の読み取り - ドメイン全体
      グループ情報の読み取り - 有効
    4. [LDAP クライアントの追加] をクリックします。
    5. 生成された証明書をダウンロードします。
    6. [クライアントの詳細に進む] をクリックします。
    7. サービスのステータスを [オン] に変更します。
  2. 依存関係をインストールします。

    dnf install openldap-clients sssd-ldap
    install -d --mode=700 --owner=sssd --group=root /etc/sssd/ldap


    証明書の .zip ファイルを解凍し、.crt ファイルと .key ファイルを /etc/sssd/ldap にコピーします。
  3. (省略可)ldapsearch を使用してテストします。

    LDAPTLS_REQCERT=never \
    LDAPTLS_KEY=Google.key \
    LDAPTLS_CERT=Google.crt \
    ldapsearch -H ldaps://ldap.google.com:636/ \
    -b dc=example,dc=com \
    -D usertoverify@example.com \
    -W \
    '(mail=usertoverify@example.com)' \
    mail dn


    プロンプトが表示されたら、ユーザーの Google パスワードを入力します。

    注: ユーザーには、Google Workspace Enterprise または Cloud Identity Premium のライセンスが割り当てられている必要があります。

  4. 次の内容のファイル /etc/sssd/sssd.conf を作成します。

    [sssd]
    services = nss, pam
    domains = example.com

    [domain/example.com]
    ldap_tls_cert = /etc/sssd/ldap/Google.crt
    ldap_tls_key = /etc/sssd/ldap/Google.key
    ldap_tls_reqcert = never
    ldap_uri = ldaps://ldap.google.com
    ldap_search_base = dc=example,dc=com
    id_provider = ldap
    auth_provider = ldap
    ldap_schema = rfc2307bis
    ldap_user_uuid = entryUUID

  5. 権限と SELinux ラベルを更新します。

    chown 0:0 /etc/sssd/sssd.conf /etc/sssd/ldap/*
    chmod 600 /etc/sssd/sssd.conf /etc/sssd/ldap/*
    restorecon -FRv /etc/sssd

  6. SSSD を再起動します。

    systemctl restart sssd
  7. 次をテストします。

    ssh でサーバーに接続:

    ssh -l user@example.com {HOSTNAME}

トラブルシューティング

  1. SSSD のバージョンを確認します(1.15.2 以上である必要があります)。

    # sssd --version
    2.2.3

  2. RHEL / CentOS(または SELinux が適用された任意のディストリビューション)では、SSSD 構成ファイルおよび証明書ファイルとキーが ssd_conf_t ロールからアクセスできるディレクトリ内に置かれている必要があります。

    # egrep "object_r:sssd_conf_t" /etc/selinux/targeted/contexts/files/file_contexts

    /var/log/audit/audit.log に AVC 拒否メッセージがないか確認します。

  3. /etc/nsswitch.conf に passwd、shadow、group、netgroup の各エンティティの「sss」が含まれていることを確認します。

    passwd: files sss
    shadow: files sss
    group: files sss
    netgroup: files sss


    ここで、ローカル ファイルは LDAP ユーザーをオーバーライドします。
  4. /var/log/sssd.conf で構成エラーを確認します。

    例:
    [sssd] [sss_ini_add_snippets] (0x0020): Config merge error: File /etc/sssd/sssd.conf did not pass access check. Skipping.

    対応: .conf ファイルに chmod 600 を実行する必要があります。

    例:
    [sssd] [sss_ini_call_validators] (0x0020): [rule/allowed_domain_options]: Attribute 'ldap_groups_use_matching_rule_in_chain' is not allowed in section 'domain/{ドメイン}'. Check for typos.

    [sssd] [sss_ini_call_validators] (0x0020): [rule/allowed_domain_options]: Attribute 'ldap_initgroups_use_matching_rule_in_chain' is not allowed in section 'domain/{ドメイン}'. Check for typos.

    アクション: サポートされていない LDAP グループ照合拡張機能を sssd.conf から削除します。

  5. /var/log/sssd_{ドメイン}.log に LDAP/network/auth エラーがないか確認します。

    例:

    [sssd[be[example.com]]] [sss_ldap_init_sys_connect_done] (0x0020): ldap_install_tls failed: [Connect error] [error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed (self signed certificate)]

    アクション: sssd.conf に「ldap_tls_reqcert = never」の記述を追加する必要があります。

    エラーの詳細度を高めるには、ssd.conf のドメイン セクションに「debug_level = 9」の記述を追加して、sssd を再起動します。

SSSD(その他の Linux ディストリビューション)

SSSD は、より詳細なユーザー情報を取得するために、認証中にユーザーの検索を行います。この LDAP クライアントでユーザー認証が正しく機能するようにするには、[ユーザー認証情報を確認する] がオンになっているすべての組織部門で、[ユーザー情報を読み取る] と [グループ情報を読み取る] をオンにする必要があります。(手順については、アクセス権限を設定するをご覧ください)。

SSSD クライアントをセキュア LDAP サービスに接続するには:

  1. SSSD バージョン 1.15.2 以降をインストールします。

    $ sudo apt-get install sssd
  2. クライアント証明書と鍵ファイルの名前が /var/ldap-client.crt と /var/ldap-client.key で、ドメインが example.com であると仮定して、/etc/sssd/sssd.conf を編集し、次のような設定にします。


    [sssd]
    services = nss, pam
    domains = example.com

    [domain/example.com]
    ldap_tls_cert = /var/ldap-client.crt
    ldap_tls_key = /var/ldap-client.key
    ldap_uri = ldaps://ldap.google.com
    ldap_search_base = dc=example,dc=com
    id_provider = ldap
    auth_provider = ldap
    ldap_schema = rfc2307bis
    ldap_user_uuid = entryUUID
    ldap_groups_use_matching_rule_in_chain = true
    ldap_initgroups_use_matching_rule_in_chain = true

  3. 構成ファイルのオーナー権限と権限を変更します。

    $ sudo chown root:root /etc/sssd/sssd.conf
    $ sudo chmod 600 /etc/sssd/sssd.conf

  4. SSSD を再起動します。

    $ sudo service sssd restart

ヒント: Google Compute Engine で外部 IP アドレスを持たない Linux パソコンで SSSD モジュールを使用している場合でも、Google サービスへの内部アクセスが有効になっていれば、セキュア LDAP サービスに接続できます。詳細については、プライベート Google アクセスの構成をご覧ください。

macOS

以下の手順に沿って、セキュア LDAP サービスを使用してユーザー アカウント認証用に macOS クライアントを接続します。

システム要件

  • macOS は Catalina バージョン 10.15.4 以降である必要があります。
  • 準備フェーズの手順 1 を完了するには、Google 特権管理者のユーザー ID が必要です。
  • この構成を実行するには、ローカルの管理者権限が必要です。

内容:

準備フェーズ

このセクションでは、セキュア LDAP サービスを使用して macOS 認証を手動で設定、テストする方法について説明します。

ステップ 1: Google 管理コンソールで macOS を LDAP クライアントとしてオンボーディングする

手順については、LDAP クライアントを追加する、またはセキュア LDAP のデモをご覧ください。このプロセス中に、自動生成された TLS クライアント証明書もダウンロードします。

ステップ 2: 証明書をシステム キーチェーンにインポートする

  1. 証明書とキーのファイル(手順 1 でダウンロードした ZIP ファイル)を macOS パソコンにコピーします。
    ヒント: ファイルを解凍して、証明書ファイルと鍵ファイルを見つけます。
  2. 鍵ペアをシステム キーチェーンに読み込みます。
    1. キーと証明書を PKCS 12(.p12)ファイルに変換します。ターミナルで次のコマンドを実行します。

      openssl pkcs12 -export -out ldap-client.p12 -in ldap-client.crt -inkey ldap-client.key

      ヒント: .p12 ファイルの名前をメモしておきます。

      パスワードを入力するよう求められます。.p12 ファイルを暗号化するためのパスワードを入力します。

    2. キーチェーン アクセス アプリケーションを開きます。

    3. [システム] キーチェーンをクリックします。

    4. [ファイル] > [読み込む] をクリックします。

    5. 上の手順で作成した ldap-client.p12 ファイルを選択します。

    6. システム キーチェーンの変更を許可するための管理者パスワードの入力を求められた場合は、パスワードを入力します。

    7. 上の手順で作成したパスワードを入力して、.p12 ファイルを復号化します。

      注: 新しい証明書と関連する秘密鍵が鍵のリストに表示されます。「LDAP Client」という名前が付いている場合があります。次のステップで使用するため、証明書の名前をメモしておきます。
    8. この記事の ldapsearch(macOS)セクションのステップ 6 に沿って、秘密鍵のアクセス制御を設定し、以下に指定するアプリを追加します。秘密鍵が [All Items] カテゴリに表示されない場合は、[My Certificates] カテゴリに切り替えて、対応する証明書を展開して正しい秘密鍵のエントリを見つけます。

      手順で指定されている ldapsearch アプリは、トラブルシューティングが必要な場合にのみ関連し、他の目的には使用されません。通常、ユーザーに macOS へのアクセス権を付与する前に削除されます。

      次の 3 つのアプリをアクセス制御リストに追加する必要があります。

      /System/Library/CoreServices/Applications/Directory Utility
      /usr/libexec/opendirectoryd
      /usr/bin/dscl
  3. /etc/openldap/ldap.conf 構成ファイルに 1 行追加します。このとき、「LDAP Client」が、.p12 ファイルのインポート後に macOS のキーチェーン アクセス アプリケーションに表示される証明書名と完全に一致していることを確認します(この名前は、生成された証明書の X.509 サブジェクトの一般名から取得されます)。

    sudo bash -c 'echo -e "TLS_IDENTITY\tLDAP Client" >> /etc/openldap/ldap.conf'

ステップ 3: 認証のためにデバイスを Google ディレクトリにポイントする

ディレクトリ ユーティリティ アプリケーションを開き、新しい LDAP ディレクトリ ノードを作成します。

  1. カギをクリックして変更を行い、パスワードを入力します。
  2. [LDAPv3] を選択し、鉛筆アイコンをクリックして設定を編集します。
  3. [新規] をクリックします。
  4. サーバー名に「ldap.google.com」と入力し、[SSL を使用して暗号化] を選択して、[手動] をクリックします。
  5. 新しいサーバー名を選択し、[編集] をクリックします。
  6. 構成名として、わかりやすい名前(Google Secure LDAP など)を入力します。
  7. [SSL を使用して暗号化する] を選択し、ポートが 636 に設定されていることを確認します。
  8. [検索とマッピング] タブに移動します。
    1. [Access this LDAPv3 server using] プルダウン リストから [RFC2307] を選択します。
    2. プロンプトが表示されたら、[Search Base Suffix] にドメイン関連の情報を入力します。たとえば、ドメイン名が zomato.com の場合は「dc=zomato,dc=com」と入力します。
    3. [OK] をクリックします。
    4. [Users] レコードタイプで属性を構成します。
      1. [Record Types and Attributes] セクションで [Users] を選択し、[+] ボタンをクリックします。
      2. ポップアップ ウィンドウで [Attribute Types] を選択し、[GeneratedUID] を選択して、[OK] をクリックしてポップアップ ウィンドウを閉じます。

        展開すると、[Users] の下に GeneratedUID が表示されます。
      3. GeneratedUID をクリックし、右側のボックスにある [+] アイコンをクリックします。
      4. テキスト ボックスに「apple-generateduid」と入力し、Enter キーを押します。
      5. [Users] ノードで、[NFSHomeDirectory] 属性をクリックします。
      6. 右側の画面で、この属性の値を #/Users/$uid$ に更新してください
      7. [OK] をクリックし、パスワードを入力して変更を保存します。
  9. [Directory Utility] ウィンドウで、新しい LDAP 構成を構成します。
    1. [Search Policy] タブに移動します。
    2. 鍵アイコンをクリックして変更を行い、メッセージが表示されたら、現在のユーザーのパスワードを入力します。
    3. プルダウン オプションを [Search Path] から [Custom path] に変更します。
    4. [Authentication] タブを開き、[+] アイコンをクリックします。
    5. [Directory Domains] リストから /LDAPv3/ldap.google.com を選択し、[Add] をクリックします。
    6. [適用] ボタンをクリックし、プロンプトが表示されたら管理者パスワードを入力します。
  10. 以下の 4 つのコマンドを実行して、DIGEST-MD5、CRAM-MD5、NTLM、GSSAPI SASL の各認証メカニズムを無効にします。macOS は、Simple Bind を使用して Google セキュア LDAP サービスで認証を行います。

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string DIGEST-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string CRAM-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string NTLM" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string GSSAPI" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

  11. 再起動して OpenDirectory 設定を再読み込みします。

ステップ 4: モバイル アカウントを作成する(オフライン ログインを許可する)

すべての Google Workspace ユーザーまたは Cloud Identity ユーザーは、自分のユーザー名とパスワードを使用したネットワーク アカウント(Google アカウント)でログインできます。このログイン プロセスにはネットワーク接続が必要です。ネットワーク接続のあるなしにかかわらずユーザーがログインする必要がある場合は、モバイル アカウントを作成できます。モバイル アカウントを使用すると、ネットワークに接続しているかどうかにかかわらず、ネットワーク アカウント(Google アカウント)のユーザー名とパスワードを使用してログインできます。詳しくは、Mac でモバイル アカウントを作成して構成するをご覧ください。

セキュア LDAP ユーザーのモバイル アカウントを作成するには:

  1. 次のコマンドを実行して、セキュア LDAP サーバーに接続し、ホームパスとモバイル アカウントを設定します。

    sudo /System/Library/CoreServices/ManagedClient.app/Contents/Resources/createmobileaccount -n $uid -v

    ヒント: $uid は、ユーザーの Google アカウントに関連付けられているメールアドレスのユーザー名部分に置き換えます。たとえば、jsmith@solarmora.com のユーザー名部分は jsmith です。

  2. SecureToken 管理者ユーザー名の入力を求められたら、管理者ユーザー名を入力し、次のプロンプトでパスワードを入力します。これにより、$uid が FileVault に追加されます。これは、macOS ディスクが暗号化されている場合に必要です。

ステップ 5:(省略可)ログイン画面の設定を行う

  1. 左下の [システム設定] > [ユーザーとグループ] > [ログイン オプション] に移動します。
  2. 管理者の認証情報を入力してカギを解除します。
  3. [ログインウインドウの表示] を [名前とパスワード] に変更します。

ステップ 6: デバイスを再起動してログインする

  1. デバイスがインターネットに接続されていることを確認します。インターネットに接続していない場合、セキュア LDAP ユーザーのログインは機能しません。
    注: インターネット接続が必要なのは、最初のログイン時のみです。それ以降のログインは、インターネット アクセスがなくても行えます。
  2. 認証にセキュア LDAP を使用するように設定されているユーザー アカウントでデバイスにログインします。

デプロイ フェーズ

このセクションの手順では、ユーザー向けにデバイス設定を自動化する方法について説明します。準備フェーズで手動構成を完了したのと同じ macOS デバイスで、以下の手順 1 と 2 を行います。

ステップ 1: Apple Configurator 2 を使用して証明書付きの Mac プロファイルを作成する

  1. セキュア LDAP による macOS 認証を手動で設定したパソコンに、Apple Configurator 2 をインストールします。
  2. Apple Configurator 2 を開き、新しいプロファイルを作成します。次に、[証明書] セクションの [構成] をクリックして、以前に生成した .p12 ファイルを読み込みます。

    注: この .p12 にパスワードが設定されていることを確認してください。このパスワードを証明書の [パスワード] セクションに入力します。

  3. このプロファイルを保存します。
  4. (M1プロセッサ または M2 プロセッサを使用しているデバイスの場合は、この手順をスキップしてステップ 5 に進みます。)任意のテキスト エディタでこのプロファイルを開き、最初の <dict> タグ内に次の行を追加します。

    <key>PayloadScope</key>
    <string>System</string>


    これは Apple Configurator が macOS のプロファイルにまだ対応していないため、必要となります。
  5. 2 番目の <dict> タグ内で、証明書のデータと並行して次の行を追加します。

    <key>AllowAllAppsAccess</key>
    <true/>


    これにより、この証明書にすべてのアプリケーションからアクセスできるようになります。

ステップ 2: ディレクトリ構成ファイル(plist)を xml に変換する

このステップでは、準備フェーズのステップ 3 で完了したすべての手動構成を XML ファイルに抽出します。このファイルと上記の手順 1 で作成した Mac プロファイルを使用して、他の macOS デバイスを自動的に構成できます。

  1. /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist をデスクトップなどにコピーします。
  2. このファイルを XML に変換して、任意のテキスト エディタで確認できるようにします。ターミナルで次のコマンドを実行します。

    sudo plutil -convert xml1 <path>/ldap.google.com.plist

    このファイルには <path>/ldap.google.com.plist としてアクセスできます。
  3. XML ファイルを開けるように、上述のファイルの権限を変更します。空のファイルでないことを確認してください。

ステップ 3: エンドユーザー デバイスの設定を自動化する Python スクリプトを作成する

以下の Python スクリプトをコピーして、Python ファイル(.py ファイル)として保存します。

注: このサンプル スクリプトは、Python バージョン 3.10.x と互換性を持つように設計されています。このスクリプトは現状のまま提供されます。Google サポートでは、サンプル スクリプトのサポートは提供していません。

Ldap_python_config.py

#!/usr/bin/python
from OpenDirectory import ODNode, ODSession, kODNodeTypeConfigure
from Foundation import NSMutableData, NSData

import os
import sys

# Reading plist
GOOGLELDAPCONFIGFILE = open(sys.argv[1], "r")
CONFIG = GOOGLELDAPCONFIGFILE.read()
GOOGLELDAPCONFIGFILE.close()

# Write the plist
od_session = ODSession.defaultSession()
od_conf_node, err = ODNode.nodeWithSession_type_error_(od_session, kODNodeTypeConfigure, None)
request = NSMutableData.dataWithBytes_length_(b' '*32, 32)
request.appendData_(NSData.dataWithBytes_length_(str.encode(CONFIG), len(CONFIG)))
response, err = od_conf_node.customCall_sendData_error_(99991, request, None)

# Edit the default search path and append the new node to allow for login
os.system("dscl -q localhost -append /Search CSPSearchPath /LDAPv3/ldap.google.com")
os.system("bash -c 'echo -e \"TLS_IDENTITY\tLDAP Client\" >> /etc/openldap/ldap.conf' ")

ステップ 4: エンドユーザー デバイスを自動構成する

設定する他の macOS デバイスに移動し、次の手順を行います。

  1. 手順 1 で作成した Mac プロファイル ファイル、手順 2 で作成した XML 構成ファイル、および手順 3 の Python スクリプトをコピーします。
  2. スクリプトに必要な依存関係をインストールするには、次のコマンドを実行します。
    python3 -m pip install pyobjc-framework-opendirectory
  3. 次のコマンドを実行します。
    sudo python </path/to/saved_python_script> </path/to/ldap.google.com.plist generated in step 2>
  4. 証明書を macOS のシステム キーチェーンに読み込むには、手順 1 で作成した Mac プロファイル ファイルをダブルクリックし、画面が表示されたら macOS のローカルの管理者認証情報を入力します。準備フェーズで設定した .p12 パスワードの入力を求めるプロンプトが表示されます。
  5. macOS パソコンを再起動します。
  6. 準備フェーズのステップ 4 の手順に沿ってモバイル アカウントを作成します。必要に応じて、準備フェーズのステップ 5 で説明されている追加の設定を行います。

制限事項とガイドライン

  • Google の認証情報を使用して macOS にログインするユーザーの場合、Workspace アカウントのユーザー名は macOS ユーザー プロフィールのユーザー ID と異なる必要があります。同じ場合、ログインはブロックされます。
  • ユーザーが Google 認証情報を使用して macOS へのログインを開始したら、Google のウェブサイト(myaccount.google.com や Google 管理コンソールなど)でユーザー パスワードの管理(再設定または復元)を行う必要があります。サードパーティのソリューションを使用してパスワード管理を行う場合は、最新のパスワードが Google と同期されていることを確認してください。
  • 管理者が新しいユーザーを作成するか、既存のユーザーのパスワードをリセットする際に、[次回のログイン時にパスワードの変更を要求する] 設定をオンにすると、ユーザーは管理者が設定した一時パスワードを使用して Mac にログインできなくなります。
    回避策: ユーザーは別のデバイス(モバイル デバイスや別のデスクトップ デバイスなど)を使用して Google にログインし、永続的なパスワードを設定してから、新しいパスワードを使用して macOS にログインする必要があります。
  • 上記の設定後の最初のログイン時に ldap.google.com にアクセスできるように、Mac がインターネット接続に接続されている必要があります。モバイル アカウントを設定したのであれば、以降のログインでインターネット アクセスは必要ありません。
  • Google セキュア LDAP と macOS の統合は、macOS Catalina、Big Sur、Monterey でテストされています。

トラブルシューティング

セキュア LDAP サービスへの接続に問題がある場合は、以下の手順を実施してください。

ステップ 1: 接続を確認する。

odutil を使用して接続を確認する
ターミナルで odutil show nodenames コマンドを実行します。
/LDAPv3/ldap.google.com のステータスがオンラインであることを確認します。オンラインでない場合は、telnet オプションを試してみてください。

nc を使用して接続を確認する
ターミナルで次のコマンドを実行します。nc -zv ldap.google.com 636
この方法で Google に接続できない場合は、IPv4 を使用して接続してみてください。

IPv4 を使用して接続を確認する
デバイスで IPv4 を使用するように設定を変更する手順は次のとおりです。

  1. [システム環境設定] > [ネットワーク] > [Wi-Fi] > [詳細] に移動します。
  2. [詳細] メニューの [TCP/IP] タブに移動します。
  3. プルダウンの選択を [IPv6 を構成] から [リンクローカルのみ] に変更します。
  4. [OK] をクリックし、[適用] をクリックして変更を保存します。
  5. ldapsearch 接続と有効な検索を介してサービス認証を確認します。

ステップ 2: ディレクトリ オブジェクトが表示されるかどうかを確認する。

  1. ディレクトリ ユーティリティを開き、[ディレクトリ エディタ] タブを開きます。
  2. プルダウン リストで [/LDAPv3/ldap.google.com] ノードを選択します。
  3. Google ドメインのユーザーとグループを表示できるかどうかを確認します。

Java アプリケーションの構成手順

LDAP 機能を提供する Java ベースのアプリケーションのほとんどは、アプリケーションのキーストアにクライアント証明書をインストールすることで、クライアント証明書で認証するように構成できます。正確な構成ファイルはアプリケーションによって異なりますが、プロセスは一般的に同様です。設定には、OpenSSL と Java Runtime Environment がインストールされている必要があります。

  1. 証明書とキーを Java キーストア形式に変換します。このプロセス全体でパスワードの入力を求められます。安全なパスワードを選択し、すべてのプロンプトで同じパスワードを使用します。クライアント鍵ファイルの名前が ldap-client.key であるとします。

    macOS または Linux を使用している場合は、次のコマンドを使用します。

    $  openssl pkcs12 -export -out java-application-ldap.pkcs12 -in ldap-client.crt -inkey ldap-client.key
    

    Windows の場合は、次のコマンドを使用します。

    $  certutil -mergepfx ldap-client.crt java-application-ldap.pkcs12
    

    重要: 2 つのファイル(<CERT_FILE>.crt と <CERT_FILE>.key)は同じディレクトリに配置する必要があります。また、key と crt の両方に同じ名前(2 つの異なる拡張子)が付いていることを確認します。この例では、ldap-client.crt と ldap-client.key という名前を使用します。

  2. 証明書をキーストアにインポートします。

    $  keytool -v -importkeystore -srckeystore java-application-ldap.pkcs12 -srcstoretype PKCS12 -destkeystore java-application-ldap.jks -deststoretype JKS
    
  3. Java プロパティは、アプリケーションによって異なる方法で構成できます。多くの場合、起動に使用する「java」コマンドラインで -D オプションを使用して設定できます。ご利用のアプリケーションの Java プロパティを次のように設定します

    javax.net.ssl.keyStore = /<path-to>/java-application-ldap.jks
    javax.net.ssl.keyStorePassword = <password selected above>
    
  4. 基本的な構成手順の情報を使用して、アプリケーションの LDAP 接続設定を構成します。

省略可: stunnel をプロキシとして使用する

クライアント証明書を使用して LDAP で認証する方法を提供していないクライアントの場合は、stunnel をプロキシとして使用します。

LDAP サーバーにクライアント証明書を提供するように stunnel を構成し、stunnel に接続するようにクライアントを構成します。理想的には、アプリケーションと同じサーバーで stunnel を実行し、ローカルでのみリッスンして、LDAP ディレクトリがそのサーバーの外部に公開されないようにします。

手順は次のとおりです。

  1. stunnel をインストールします。たとえば、Ubuntu では次のように入力します。

    $  sudo apt-get install stunnel4
    
  2. 次の内容の構成ファイル /etc/stunnel/google-ldap.conf を作成します(ldap-client.crt が証明書、ldap-client.key が鍵であるとします)。

    [ldap]
    client = yes
    accept = 127.0.0.1:1636
    connect = ldap.google.com:636
    cert = ldap-client.crt
    key =
    ldap-client.key

  3. stunnel を有効にするには、/etc/default/stunnel4 を編集して ENABLED=1 に設定します。

  4. stunnel を再起動します。

    $  sudo /etc/init.d/stunnel4 restart
    
  5. ldap://127.0.0.1:1636 を参照するようにアプリケーションを設定します。

    上記の構成ファイルの accept 行も変更する場合は、「1636」を未使用のポートに置き換えることができます。クライアントと stunnel はローカルで通信するため、StartTLS/SSL/TLS を有効にせずに、プレーンテキスト LDAP を使用する必要があります。

注: 別のサーバーで stunnel を実行する場合は、必要なアプリケーションのみが stunnel サーバーにアクセスできるようにファイアウォールを構成する必要があります。また、TLS でリッスンするように stunnel を構成して、アプリケーションと stunnel サーバー間のデータを暗号化することもできます。どちらの構成の詳細も、環境によって異なります。

次のステップ

LDAP クライアントをセキュア LDAP サービスに接続したら、その LDAP クライアントのサービス ステータスを [オン] に切り替える必要があります。

次の手順については、5. LDAP クライアントを [オン] に切り替えます。

注: 必要に応じて、ldapsearch、ADSI、ldp.exe などのシンプルなツールを使用して、LDAP クライアントをサービスに接続する際に発生するエラーのトラブルシューティングを行うことができます。手順については、接続テストとトラブルシューティングをご覧ください。