3.6. initdata の作成
initdata を作成すると、実行時に機密データまたはワークロード固有のデータを使用してピア Pod をセキュアュアに初期化できるため、このデータを仮想マシンイメージに埋め込む必要がなくなります。このアプローチにより、機密情報の漏洩リスクが軽減され、カスタムイメージビルドの必要性がなくなるため、セキュリティーが強化されます。
実稼働環境では、デフォルトの 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}'$ oc get node $(oc get pod -n trustee-operator-system \ -o jsonpath='{.items[0].spec.nodeName}') \ -o jsonpath='{.status.addresses[?(@.type=="InternalIP")].address}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
192.168.122.22
192.168.122.22Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してポートを取得します。
oc get svc kbs-service -n trustee-operator-system
$ oc get svc kbs-service -n trustee-operator-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kbs-service NodePort 172.30.116.11 <none> 8080:32178/TCP 12d
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kbs-service NodePort 172.30.116.11 <none> 8080:32178/TCP 12dCopy to Clipboard Copied! Toggle word wrap Toggle overflow initdata.tomlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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設定を削除します。
次のコマンドを実行して、
initdata.tomlファイルを gzip 形式の Base64 エンコード文字列に変換し、テキストファイルに保存します。cat initdata.toml | gzip | base64 -w0 > initdata.txt
$ cat initdata.toml | gzip | base64 -w0 > initdata.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow ピア Pod の config map またはピア Pod のマニフェスト用に、この文字列を記録しておきます。
次のコマンドを実行して、
initdata.tomlファイルの SHA-256 ハッシュを計算し、その値をhash変数に割り当てます。hash=$(sha256sum initdata.toml | cut -d' ' -f1)
$ hash=$(sha256sum initdata.toml | cut -d' ' -f1)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
initial_pcr変数に 32 バイトの 0 を割り当てます。initial_pcr=0000000000000000000000000000000000000000000000000000000000000000
$ initial_pcr=0000000000000000000000000000000000000000000000000000000000000000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
hashとinitial_pcrの SHA-256 ハッシュを計算し、その値をPCR8_HASH変数に割り当てます。PCR8_HASH=$(echo -n "$initial_pcr$hash" | xxd -r -p | sha256sum | cut -d' ' -f1) && echo $PCR8_HASH
$ PCR8_HASH=$(echo -n "$initial_pcr$hash" | xxd -r -p | sha256sum | cut -d' ' -f1) && echo $PCR8_HASHCopy to Clipboard Copied! Toggle word wrap Toggle overflow PCR8_HASH値を記録しておきます。次のコマンドを実行して、initdata.tomlファイルの SHA-256 ハッシュを計算し、その値をhash変数に割り当てます。hash=$(sha256sum initdata.toml | cut -d' ' -f1)
$ hash=$(sha256sum initdata.toml | cut -d' ' -f1)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
initial_pcr変数に 32 バイトの 0 を割り当てます。initial_pcr=0000000000000000000000000000000000000000000000000000000000000000
$ initial_pcr=0000000000000000000000000000000000000000000000000000000000000000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
hashとinitial_pcrの SHA-256 ハッシュを計算し、その値をPCR8_HASH変数に割り当てます。PCR8_HASH=$(echo -n "$initial_pcr$hash" | xxd -r -p | sha256sum | cut -d' ' -f1) && echo $PCR8_HASH
$ PCR8_HASH=$(echo -n "$initial_pcr$hash" | xxd -r -p | sha256sum | cut -d' ' -f1) && echo $PCR8_HASHCopy to Clipboard Copied! Toggle word wrap Toggle overflow RVPS の config map 用に
PCR8_HASH値を記録しておきます。