部署指南

Red Hat Trusted Profile Analyzer 1

在 Red Hat OpenShift 上安装和配置 Trusted Profile Analyzer 服务

Red Hat Trusted Documentation Team

摘要

此部署指南提供有关在红帽 OpenShift Container Platform 上安装红帽受信任的配置文件分析器服务的系统管理员信息。
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 信息

前言

欢迎使用红帽受信任的配置文件分析器部署指南!

本指南帮助您在 Red Hat OpenShift Container Platform 上部署红帽受信任的配置文件分析器(RHTPA)软件堆栈。

第 1 章 选择安装平台

要安装红帽受信任的配置文件分析器(RHTPA),您可以根据您选择的服务提供商选择两种不同的安装路径。您可以使用 Amazon Web Services (AWS),或使用满足特定条件的不同服务提供商,用于安装在红帽 OpenShift Container Platform 上运行的受信任的配置文件分析器。

1.1. 先决条件

  • Red Hat OpenShift Container Platform 版本 4.14 或 4.15。

选择安装路径:

1.2. 使用带有 Amazon Web Services 的 Helm 安装 Trusted Profile Analyzer

您可以使用红帽的 Helm chart 在 OpenShift 上安装红帽受信任的配置文件分析器(RHTPA)服务。此流程指导您使用 Helm 的自定义值文件将 Amazon Web Services (AWS)与 RHTPA 集成。

重要

如果机密值在安装后更改,OpenShift 会重新部署 RHTPA。

先决条件

  • 运行版本 4.14 或更高版本的 Red Hat OpenShift Container Platform 集群。

    • 支持 Ingress 资源来提供使用 HTTPS 的公开可信证书。
  • 可访问以下服务的 AWS 帐户:

    • 简单存储服务(S3)
    • 简单队列服务(SQS)
    • 使用 PostgreSQL 数据库实例的关系数据库服务(RDS)
    • 带有现有 Cognito 域的 Cognito。
  • 创建了以下 S3 存储桶名称: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html

    • bombastic-default
    • vexination-default
    • v11y-default
  • 创建了以下标准 SQS 队列名称

    • bombastic-failed-default
    • bombastic-indexed-default
    • bombastic-stored-default
    • vexination-failed-default
    • vexination-indexed-default
    • vexination-stored-default
    • v11y-failed-default
    • v11y-indexed-default
    • v11y-stored-default
  • 使用 cluster-admin 角色访问 OpenShift Web 控制台。
  • 安装了 oc 的工作站,以及 helm 二进制文件。

