4.4. Azure での Confidential Containers のデプロイ
OpenShift Sandboxed Containers をデプロイした後に、Microsoft Azure Cloud Computing Services に Confidential Containers をデプロイすることができます。
Azure の Confidential Containers はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
クラスターの要件
- Confidential compute attestation Operator をインストールするクラスターに Red Hat OpenShift Container Platform 4.15 以降がインストールされている。
次の手順を実行して、Confidential Containers をデプロイします。
- Confidential compute attestation Operator をインストールします。
- Trustee のルートを作成します。
- Confidential Containers フィーチャーゲートを有効にします。
- ピア Pod config map を更新します。
-
KataConfig
カスタムリソース (CR) を削除します。 -
KataConfig
CR を再作成します。 - Trustee 認証シークレットを作成します。
- Trustee config map を作成します。
アテステーションポリシーを設定します。
- 参照値を作成します。
- アテスしたクライアントのシークレットを作成します。
- リソースアクセスポリシーを作成します。
- オプション: デフォルトポリシーをオーバーライドする設定アテステーションポリシーを作成します。
- TEE が Intel Trust Domain Extensions の場合は、Provisioning Certificate Caching Service を設定します。
-
KbsConfig
CR を作成します。 - アテステーションプロセスを確認します。
4.4.1. Confidential compute attestation Operator のインストール
CLI を使用して、Confidential compute attestation Operator を Azure にインストールできます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
trustee-namespace.yaml
マニフェストファイルを作成します。apiVersion: v1 kind: Namespace metadata: name: trustee-operator-system
次のコマンドを実行して、
trustee-operator-system
namespace を作成します。$ oc apply -f trustee-namespace.yaml
trustee-operatorgroup.yaml
マニフェストファイルを作成します。apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: trustee-operator-group namespace: trustee-operator-system spec: targetNamespaces: - trustee-operator-system
以下のコマンドを実行して Operator グループを作成します。
$ oc apply -f trustee-operatorgroup.yaml
trustee-subscription.yaml
マニフェストファイルを作成します。apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: trustee-operator namespace: trustee-operator-system spec: channel: stable installPlanApproval: Automatic name: trustee-operator source: redhat-operators sourceNamespace: openshift-marketplace startingCSV: trustee-operator.v0.1.0
次のコマンドを実行して、サブスクリプションを作成します。
$ oc apply -f trustee-subscription.yaml
次のコマンドを実行して、Operator が正常にインストールされていることを確認します。
$ oc get csv -n trustee-operator-system
このコマンドが完了するまでに数分かかる場合があります。
次のコマンドを実行してプロセスを監視します。
$ watch oc get csv -n trustee-operator-system
出力例
NAME DISPLAY PHASE trustee-operator.v0.1.0 Trustee Operator 0.1.0 Succeeded
4.4.2. Trustee のルートの作成
Trustee のエッジ TLS 終端を使用してセキュアなルートを作成できます。外部の Ingress トラフィックは HTTPS としてルーター Pod に到達し、HTTP として Trustee Pod に渡されます。
前提条件
- Confidential Containers フィーチャーゲートを有効にしている。
- Confidential compute attestation Operator がインストールされている。
手順
次のコマンドを実行してエッジルートを作成します。
$ oc create route edge --service=kbs-service --port kbs-port \ -n trustee-operator-system
注記注記: 現在、有効な CA 署名証明書を持つルートのみがサポートされています。自己署名証明書を使用したルートは使用できません。
次のコマンドを実行して、
TRUSTEE_HOST
変数を設定します。$ TRUSTEE_HOST=$(oc get route -n trustee-operator-system kbs-service \ -o jsonpath={.spec.host})
次のコマンドを実行してルートを確認します。
$ echo $TRUSTEE_HOST
出力例
kbs-service-trustee-operator-system.apps.memvjias.eastus.aroapp.io
ピア Pod Config Map のこの値を記録します。
4.4.3. Confidential Containers フィーチャーゲートの有効化
Confidential Containers フィーチャーゲートを有効にする必要があります。
手順
cc-feature-gate.yaml
マニフェストファイルを作成します。apiVersion: v1 kind: ConfigMap metadata: name: osc-feature-gates namespace: openshift-sandboxed-containers-operator data: confidential: "true"
以下のコマンドを実行して config map を作成します。
$ oc apply -f cc-feature-gate.yaml
4.4.4. ピア Pod の更新 config map
Confidential Containers のピア Pod config map を更新する必要があります。
Secure Boot を true
に設定して、デフォルトで有効にします。デフォルト値は false
で、セキュリティーリスクが発生します。
手順
Azure インスタンスから以下の値を取得します。
Azure リソースグループを取得して記録します。
$ AZURE_RESOURCE_GROUP=$(oc get infrastructure/cluster -o jsonpath='{.status.platformStatus.azure.resourceGroupName}') && echo "AZURE_RESOURCE_GROUP: \"$AZURE_RESOURCE_GROUP\""
Azure VNet 名を取得し、記録します。
$ AZURE_VNET_NAME=$(az network vnet list --resource-group ${AZURE_RESOURCE_GROUP} --query "[].{Name:name}" --output tsv)
この値は、Azure サブネット ID を取得するために使用されます。
Azure サブネット ID を取得して記録します。
$ AZURE_SUBNET_ID=$(az network vnet subnet list --resource-group ${AZURE_RESOURCE_GROUP} --vnet-name $AZURE_VNET_NAME --query "[].{Id:id} | [? contains(Id, 'worker')]" --output tsv) && echo "AZURE_SUBNET_ID: \"$AZURE_SUBNET_ID\""
Azure ネットワークセキュリティーグループ (NSG) ID を取得して記録します。
$ AZURE_NSG_ID=$(az network nsg list --resource-group ${AZURE_RESOURCE_GROUP} --query "[].{Id:id}" --output tsv) && echo "AZURE_NSG_ID: \"$AZURE_NSG_ID\""
Azure リージョンを取得して記録します。
$ AZURE_REGION=$(az group show --resource-group ${AZURE_RESOURCE_GROUP} --query "{Location:location}" --output tsv) && echo "AZURE_REGION: \"$AZURE_REGION\""
以下の例に従って
peer-pods-cm.yaml
マニフェストファイルを作成します。apiVersion: v1 kind: ConfigMap metadata: name: peer-pods-cm namespace: openshift-sandboxed-containers-operator data: CLOUD_PROVIDER: "azure" VXLAN_PORT: "9000" AZURE_INSTANCE_SIZE: "Standard_DC2as_v5" 1 AZURE_INSTANCE_SIZES: "Standard_DC2as_v5,Standard_DC4as_v5,Standard_DC8as_v5,Standard_DC16as_v5" 2 AZURE_SUBNET_ID: "<azure_subnet_id>" 3 AZURE_NSG_ID: "<azure_nsg_id>" 4 PROXY_TIMEOUT: "5m" AZURE_IMAGE_ID: "<azure_image_id>" 5 AZURE_REGION: "<azure_region>" 6 AZURE_RESOURCE_GROUP: "<azure_resource_group>" 7 DISABLECVM: "false" AA_KBC_PARAMS: "cc_kbc::https://${TRUSTEE_HOST}" 8 ENABLE_SECURE_BOOT: "true" 9
- 1
- ワークロードでインスタンスサイズが定義されていない場合、この値がデフォルトになります。
- 2
- Pod の作成時に指定できるすべてのインスタンスサイズを一覧表示します。これにより、メモリーと CPU をあまり必要としないワークロードには小さいインスタンスサイズを定義したり、ワークロードが大きい場合は大きいインスタンスサイズを定義したりすることができます。
- 3
- 取得した
AZURE_SUBNET_ID
値を指定します。 - 4
- 取得した
AZURE_NSG_ID
値を指定します。 - 5
- オプション: デフォルトでは、この値は、クラスターの認証情報に基づく Azure イメージ ID を使用して
KataConfig
CR を実行するときに入力されます。独自の Azure イメージを作成する場合は、正しいイメージ ID を指定します。 - 6
- 取得した
AZURE_REGION
値を指定します。 - 7
- 取得した
AZURE_RESOURCE_GROUP
値を指定します。 - 8
- Trustee ルートのホスト名を指定します。
- 9
true
を指定すると、デフォルトでセキュアブートが有効になります。
以下のコマンドを実行して config map を作成します。
$ oc apply -f peer-pods-cm.yaml
次のコマンドを実行して、
peerpodconfig-ctrl-caa-daemon
デーモンセットを再起動します。$ oc set env ds/peerpodconfig-ctrl-caa-daemon \ -n openshift-sandboxed-containers-operator REBOOT="$(date)"
4.4.5. KataConfig カスタムリソースの削除
コマンドラインを使用して、KataConfig
カスタムリソース (CR) を削除できます。
KataConfig
CR を削除すると、ランタイムと関連リソースがクラスターから削除されます。
KataConfig
CR を削除すると、ワーカーノードが自動的に再起動します。再起動には 10 分から 60 分以上かかる場合があります。再起動時間を妨げる要因は次のとおりです。
- より多くのワーカーノードを持つ大規模な OpenShift Container Platform デプロイメント。
- BIOS および診断ユーティリティーが有効である。
- SSD ではなくハードドライブへのデプロイメント。
- 仮想ノードではなく、ベアメタルなどの物理ノードにデプロイしている。
- CPU とネットワークが遅い。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
次のコマンドを実行して、
KataConfig
CR を削除します。$ oc delete kataconfig example-kataconfig
OpenShift Sandboxed Containers Operator は、クラスターでランタイムを有効化するために初期に作成されていたリソースをすべて削除します。
重要KataConfig
CR を削除すると、すべてのワーカーノードが再起動するまで CLI は応答を停止します。検証を実行する前に、削除プロセスを完了する必要があります。以下のコマンドを実行して、カスタムリソースが削除されたことを確認します。
$ oc get kataconfig example-kataconfig
出力例
No example-kataconfig instances exist
4.4.6. KataConfig カスタムリソースの再作成
Confidential Containers の KataConfig
カスタムリソース (CR) を再作成する必要があります。
KataConfig
CR を作成すると、ワーカーノードが自動的に再起動します。再起動には 10 分から 60 分以上かかる場合があります。再起動時間を妨げる要因は次のとおりです。
- より多くのワーカーノードを持つ大規模な OpenShift Container Platform デプロイメント。
- BIOS および診断ユーティリティーが有効である。
- SSD ではなくハードディスクドライブにデプロイしている。
- 仮想ノードではなく、ベアメタルなどの物理ノードにデプロイしている。
- CPU とネットワークが遅い。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
以下の例に従って
example-kataconfig.yaml
マニフェストファイルを作成します。apiVersion: kataconfiguration.openshift.io/v1 kind: KataConfig metadata: name: example-kataconfig spec: enablePeerPods: true logLevel: info # kataConfigPoolSelector: # matchLabels: # <label_key>: '<label_value>' 1
- 1
- オプション: 特定のノードに
kata-remote
をインストールするためにノードラベルを適用した場合は、キーと値を指定します (例:cc: 'true')
。
次のコマンドを実行して、
KataConfig
CR を作成します。$ oc apply -f example-kataconfig.yaml
新しい
KataConfig
CR が作成され、ワーカーノードにkata-remote
がランタイムクラスとしてインストールされます。インストールを確認する前に、
kata-remote
のインストールが完了し、ワーカーノードが再起動するまで待ちます。次のコマンドを実行して、インストールの進行状況を監視します。
$ watch "oc describe kataconfig | sed -n /^Status:/,/^Events/p"
kataNodes
の下にあるすべてのワーカーのステータスがinstalled
で、理由を指定せずにInProgress
の条件がFalse
の場合、kata
はクラスターにインストールされます。次のコマンドを実行してデーモンセットを確認します。
$ oc get -n openshift-sandboxed-containers-operator ds/peerpodconfig-ctrl-caa-daemon
次のコマンドを実行してランタイムクラスを確認します。
$ oc get runtimeclass
出力例
NAME HANDLER AGE kata kata 152m kata-remote kata-remote 152m
4.4.7. Trustee 認証シークレットの作成
Trustee の認証シークレットを作成する必要があります。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
次のコマンドを実行して、秘密鍵を作成します。
$ openssl genpkey -algorithm ed25519 > privateKey
次のコマンドを実行して、公開鍵を作成します。
$ openssl pkey -in privateKey -pubout -out publicKey
次のコマンドを実行してシークレットを作成します。
$ oc create secret generic kbs-auth-public-key --from-file=publicKey -n trustee-operator-system
次のコマンドを実行してシークレットを確認します。
$ oc get secret -n trustee-operator-system
4.4.8. Trustee config map の作成
Trustee サーバーを設定するには、config map を作成する必要があります。
前提条件
- Trustee のルートを作成している。
手順
kbs-config-cm.yaml
マニフェストファイルを作成します。apiVersion: v1 kind: ConfigMap metadata: name: kbs-config-cm namespace: trustee-operator-system data: kbs-config.json: | { "insecure_http" : true, "sockets": ["0.0.0.0:8080"], "auth_public_key": "/etc/auth-secret/publicKey", "attestation_token_config": { "attestation_token_type": "CoCo" }, "repository_config": { "type": "LocalFs", "dir_path": "/opt/confidential-containers/kbs/repository" }, "as_config": { "work_dir": "/opt/confidential-containers/attestation-service", "policy_engine": "opa", "attestation_token_broker": "Simple", "attestation_token_config": { "duration_min": 5 }, "rvps_config": { "store_type": "LocalJson", "store_config": { "file_path": "/opt/confidential-containers/rvps/reference-values/reference-values.json" } } }, "policy_engine_config": { "policy_path": "/opt/confidential-containers/opa/policy.rego" } }
以下のコマンドを実行して config map を作成します。
$ oc apply -f kbs-config-cm.yaml
4.4.9. アテステーションポリシーの設定
次のアテステーションポリシー設定を指定できます。
- 参照値
ハードウェアプラットフォームの信頼できるダイジェストを指定することにより、Reference Value Provider Service (RVPS) の参照値を設定できます。
クライアントは、実行中のソフトウェア、Trusted Execution Environment (TEE) のハードウェアとファームウェアから測定値を収集し、請求とともに見積りを Attestation Server に送信します。これらの測定値は、Trustee に登録された信頼できるダイジェストと一致する必要があります。このプロセスにより、Confidential VM (CVM) が期待どおりのソフトウェアスタックを実行し、改ざんがされていないように確認します。
- クライアントのシークレット
- アテストされたクライアントと共有するシークレットを 1 つ以上作成する必要があります。
- リソースアクセスポリシー
アクセスするリソースを決定するには、Trustee ポリシーエンジンのポリシーを設定する必要があります。
Trustee ポリシーエンジンと、TEE 証拠の有効性を決定する Attestation Service ポリシーエンジンを混同しないでください。
- アテステーションポリシー
- オプション: 独自の設定アテステーションポリシーを作成して、デフォルトの設定アテステーションポリシーを上書きできます。
- TDX の Provisioning Certificate Caching Service
TEE が Intel Trust Domain Extensions (TDX) である場合は、Provisioning Certificate Caching Service (PCCS) を設定する必要があります。PCCS は、Provisioning Certification Key (PCK) 証明書を取得し、ローカルデータベースにキャッシュします。
重要パブリック Intel PCCS サービスを使用しないでください。オンプレミスまたはパブリッククラウド上のローカルキャッシュサービスを使用します。
手順
rvps-configmap.yaml
マニフェストファイルを作成します。apiVersion: v1 kind: ConfigMap metadata: name: rvps-reference-values namespace: trustee-operator-system data: reference-values.json: | [ 1 ]
- 1
- 必要に応じて、お使いのハードウェアプラットフォームの信頼できるダイジェストを指定します。それ以外の場合は、空のままにします。
次のコマンドを実行して、RVPS config map を作成します。
$ oc apply -f rvps-configmap.yaml
次の例に従って、アテストされたクライアントと共有する 1 つ以上のシークレットを作成します。
$ oc create secret generic kbsres1 --from-literal key1=<res1val1> \ --from-literal key2=<res1val2> -n trustee-operator-system
この例では、
kbsres1
シークレットには 2 つのエントリー (key1
、key2
) があり、Trustee クライアントはこれらを取得します。要件に応じてシークレットを追加できます。resourcepolicy-configmap.yaml
マニフェストファイルを作成します。apiVersion: v1 kind: ConfigMap metadata: name: resource-policy namespace: trustee-operator-system data: policy.rego: | 1 package policy 2 default allow = false allow { input["tee"] != "sample" }
- 1
- リソースポリシーの名前
policy.rego
は、Trustee config map で定義されたリソースポリシーと一致する必要があります。 - 2
- リソースポリシーは Open Policy Agent 仕様に準拠します。この例では、TEE がサンプルのアテスターでない場合にすべてのリソースを取得できます。
次のコマンドを実行して、リソースポリシーの config map を作成します。
$ oc apply -f resourcepolicy-configmap.yaml
オプション: 次の例に従って、
attestation-policy.yaml
マニフェストファイルを作成します。apiVersion: v1 kind: ConfigMap metadata: name: attestation-policy namespace: trustee-operator-system data: default.rego: | package policy 1 import future.keywords.every default allow = false allow { every k, v in input { judge_field(k, v) } } judge_field(input_key, input_value) { has_key(data.reference, input_key) reference_value := data.reference[input_key] match_value(reference_value, input_value) } judge_field(input_key, input_value) { not has_key(data.reference, input_key) } match_value(reference_value, input_value) { not is_array(reference_value) input_value == reference_value } match_value(reference_value, input_value) { is_array(reference_value) array_include(reference_value, input_value) } array_include(reference_value_array, input_value) { reference_value_array == [] } array_include(reference_value_array, input_value) { reference_value_array != [] some i reference_value_array[i] == input_value } has_key(m, k) { _ = m[k] }
- 1
- アテステーションポリシーは、Open Policy Agent 仕様に準拠します。この例では、アテステーションポリシーは、アテステーションレポートで提供されたクレームを RVPS データベースに登録されている参照値と比較します。すべての値が一致する場合にのみ、アテステーションプロセスは成功します。
以下のコマンドを実行して、アテステーションポリシー config map を作成します。
$ oc apply -f attestation-policy.yaml
TEE が Intel TDX の場合は、
tdx-config.yaml
マニフェストファイルを作成します。apiVersion: v1 kind: ConfigMap metadata: name: tdx-config namespace: trustee-operator-system data: sgx_default_qcnl.conf: | \ { "collateral_service": "https://api.trustedservices.intel.com/sgx/certification/v4/", "pccs_url": "<pccs_url>" 1 }
- 1
- PCCS URL を指定します (例:
https://localhost:8081/sgx/certification/v4/)
。
以下のコマンドを実行して TDX config map を作成します。
$ oc apply -f tdx-config.yaml
4.4.10. KbsConfig カスタムリソースの作成
Trustee を起動するには、KbsConfig
カスタムリソース (CR) を作成する必要があります。
次に、Trustee Pod および Pod ログをチェックして設定を確認します。
手順
kbsconfig-cr.yaml
マニフェストファイルを作成します。apiVersion: confidentialcontainers.org/v1alpha1 kind: KbsConfig metadata: labels: app.kubernetes.io/name: kbsconfig app.kubernetes.io/instance: kbsconfig app.kubernetes.io/part-of: trustee-operator app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: trustee-operator name: kbsconfig namespace: trustee-operator-system spec: kbsConfigMapName: kbs-config-cm kbsAuthSecretName: kbs-auth-public-key kbsDeploymentType: AllInOneDeployment kbsRvpsRefValuesConfigMapName: rvps-reference-values kbsSecretResources: ["kbsres1"] kbsResourcePolicyConfigMapName: resource-policy
以下のコマンドを実行して
KbsConfig
CR を作成します。$ oc apply -f kbsconfig-cr.yaml
検証
次のコマンドを実行して、デフォルトのプロジェクトを設定します。
$ oc project trustee-operator-system
次のコマンドを実行して Pod を確認します。
$ oc get pods -n trustee-operator-system
出力例
NAME READY STATUS RESTARTS AGE trustee-deployment-8585f98449-9bbgl 1/1 Running 0 22m trustee-operator-controller-manager-5fbd44cd97-55dlh 2/2 Running 0 59m
次のコマンドを実行して
POD_NAME
環境変数を設定します。$ POD_NAME=$(oc get pods -l app=kbs -o jsonpath='{.items[0].metadata.name}' -n trustee-operator-system)
次のコマンドを実行して、Pod ログを確認します。
$ oc logs -n trustee-operator-system $POD_NAME
出力例
[2024-05-30T13:44:24Z INFO kbs] Using config file /etc/kbs-config/kbs-config.json [2024-05-30T13:44:24Z WARN attestation_service::rvps] No RVPS address provided and will launch a built-in rvps [2024-05-30T13:44:24Z INFO attestation_service::token::simple] No Token Signer key in config file, create an ephemeral key and without CA pubkey cert [2024-05-30T13:44:24Z INFO api_server] Starting HTTPS server at [0.0.0.0:8080] [2024-05-30T13:44:24Z INFO actix_server::builder] starting 12 workers [2024-05-30T13:44:24Z INFO actix_server::server] Tokio runtime found; starting in existing Tokio runtime
4.4.11. アテステーションプロセスの確認
テスト Pod を作成し、そのシークレットを取得することで、アテステーションプロセスを検証できます。
この手順は、アテステーションが機能していることを確認する例です。データはメモリーダンプを使用してキャプチャーされる可能性があるため、機密データを標準 I/O に書き込まないでください。メモリーに書き込まれたデータのみが暗号化されます。
デフォルトでは、Pod 仮想マシンイメージに埋め込まれたエージェント側のポリシーにより、Confidential Containers Pod の exec
API と log
API が無効になります。このポリシーにより、機密データが標準の I/O に書き込まれないようにします。
テストシナリオでは、ポリシーアノテーションを Pod に追加することで、実行時に制限をオーバーライドできます。テクノロジープレビューの場合、ランタイムポリシーアノテーションはリモートアテステーションによって検証されません。
前提条件
- Trustee サーバーとテスト Pod が同じクラスター内で実行されていない場合は、ルートが作成されている。
手順
verification-pod.yaml
マニフェストファイルを作成します。apiVersion: v1 kind: Pod metadata: name: ocp-cc-pod labels: app: ocp-cc-pod annotations: io.katacontainers.config.agent.policy: cGFja2FnZSBhZ2VudF9wb2xpY3kKCmRlZmF1bHQgQWRkQVJQTmVpZ2hib3JzUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgQWRkU3dhcFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IENsb3NlU3RkaW5SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBDb3B5RmlsZVJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IENyZWF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IENyZWF0ZVNhbmRib3hSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBEZXN0cm95U2FuZGJveFJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IEV4ZWNQcm9jZXNzUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR2V0TWV0cmljc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IEdldE9PTUV2ZW50UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgR3Vlc3REZXRhaWxzUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgTGlzdEludGVyZmFjZXNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBMaXN0Um91dGVzUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgTWVtSG90cGx1Z0J5UHJvYmVSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBPbmxpbmVDUFVNZW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBQYXVzZUNvbnRhaW5lclJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFB1bGxJbWFnZVJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFJlYWRTdHJlYW1SZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZW1vdmVDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZW1vdmVTdGFsZVZpcnRpb2ZzU2hhcmVNb3VudHNSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZXNlZWRSYW5kb21EZXZSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBSZXN1bWVDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBTZXRHdWVzdERhdGVUaW1lUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2V0UG9saWN5UmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU2lnbmFsUHJvY2Vzc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFN0YXJ0Q29udGFpbmVyUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhcnRUcmFjaW5nUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgU3RhdHNDb250YWluZXJSZXF1ZXN0IDo9IHRydWUKZGVmYXVsdCBTdG9wVHJhY2luZ1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFR0eVdpblJlc2l6ZVJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFVwZGF0ZUNvbnRhaW5lclJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFVwZGF0ZUVwaGVtZXJhbE1vdW50c1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFVwZGF0ZUludGVyZmFjZVJlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFVwZGF0ZVJvdXRlc1JlcXVlc3QgOj0gdHJ1ZQpkZWZhdWx0IFdhaXRQcm9jZXNzUmVxdWVzdCA6PSB0cnVlCmRlZmF1bHQgV3JpdGVTdHJlYW1SZXF1ZXN0IDo9IHRydWUK 1 spec: runtimeClassName: kata-remote containers: - name: skr-openshift image: registry.access.redhat.com/ubi9/ubi:9.3 command: - sleep - "36000" securityContext: privileged: false seccompProfile: type: RuntimeDefault
- 1
- この Pod アノテーションは、機密データが標準 I/O に書き込まれないようにするポリシーをオーバーライドします。
以下のコマンドを実行して Pod を作成します。
$ oc create -f verification-pod.yaml
次のコマンドを実行して、
ocp-cc-pod
の Bash シェルに接続します。$ oc exec -it ocp-cc-pod -- bash
次のコマンドを実行して Pod シークレットを取得します。
$ curl http://127.0.0.1:8006/cdh/resource/default/kbsres1/key1
出力例
res1val1
Trustee サーバーは、証明書が成功した場合にのみシークレットを返します。