部署指南
在 Red Hat OpenShift 上安装和配置 Trusted Profile Analyzer 服务
摘要
前言
欢迎使用红帽受信任的配置文件分析器部署指南!
本指南帮助您在 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
二进制文件。
流程
在工作站中打开一个终端,并使用命令行界面登录到 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 查看命令。
为 RHTPA 部署创建一个新项目:
语法
oc new-project PROJECT_NAME
Example
$ oc new-project trusted-profile-analyzer
打开新文件进行编辑:
Example
$ vi values-rhtpa-aws.yaml
-
将 RHTPA 值文件模板 复制并粘贴到新
values-rhtpa-aws.yaml
文件中。 使用相关 AWS 信息更新
values-rhtpa-aws.yaml
文件。- 将 REGIONAL_ENDPOINT 替换为您的 Amazon S3 存储,以及 Amazon SQS 端点 URL。
- 将 COGNITO_DOMAIN_URL 替换为您的 Amazon Cognito URL。您可以在 AWS Cognito 控制台 ( App Integration 选项卡)中找到此信息。
- 将 REGION、USER_POOL_ID 和 FRONTEND_CLIENT_ID 和 WALKER_CLIENT_ID 替换为您相关的 Amazon Cognito 信息。您可以在 AWS Cognito 控制台、User pool overview 部分以及 App Integration 选项卡下的 App 客户端和分析 部分找到此信息。
- 保存文件并退出编辑器。
使用您的 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
使用您的 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
使用您的 Amazon RDS 凭证创建两个 PostgreSQL 数据库 secret 对象。
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
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
设置 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}')
添加 OpenShift Helm Chart 仓库:
Example
$ helm repo add openshift-helm-charts https://charts.openshift.io/
从 Helm Chart 仓库获取最新的 chart 信息:
Example
$ helm repo update
运行 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,以从值文件中应用当前配置的状态。
安装完成后,您可以使用来自 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"}'
调度的 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
其他资源
- Amazon Simple Storage Service (S3)端点和配额 文档。
- Amazon Simple Queue Service (SQS) 文档.
- Amazon Cognito 文档.
- Amazon 关系数据库服务(RDS) 文档.
- 创建 Amazon S3 存储桶。
- 创建标准的 Amazon SQS 队列.
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
二进制文件。
流程
在工作站中打开一个终端,并使用命令行界面登录到 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 查看命令。
为 RHTPA 部署创建一个新项目:
语法
oc new-project PROJECT_NAME
Example
$ oc new-project trusted-profile-analyzer
打开新文件进行编辑:
Example
$ vi values-rhtpa.yaml
-
将 RHTPA 值文件模板 复制并粘贴到新
values-rhtpa.yaml
文件中。 使用您的信息更新
values-rhtpa.yaml
文件。- 将 S3_ENDPOINT_URL 替换为您的相关 S3 存储信息。
- 将 AMQ_ENDPOINT_URL 和 USER_NAME 替换为相关的 AMQ Streams 信息。
- 将 OIDC_ISSUER_URL、FRONTEND_CLIENT_ID 和 WALKER_CLIENT_ID 替换为您相关的 OIDC 信息。
- 保存文件并退出编辑器。
使用您的凭证创建 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
使用您的凭证创建 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
使用您的数据库凭据创建两个 PostgreSQL 数据库 secret 对象。
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
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
设置 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}')
添加 OpenShift Helm Chart 仓库:
Example
$ helm repo add openshift-helm-charts https://charts.openshift.io/
从 Helm Chart 仓库获取最新的 chart 信息:
Example
$ helm repo update
运行 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,以从值文件中应用当前配置的状态。
安装完成后,您可以使用来自 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"}'
调度的 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