Skip to content

OCIcrypt

⚡ 必要条件 nerdctl >= 0.7

nerdctlは、OCIcryptを使用した暗号化と復号化をサポートしています (別名 containerd の imgcrypt)。

JWEモード

暗号化

openssl を使用して、秘密鍵 (mykey.pem) と対応する公開鍵 (mypubkey.pem) を作成します。

openssl genrsa -out mykey.pem
openssl rsa -in mykey.pem -pubout -out mypubkey.pem

nerdctl image encrypt を使用して、暗号化されたイメージを作成します。

nerdctl image encrypt --recipient=jwe:mypubkey.pem --platform=linux/amd64,linux/arm64 foo example.com/foo:encrypted
nerdctl push example.com/foo:encrypted

⚠ 注意: このコマンドはイメージレイヤーのみを暗号化し、EnvCmd などのコンテナ設定は暗号化しません。 暗号化されていない情報を表示するには、 nerdctl image inspect --mode=native --platform=PLATFORM example.com/foo:encrypted を実行します。

復号化

構成

秘密キー・ファイルを/etc/containerd/ocicrypt/keys (ルートレスの場合~/.config/containerd/ocicrypt/keys)に配置します。

containerd 1.4 以前の場合の追加手順

containerd 1.4 以前では、以下の設定を `/etc/containerd/config.toml` に追加する必要があります (ルートレスの場合 ~/.config/`containerd/config.toml` ):

version = 2

[stream_processors]
  [stream_processors."io.containerd.ocicrypt.decoder.v1.tar.gzip"]
    accepts = ["application/vnd.oci.image.layer.v1.tar+gzip+encrypted"]
    returns = "application/vnd.oci.image.layer.v1.tar+gzip"
    path = "ctd-decoder"
    args = ["--decryption-keys-path", "/etc/containerd/ocicrypt/keys"]
  [stream_processors."io.containerd.ocicrypt.decoder.v1.tar"]
    accepts = ["application/vnd.oci.image.layer.v1.tar+encrypted"]
    returns = "application/vnd.oci.image.layer.v1.tar"
    path = "ctd-decoder"
    args = ["--decryption-keys-path", "/etc/containerd/ocicrypt/keys"]

# NOTE: On rootless, ~/.config/containerd is mounted as /etc/containerd in the namespace.

nerdctlの実行

秘密鍵が保存されている限り、nerdctl runで暗号化されたイメージを実行するためのフラグは必要ありません /etc/containerd/ocicrypt/keys (ルートレスの場合 ~/.config/containerd/ocicrypt/keys )

nerdctl run example.com/encrypted-image を実行するだけです。

コンテナーを実行せずにイメージを復号化するには、nerdctl image decrypt コマンドを使用します。

nerdctl pull --unpack=false example.com/foo:encrypted
nerdctl image decrypt --key=mykey.pem example.com/foo:encrypted foo:decrypted

PGP (GPG) モード

(Undocumented yet)

PKCS7 mode

(Undocumented yet)

PKCS11 mode

(Undocumented yet)

詳細情報