Google CloudIdentityでRaspberryPiにログインする

概要

Google Workspace(のCloudIdentity)アカウントでRaspberryPi(Raspbian)にログインできます。

背景

たくさんあるRaspberryPiのアカウント管理を一元化したかったのでGoogleが提供するSecure LDAPを利用しています。

やりかた

前提

Secure LDAPの利用にはGoogle Workspace EnterpriseまたはCloudIdentity Premiumの契約が必要です。

Google管理コンソール

Google管理コンソールにログインします。

左ツリーの[アプリ]-[LDAP]を開きます。

[クライアントを追加]をクリックします。

[LDAPクライアント名]に適当な名前を入力し[続行]をクリックします。

[ユーザー認証情報の確認]で[ドメイン全体]を選択します。
[ユーザー情報の読み取り]で[ドメイン全体]を選択します。

どちらも[Selected organizational units, groups and excluded groups]で範囲を絞ってもよいです。企業で使うのであれば読み込み範囲を絞るべきと思います。

[グループ情報の読み取り]を[オン]にし、[LDAPクライアントの追加]をクリックします。

[証明書をダウンロード]をクリックします。
証明書はRaspberryPiに配置するので保存しておいてください。

作成したLDAPクライアントの[サービスのステータス]をクリックします。

[サービスのステータス]を[オン]に変更し、[保存]をクリックします。

RaspberryPi

対象のRaspberryPiにログインします。

必要なパッケージをインストールします。

sudo apt update -y
sudo apt install -y sssd sssd-tools

sssd-toolsは動作確認のツールのため使わないのであればインストールしなくても大丈夫です。

/etc/sssd/sssd.conf を開き編集します。

[sssd]
services = nss, pam, sudo
domains = <ドメイン名>

[domain/<ドメイン名>]
cache_credentials = true
ldap_tls_cert = <crtファイルへの絶対パス>
ldap_tls_key = <keyファイルへの絶対パス>
ldap_tls_reqcert = never
ldap_uri = ldaps://ldap.google.com:636
ldap_search_base = dc=<ドメイン名をDNで>,dc=<ドメイン名をDNで>
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
enumerate = false
ldap_id_use_start_tls = true

参考 : https://helpcenter.itopia.com/en/articles/2394004-configuring-google-cloud-identity-ldap-on-ubuntu-16-04-for-user-logins

参考ページの設定では証明書エラーが発生したため次の行を差し込んでいます。
証明書はGoogleが発行しているものなので通るはずなんですが。わかり次第修正します。

ldap_tls_reqcert = never
ldap_id_use_start_tls = true

参考 : https://linux.die.net/man/5/sssd-ldap

Google管理コンソールからダウンロードした証明書ファイルをsssd.confで指定したパスへ配置します。

最後にsssd.confファイルの権限を設定してsssdサービスを再起動します。

sudo chown root:root /etc/sssd/sssd.conf
sudo chmod 600 /etc/sssd/sssd.conf
sudo systemctl restart sssd

環境依存かもしれませんが、次のエラーでsssdが起動しない場合はログディレクトリが存在しないことが原因です。

sudo mkdir /var/log/sssd
sudo chmod 666 /var/log/sssd

動作確認

sssd-toolsのgetentコマンドでCloudIdentityからユーザー情報を取得できているか確認します。

getent passwd <ユーザーのメールアドレス>

ユーザーが取得できていれば次のようにユーザー情報が表示されます。

おまけ

参考

Configuring Google Cloud Identity LDAP on Ubuntu 16.04 for user logins

コメント