Security Verify Access 的 Docker 映像

Security Verify Access Docker 映像包含可用于为 Docker配置 Security Verify Access 环境的服务。

注: 将在将来的发行版中除去对 Security Verify Access Docker 映像的支持。 应该改为使用更轻量级和更安全的 配置的 Docker 图像 来配置 Docker的 Security Verify Access 环境。
在启动容器时,请考虑以下几点。
  • Docker 容器以 "isam" 用户 (UID: 6000) 身份启动。 在标准 Docker 环境中,容器会自动启动,但在 Kubernetes 环境中,必须设置安全上下文以允许容器以此特定用户身份启动。
  • 容器需要以下 Linux® 功能 (缺省情况下,在标准 Docker 环境中允许这些功能):
    • chown
    • DAC_OVERRIDE
    • 所有者
    • KILL
    • NET_BIND_SERVICE
    • SETFCAP
    • SETGID
    • 设置 UID
  • 容器使用以下环境变量:
    CONTAINER_TIMEZONE
    容器使用的时区。 例如,"Australia/Brisbane"
    SNAPSHOT
    要在容器启动时使用的配置数据快照的名称。 它缺省为最新发布的配置。
    SNAPSHOT_ID
    容器所使用的快照的标识。 完整快照名称构造为:
    ‘isva_<product_version>_<snapshot_id>.snapshot’
    如果未指定标识,那么将使用标识 "published"。 如果使用 SNAPSHOT 环境变量指定了完整快照名称,那么将忽略此变量。
    注: 此环境变量在版本 10.0.3.0之前不可用。
    CONFIG_SNAPSHOT_SECRETS
    用于加密配置快照文件的密钥的有序列表。 私钥列表由 || (两个管道) 字符分隔。 每个私钥的长度必须超过 16 个字符。 如果定义了多个私钥,那么将使用列表中的第一个私钥对配置快照文件进行加密。 列表中的每个私钥都尝试对配置快照文件进行解密。 如果无法解密配置快照,那么容器将无法引导。 如果未定义配置快照密钥,那么不会对配置快照文件进行加密。
    注: 如果用于加密快照的密钥丢失,那么无法恢复快照。
    FIXPACKS
    要在容器启动时应用的修订包的空格分隔有序列表。 如果此环境变量不存在,那么将按字母数字顺序应用配置卷的 fixpacks 目录中存在的任何修订包。
    CONFIG_SERVICE_URL
    发布快照数据的 URL。 当管理员选择发布快照时,将通过 HTTP POST 操作将生成的快照文件发送到指定的服务。 可以逗号分隔列表形式指定多个服务。
    CONFIG_SERVICE_USER_NAME
    将快照发布到远程服务时使用的用户。
    CONFIG_SERVICE_USER_PWD
    将快照发布到远程服务时使用的用户密码。
    CONFIG_SERVICE_TLS_CACERT
    用于验证与配置快照服务的连接的 CA 证书束。 此属性的有效值为:
    file:<file.pem>
    PEM 格式化证书束的文件前缀和路径。 例如:file:/path/to/ca.pem
    disabled
    禁用配置服务的证书验证。
    operator
    使用 Kubernetes/OpenShift PKI 基础结构提供的 Kubernetes 服务帐户 CA 证书。 服务帐户必须有权读取 Verify Access 容器所部署到的名称空间中的私钥。
    ADMIN_PWD
    访问配置服务时使用的内置 "admin" 用户的密码。 如果未指定此参数,那么将使用缺省密码 "admin"。
    注: 如果未提供此环境变量,那么强烈建议在容器启动后使用本地管理接口或 REST API 来更改密码。
    注: 此环境变量在 V 9.0.5.0之前不可用。
    ADMIN_PWD_MODE
    使用提供的 ADMIN_PWD 环境变量的方式。 此属性的有效值为:
    SEED
    ADMIN_PWD 环境变量用于使用管理员密码为环境设置种子。 可以使用 Web 控制台来更改此密码。 如果未指定 ADMIN_PWD_MODE 环境变量,那么此值是缺省值。
    FIXED
    ADMIN_PWD 环境变量用于设置管理员密码。 无法使用 Web 控制台更改此密码。
    USE_CONTAINER_LOG_DIR
    此环境变量 (如果设置为任何值) 用于指示将日志文件写入特定于容器的日志记录目录 (在 "/var/application.logs" 路径下)。 此操作允许多个容器副本将日志信息写入同一个持久卷。 在 Kubernetes 环境中,另一种方法是在 "StatefulSet'。 有关StatefulSets,请参阅官方 Kubernetes 文档。
    注: 此环境变量在版本 10.0.0.0之前不可用。
    VERIFY_FILES
    如果此环境变量设置为任何值,那么将使容器在启动时验证容器中的所有二进制文件,以确保它们未被修改。 如果未设置此变量,那么在容器启动期间不会检查文件。 通过选择不验证文件,将减少容器启动所用的时间长度。 这还意味着不会验证文件系统上的二进制文件以确保它们未被篡改。
    LANG
    将显示发送到控制台的消息的语言。 如果未指定语言,那么消息将以英语显示。 下表列出了受支持的语言:
    语言 环境变量值
    捷克语 cs_CZ.utf8
    德语 de_DE.utf8
    西班牙语 es_ES.utf8
    法语 fr_FR.utf8
    匈牙利语 hu_HU.utf8
    意大利语 it_IT.utf8
    日语 ja_JP.utf8
    韩国语 ko_KR.utf8
    波兰语 pl_PL.utf8
    葡萄牙语(巴西) pt_BR.utf8
    俄语 ru_RU.utf8
    中文(简体) zh_CN.utf8
    中文(繁体) zh_TW.utf8
    LOGGING_CONSOLE_FORMAT
    日志消息的必需格式。 有效值为 basicjson。 缺省值为 basic
    LOG_TO_CONSOLE
    以空格分隔的列表形式记录到控制台的消息类型。 下表列出了有效的消息类型。
    消息类型 描述
    policy.server 如果设置了此属性,那么会将策略服务器消息日志发送到配置容器的控制台。
    policy.server.audit.azn 如果设置了此属性,那么将启用 audit.azn 组件的策略服务器审计日志并将其发送到配置容器的控制台。
    注: 如果启用了此消息类型,那么将自动启用 policy.server 类型。
    policy.server.audit.authn 如果设置了此属性,那么将启用 audit.authn 组件的策略服务器审计日志并将其发送到配置容器的控制台。
    注: 如果启用了此消息类型,那么将自动启用 policy.server 类型。
    policy.server.audit.mgmt 如果设置了此属性,那么将启用 audit.mgmt 组件的策略服务器审计日志并将其发送到配置容器的控制台。
    注: 如果启用了此消息类型,那么将自动启用 policy.server 类型。
    system.alerts 如果设置了此选项,那么会将所有系统警报发送到配置容器的控制台,并发送到使用 Web 控制台配置的目标。

