4.6. initdata の作成
initdata を作成すると、実行時に機密データまたはワークロード固有のデータを使用して Pod をセキュアに初期化できるため、このデータを仮想マシンイメージに埋め込む必要がなくなります。このアプローチにより、機密情報の漏洩リスクが軽減され、カスタムイメージビルドの必要性がなくなるため、セキュリティーが強化されます。
グローバル設定の場合は Pod config map で initdata を指定でき、特定の Pod の場合は Pod マニフェストで initdata を指定できます。Pod マニフェストの initdata 値は、Pod config map に設定された値をオーバーライドします。
実稼働環境では、デフォルトの permissive の Kata エージェントポリシーをオーバーライドするために initdata を作成する必要があります。
グローバル設定の場合はピア Pod config map で initdata を指定でき、特定の Pod の場合はピア Pod マニフェストで initdata を指定できます。ピア Pod マニフェストの initdata 値は、ピア Pod config map に設定された値より優先されます。
Red Hat build of Trustee の kbs-config config map で insecure_http = true を設定する場合は、kbs_cert 設定を削除する必要があります。
手順
次のコマンドを実行して、Red Hat build of Trustee の IP アドレスを取得します。
$ oc get node $(oc get pod -n trustee-operator-system \ -o jsonpath='{.items[0].spec.nodeName}') \ -o jsonpath='{.status.addresses[?(@.type=="InternalIP")].address}'出力例
192.168.122.22次のコマンドを実行してポートを取得します。
$ oc get svc kbs-service -n trustee-operator-system出力例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kbs-service NodePort 172.30.116.11 <none> 8080:32178/TCP 12dinitdata.tomlファイルを作成します。algorithm = "sha384" version = "0.1.0" [data] "aa.toml" = ''' [token_configs] [token_configs.coco_as] url = '<trustee_url>' [token_configs.kbs] url = '<trustee_url>' ''' "cdh.toml" = ''' socket = 'unix:///run/confidential-containers/cdh.sock' credentials = [] [kbc] name = 'cc_kbc' url = '<trustee_url>' kbs_cert = """ -----BEGIN CERTIFICATE----- <kbs_certificate> -----END CERTIFICATE----- """ [image] image_security_policy_uri = 'kbs:///default/<secret-policy-name>/<key> ''' "policy.rego" = ''' package agent_policy default AddARPNeighborsRequest := true default AddSwapRequest := true default CloseStdinRequest := true default CopyFileRequest := true default CreateContainerRequest := true default CreateSandboxRequest := true default DestroySandboxRequest := true default GetMetricsRequest := true default GetOOMEventRequest := true default GuestDetailsRequest := true default ListInterfacesRequest := true default ListRoutesRequest := true default MemHotplugByProbeRequest := true default OnlineCPUMemRequest := true default PauseContainerRequest := true default PullImageRequest := true default ReadStreamRequest := true default RemoveContainerRequest := true default RemoveStaleVirtiofsShareMountsRequest := true default ReseedRandomDevRequest := true default ResumeContainerRequest := true default SetGuestDateTimeRequest := true default SignalProcessRequest := true default StartContainerRequest := true default StartTracingRequest := true default StatsContainerRequest := true default StopTracingRequest := true default TtyWinResizeRequest := true default UpdateContainerRequest := true default UpdateEphemeralMountsRequest := true default UpdateInterfaceRequest := true default UpdateRoutesRequest := true default WaitProcessRequest := true default ExecProcessRequest := false default SetPolicyRequest := false default WriteStreamRequest := false ExecProcessRequest if { input_command = concat(" ", input.process.Args) some allowed_command in policy_data.allowed_commands input_command == allowed_command } policy_data := { "allowed_commands": [ "curl http://127.0.0.1:8006/cdh/resource/default/attestation-status/status" ] } '''- url
-
Red Hat build of Trustee の IP アドレスとポートを指定します (例:
https://192.168.122.22:32178)。 - <kbs_certificate>
- attestation agent の Base64 でエンコードされた TLS 証明書を指定します。
- kbs_cert
-
Red Hat build of Trustee URL の
kbs-configconfig map でinsecure_http = trueを設定する場合は、kbs_cert設定を削除します。 - image_security_policy_uri
-
コンテナーイメージ署名検証ポリシーを有効にした場合のみ (オプション)。
<secret-policy-name>と<key>は、それぞれ KbsConfig カスタムリソースの作成 で指定したシークレット名とキーに置き換えます。
次のコマンドを実行して、
initdata.tomlファイルを gzip 形式の Base64 エンコード文字列に変換し、テキストファイルに保存します。$ cat initdata.toml | gzip | base64 -w0 > initdata.txtピア Pod config map またはピア Pod マニフェストで使用するためにこの文字列を記録します。