使用容器化身份管理服务


Red Hat Enterprise Linux 7

容器化身份管理服务概述并安装

摘要

了解 Red Hat Enterprise Linux 7 中的容器化身份管理服务,并开始使用它们。

第 1 章 容器化身份管理服务概述

以下小节概述了 Red Hat Enterprise Linux 中的容器化身份管理服务。

警告

rhel7/ipa-server 容器是一个技术预览功能。详情请参阅红帽知识库中的 技术预览功能支持范围

1.1. ipa-server 和 sssd 容器简介

在容器中使用身份管理或系统安全服务守护进程(SSSD)可确保所有身份管理或 SSSD 进程与主机系统隔离运行。这可让主机系统运行其他软件,而不会与这些进程冲突。

重要

ipa-serversssd 容器设计用于 Red Hat Enterprise Linux Atomic Host 系统。有关 Atomic Host 的详情 ,请参考 Atomic 文档中的使用 Atomic 文档。

其它资源
  • 红帽系统中的容器概述介绍了 什么是容器以及它们工作方式。本指南还包括入门容器的文档链接。
  • Linux 域身份、身份验证和策略指南中的 红帽身份管理 简介 提供了身份管理、身份管理服务器和身份管理客户端的概述。
  • Atomic Host 文档 一般提供有关 Red Hat Enterprise Linux Atomic Host 和容器的信息。

1.2. 可用容器镜像

rhel7/ipa-server 容器镜像
  • 可让您在容器中运行身份管理服务器和相关服务。
  • 提供身份管理服务器服务。
rhel7/sssd 容器镜像
  • 可让您在容器中运行系统安全服务守护进程(SSSD)。
  • 通过将系统注册到身份管理服务器或将其连接到 Active Directory 域,为 Atomic Host 系统提供身份和验证服务。
  • 为其他容器中运行的应用提供身份和验证服务。
其它资源

1.3. 在容器中使用身份管理的好处和缺陷

优点
缺陷
  • 身份管理进程在 Atomic 下运行。例如,如果 docker 守护进程终止,在其下运行的身份管理服务器也会终止。但是,维护多个副本计数器。
  • SELinux 分离不适用于容器内的组件。但是,这些组件仍然使用进程 UID 来分隔。

    • 请注意,虽然 SELinux 在组件之间不会应用其强制访问控制(MAC),但 sVirt 项目会将 MAC 应用于容器环境。这样可确保整个容器不受其他容器的影响。
    • ipa-server 容器仅运行运行身份管理服务器本身所需的组件。由于缺少 SELinux 隔离,容器不运行任何可攻击身份管理的第三方组件。
    • 另请参阅 Atomic 文档中的使用 SELinux 保护容器。

部分 I. 使用 ipa-server 容器(TECHNOLOGY PREVIEW)

这部分涵盖了如何在容器中部署身份管理服务器和副本,以及如何将服务器从容器迁移到主机系统,最后如何卸载服务器和副本容器。

第 2 章 在容器中部署身份管理服务器

本章论述了如何安装全新的身份管理服务器来启动新的拓扑。

在开始前,请先读取 第 2.1 节 “先决条件”第 2.2 节 “Server 和 Replica 容器中的可用配置”

选择以下安装过程之一。如果您不确定适合您情况的证书颁发机构(CA)配置,请参阅 确定 Linux 域身份、身份验证和策略指南中的 要使用的 CA 配置

完成后,读取 第 2.6 节 “安装后的后续步骤”

2.1. 先决条件

2.2. Server 和 Replica 容器中的可用配置

什么是可用
域级别 1 或更高版本

对于容器,域级别 0 不可用。另请参阅 显示和备份域级别

因此,容器中运行的服务器只能与基于 Red Hat Enterprise Linux 7.3 或更高版本的身份管理服务器在复制协议中加入。

混合容器和非容器部署
单个身份管理域拓扑可同时包含基于容器的和基于 RPM 的服务器。
不可用的内容
在已部署的容器中更改服务器组件
不要对已部署的容器进行运行时修改。如果需要更改或重新安装服务器组件,如集成的 DNS 或 Vault,请创建新副本。
在不同的 Linux 发行版间升级

不要更改运行 ipa-server 容器镜像的平台。例如,不要将 Red Hat Enterprise Linux 上运行的镜像改为 Fedora、Ubuntu 或 CentOS。同样,不要将 Fedora、Ubuntu 或 CentOS 上运行的镜像更改为 Red Hat Enterprise Linux。

身份管理仅支持升级到较新版本的 Red Hat Enterprise Linux。

使用正在运行的容器降级系统
不要降级运行 ipa-server 容器镜像的系统。
Atomic 主机上的上游容器
不要在 Atomic Host 上安装上游容器镜像,如 FreeIPA ipa-server 镜像。仅安装 Red Hat Enterprise Linux 中提供的容器镜像。
单一 Atomic 主机上的多个容器
在单个 Atomic 主机上仅安装一台 ipa-server 容器镜像。

2.3. 在容器中安装身份管理服务器:基本安装

此流程演示了如何使用集成的 CA 在默认证书颁发机构(CA)配置中安装容器化身份管理服务器。

