|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
|
これは未公開の文書です Admission Controller 1.34-dev. |
Rancherアプリケーションコレクションのイメージを確認する
このセクションでは、https://apps.rancher.io/[Rancherアプリケーションコレクション]からのアプリケーションとイメージをSUSE Security Admission Controllerで確認する方法について説明します。
イメージの確認は、https://artifacthub.io/packages/kubewarden/verify-image-signatures/verify-image-signatures[イメージ署名の確認]ポリシーをデプロイし、PolicyServersを構成してアプリケーションコレクションからイメージの署名レイヤーを取得することによって行います。
|
アプリケーションコレクションにアクセスするには、アクセストークンまたはサービスアカウント認証が必要です。 |
Rancherアプリケーションコレクションへの認証
アプリケーションコレクションのドキュメントに従って、アクセストークンを作成し、アプリケーションコレクションレジストリから取得するようにクラスターを構成します。Docker Config Secretを使用します:
$ kubectl create secret docker-registry application-collection \
--docker-server=dp.apps.rancher.io \
--docker-username=<mymail> \
--docker-password=<mytoken>
PolicyServerがRancherアプリケーションコレクションから取得できるようにSecretを作成します。
使用中のPolicyServerは、署名を含むイメージレイヤーを取得できるように構成が必要です。
Policy Serversのためのプライベートレジストリのハウツーに従って、*PolicyServerネームスペース内でDocker Config Secretを作成します。*これを行うには、前の`application-collection`と同じ内容のSecretをインスタンス化します。
default`のPolicyServerは、`kubewarden-defaults Helmチャートで`kubewarden`ネームスペースの下にインストールされている場合、次のようになります:
$ kubectl create secret docker-registry application-collection-kw -n kubewarden \
--docker-server=dp.apps.rancher.io \
--docker-username=<mymail> \
--docker-password=<mytoken>
PolicyServersが新しいSecretを使用するように構成します。
もし`kubewarden-defaults` HelmチャートからPolicyServer `default`を使用している場合、imagePullSecret `application-collection-kw`で構成します。これは同じネームスペースにあり、チャートの次の値を設定することによって行われます:
$ helm upgrade -i --wait --namespace kubewarden \
--create-namespace kubewarden-defaults kubewarden/kubewarden-defaults \
--reuse-values \
--set policyServer.imagePullSecret=application-collection-kw
他のPolicyServerを使用している場合は、それらのspec.imagePullSecretを設定してください。SecretはPolicyServerと同じネームスペースに存在する必要があります。
ポリシーを適用する。
イメージ署名を確認ポリシーを利用することで、ClusterAdmissionPolicyを適用できます。このポリシーは`dp.apps.rancher.io/containers/*`からのすべてのコンテナイメージをチェックします。ポリシーはOCIレジストリとアーティファクトをサポートしています。
ポリシーの設定は、(執筆時点の)アプリケーションコレクションからのhttps://docs.apps.rancher.io/howto-guides/verify-signatures-with-kubewarden/[公開鍵]を、`pubKeys`の配列内で使用して構成できます。
$ kubectl apply -f - <<EOF
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
annotations:
artifacthub/pkg: verify-image-signatures/verify-image-signatures/0.2.9
name: check-appcollection-signatures
spec:
backgroundAudit: true
mode: protect
module: ghcr.io/kubewarden/policies/verify-image-signatures:v0.2.9
mutating: true
policyServer: default
# On first policy call, the policy-server downloads the image layers to
# verify the signatures. Later on it's cached. It may be useful to increase
# this timeout:
timeoutSeconds: 30 # default 10 seconds.
rules:
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["pods"]
operations: ["CREATE", "UPDATE"]
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["replicationcontrollers"]
operations: ["CREATE", "UPDATE"]
- apiGroups: ["apps"]
apiVersions: ["v1"]
resources: ["deployments", "replicasets", "statefulsets", "daemonsets"]
operations: ["CREATE", "UPDATE"]
- apiGroups: ["batch"]
apiVersions: ["v1"]
resources: ["jobs", "cronjobs"]
operations: ["CREATE", "UPDATE"]
settings:
modifyImagesWithDigest: true
rule: PublicKey
signatures:
- image: dp.apps.rancher.io/containers/*
pubKeys:
# Note: this array constitutes an AND in validation, not an OR.
- |-
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA02FtEt5gBywiyxbmkVsb
CujcBg5lur0kpEbfDk10gCcs9shVEqEO3ZsOXHursgoaDAWqdPtsYhsgczGeJz9w
Aw+r6BuRV8YOkE37A8s/7IOQUW0tlqtnt11OKhIiZ9+e5l3ed2H1ymKQO3dgreSy
rShqYdA3hrItswyp41ApF6zhjSPlR6lAmq3X4wMYLAPptmzfxigTnR4hxB5UNPhs
i2qA4vLrUM/i+NohECuLr1EAymvupH26HLEdM+eZnlQn+WbhIP5Grc4ba7XrBv7K
kywgTC7CxkiJZR0mUcUD2wTX/Je8Ewj6oPSalx09e2jtzvmU5Kr9XUyMF7Zsj5CA
IwIDAQAB
-----END PUBLIC KEY-----
EOF
$ kubectl apply -f mypolicy.yml
$ kubectl get admissionpolicies -n default # wait for status active
テストするには、アプリケーションコレクションから署名されたイメージを持つPodをデプロイしてください。
$ kubectl run nginx --image [dp.apps.rancher.io/containers/nginx:1.24.0](http://dp.apps.rancher.io/containers/nginx:1.24.0) --overrides='{"spec": {"imagePullSecrets":[{"name": "application-collection"}]}}'
pod/nginx created
ポリシーサーバーPodのログを確認することで、検証が行われたことを確認できます。