第9章 集中化された Kerberos 認証情報キャッシュの作成と使用

システム管理者は、Kerberos サーバーに対する認証を集中化して認証情報キャッシュを初期化できます。また、コンテナー内で実行中のアプリケーションが、キータブファイル、認証、または更新を別々に管理しなくても、この中央キャッシュを使用して認証を行うことができるようにすることもできます。

9.1. 前提条件

  • SSSD コンテナーが提供するサービスを他のコンテナーから使用する場合は、クライアントコンテナーの rhel7 ベースイメージに sssd-client パッケージが含まれている必要があります。ただし、デフォルトの rhel7 ベースイメージにはこのパッケージが含まれません。

    その他のコンテナーから SSSD サービスを使用する必要がある場合は、デフォルトの rhel7 ベースイメージに基づいてクライアントコンテナーに独自のイメージを作成し、sssd-client を含めます。詳細は、『Creating Docker images』 を参照してください。

9.2. SSSD Container を使用した Active Directory ドメインのジョイン

この手順では、SSSD コンテナーをインストールし、Atomic Host システムを Active Directory にジョインするように設定する方法を説明します。

手順

  1. 管理者などActive Directory ドメインにシステムを登録することができるユーザーのパスワードを、Atomic Host システムの /etc/sssd/realm-join-password ファイルに保存します。

    # echo <password> > /etc/sssd/realm-join-password

    realm join コマンドは、パスワードをコマンドラインパラメーターとして受け付けないため、ファイルにパスワードを指定する必要があります。

    注記

    atomic install でデフォルト名 (sssd) ではなく、カスタムのコンテナーイメージ名を指定する場合には、ファイルのパスにカスタム名を追加します (/etc/sssd/<custom_container_name>/realm-join-password)。

  2. atomic install コマンドを実行して sssd コンテナーインストールを開始し、参加するレルムを指定します。操作にデフォルトの管理者ユーザーアカウントを使用している場合は、以下を実行します。

    # atomic install --opt1='--dns=<DNS_server_IP> --dns-search=<DNS_domain> --hostname=<host_name> -e SSSD_CONTAINER_TYPE=application --net=default' rhel7/sssd realm join -v <ad.example.com>
    docker run --rm=true --privileged --net=host -v /:/host -e NAME=sssd -e IMAGE=rhel7/sssd -e HOST=/host rhel7/sssd /bin/install.sh realm join -v ad.example.com
    Initializing configuration context from host ...
     * Resolving: _ldap._tcp.ad.example.com
     * Performing LDAP DSE lookup on: 192.168.122.105
    ...
    Service sssd.service configured to run SSSD container.

    別のユーザーアカウントを使用している場合は、--user オプションで指定します。

    # atomic install rhel7/sssd realm join --user <user_name> <ad.example.com>
  3. 以下のいずれかのコマンドを実行して、コンテナーで SSSD を起動します。

    # atomic run rhel7/sssd
    # systemctl start sssd
  4. 任意。コンテナーが実行していることを確認します。

    # docker ps
    CONTAINER ID        IMAGE
    5859b9366f0f        rhel7/sssd
  5. 任意。Atomic Host システムで、SSSD が Active Directory ドメインからアイデンティティーを解決していることを確認します。

    # id administrator@<ad.example.com>
    uid=1397800500(administrator@ad.example.com) gid=1397800513(domain users@ad.example.com)

関連情報

9.3. コンテナーで実行中の SSSD の認証

コンテナー内で実行している SSSD を使用して Kerberos サーバーに対して認証するには、以下の手順に従います。

  1. kinit オプションを docker exec コマンドに渡します。たとえば、管理者ユーザーとして認証するには、以下を実行します。

    # docker exec -i <container_name> kinit administrator
    Password for administrator@<DOMAIN>:
  2. 必要に応じて、Kerberos 認証情報キャッシュが Kerberos Credential Manager (KCM) に保存されていることを確認します。

    # docker exec -i <container_name> klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: Administrator@<DOMAIN>
    
    Valid starting     Expires            Service principal
    08/11/17 11:51:06  08/11/17 21:51:06  krbtgt/<DOMAIN>@<DOMAIN>
    	renew until 08/18/17 11:51:03

9.4. 異なるコンテナーでの SSSD Kerberos キャッシュの使用

SSSD コンテナーから Kerberos キャッシュを他のコンテナーアプリケーションで利用できるようにするには、/var/lib/sssd_container/<sssd-container-name>/client/etc/krb5.conf.d/var/lib/sssd_container/<sssd-container-name>/client/var/lib/sss/pipes/ ディレクトリーをボリュームとしてアプリケーションコンテナーに指定します。以下に例を示します。

# docker run --rm --name=<application_container> -v=/var/lib/sssd_container/<sssd-container-name>/client/etc/krb5.conf.d:/etc/krb5.conf.d/ -v=/var/lib/sssd_container/<sssd-container-name>/client/var/lib/sss/pipes/:/var/lib/sss/pipes/ docker-registry.engineering.redhat.com/idmqe/sssd-client-test:2.0 klist

前の例は、コンテナーで klist コマンドを実行し、SSSD コンテナーで管理される Kerberos チケットを一覧表示します。

注記

kdestroy ユーティリティーを使用してキャッシュから Kerberos チケットを削除すると、アプリケーションコンテナーはチケットを使用しなくなります。


このページには機械翻訳が使用されている場合があります (詳細はこちら)。