开始前
步骤
  1. 使用 atomic install rhel7/ipa-server publish --hostname fully_qualified_domain_name ipa-server-install 命令开始安装。

    • 容器需要自己的主机名。为容器使用不同的主机名,而不是 Atomic Host 系统的主机名。容器的主机名必须通过 DNS 或 /etc/hosts 文件解析。

      注意

      安装服务器或副本容器不将 Atomic 主机系统本身注册到身份管理域。如果您将 Atomic Host 系统的主机名用于服务器或副本,您将无法在以后注册 Atomic Host 系统。

      重要

      在安装服务器或副本容器时,始终将 --hostname 选项与 atomic install 搭配使用。因为 --hostname 被视为 Atomic 选项,而不是 Identity Management 安装程序选项,请在 ipa-server-install 选项前使用它。当 ipa-server-install 后使用时,安装会忽略 --hostname

    • 如果您使用集成 DNS 安装服务器,请添加 --ip-address 选项以指定可从网络访问的 Atomic 主机的公共 IP 地址。您可以多次使用 --ip-address
    警告

    除非想安装容器仅用于测试目的,否则 始终使用 publish 选项。在不 发布 的情况下,不会向 Atomic Host 系统发布任何端口,该服务器将无法从容器外部访问。

  2. ipa-server-install setup 脚本启动:

    The log file for this installation can be found in /var/log/ipaserver-install.log
    ========================================
    This program will set up the IPA Server.
    [... output truncated ...]
    Copy to Clipboard Toggle word wrap

    使用 ipa-server-install 程序安装非容器服务器时,该过程与 的作用相同。

例 2.1. 安装命令示例

安装 ipa-server 容器的命令语法:

$ atomic install [ --name <container_name> ] rhel7/ipa-server [ Atomic options ] [ ipa-server-install | ipa-replica-install ] [ ipa-server-install or ipa-replica-install options ]
Copy to Clipboard Toggle word wrap

安装名为 server-container 的服务器容器,并将默认值用于 Identity Management 服务器设置:

$ atomic install --name server-container rhel7/ipa-server publish --hostname server.example.com ipa-server-install --ip-address 2001:DB8::1111
Copy to Clipboard Toggle word wrap

要安装具有自定义主机名的服务器(--hostname)和集成的 DNS(--setup-dns):

$ atomic install rhel7/ipa-server publish --hostname server.example.com ipa-server-install --setup-dns --ip-address 2001:DB8::1111
Copy to Clipboard Toggle word wrap

2.4. 在容器中安装身份管理服务器:外部 CA

这个步骤描述了如何使用从属到外部 CA 的集成身份管理证书颁发机构(CA)安装服务器。

容器化身份管理服务器和 Atomic 主机系统共享文件系统的部分,这些部分使用 绑定 挂载到容器中。因此,与外部文件相关的操作必须在这个卷中执行。

ipa-server 容器镜像使用 /var/lib/<container_name>/ 目录在 Atomic Host 文件系统中存储持久文件。持久性卷映射到容器内的 /data/ 目录。

开始前
步骤
  1. 使用 atomic install rhel7/ipa-server publish --hostname fully_qualified_domain_name ipa-server-install --external-ca 命令来开始安装。

    • 容器需要自己的主机名。为容器使用不同的主机名,而不是 Atomic Host 系统的主机名。容器的主机名必须通过 DNS 或 /etc/hosts 文件解析。

      注意

      安装服务器或副本容器不将 Atomic 主机系统本身注册到身份管理域。如果您将 Atomic Host 系统的主机名用于服务器或副本,您将无法在以后注册 Atomic Host 系统。

      重要

      在安装服务器或副本容器时,始终将 --hostname 选项与 atomic install 搭配使用。因为 --hostname 被视为 Atomic 选项,而不是 Identity Management 安装程序选项,请在 ipa-server-install 选项前使用它。当 ipa-server-install 后使用时,安装会忽略 --hostname

    • 如果您使用集成 DNS 安装服务器,请添加 --ip-address 选项以指定可从网络访问的 Atomic 主机的公共 IP 地址。您可以多次使用 --ip-address
    警告

    除非想安装容器仅用于测试目的,否则 始终使用 publish 选项。在不 发布 的情况下,不会向 Atomic Host 系统发布任何端口,该服务器将无法从容器外部访问。

  2. ipa-server-install setup 脚本启动:

    The log file for this installation can be found in /var/log/ipaserver-install.log
    ========================================
    This program will set up the IPA Server.
    [... output truncated ...]
    Copy to Clipboard Toggle word wrap

    使用 ipa-server-install 程序安装非容器服务器时,该过程与 的作用相同。

  3. 容器安装脚本会在 /var/lib/<container_name>/root/ipa.csr 文件中生成证书签名请求(CSR)。将 CSR 提交到外部 CA,并检索签发的证书和 CA 证书链以进行发布 CA。

    详情请参阅在 Linux 域身份、身份验证和策略 指南中的使用 外部 CA 安装服务器作为 Root CA

  4. 将签名的 CA 证书和 root CA 证书复制到 /var/lib/<container_name>/ 目录中。

    $ cp /root/{ipa,ca}.crt /var/lib/server-container/.
    Copy to Clipboard Toggle word wrap
  5. 使用 atomic run 命令以及 --external-cert-file 选项指定证书的位置。指定相对于 /data/ 目录的位置,因为安装程序从容器内执行调用

    $ atomic run rhel7/ipa-server ipa-server-install --external-cert-file /data/ipa.crt --external-cert-file /data/ca.crt
    Copy to Clipboard Toggle word wrap
  6. 安装会恢复。安装程序现在使用提供的证书来设置从属 CA。

2.5. 在容器中安装身份管理服务器:没有 CA

这个步骤描述了如何在没有集成身份管理证书颁发机构(CA)的情况下安装服务器。

容器化身份管理服务器和 Atomic 主机系统共享文件系统的部分,这些部分使用 绑定 挂载到容器中。因此,与外部文件相关的操作必须在这个卷中执行。

ipa-server 容器镜像使用 /var/lib/<container_name>/ 目录在 Atomic Host 文件系统中存储持久文件。持久性卷映射到容器内的 /data/ 目录。

