podman-image-trust(1) General Commands Manual podman-image-trust(1)

podman-image-trust - مدیریت خط‌مشی اعتماد به رجیستری ایمیج‌های کانتینر

podman image trust set|show [گزینه‌ها] registry[/repository]

رجیستری‌های مورد اعتماد به عنوان منبع ایمیج‌های کانتینر را بر اساس مکان آن‌ها مدیریت می‌کند. (این گزینه در کلاینت ریموت پادمن، از جمله سیستم‌های مک و ویندوز (به‌جز WSL2) در دسترس نیست).

مکان بر اساس شیوه انتقال (transport) و میزبان رجیستری ایمیج تعیین می‌شود. با در نظر گرفتن ایمیج کانتینر docker://docker.io/library/busybox به عنوان مثال، docker شیوه انتقال و docker.io میزبان رجیستری است.

اعتماد در فایل /etc/containers/policy.json تعریف می‌شود و هنگامی که کاربر برای دریافت (pull) یک ایمیج ریموت از رجیستری تلاش می‌کند اعمال می‌گردد. خط‌مشی اعتماد در policy.json محدوده رجیستری (رجیستری و/یا مخزن) را برای اعتماد توصیف می‌کند. این سازوکار اعتماد می‌تواند از کلیدهای عمومی برای ایمیج‌های امضاشده استفاده کند.

محدوده اعتماد از خاص‌ترین به عام‌ترین ارزیابی می‌شود. به عبارت دیگر، یک خط‌مشی ممکن است:

  • برای کل یک رجیستری تعریف شود.
  • برای یک مخزن خاص در آن رجیستری تعریف شود.
  • برای یک ایمیج امضاشده خاص درون رجیستری تعریف شود.

فهرست زیر نمونه‌هایی از مقادیر معتبر محدوده در policy.json از خاص‌ترین به عام‌ترین است:

docker.io/library/busybox:notlatest

docker.io/library/busybox

docker.io/library

docker.io

اگر هیچ پیکربندی‌ای برای هیچ‌یک از این محدوده‌ها یافت نشود، مقدار پیش‌فرض (که با استفاده از "default" به جای REGISTRY[/REPOSITORY] مشخص می‌شود) استفاده خواهد شد.

نوع اعتماد (type) روشی را برای موارد زیر فراهم می‌کند:

قرار دادن رجیستری‌ها در لیست مجاز ("accept") یا لیست مسدود ("reject")، الزام به امضای ساده ("signedBy")، الزام به امضای sigstore ("sigstoreSigned").

اعتماد را می‌توان با استفاده از دستور podman image trust set برای یک محدوده اعتماد موجود به‌روزرسانی کرد.

چاپ راهنمای نحوه استفاده.

مسیری به یک کلید عمومی برون‌بری‌شده در سیستم محلی. مسیرهای کلید در policy.json ارجاع داده می‌شوند. هر مسیری به یک فایل می‌تواند استفاده شود اما قرار دادن فایل در /etc/pki/containers توصیه می‌شود. از این گزینه می‌توان چندین بار برای الزام به امضای ایمیج با چندین کلید استفاده کرد. گزینه --pubkeysfile برای انواع signedBy و sigstoreSigned الزامی است.

مسیر فایل خط‌مشی امضا (policy.json) که پادمن آن را به‌روزرسانی می‌کند. این گزینه برای زیردستور set الزامی است.

نوع اعتماد برای این ورودی خط‌مشی.
مقادیر پذیرفته‌شده:
signedBy (پیش‌فرض): الزام به امضاهای ساده به همراه فهرست مربوط به کلیدهای عمومی
sigstoreSigned: الزام به امضاهای sigstore به همراه فهرست مربوط به کلیدهای عمومی
accept: عدم الزام به هیچ‌گونه امضایی برای این محدوده رجیستری
reject: عدم پذیرش ایمیج‌ها برای این محدوده رجیستری

خروجی اعتماد در قالب JSON برای پردازش ماشینی

حذف سرستون‌های جدول از خروجی فهرست.

خروجی فایل خط‌مشی اعتماد به صورت JSON خام

مسیر فایل خط‌مشی امضا (policy.json) برای نمایش. در صورت عدم تعیین، پادمن مسیر خط‌مشی را از پیکربندی سیستم به همان روشی که خط‌مشی دریافت ایمیج را انتخاب می‌کند شناسایی می‌نماید.

پذیرش تمام ایمیج‌های بدون امضا از یک رجیستری:

sudo podman image trust set --signature-policy /etc/containers/policy.json --type accept docker.io

تغییر خط‌مشی اعتماد پیش‌فرض:

sudo podman image trust set --signature-policy /etc/containers/policy.json -t reject default

نمایش خط‌مشی اعتماد سیستم:

podman image trust show
TRANSPORT      NAME                        TYPE        ID                   STORE
all            default                     reject
repository     docker.io/library           accept
repository     registry.access.redhat.com  signed      security@redhat.com  https://access.redhat.com/webassets/docker/content/sigstore
repository     registry.redhat.io          signed      security@redhat.com  https://registry.redhat.io/containers/sigstore
repository     docker.io                   reject
docker-daemon                              accept

نمایش فایل خط‌مشی اعتماد:

{
    "default": [
        {
            "type": "reject"
        }
    ],
    "transports": {
        "docker": {
            "docker.io": [
                {
                    "type": "reject"
                }
            ],
            "docker.io/library": [
                {
                    "type": "insecureAcceptAnything"
                }
            ],
            "registry.access.redhat.com": [
                {
                    "type": "signedBy",
                    "keyType": "GPGKeys",
                    "keyPath": "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release"
                }
            ],
            "registry.redhat.io": [
                {
                    "type": "signedBy",
                    "keyType": "GPGKeys",
                    "keyPath": "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release"
                }
            ]
        },
        "docker-daemon": {
            "": [
                {
                    "type": "insecureAcceptAnything"
                }
            ]
        }
    }
}

نمایش اعتماد به صورت JSON:

[
  {
    "transport": "all",
    "name": "* (default)",
    "repo_name": "default",
    "type": "reject"
  },
  {
    "transport": "repository",
    "name": "docker.io",
    "repo_name": "docker.io",
    "type": "reject"
  },
  {
    "transport": "repository",
    "name": "docker.io/library",
    "repo_name": "docker.io/library",
    "type": "accept"
  },
  {
    "transport": "repository",
    "name": "registry.access.redhat.com",
    "repo_name": "registry.access.redhat.com",
    "sigstore": "https://access.redhat.com/webassets/docker/content/sigstore",
    "type": "signed",
    "gpg_id": "security@redhat.com"
  },
  {
    "transport": "repository",
    "name": "registry.redhat.io",
    "repo_name": "registry.redhat.io",
    "sigstore": "https://registry.redhat.io/containers/sigstore",
    "type": "signed",
    "gpg_id": "security@redhat.com"
  },
  {
    "transport": "docker-daemon",
    "type": "accept"
  }
]

containers-policy.json(5)

ژانویه ۲۰۱۹، به‌روزرسانی‌شده توسط Tom Sweeney (tsweeney at redhat dot com)
دسامبر ۲۰۱۸، در ابتدا توسط Qi Wang تدوین شد (qiwan at redhat dot com)