流程

  1. 在工作站中打开一个终端,并使用命令行界面登录到 OpenShift:

    语法

    oc login --token=TOKEN --server=SERVER_URL_AND_PORT

    Example

    $ oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443

    注意

    您可以从 OpenShift Web 控制台查找登录令牌和 URL,以在命令行中使用。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。再次提供您的用户名和密码,然后单击 Display Token 查看命令。

  2. 为 RHTPA 部署创建一个新项目:

    语法

    oc new-project PROJECT_NAME

    Example

    $ oc new-project trusted-profile-analyzer

  3. 打开新文件进行编辑:

    Example

    $ vi values-rhtpa-aws.yaml

  4. RHTPA 值文件模板 复制并粘贴到新 values-rhtpa-aws.yaml 文件中。
  5. 使用相关 AWS 信息更新 values-rhtpa-aws.yaml 文件。

    1. REGIONAL_ENDPOINT 替换为您的 Amazon S3 存储,以及 Amazon SQS 端点 URL。
    2. COGNITO_DOMAIN_URL 替换为您的 Amazon Cognito URL。您可以在 AWS Cognito 控制台 ( App Integration 选项卡)中找到此信息。
    3. REGIONUSER_POOL_IDFRONTEND_CLIENT_IDWALKER_CLIENT_ID 替换为您相关的 Amazon Cognito 信息。您可以在 AWS Cognito 控制台User pool overview 部分以及 App Integration 选项卡下的 App 客户端和分析 部分找到此信息。
    4. 保存文件并退出编辑器。
  6. 使用您的 AWS 凭证创建 S3 存储 secret 对象:

    语法

    apiVersion: v1
    kind: Secret
    metadata:
      name: storage-credentials
      namespace: PROJECT_NAME
    type: Opaque
    data:
      aws_access_key_id: AWS_ACCESS_KEY
      aws_secret_access_key: AWS_SECRET_KEY

    Example

    $ cat <<EOF | oc apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: storage-credentials
      namespace: trusted-profile-analyzer
    type: Opaque
    data:
      aws_access_key_id: RHTPASTORAGE1EXAMPLE
      aws_secret_access_key: xBalrKUtnFEMI/K7RDENG/aPxRfzCYEXAMPLEKEY

  7. 使用您的 AWS 凭证创建 SQS 事件总线 secret 对象:

    语法

    apiVersion: v1
    kind: Secret
    metadata:
      name: event-bus-credentials
      namespace: PROJECT_NAME
    type: Opaque
    data:
      aws_access_key_id: AWS_ACCESS_KEY
      aws_secret_access_key: AWS_SECRET_KEY

    Example

    $ cat <<EOF | oc apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: event-bus-credentials
      namespace: trusted-profile-analyzer
    type: Opaque
    data:
      aws_access_key_id: RHTPAEVENTBS1EXAMPLE
      aws_secret_access_key: mBaliKUtnFEMI/K6RDENG/aPxRfzCYEXAMPLEKEY

  8. 使用您的 Amazon RDS 凭证创建两个 PostgreSQL 数据库 secret 对象。

    1. PostgreSQL 标准用户 secret 对象:

      语法

      apiVersion: v1
      kind: Secret
      metadata:
        name: postgresql-credentials
        namespace: PROJECT_NAME
      type: Opaque
      data:
        db.host: DB_HOST
        db.name: DB_NAME
        db.user: USERNAME
        db.password: PASSWORD
        db.port: PORT

      Example

      $ cat <<EOF | oc apply -f -
      apiVersion: v1
      kind: Secret
      metadata:
        name: postgresql-credentials
        namespace: trusted-profile-analyzer
      type: Opaque
      data:
        data:
        db.host: rds.us-east-1.amazonaws.com
        db.name: rhtpadb
        db.user: jdoe
        db.password: example1234
        db.port: 5432

    2. PostgreSQL 管理员 secret 对象:

      语法

      apiVersion: v1
      kind: Secret
      metadata:
        name: postgresql-admin-credentials
        namespace: PROJECT_NAME
      type: Opaque
      data:
        db.host: DB_HOST
        db.name: DB_NAME
        db.user: USERNAME
        db.password: PASSWORD
        db.port: PORT

      Example

      $ cat <<EOF | oc apply -f -
      apiVersion: v1
      kind: Secret
      metadata:
        name: postgresql-admin-credentials
        namespace: trusted-profile-analyzer
      type: Opaque
      data:
        data:
        db.host: rds.us-east-1.amazonaws.com
        db.name: rhtpadb
        db.user: admin
        db.password: example1234
        db.port: 5432

  9. 设置 shell 环境:

    语法

    export NAMESPACE=PROJECT_NAME
    export APP_DOMAIN_URL=-$NAMESPACE.$(oc -n openshift-ingress-operator get ingresscontrollers.operator.openshift.io default -o jsonpath='{.status.domain}')

    Example

    $ export NAMESPACE=trusted-profile-analyzer
    $ export APP_DOMAIN_URL=-$NAMESPACE.$(oc -n openshift-ingress-operator get ingresscontrollers.operator.openshift.io default -o jsonpath='{.status.domain}')

  10. 添加 OpenShift Helm Chart 仓库:

    Example

    $ helm repo add openshift-helm-charts https://charts.openshift.io/

  11. 从 Helm Chart 仓库获取最新的 chart 信息:

    Example

    $ helm repo update

  12. 运行 Helm Chart:

    语法

    helm install redhat-trusted-profile-analyzer openshift-helm-charts/redhat-trusted-profile-analyzer -n $NAMESPACE --values PATH_TO_VALUES_FILE --set-string appDomain=$APP_DOMAIN_URL

    Example

    $ helm install redhat-trusted-profile-analyzer openshift-helm-charts/redhat-trusted-profile-analyzer -n $NAMESPACE --values values-rhtpa-aws.yaml --set-string appDomain=$APP_DOMAIN_URL

    注意

    您可以多次运行此 Helm Chart,以从值文件中应用当前配置的状态。

  13. 安装完成后,您可以使用来自 Cognito 用户池的用户凭据登录 RHTPA 控制台。您可以运行以下命令来查找 RHTPA 控制台 URL:

    Example

    $ oc -n $NAMESPACE get route --selector app.kubernetes.io/name=spog-ui -o jsonpath='https://{.items[0].status.ingress[0].host}{"\n"}'

  14. 调度的 Cron 作业每天都运行,为 RHTPA 收集最新的常见漏洞和风险(CVE)数据。您可以运行以下命令来手动启动这个 Cron 作业,而不是等待:

    Example

    $ oc -n $NAMESPACE create job --from=cronjob/v11y-walker v11y-walker-now

    Cron 作业完成后,删除此 Cron 作业:

    Example

    $ oc -n $NAMESPACE delete job v11y-walker-now