开始前
步骤
  1. /var/lib/<container_name>/ 中为容器手动创建持久性存储目录:

    $ mkdir -p /var/lib/ipa-server
    Copy to Clipboard Toggle word wrap
  2. 将包含证书链的文件复制到目录中:

    $ cp /root/server-*.p12 /var/lib/ipa-server/.
    Copy to Clipboard Toggle word wrap

    如需了解有关 所需文件的详细信息,请参阅 Linux 域身份、身份验证和策略指南中的 安装 CA

  3. 使用 atomic install 命令,并从第三方机构提供所需的证书:

    $ atomic install --name server-container rhel7/ipa-server publish \
       --hostname server.example.com \
       ipa-server-install \
       --dirsrv-cert-file=/data/server-dirsrv-cert.p12 \
       --dirsrv-pin=1234 \
       --http-cert-file=/data/server-http-cert.p12 \
       --http-pin=1234 \
       --pkinit-cert-file=/data/server-pkinit-cert.p12 \
       --pkinit-pin=1234
    Copy to Clipboard Toggle word wrap
    • 容器需要自己的主机名。为容器使用不同的主机名,而不是 Atomic Host 系统的主机名。容器的主机名必须通过 DNS 或 /etc/hosts 文件解析。

      注意

      安装服务器或副本容器不将 Atomic 主机系统本身注册到身份管理域。如果您将 Atomic Host 系统的主机名用于服务器或副本,您将无法在以后注册 Atomic Host 系统。

      重要

      在安装服务器或副本容器时,始终将 --hostname 选项与 atomic install 搭配使用。因为 --hostname 被视为 Atomic 选项,而不是 Identity Management 安装程序选项,请在 ipa-server-install 选项前使用它。当 ipa-server-install 后使用时,安装会忽略 --hostname

    • 如果您使用集成 DNS 安装服务器,请添加 --ip-address 选项以指定可从网络访问的 Atomic 主机的公共 IP 地址。您可以多次使用 --ip-address
    警告

    除非想安装容器仅用于测试目的,否则 始终使用 publish 选项。在不 发布 的情况下,不会向 Atomic Host 系统发布任何端口,该服务器将无法从容器外部访问。

  4. ipa-server-install setup 脚本启动:

    The log file for this installation can be found in /var/log/ipaserver-install.log
    ========================================
    This program will set up the IPA Server.
    [... output truncated ...]
    Copy to Clipboard Toggle word wrap

    使用 ipa-server-install 程序安装非容器服务器时,该过程与 的作用相同。

2.6. 安装后的后续步骤

  • 要运行容器,请使用 atomic run 命令:

    $ atomic run rhel7/ipa-server
    Copy to Clipboard Toggle word wrap

    如果您在安装时为容器指定了名称:

    $ atomic run --name server-container rhel7/ipa-server
    Copy to Clipboard Toggle word wrap
  • 运行 ipa-server 容器的工作方式与在裸机或虚拟机系统上的标准身份管理部署相同。例如,您可以使用命令行界面、Web UI 或 JSONRPC-API 将主机注册到域或管理拓扑,方式与基于 RPM 的 Identity Management 系统相同。

第 3 章 在容器中部署身份管理副本

本章论述了如何安装身份管理副本。例如,如果您想要逐步将现有拓扑中的工作负载转移到基于容器的服务器,则创建基于容器的副本会很有用。

在开始前,请先读取 第 3.1 节 “先决条件”第 3.2 节 “Server 和 Replica 容器中的可用配置”

选择以下安装过程之一。如果您不确定适合您情况的证书颁发机构(CA)配置,请参阅 确定 Linux 域身份、身份验证和策略指南中的 要使用的 CA 配置

完成后,读取 第 3.5 节 “安装后的后续步骤”

3.1. 先决条件

3.2. Server 和 Replica 容器中的可用配置

什么是可用
域级别 1 或更高版本

对于容器,域级别 0 不可用。另请参阅 显示和备份域级别

因此,容器中运行的服务器只能与基于 Red Hat Enterprise Linux 7.3 或更高版本的身份管理服务器在复制协议中加入。

混合容器和非容器部署
单个身份管理域拓扑可同时包含基于容器的和基于 RPM 的服务器。
不可用的内容
在已部署的容器中更改服务器组件
不要对已部署的容器进行运行时修改。如果需要更改或重新安装服务器组件,如集成的 DNS 或 Vault,请创建新副本。
在不同的 Linux 发行版间升级

不要更改运行 ipa-server 容器镜像的平台。例如,不要将 Red Hat Enterprise Linux 上运行的镜像改为 Fedora、Ubuntu 或 CentOS。同样,不要将 Fedora、Ubuntu 或 CentOS 上运行的镜像更改为 Red Hat Enterprise Linux。

身份管理仅支持升级到较新版本的 Red Hat Enterprise Linux。

使用正在运行的容器降级系统
不要降级运行 ipa-server 容器镜像的系统。
Atomic 主机上的上游容器
不要在 Atomic Host 上安装上游容器镜像,如 FreeIPA ipa-server 镜像。仅安装 Red Hat Enterprise Linux 中提供的容器镜像。
单一 Atomic 主机上的多个容器
在单个 Atomic 主机上仅安装一台 ipa-server 容器镜像。

3.3. 在容器中安装身份管理副本:基本安装

此流程演示了如何使用集成的 CA 在默认证书颁发机构(CA)配置中安装容器化身份管理服务器。

