4.9. イベントリスナーによる Webhook のセキュリティー保護
管理者は、イベントリスナーで Webhook をセキュアにできます。namespace の作成後に、operator.tekton.dev/enable-annotation=enabled
ラベルを namespace に追加して、Eventlistener
リソースの HTTPS を有効にします。次に、再暗号化した TLS 終端を使用して Trigger
リソースとセキュアなルートを作成します。
Red Hat OpenShift Pipelines のトリガーは、Eventlistener
リソースへの非セキュアな HTTP およびセキュアな HTTPS 接続の両方をサポートします。HTTPS は、クラスター内外の接続を保護します。
Red Hat OpenShift Pipelines は、namespace のラベルを監視する tekton-operator-proxy-webhook
Pod を実行します。ラベルを namespace に追加する場合、Webhook は service.beta.openshift.io/serving-cert-secret-name=<secret_name>
アノテーションを EventListener
オブジェクトに設定します。これにより、シークレットおよび必要な証明書が作成されます。
service.beta.openshift.io/serving-cert-secret-name=<secret_name>
さらに、作成されたシークレットを Eventlistener
Pod にマウントし、要求のセキュリティーを保護することができます。
4.9.1. OpenShift ルートを使用したセキュアな接続の提供
再暗号化した TLS 終端を使用してルートを作成するには、以下を実行します。
$ oc create route reencrypt --service=<svc-name> --cert=tls.crt --key=tls.key --ca-cert=ca.crt --hostname=<hostname>
または、再暗号化 TLS 終端 YAML ファイルを作成して、セキュアなルートを作成できます。
セキュアなルートを作成する再暗号化 TLS 終端 YAML の例
apiVersion: route.openshift.io/v1 kind: Route metadata: name: route-passthrough-secured 1 spec: host: <hostname> to: kind: Service name: frontend 2 tls: termination: reencrypt 3 key: [as in edge termination] certificate: [as in edge termination] caCertificate: [as in edge termination] destinationCACertificate: |- 4 -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE-----
- 1 2
- オブジェクトの名前で、63 文字のみに制限されます。
- 3
- termination フィールドは
reencrypt
に設定されます。これは、必要な唯一の TLS フィールドです。 - 4
- これは、再暗号化に必要です。
destinationCACertificate
は CA 証明書を指定してエンドポイントの証明書を検証し、ルーターから宛先 Pod への接続のセキュリティーを保護します。このフィールドは以下のいずれかのシナリオで省略できます。- サービスは、サービス署名証明書を使用します。
- 管理者はルーターのデフォルト CA 証明書を指定し、サービスにはその CA によって署名された証明書を指定します。
oc create route reencrypt --help
コマンドを実行すると、他のオプションを表示できます。
4.9.2. セキュアな HTTPS 接続を使用して EventListener リソースの作成
このセクションでは、pipelines-tutorial の例を使用して、セキュアな HTTPS 接続を使用した EventListener リソースのサンプルの作成について説明します。
手順
pipelines-tutorial リポジトリーで利用可能な YAML ファイルから
TriggerBinding
リソースを作成します。$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/03_triggers/01_binding.yaml
pipelines-tutorial リポジトリーで利用可能な YAML ファイルから
TriggerTemplate
リソースを作成します。$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/03_triggers/02_template.yaml
Trigger
リソースを pipelines-tutorial リポジトリーから直接作成します。$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/03_triggers/03_trigger.yaml
セキュアな HTTPS 接続を使用して
EventListener
リソースの作成ラベルを追加して、
Eventlistener
リソースへのセキュアな HTTPS 接続を有効にします。$ oc label namespace <ns-name> operator.tekton.dev/enable-annotation=enabled
pipelines-tutorial リポジトリーで利用可能な YAML ファイルから
EventListener
リソースを作成します。$ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/03_triggers/04_event_listener.yaml
再暗号化 TLS 終端でルートを作成します。
$ oc create route reencrypt --service=<svc-name> --cert=tls.crt --key=tls.key --ca-cert=ca.crt --hostname=<hostname>