其他资源

1.3. 使用带有其他服务的 Helm 安装 Trusted Profile Analyzer

您可以使用红帽的 Helm chart 在 OpenShift 上安装红帽受信任的配置文件分析器(RHTPA)服务。您需要具有简单存储服务(S3)兼容存储基础架构、OpenID Connect (OIDC)供应商、PostgreSQL 数据库并使用 Red Hat AMQ Streams for OpenShift。此流程指导您使用 Helm 的自定义值文件将这些各种服务与 RHTPA 集成。

重要

如果机密值在安装后更改,OpenShift 会重新部署 RHTPA。

先决条件

  • 运行版本 4.14 或更高版本的 Red Hat OpenShift Container Platform 集群。

    • 支持 Ingress 资源来提供使用 HTTPS 的公开可信证书。
  • 创建了以下 S3 存储桶名称:

    • bombastic-default
    • vexination-default
    • v11y-default
  • 创建了以下主题名称的 AMQ Streams on OpenShift 服务:

    • bombastic-failed-default
    • bombastic-indexed-default
    • bombastic-stored-default
    • vexination-failed-default
    • vexination-indexed-default
    • vexination-stored-default
    • v11y-failed-default
    • v11y-indexed-default
    • v11y-stored-default
  • 用于身份验证的 OIDC 供应商。
  • 新的 PostgreSQL 数据库。
  • 使用 cluster-admin 角色访问 OpenShift Web 控制台。
  • 安装了 oc 的工作站,以及 helm 二进制文件。