开始前
步骤
  1. 如果要在容器中为主服务器安装副本,请通过在 Linux 域 身份、身份验证和策略指南 中安装和卸载身份管理服务器 的端口,启用与 master 容器的双向通信。
  2. 使用 atomic install rhel7/ipa-server publish --hostname fully_qualified_domain_name ipa-replica-install 命令开始安装。包含 --server--domain 选项,以指定身份管理服务器的主机名和域名。

    • 容器需要自己的主机名。为容器使用不同的主机名,而不是 Atomic Host 系统的主机名。容器的主机名必须通过 DNS 或 /etc/hosts 文件解析。

      注意

      安装服务器或副本容器不将 Atomic 主机系统本身注册到身份管理域。如果您将 Atomic Host 系统的主机名用于服务器或副本,您将无法在以后注册 Atomic Host 系统。

      重要

      在安装服务器或副本容器时,始终将 --hostname 选项与 atomic install 搭配使用。因为 --hostname 被视为 Atomic 选项,而不是 Identity Management 安装程序选项,请在 ipa-server-install 选项前使用它。当 ipa-server-install 后使用时,安装会忽略 --hostname

    • 如果您使用集成 DNS 安装服务器,请添加 --ip-address 选项以指定可从网络访问的 Atomic 主机的公共 IP 地址。您可以多次使用 --ip-address
    • 由于 交互式副本安装模式 中存在一个已知问题,请添加标准 ipa-replica-install 选项指定以下之一:

    警告

    除非想安装容器仅用于测试目的,否则 始终使用 publish 选项。在不 发布 的情况下,不会向 Atomic Host 系统发布任何端口,该服务器将无法从容器外部访问。

例 3.1. 安装命令示例

安装 ipa-server 容器的命令语法:

$ atomic install [ --name <container_name> ] rhel7/ipa-server [ Atomic options ] [ ipa-server-install | ipa-replica-install ] [ ipa-server-install or ipa-replica-install options ]
Copy to Clipboard Toggle word wrap

使用管理员凭证安装名为 replica-container 的副本容器,而使用身份管理副本设置的默认值:

$ atomic install --name replica-container rhel7/ipa-server publish \
    --hostname replica.example.com \
    ipa-replica-install \
    --server server.example.com \
    --domain example.com \
    --ip-address 2001:DB8::1111 \
    --principal admin \
    --admin-password <admin_password>
Copy to Clipboard Toggle word wrap

3.4. 在容器中安装身份管理副本:没有 CA

这个步骤描述了如何在没有集成身份管理证书颁发机构(CA)的情况下安装服务器。

容器化身份管理服务器和 Atomic 主机系统共享文件系统的部分,这些部分使用 绑定 挂载到容器中。因此,与外部文件相关的操作必须在这个卷中执行。

ipa-server 容器镜像使用 /var/lib/<container_name>/ 目录在 Atomic Host 文件系统中存储持久文件。持久性卷映射到容器内的 /data/ 目录。

开始前
步骤
  1. 如果要在容器中为主服务器安装副本,请通过在 Linux 域 身份、身份验证和策略指南 中安装和卸载身份管理服务器 的端口,启用与 master 容器的双向通信。
  2. /var/lib/<container_name>/ 中为容器手动创建持久性存储目录:

    $ mkdir -p /var/lib/ipa-server
    Copy to Clipboard Toggle word wrap
  3. 将包含证书链的文件复制到目录中:

    $ cp /root/server-*.p12 /var/lib/ipa-server/.
    Copy to Clipboard Toggle word wrap

    如需了解有关 所需文件的详细信息,请参阅 Linux 域身份、身份验证和策略指南中的 安装 CA

  4. 使用 atomic install rhel7/ipa-server publish --hostname fully_qualified_domain_name ipa-replica-install 命令,包括 --server--domain 选项,以指定身份管理服务器的主机名和域名,并从第三方授权提供所需的证书:

    $ atomic install --name replica-container rhel7/ipa-server publish \
        --hostname replica.example.com \
        ipa-replica-install \
        --server server.example.com \
        --domain example.com \
        --dirsrv-cert-file=/data/replica-dirsrv-cert.p12 \
        --dirsrv-pin=1234 \
        --http-cert-file=/data/replica-http-cert.p12 \
        --http-pin=1234 \
        --pkinit-cert-file=/data/replica-pkinit-cert.p12 \
        --pkinit-pin=1234
    Copy to Clipboard Toggle word wrap
    注意

    证书的路径包括 /data/,因为持久性存储卷映射到容器内的 /data/

    • 容器需要自己的主机名。为容器使用不同的主机名,而不是 Atomic Host 系统的主机名。容器的主机名必须通过 DNS 或 /etc/hosts 文件解析。

      注意

      安装服务器或副本容器不将 Atomic 主机系统本身注册到身份管理域。如果您将 Atomic Host 系统的主机名用于服务器或副本,您将无法在以后注册 Atomic Host 系统。

      重要

      在安装服务器或副本容器时,始终将 --hostname 选项与 atomic install 搭配使用。因为 --hostname 被视为 Atomic 选项,而不是 Identity Management 安装程序选项,请在 ipa-server-install 选项前使用它。当 ipa-server-install 后使用时,安装会忽略 --hostname

    • 如果您使用集成 DNS 安装服务器,请添加 --ip-address 选项以指定可从网络访问的 Atomic 主机的公共 IP 地址。您可以多次使用 --ip-address
    • 由于 交互式副本安装模式 中存在一个已知问题,请添加标准 ipa-replica-install 选项指定以下之一:

    警告

    除非想安装容器仅用于测试目的,否则 始终使用 publish 选项。在不 发布 的情况下,不会向 Atomic Host 系统发布任何端口,该服务器将无法从容器外部访问。

3.5. 安装后的后续步骤

  • 要运行容器,请使用 atomic run 命令:

    $ atomic run rhel7/ipa-server
    Copy to Clipboard Toggle word wrap

    如果您在安装时为容器指定了名称:

    $ atomic run --name replica-container rhel7/ipa-server
    Copy to Clipboard Toggle word wrap
  • 运行 ipa-server 容器的工作方式与在裸机或虚拟机系统上的标准身份管理部署相同。例如,您可以使用命令行界面、Web UI 或 JSONRPC-API 将主机注册到域或管理拓扑,方式与基于 RPM 的 Identity Management 系统相同。

第 4 章 将服务器从容器迁移到主机系统

本章论述了如何将最初在容器中安装的服务器迁移到裸机或虚拟机系统中。在以下情景中,我们迁移到了 Red Hat Enterprise Linux 系统。

