2.7. initdata の作成
initdata を作成すると、実行時に機密データまたはワークロード固有のデータを使用してピア Pod をセキュアに初期化できるため、このデータを仮想マシンイメージに埋め込む必要がなくなります。このアプローチにより、機密情報の漏洩リスクが軽減され、カスタムイメージビルドの必要性がなくなるため、セキュリティーが強化されます。
実稼働環境では、デフォルトの permissive の Kata エージェントポリシーをオーバーライドするために initdata を作成する必要があります。
グローバル設定の場合はピア Pod config map で initdata を指定でき、特定の Pod の場合はピア Pod マニフェストで initdata を指定できます。ピア Pod マニフェストの initdata 値は、ピア Pod config map に設定された値より優先されます。
その後、Red Hat build of Trustee の Reference Value Provider Service (RVPS) config map の initdata.toml ファイルから、Platform Configuration Register (PCR) 8 のハッシュを生成します。
Red Hat build of Trustee は、RVPS を使用して、機密ワークロードによって送信されたアテステーションのエビデンスを検証します。RVPS には、ファイルハッシュなどの信頼できる参照値が含まれています。これらの値は、アテステーション要求に含まれる PCR 測定値と比較されます。これらのハッシュは、Red Hat build of Trustee では生成されません。
Red Hat build of Trustee の kbs-config config map で insecure_http = true を設定する場合は、kbs_cert 設定を削除する必要があります。
手順
次のコマンドを実行して Red Hat build of Trustee の URL を取得します。
$ TRUSTEE_URL=$(oc get route kbs-service \ -n trustee-operator-system -o jsonpath='{.spec.host}') \ && echo $TRUSTEE_URLinitdata.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>' cert = """ -----BEGIN CERTIFICATE----- <kbs_certificate> -----END CERTIFICATE----- """ ''' "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----- """ ''' "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 ExecProcessRequest := 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 := false default RemoveContainerRequest := true default RemoveStaleVirtiofsShareMountsRequest := true default ReseedRandomDevRequest := true default ResumeContainerRequest := true default SetGuestDateTimeRequest := true default SetPolicyRequest := 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 WriteStreamRequest := true '''- URL
-
Red Hat build of Trustee URL を指定します。テスト目的で Red Hat build of Trustee を
insecure_httpで設定する場合は、HTTP を使用します。それ以外の場合は HTTPS を使用します。実稼働システムでは、プロキシーなどを使用して TLS を外部で処理するように環境を設定しない限り、insecure_httpを使用しないでください。 - <kbs_certificate>
- attestation agent の Base64 でエンコードされた TLS 証明書を指定します。
- kbs_cert
-
Red Hat build of Trustee URL の
kbs-configconfig map でinsecure_http = trueを設定する場合は、kbs_cert設定を削除します。
次のコマンドを実行して、
initdata.tomlファイルを gzip 形式の Base64 エンコード文字列に変換し、テキストファイルに保存します。$ cat initdata.toml | gzip | base64 -w0 > initdata.txtピア Pod の config map またはピア Pod のマニフェスト用に、この文字列を記録しておきます。
次のコマンドを実行して、
initdata.tomlファイルの SHA-256 ハッシュを計算し、その値をhash変数に割り当てます。$ hash=$(sha256sum initdata.toml | cut -d' ' -f1)次のコマンドを実行して、
initial_pcr変数に 32 バイトの 0 を割り当てます。$ initial_pcr=0000000000000000000000000000000000000000000000000000000000000000次のコマンドを実行して、
hashとinitial_pcrの SHA-256 ハッシュを計算し、その値をPCR8_HASH変数に割り当てます。$ PCR8_HASH=$(echo -n "$initial_pcr$hash" | xxd -r -p | sha256sum | cut -d' ' -f1) && echo $PCR8_HASHPCR8_HASH値を記録しておきます。次のコマンドを実行して、initdata.tomlファイルの SHA-256 ハッシュを計算し、その値をhash変数に割り当てます。$ hash=$(sha256sum initdata.toml | cut -d' ' -f1)次のコマンドを実行して、
initial_pcr変数に 32 バイトの 0 を割り当てます。$ initial_pcr=0000000000000000000000000000000000000000000000000000000000000000次のコマンドを実行して、
hashとinitial_pcrの SHA-256 ハッシュを計算し、その値をPCR8_HASH変数に割り当てます。$ PCR8_HASH=$(echo -n "$initial_pcr$hash" | xxd -r -p | sha256sum | cut -d' ' -f1) && echo $PCR8_HASHRVPS の config map 用に
PCR8_HASH値を記録しておきます。