流程

  1. 在工作站中打开一个终端,并使用命令行界面登录到 OpenShift:

    语法

    oc login --token=TOKEN --server=SERVER_URL_AND_PORT

    Example

    $ oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443

    注意

    您可以从 OpenShift Web 控制台查找登录令牌和 URL,以在命令行中使用。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。再次提供您的用户名和密码,然后单击 Display Token 查看命令。

  2. 为 RHTPA 部署创建一个新项目:

    语法

    oc new-project PROJECT_NAME

    Example

    $ oc new-project trusted-profile-analyzer

  3. 打开新文件进行编辑:

    Example

    $ vi values-rhtpa.yaml

  4. RHTPA 值文件模板 复制并粘贴到新 values-rhtpa.yaml 文件中。
  5. 使用您的信息更新 values-rhtpa.yaml 文件。

    1. S3_ENDPOINT_URL 替换为您的相关 S3 存储信息。
    2. AMQ_ENDPOINT_URLUSER_NAME 替换为相关的 AMQ Streams 信息。
    3. OIDC_ISSUER_URLFRONTEND_CLIENT_IDWALKER_CLIENT_ID 替换为您相关的 OIDC 信息。
    4. 保存文件并退出编辑器。
  6. 使用您的凭证创建 S3 存储 secret 对象:

    语法

    apiVersion: v1
    kind: Secret
    metadata:
      name: s3-credentials
      namespace: PROJECT_NAME
    type: Opaque
    data:
      user: USER_NAME
      password: PASSWORD

    Example

    $ cat <<EOF | oc apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: s3-credentials
      namespace: trusted-profile-analyzer
    type: Opaque
    data:
      user: root
      password: example123

  7. 使用您的凭证创建 AMQ Streams secret 对象:

    语法

    apiVersion: v1
    kind: Secret
    metadata:
      name: kafka-credentials
      namespace: PROJECT_NAME
    type: Opaque
    data:
      client_password: PASSWORD

    Example

    $ cat <<EOF | oc apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: kafka-credentials
      namespace: trusted-profile-analyzer
    type: Opaque
    data:
      client_password: example123

  8. 使用您的数据库凭据创建两个 PostgreSQL 数据库 secret 对象。

    1. PostgreSQL 标准用户 secret 对象:

      语法

      apiVersion: v1
      kind: Secret
      metadata:
        name: postgresql-credentials
        namespace: PROJECT_NAME
      type: Opaque
      data:
        db.host: DB_HOST
        db.name: DB_NAME
        db.user: USERNAME
        db.password: PASSWORD
        db.port: PORT

      Example

      $ cat <<EOF | oc apply -f -
      apiVersion: v1
      kind: Secret
      metadata:
        name: postgresql-credentials
        namespace: trusted-profile-analyzer
      type: Opaque
      data:
        data:
        db.host: rds.us-east-1.amazonaws.com
        db.name: rhtpadb
        db.user: jdoe
        db.password: example1234
        db.port: 5432

    2. PostgreSQL 管理员 secret 对象:

      语法

      apiVersion: v1
      kind: Secret
      metadata:
        name: postgresql-admin-credentials
        namespace: PROJECT_NAME
      type: Opaque
      data:
        db.host: DB_HOST
        db.name: DB_NAME
        db.user: USERNAME
        db.password: PASSWORD
        db.port: PORT

      Example

      $ cat <<EOF | oc apply -f -
      apiVersion: v1
      kind: Secret
      metadata:
        name: postgresql-admin-credentials
        namespace: trusted-profile-analyzer
      type: Opaque
      data:
        data:
        db.host: rds.us-east-1.amazonaws.com
        db.name: rhtpadb
        db.user: admin
        db.password: example1234
        db.port: 5432

  9. 设置 shell 环境:

    语法

    export NAMESPACE=PROJECT_NAME
    export APP_DOMAIN_URL=-$NAMESPACE.$(oc -n openshift-ingress-operator get ingresscontrollers.operator.openshift.io default -o jsonpath='{.status.domain}')

    Example

    $ export NAMESPACE=trusted-profile-analyzer
    $ export APP_DOMAIN_URL=-$NAMESPACE.$(oc -n openshift-ingress-operator get ingresscontrollers.operator.openshift.io default -o jsonpath='{.status.domain}')

  10. 添加 OpenShift Helm Chart 仓库:

    Example

    $ helm repo add openshift-helm-charts https://charts.openshift.io/

  11. 从 Helm Chart 仓库获取最新的 chart 信息:

    Example

    $ helm repo update

  12. 运行 Helm Chart:

    语法

    helm install redhat-trusted-profile-analyzer openshift-helm-charts/redhat-trusted-profile-analyzer -n $NAMESPACE --values PATH_TO_VALUES_FILE --set-string appDomain=$APP_DOMAIN_URL

    Example

    $ helm install redhat-trusted-profile-analyzer openshift-helm-charts/redhat-trusted-profile-analyzer -n $NAMESPACE --values values-rhtpa.yaml --set-string appDomain=$APP_DOMAIN_URL

    注意

    您可以多次运行此 Helm Chart,以从值文件中应用当前配置的状态。

  13. 安装完成后,您可以使用来自 OIDC 供应商的用户凭证登录到 RHTPA 控制台。您可以运行以下命令来查找 RHTPA 控制台 URL:

    Example

    $ oc -n $NAMESPACE get route --selector app.kubernetes.io/name=spog-ui -o jsonpath='https://{.items[0].status.ingress[0].host}{"\n"}'

  14. 调度的 Cron 作业每天都运行,为 RHTPA 收集最新的常见漏洞和风险(CVE)数据。您可以运行以下命令来手动启动这个 Cron 作业,而不是等待:

    Example

    $ oc -n $NAMESPACE create job --from=cronjob/v11y-walker v11y-walker-now

    Cron 作业完成后,删除此 Cron 作业:

    Example

    $ oc -n $NAMESPACE delete job v11y-walker-now

附录 A. Red Hat Trusted Profile Analyzer with AWS 值文件模板

红帽的受信任的配置文件分析器(RHTPA)带有 Amazon Web Services (AWS)值文件模板,供 RHTPA Helm Chart 使用。

模板

appDomain: $APP_DOMAIN_URL

tracing: {}

ingress:
   className: openshift-default

storage:
  region: REGIONAL_ENDPOINT
  accessKey:
    valueFrom:
  	  secretKeyRef:
        name: storage-credentials
        key: aws_access_key_id
  secretKey:
    valueFrom:
      secretKeyRef:
        name: storage-credentials
        key: aws_secret_access_key

eventBus:
  type: sqs
  region: REGIONAL_ENDPOINT
  accessKey:
    valueFrom:
      secretKeyRef:
        name: event-bus-credentials
        key: aws_access_key_id
  secretKey:
    valueFrom:
      secretKeyRef:
        name: event-bus-credentials
        key: aws_secret_access_key

authenticator:
  type: cognito
  cognitoDomainUrl: COGNITO_DOMAIN_URL

oidc:
  issuerUrl: https://cognito-idp.REGION.amazonaws.com/USER_POOL_ID
  clients:
    frontend:
      clientId: FRONTEND_CLIENT_ID
    walker:
      clientId: WALKER_CLIENT_ID
      clientSecret:
        valueFrom:
          secretKeyRef:
            name: oidc-walker
            key: client-secret