4.1. 将身份管理服务器从容器迁移到主机系统

此流程演示了如何将容器化身份管理服务器迁移到主机系统,以及可选的减少容器。

步骤
  1. 针对容器注册主机系统作为身份管理副本。如果要稍后使用 Identity Management 服务器弃用该容器,请确保使用配置了证书颁发机构(CA)创建副本。

    请参阅安装和卸载身份管理副本

  2. 将 CA 职责从容器中的服务器迁移到主机系统上的新副本。

    请参阅 将 Replica 提升到主 CA 服务器

  3. 弃用容器中的服务器。

    请参阅 第 5 章 卸载服务器和复制容器

第 5 章 卸载服务器和复制容器

本章论述了如何卸载身份管理服务器或副本容器。

5.1. 卸载服务器或复制容器

此流程演示了如何卸载身份管理服务器或副本容器,并确保在拓扑中正确移除服务器或副本。

步骤
  1. 为确保正确从该拓扑中删除属于现有拓扑的副本容器,在任何注册的主机上使用 ipa server-del <container-host-name> 命令。

    这一步是必需的,因为 atomic uninstall 命令不会:

    • 执行检查以防止断开连接的域级别 1 拓扑或删除最后一个证书颁发机构(CA)、密钥恢复机构(KRA)或 DNS 服务器
    • 从现有拓扑中删除副本容器
  2. 使用 atomic uninstall 命令,并包含容器名称和镜像名称:

    $ atomic uninstall --name <container_name> rhel7/ipa-server
    Copy to Clipboard Toggle word wrap

5.2. 卸载后下一步

  • 您可以在 /var/lib/<container_name>.backup.<timestamp> 下找到容器挂载的数据目录的备份。如果您需要创建新容器,备份功能可以重复使用卷中存储的持久数据。

部分 II. 使用 sssd 容器

这部分论述了如何在 Atomic 主机上部署、配置、更新和卸载 SSSD 容器。另外,本文档解释了如何授予或限制对 SSSD 容器的访问权限以及如何创建和使用集中式 Kerberos 凭证缓存。

作为系统管理员,您可以使用容器中的 SSSD 为 Atomic Host 系统提供外部身份、身份验证和授权服务。本章论述了如何将 SSSD 容器作为 特权运行,它支持来自外部身份源(Identity Management 或 Active Directory)的用户,以利用 Atomic 主机自身中运行的服务。

另外,您还可以以 非特权 方式运行 SSSD 容器,它允许来自外部身份源(Identity Management 或 Active Directory)的用户利用 Atomic 主机上的其他容器中运行的服务。这包括在 第 7 章 使用不同配置部署 SSSD 容器 中。

在开始前,请参阅:

要将 Atomic 主机注册到身份管理服务器,请参阅:

要将 Atomic 主机注册到 Active Directory,请参阅:

6.1. 先决条件

6.2. 使用特权 SSSD 容器注册身份管理域

这个步骤描述了如何安装 SSSD 容器并根据身份管理服务器进行注册。在安装过程中:

  • 将各种配置和数据复制到容器中。
  • 用于配置身份管理客户端的 ipa-client-install 工具启动。
  • 在成功注册到身份管理域后,配置和数据将复制到 Atomic 主机系统中。
先决条件

您需要以下之一:

  • 将 Atomic 主机系统的一次性客户端随机密码注册到身份管理域。要生成密码,请在 Identity Management 服务器中添加 Atomic Host 系统作为 Identity Management 主机,例如:

    $ ipa host-add <atomic.example.com> --random
    [... output truncated ...]
      Random password: 4Re[>5]OB$3K($qYs:M&}B
    [... output truncated ...]
    Copy to Clipboard Toggle word wrap

    详情请参阅在 Linux 域身份、身份验证和策略指南中的 安装客户端。https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Linux_Domain_Identity_Authentication_and_Policy_Guide/client-install.html

  • 允许注册客户端的 Identity Management 用户的凭证。默认情况下,这是 admin 用户。
步骤
  1. 使用 atomic install 命令启动 sssd 容器安装,并提供允许注册新主机的 IdM 用户的随机密码或凭证。在大多数情况下,这是 admin 用户。

    # atomic install rhel7/sssd --password "4Re[>5]OB$3K($qYs:M&}B"
    [... output truncated ...]
    Service sssd.service configured to run SSSD container.
    [... output truncated ...]
    Copy to Clipboard Toggle word wrap
    # atomic install rhel7/sssd -p admin -w <admin_password>
    [... output truncated ...]
    Service sssd.service configured to run SSSD container.
    [... output truncated ...]
    Copy to Clipboard Toggle word wrap

    atomic install rhel7/sssd 命令接受标准 ipa-client-install 选项。根据您的配置,您可能需要使用这些选项提供额外的信息。例如,如果 ipa-client-install 无法确定您的服务器的主机名和域名,请使用 --server--domain 选项:

    # atomic install rhel7/sssd --password "4Re[>5]OB$3K($qYs:M&}B" --server <server.example.com> --domain <example.com>
    Copy to Clipboard Toggle word wrap
    注意

    您也可以将选项传递给 ipa-client-install,方法是将它们保存到 Atomic 主机上的 /etc/sssd/ipa-client-install-options 文件中,然后再运行 atomic install。例如,该文件可以包含:

    --password=4Re[>5]OB$3K($qYs:M&}B
    --server=server.example.com
    --domain=example.com
    Copy to Clipboard Toggle word wrap
  2. 使用以下命令之一在容器中启动 SSSD:

    # atomic run rhel7/sssd
    Copy to Clipboard Toggle word wrap
    # systemctl start sssd
    Copy to Clipboard Toggle word wrap
  3. 可选。确认容器正在运行:

    # docker ps
    CONTAINER ID        IMAGE
    5859b9366f0f        rhel7/sssd
    Copy to Clipboard Toggle word wrap
  4. 可选。确认 Atomic 主机上的 SSSD 从身份管理域解析身份。

    1. 获取 Identity Management 用户的 Kerberos 票据,并使用 ssh 实用程序登录 Atomic 主机。

      $ atomic run sssd kinit <idm_user>
      $ ssh <idm_user>@<atomic.example.com>
      Copy to Clipboard Toggle word wrap
    2. 使用 id 实用程序验证您是否以预期用户身份登录:

      $ id
      uid=1215800001(idm_user) gid=1215800001(idm_user) groups=1215800001(idm_user) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
      Copy to Clipboard Toggle word wrap
    3. 使用 hostname 工具验证您是否登录到 Atomic Host 系统:

      $ hostname
      atomic.example.com
      Copy to Clipboard Toggle word wrap