在 Docker 环境中配置 Verify Access 时,请考虑以下有关用户注册表支持的要点:

  • 嵌入式用户注册表只能用于将 secAuthority=Default 后缀与基本用户结合使用。 如果需要完整的 Security Verify Access 用户,那么必须将 secAuthority=Default 后缀存储在外部用户注册表中。
  • 用户后缀始终需要外部用户注册表。 如果嵌入式用户注册表用于 secAuthority=Default 后缀,请将外部用户注册表配置为联合用户注册表。

将设备迁移到 Docker

要将设备迁移到 Docker 环境,可以在其原始环境中创建设备的快照,并将该快照导入到正在运行的 Security Verify Access 配置容器中。

仅当满足以下条件时,才能从设备导入快照。

  • 对于 Security Verify Access Base 仅激活,快照是在 V 9.0.0.0 或更高版本上生成的。 对于 Advanced Access Control 或 Federation 激活,快照是在 V 9.0.2.0 或更高版本上生成的。
  • 设备配置了嵌入式配置数据库和外部运行时数据库。
  • 设备运行时环境正在使用外部 LDAP 服务器。 或者,如果设备正在运行 Security Verify Access 9.0.4.0,那么在生成快照之前,如果 "wga_rte.embedded.ldap.include.in.snapshot" 高级调整参数设置为 true ,那么可以使用嵌入式 LDAP 服务器。

将来自设备的快照导入到 Docker 容器时:

  • LMI HTTPS 侦听端口将重写为 9443。
  • 任何逆向代理实例都将其 HTTPS 和 HTTP 端口重写为 9443 和 9080。

迁移到轻量级容器

IBM Security Verify Access v10.0.4开始,验证访问 Docker 映像现在只能作为配置容器启动。 如果尝试在将 SERVICE 环境变量设置为 runtimewebsealdsc的情况下启动此映像,那么容器将显示错误消息,然后停止。 下表中相应的轻量级 Docker 映像用于为 IBM Security Verify Access提供工作程序服务:
映像名称 工作程序服务
verify-access-dsc 分发会话高速缓存。
verify-access-runtime 运行时概要文件 (联合,高级访问控制)
verify-access-wrp Web 逆向代理 (也称为 WebSEAL)
在迁移到新的轻量级 Docker 容器时,请注意以下几点:
  • 缺省情况下,提供的容器服务侦听端口 9443 ,而当使用旧的验证访问映像时,它侦听端口 443。
  • 轻量级容器不需要任何提升的容器安全性功能和特权 (例如: 不需要 SETUID 功能)。
  • 日志记录将以 JSON 格式发送到控制台,以便容器日志记录基础结构可以管理日志记录。 不支持以本机方式将日志记录消息转发到远程系统日志服务器。
  • 在 verify-access-wrp 映像中提供了 wrpadmin 二进制文件作为旧 pdadmin 二进制文件的替代方法,用于管理正在运行的 WebSEAL 进程的各个方面。

限制