bombastic:
  bucket: bombastic-default
  topics:
    failed: bombastic-failed-default
    indexed: bombastic-indexed-default
    stored: bombastic-stored-default

vexination:
  bucket: vexination-default
  topics:
    failed: vexination-failed-default
    indexed: vexination-indexed-default
    stored: vexination-stored-default

v11y:
  bucket: v11y-default
  topics:
    failed: v11y-failed-default
    indexed: v11y-indexed-default
    stored: v11y-stored-default

guac:
  database:
    name:
      valueFrom:
        secretKeyRef:
          name: postgresql-credentials
          key: db.name
    host:
      valueFrom:
        secretKeyRef:
          name: postgresql-credentials
          key: db.host
    port:
      valueFrom:
        secretKeyRef:
          name: postgresql-credentials
          key: db.port
    username:
      valueFrom:
        secretKeyRef:
          name: postgresql-credentials
          key: db.user
    password:
      valueFrom:
        secretKeyRef:
          name: postgresql-credentials
          key: db.password

  initDatabase:
    name:
      valueFrom:
        secretKeyRef:
          name: postgresql-admin-credentials
          key: db.name
    host:
      valueFrom:
        secretKeyRef:
          name: postgresql-admin-credentials
          key: db.host
    port:
      valueFrom:
        secretKeyRef:
          name: postgresql-admin-credentials
          key: db.port
    username:
      valueFrom:
        secretKeyRef:
          name: postgresql-admin-credentials
          key: db.user
    password:
      valueFrom:
        secretKeyRef:
          name: postgresql-admin-credentials
          key: db.password

附录 B. Red Hat Trusted Profile Analyzer 带有其他服务值文件模板

红帽的受信任的配置文件分析器(RHTPA)和其他服务值文件模板供 RHTPA Helm Chart 使用。

模板

appDomain: $APP_DOMAIN_URL
tracing: {}
ingress:
  className: openshift-default

storage:
 endpoint: S3_ENDPOINT_URL
 accessKey:
   valueFrom:
     secretKeyRef:
       name: s3-credentials
          key: user
 secretKey:
   valueFrom:
     secretKeyRef:
       name: s3-credentials
       key: password

eventBus:
  type: kafka
  bootstrapServers: AMQ_ENDPOINT_URL:9092
  config:
    securityProtocol: SASL_PLAINTEXT
    username: “USER_NAME”
    password:
      valueFrom:
        secretKeyRef:
          name: kafka-credentials
          key: client_password
    mechanism: SCRAM-SHA-512

oidc:
  issuerUrl: OIDC_ISSUER_URL
  clients:
   frontend:
     clientId: FRONTEND_CLIENT_ID
   walker:
     clientId: WALKER_CLIENT_ID
     clientSecret:
       valueFrom:
         secretKeyRef:
           name: oidc-walker
           key: client-secret

bombastic:
 bucket: bombastic-default
 topics:
   failed: bombastic-failed-default
   indexed: bombastic-indexed-default
   stored: bombastic-stored-default

vexination:
 bucket: vexination-default
 topics:
   failed: vexination-failed-default
   indexed: vexination-indexed-default
   stored: vexination-stored-default

v11y:
 bucket: v11y-default
 topics:
   failed: v11y-failed-default
   indexed: v11y-indexed-default
   stored: v11y-stored-default

guac:
 database:
   name:
     valueFrom:
       secretKeyRef:
         name: postgresql-credentials
         key: db.name
   host:
     valueFrom:
       secretKeyRef:
         name: postgresql-credentials
         key: db.host
   port:
     valueFrom:
       secretKeyRef:
         name: postgresql-credentials
         key: db.port
   username:
     valueFrom:
       secretKeyRef:
         name: postgresql-credentials
         key: db.user
   password:
     valueFrom:
       secretKeyRef:
         name: postgresql-credentials
         key: db.password

 initDatabase:
   name:
     valueFrom:
       secretKeyRef:
         name: postgresql-admin-credentials
         key: db.name
   host:
     valueFrom:
       secretKeyRef:
         name: postgresql-admin-credentials
         key: db.host
   port:
     valueFrom:
       secretKeyRef:
         name: postgresql-admin-credentials
         key: db.port
   username:
     valueFrom:
       secretKeyRef:
         name: postgresql-admin-credentials
         key: db.user
   password:
     valueFrom:
       secretKeyRef:
         name: postgresql-admin-credentials
         key: db.password

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.