6.3. 使用 SSSD 容器加入 Active Directory 域

这个步骤描述了如何安装 SSSD 容器并将其配置为将 Atomic Host 系统加入到 Active Directory 中。

步骤
  1. 在 Atomic Host 系统上的 /etc/sssd/realm-join-password 文件中,将允许将允许将系统注册到 Active Directory 域(如管理员)的密码:

    # echo <password> > /etc/sssd/realm-join-password
    Copy to Clipboard Toggle word wrap

    在 文件中提供密码是必要的,因为 realm join 命令不接受作为命令行参数的密码。

    注意

    如果您想稍后指定自定义容器镜像名称,并使用 atomic install 命令而不是默认名称(sssd),将自定义名称添加到文件的路径: /etc/sssd/<custom_container_name>/realm-join-password

  2. 使用 atomic install 命令启动 sssd 容器安装,并指定您要加入的域。如果您要为操作使用默认的 Administrator 用户帐户:

    # atomic install rhel7/sssd realm join <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 ad.example.com
    Initializing configuration context from host ...
    Password for Administrator:
    Copying new configuration to host ...
    Service sssd.service configured to run SSSD container.
    Copy to Clipboard Toggle word wrap

    如果使用另一个用户帐户,请使用 --user 选项指定它:

    # atomic install rhel7/sssd realm join --user <user_name> <ad.example.com>
    Copy to Clipboard Toggle word wrap
  3. 使用以下命令之一在容器中启动 SSSD:

    # atomic run rhel7/sssd
    Copy to Clipboard Toggle word wrap
    # systemctl start sssd
    Copy to Clipboard Toggle word wrap
  4. 可选。确认容器正在运行:

    # docker ps
    CONTAINER ID        IMAGE
    5859b9366f0f        rhel7/sssd
    Copy to Clipboard Toggle word wrap
  5. 可选。在 Atomic Host 系统中,确认 SSSD 可从 Active Directory 域解析身份:

    # id administrator@<ad.example.com>
    uid=1397800500(administrator@ad.example.com) gid=1397800513(domain users@ad.example.com)
    Copy to Clipboard Toggle word wrap
其它资源

第 7 章 使用不同配置部署 SSSD 容器

作为系统管理员,您可以部署每个使用特定身份提供程序(如身份管理或 Active Directory)的多个非特权 SSSD 容器。这可让其他应用程序容器只使用其首选身份源。

7.1. 先决条件

  • 要使用来自其他容器的 SSSD 容器提供的服务,客户端容器的 rhel7 基础镜像必须包含 sssd-client 软件包。但是,默认的 rhel7 基础镜像不包含此软件包。

    如果您需要使用其他容器中的 SSSD 服务,请基于默认的 rhel7 基础镜像为客户端容器创建自己的镜像,并包含 sssd-client。详情请参阅 创建 Docker 镜像

7.2. 启动 SSSD 容器并将其加入身份资源

要启动 SSSD 容器并将其加入到身份资源,如 Active Directory:

  1. 使用 atomic install 命令启动 SSSD 容器。例如:

    # atomic install --opt1='--dns=192.0.2.1 --dns-search=idm.example.com --hostname=server.ad.example.com -e SSSD_CONTAINER_TYPE=application --net=default' --name=ad_sssd rhel7/sssd realm join -v ad.example.com
    Copy to Clipboard Toggle word wrap

    前面的示例创建一个名为 ad_sssd 的 SSSD 应用程序容器。将 DNS 服务器 IP 地址、搜索域、主机名和 realm join 命令传递到 atomic install,将容器中运行的 SSSD 自动加入到 Active Directory 域。

    对您要为其提供 SSSD 容器的每个身份提供程序重复此步骤。

  2. 启动容器。例如:

    # atomic run ad_sssd
    Copy to Clipboard Toggle word wrap

7.3. 将 SSSD 缓存传递给应用程序容器

要在应用程序容器中使用 SSSD 缓存,请在启动应用程序容器时将相关目录传递给 docker run 命令:

# docker run --rm --name=<container_name> -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/ <image_name>
Copy to Clipboard Toggle word wrap

这会将 SSSD 容器的目录映射到应用程序容器中的对应目录。

容器中运行的应用现在可以使用 kinit 实用程序或 mod_auth_gssapi 模块进行验证。

对于 Identity Management 域,每个 SSSD 容器都代表自己作为不同的主机,管理员可以设置基于主机的访问控制(HBAC)规则来单独允许或拒绝对单个容器的访问。

有关在身份管理中配置 HBAC 规则的详情,请参考 Linux 域身份、身份验证和策略指南中的配置基于主机的访问控制

第 9 章 创建和使用集中式 Kerberos 凭证缓存

作为系统管理员,您可以集中对 Kerberos 服务器进行身份验证,以初始化凭据缓存。您还可以确保容器中运行的应用程序能够使用此中央缓存进行身份验证,而无需单独管理 keytab 文件、身份验证或续订。