Security Verify Access在 Docker 环境中运行时,具有以下限制:

  • 任何配置更改都需要重新装入服务容器。 您可以使用 CLI 来触发手动重新装入。 对联合配置和策略数据库的更改不会导致任何服务停机时间。 在重新启动 Web 逆向代理时,对联结定义和 Web 逆向代理配置的更改将导致最短服务停机时间。 请参阅 Docker 环境中的 CLI
  • 不支持授权服务器 (pdacld)。
  • 不支持 Security Verify Access 设备的前端负载均衡器功能。
  • 不支持 Advanced Access Control 的 IP 声誉策略信息点 (PIP) 功能。
  • 未提供样本地理位置数据库。 如果需要样本地理位置数据库,请从正在运行的虚拟或硬件设备的下载区域获取该数据库。 请参阅 更新位置属性
  • 未提供预安装的联合合作伙伴模板。 请参阅 管理联合合作伙伴模板。 连接器软件包可从 IBM Security App Exchange 站点 (https://www.ibm.com/security/community/app-exchange) 作为 "IBM Security Access Manager Extension for SAML Connectors" 软件包提供。
  • 不支持 Web 逆向代理流数据或 PAM 统计信息。
  • 嵌入式用户注册表只能用于保存静态数据,而不能用于保存任何用户数据。 因此,嵌入式用户注册表仅与联合注册表配合使用,以存储用户数据和基本用户。 如果正在使用嵌入式用户注册表,那么 SCIM 支持的 Security Verify Access 集成组件不可用。
  • 不支持使用 RSA SecurID 令牌的认证。
  • 无法从 Docker 用户名称空间中运行容器。
  • 使用配置容器管理联结时存在一些差异。
    • 创建联结时,不会对联结服务器连接进行验证。
    • 不会对联结管理操作和策略对象空间操作执行细颗粒度授权检查。 这意味着能够向策略服务器认证 (例如,使用 pdadmin) 的任何管理员都能够管理联结和 Web 逆向代理策略对象空间。

共享配置数据

共享配置卷是文件系统的一部分,保留用于存储要在多个容器之间共享的数据。 即使删除了容器,共享配置卷上的数据也会持久存储。

共享配置卷安装在位于 '/var/shared'Security Verify Access 容器中。 快照,支持文件和修订包存储在此卷中。 要管理这些文件,可以使用配置容器 LMI 的 系统 > 网络设置 > 共享卷 页面。

快照

快照位于配置卷的 snapshots 目录中。

从配置容器发布快照时,会将其存储在共享卷上。 当运行时容器启动时,它会使用快照来成功执行配置和引导。 只能通过使用配置容器来创建快照,但是管理员还可以通过直接访问 Docker 卷来手动添加或除去快照。

修订包

修订包位于配置卷的 fixpacks 目录中。

启动容器时,将按指定顺序应用 FIXPACKS 环境变量中指定的修订包。 如果 FIXPACKS 环境变量不存在,那么将按字母数字顺序应用配置卷的 fixpacks 目录中存在的任何修订包。

要管理修订包,您可以手动访问 Docker 卷,也可以使用配置容器 LMI 的 系统 > 网络设置 > 共享卷 页面。 在 " 共享卷 " 页面上,您可以查看配置卷的 fixpacks 目录的内容,上载,删除或重命名修订包。

系统 > 更新和许可 > 修订包 LMI 页面在 Docker 环境中是只读的。 您可以使用该页面来查看已应用的修订包,但不能使用该页面来应用或回滚修订包。

日志文件

缺省情况下, Docker 使用分层文件系统来帮助降低 Docker 容器的磁盘空间利用率。 但是,此文件系统的写速度比标准文件系统慢。 因此,标准 Docker 实践是将频繁更新的任何文件 (例如,日志文件) 放在共享卷上。 Security Verify Access 使用的所有日志文件都位于 '/var/application.logs' 目录中。 因此,建议的方法是在创建容器时将此目录创建为共享卷。

您可以通过 LMI 的 监视器 > 应用程序日志文件 面板来查看日志文件。

多个容器不得引用同一个持久卷进行日志存储,否则多个容器尝试同时写入同一个日志文件,这会导致数据写入和完整性问题。 在 Kubernetes 环境中,可以通过在 StatefulSet 中部署容器来解决此问题 (请参阅官方 Kubernetes 文档以获取有关 StatefulSets的信息)。 替代方法是在容器中设置 USE_CONTAINER_LOG_DIR 环境变量。 设置此变量时,会将日志文件写入特定于容器的日志子目录。 此环境变量在 V 10.0.0之前不可用。
注:IBM Security Verify Access V 9.0.7.0中,始终使用特定于容器的日志子目录。

下表中显示了日志文件目录结构。

表 1. 日志目录结构
日志文件 子目录 (相对于根日志目录)
本地管理接口日志文件 lmi
Security Verify Access 策略服务器日志和跟踪文件 isam_runtime/policy
嵌入式用户注册表日志文件 isam_runtime/user_registry
系统日志文件 system
远程系统日志转发器文件 rsyslog_forwarder
注: 建议的方法是配置 Security Verify Access 以尽可能将日志文件发送到远程系统日志服务器。