9.1. 先决条件

  • 要使用来自其他容器的 SSSD 容器提供的服务,客户端容器的 rhel7 基础镜像必须包含 sssd-client 软件包。但是,默认的 rhel7 基础镜像不包含此软件包。

    如果您需要使用其他容器中的 SSSD 服务,请基于默认的 rhel7 基础镜像为客户端容器创建自己的镜像,并包含 sssd-client。详情请参阅 创建 Docker 镜像

9.2. 使用 SSSD 容器加入 Active Directory 域

这个步骤描述了如何安装 SSSD 容器并将其配置为将 Atomic Host 系统加入到 Active Directory 中。

步骤
  1. 在 Atomic Host 系统上的 /etc/sssd/realm-join-password 文件中,将允许将允许将系统注册到 Active Directory 域(如管理员)的密码:

    # echo <password> > /etc/sssd/realm-join-password
    Copy to Clipboard Toggle word wrap

    在 文件中提供密码是必要的,因为 realm join 命令不接受作为命令行参数的密码。

    注意

    如果您想稍后指定自定义容器镜像名称,并使用 atomic install 命令而不是默认名称(sssd),将自定义名称添加到文件的路径: /etc/sssd/<custom_container_name>/realm-join-password

  2. 使用 atomic install 命令启动 sssd 容器安装,并指定您要加入的域。如果您要为操作使用默认的 Administrator 用户帐户:

    # 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.
    Copy to Clipboard Toggle word wrap

    如果使用另一个用户帐户,请使用 --user 选项指定它:

    # atomic install rhel7/sssd realm join --user <user_name> <ad.example.com>
    Copy to Clipboard Toggle word wrap
  3. 使用以下命令之一在容器中启动 SSSD:

    # atomic run rhel7/sssd
    Copy to Clipboard Toggle word wrap
    # systemctl start sssd
    Copy to Clipboard Toggle word wrap
  4. 可选。确认容器正在运行:

    # docker ps
    CONTAINER ID        IMAGE
    5859b9366f0f        rhel7/sssd
    Copy to Clipboard Toggle word wrap
  5. 可选。在 Atomic Host 系统中,确认 SSSD 可从 Active Directory 域解析身份:

    # id administrator@<ad.example.com>
    uid=1397800500(administrator@ad.example.com) gid=1397800513(domain users@ad.example.com)
    Copy to Clipboard Toggle word wrap
其它资源

9.3. 在容器中运行的 SSSD 进行身份验证

使用容器中运行的 SSSD 验证 Kerberos 服务器:

  1. kinit 选项传递给 docker exec 命令。例如,以 管理员 用户身份进行身份验证:

    # docker exec -i <container_name> kinit administrator
    Password for administrator@<DOMAIN>:
    Copy to Clipboard Toggle word wrap
  2. (可选)验证您的 Kerberos 凭证缓存存储在 Kerberos 凭证管理器(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
    Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

前面的示例在容器中执行 klist 命令,并列出由 SSSD 容器管理的 Kerberos 票据。

注意

如果您使用 kdestroy 工具从缓存中删除 Kerberos ticket,应用程序容器将不再使用 ticket。

第 10 章 更新 SSSD 容器

此流程描述了如何在 rhel7/sssd 镜像的新版本时更新系统安全服务守护进程(SSSD)容器。

步骤

  1. 停止 SSSD 服务:

    1. 如果 SSSD 作为系统容器运行:

      # systemctl stop sssd
      Copy to Clipboard Toggle word wrap
    2. 如果 SSSD 作为应用程序容器运行:

      # atomic stop <container_name>
      Copy to Clipboard Toggle word wrap
  2. 使用 docker rm 命令删除镜像:

    # docker rm rhel7/sssd
    Copy to Clipboard Toggle word wrap
  3. 安装最新的 SSSD 镜像:

    # atomic install rhel7/sssd
    Copy to Clipboard Toggle word wrap
  4. 启动 SSSD 服务:

    1. 如果 SSSD 作为系统容器运行:

      # systemctl start sssd
      Copy to Clipboard Toggle word wrap
    2. 如果 SSSD 作为应用程序容器运行,请使用 atomic start 命令启动每个容器:

      # atomic start <container_name>
      Copy to Clipboard Toggle word wrap

第 11 章 卸载 SSSD 容器

本章论述了如何卸载系统安全服务守护进程(SSSD)容器。

11.1. 在身份管理域中卸载 SSSD Container Enrolled

此流程描述了如何从 Atomic Host 系统卸载系统安全服务守护进程(SSSD)容器,并从 Identity Management 域取消注册 Atomic 主机系统。

步骤
  1. 使用 atomic uninstall 命令,并包含镜像名称:

    # atomic uninstall rhel7/sssd
    [... output truncated ...]
    Unenrolling client from IPA server
    [... output truncated ...]
    Client uninstall complete
    [... output truncated ...]
    Copy to Clipboard Toggle word wrap
  2. 删除 Identity Management 服务器上 Atomic 主机系统的主机条目。例如,从命令行:

    $ ipa host-del <atomic.example.com>
    Copy to Clipboard Toggle word wrap
  3. 要防止 Atomic 主机上的 sssd 服务尝试启动现在未配置的容器,请删除该服务的 systemd 单元文件并重新载入 systemd 进程:

    # rm /etc/systemd/system/sssd.service
    # systemctl daemon-reload
    Copy to Clipboard Toggle word wrap

11.2. 卸载 SSSD 容器加入 Active Directory 域

此流程描述了如何从 Atomic Host 系统卸载系统安全服务守护进程(SSSD)容器,并从 Active Directory 域取消注册 Atomic 主机系统。

步骤
  • 使用 atomic uninstall 命令,包括镜像名称,并指定您要保留的域。如果您要为操作使用默认的 Administrator 用户帐户:

    # atomic uninstall rhel7/sssd realm leave <ad.example.com>
    Copy to Clipboard Toggle word wrap

    如果使用另一个用户帐户,请使用 --user 选项指定它:

    # atomic uninstall rhel7/sssd realm leave --user <user_name> <ad.example.com>
    Copy to Clipboard Toggle word wrap

本附录描述了可帮助您对容器中运行的 IdM 和 SSSD 进行故障排除的步骤,以及收集可附加到红帽支持问题单的重要配置和日志文件。

A.1. 在 Atomic 主机上创建 sosreport

本节论述了如何安装和启动 rhel7/rhel-tools 容器以及创建 sosreport

rhel7/rhel-tools 容器使用特权安全交换机来启用此容器中运行的进程:

  • 与主机上的所有信号和共享内存段交互
  • 侦听主机网络上的端口和原始 IP 流量
  • 与主机上的所有进程交互

请注意,rhel7/rhel-tools 在不与主机分离的情况下运行。使用此容器提供的实用程序与以 root 用户身份直接在系统中运行的工具类似。

步骤

  1. 安装 rhel7/rhel-tools 容器:

    # docker pull rhel7/rhel-tools
    Copy to Clipboard Toggle word wrap
  2. 启动 rhel7/rhel-tools 容器:

    # atomic run rhel7/rhel-tools
    Copy to Clipboard Toggle word wrap
  3. 运行 sosreport 工具:

    # sosreport
    Copy to Clipboard Toggle word wrap

    实用程序将所收集信息归档保存在 /host/var/tmp/sos_tal4k_* 文件中。

  4. 输入 exit 来离开容器。

    # exit
    Copy to Clipboard Toggle word wrap
  5. sosreport 归档附加到支持请求。

A.2. 显示 IdM 和 SSSD 容器的版本

本节论述了如何显示已安装的 IdM 和 SSSD 容器的版本。例如,如果在更新的版本中修复了问题,请使用此信息搜索 Red Hat Enterprise Linux 发行注记。

步骤

  • 显示 rhel7/ipa-server 容器的版本:

    # atomic images version rhel7/ipa-server
    IMAGE NAME                                            VERSION   IMAGE ID
    registry.access.redhat.com/rhel7/ipa-server:latest    4.6.5-29  9d500a8e4296
    Copy to Clipboard Toggle word wrap
  • 显示 rhel7/sssd 容器的版本:

    # atomic images version rhel7/sssd
    IMAGE NAME                                       VERSION   IMAGE ID
    registry.access.redhat.com/rhel7/sssd:latest     7.7-12    19e5cab1c905
    Copy to Clipboard Toggle word wrap

A.3. 为在容器中运行的 SSSD 创建调试日志

本节论述了如何使用重要的 SSSD 配置和日志文件创建存档。

步骤

  1. 停止 sssd 容器:

    # docker stop sssd
    Copy to Clipboard Toggle word wrap
  2. 删除 SSSD 缓存和日志目录的内容:

    # rm -rf /var/lib/sss/db/* /var/lib/sss/mc/* /var/log/sssd/*
    Copy to Clipboard Toggle word wrap
  3. 编辑 /etc/sssd/sssd.conf 文件,并将 debug_level 参数设置为 9

    [domain/dockerlab.local]
    ...
    debug_level = 9
    
    [nss]
    debug_level = 9
    Copy to Clipboard Toggle word wrap
  4. 启动 sssd 容器:

    docker start sssd
    Copy to Clipboard Toggle word wrap
  5. 创建包含相关 SSSD 配置和日志文件的 /tmp/sssd-debug.tar.gz 存档:

    # tar czvf /tmp/sssd-debug.tar.gz /etc/sssd/sssd.conf  /etc/nsswitch.conf /etc/krb5.conf /etc/pam.d /etc/samba/smb.conf /var/log/secure /var/log/messages /var/log/sssd
    Copy to Clipboard Toggle word wrap
  6. /tmp/sssd-debug.tar.gz 文件附加到支持问题单中。

A.4. 显示 IdM 客户端安装日志

本节论述了如何显示 IdM 客户端安装日志。如果客户端安装失败,日志文件可帮助您调试问题。

步骤

  • 显示 IdM 客户端安装日志:

    # cat /var/log/sssd/install/ipaclient-install.log
    Copy to Clipboard Toggle word wrap

附录 B. 修订历史记录

以下的修订编号与本手册的发行版相关,与 Red Hat Enterprise Linux 的版本无关。

Expand
版本日期和时间作者

7.0-11

2019 年 10 月 15 日:添加了故障排除附录。

Marc Muehlfeld

7.0-10

2019 年 9 月 26 日:添加了使用 HBAC 规则对 SSSD 容器的 Granting 和 Restricting 访问权限。

Marc Muehlfeld

7.0-9

2019 年 8 月 23 日:更新了 配置 SSSD 容器的介绍,以便在 Atomic Host 上提供身份和验证服务

Marc Muehlfeld

7.0-8

2018 年 4 月 05 日:准备 7.5 GA 发布文档.

Lucie Ma\"ásková

7.0-7

2018 年 3 月 19 日:更新了 使用不同配置部署 sssd 容器。

Lucie Ma\"ásková

7.0-6

2018 年 1 月 29 日:小修复.

Aneta äteflová Petrová

7.0-5

2017 年 11 月 20 日:更新了使用 SSSD 容器注册身份管理域

Aneta äteflová Petrová

7.0-4

2017 年 9 月 12 日:添加了卸载加入 AD 域的 SSSD 容器的步骤。

Aneta äteflová Petrová

7.0-3

2017 年 8 月 28 日:通过更多用户故事和修复使用 sssd 容器 更新的部分。

Aneta äteflová Petrová

7.0-2

2017 年 8 月 14 日:更新了章节 可用容器镜像,并使用 SSSD 容器加入 Active Directory 域

Aneta äteflová Petrová

7.0-1

2017 年 7 月 18 日:7.4 GA 出版物的文件版本。

Aneta äteflová Petrová

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部