containers-auth.json(5) File Formats Manual containers-auth.json(5)

containers-auth.json - نحو و ساختار فایل احراز هویت رجیستری کانتینر

فایلی در قالب JSON که احراز هویت در رجیستری‌های ایمیج کانتینر را کنترل می‌کند. فایل اصلی (خواندنی/نوشتنی) در لینوکس در مسیر ${XDG_RUNTIME_DIR}/containers/auth.json و در ویندوز و macOS در $HOME/.config/containers/auth.json ذخیره می‌شود.

هنگام جستجو برای اطلاعات احراز هویت یک رجیستری، فایل‌های زیر به ترتیب خوانده می‌شوند تا زمانی که اعتبار معتبر یافت شود: ابتدا فایل اصلی (خواندنی/نوشتنی)، یا بازنویسی صریح با استفاده از یک گزینه در برنامه فراخوان. اگر اطلاعات احراز هویت در آنجا موجود نباشد، جستجو در ${XDG_CONFIG_HOME}/containers/auth.json (معمولاً ~/.config/containers/auth.json)، $HOME/.docker/config.json، و $HOME/.dockercfg ادامه می‌یابد.

به جز فایل اصلی (خواندنی/نوشتنی)، سایر فایل‌ها فقط‌خواندنی هستند مگر اینکه کاربر با استفاده از یک گزینه در برنامه فراخوان، صراحتاً آن را به عنوان بازنویسی مشخص کند.

فایل auth.json اطلاعات احراز هویتی را ذخیره کرده یا به آن‌ها ارجاع می‌دهد که به کاربر اجازه می‌دهد در رجیستری‌های ایمیج کانتینر احراز هویت کند. این فایل در درجه اول توسط یک دستور login از یک ابزار کانتینری مانند podman login، buildah login، یا skopeo login مدیریت می‌شود.

هر مدخل شامل یک نام میزبان (مانند docker.io) یا یک فضای نام (مانند quay.io/user/image) به عنوان کلید، و اطلاعات احراز هویت به شکل یک رشته کدگذاری‌شده با base64 به عنوان مقدار auth است. رشته کدگذاری‌شده با base64 شامل پیوند نام کاربری، یک دونقطه (:) و گذرواژه است.

هنگام بررسی اعتبارهای موجود، مخزن مربوطه بر اساس ترتیب سلسله‌مراتبی‌اش با کلیدهای موجود مطابقت داده می‌شود؛ از خاص‌ترین به عمومی‌ترین. برای مثال، دریافت (pull) یک ایمیج برای my-registry.local/namespace/user/image:latest منجر به جستجو در auth.json به ترتیب زیر خواهد شد:

  • my-registry.local/namespace/user/image
  • my-registry.local/namespace/user
  • my-registry.local/namespace
  • my-registry.local

به این ترتیب می‌توان چندین اعتبار مختلف را برای یک رجیستری واحد تنظیم کرد که بر اساس مسیرشان از یکدیگر متمایز می‌شوند.

مثال زیر مقادیر موجود در auth.json را پس از ورود کاربر به حساب‌های خود در quay.io و docker.io نشان می‌دهد:

{
	"auths": {
		"docker.io": {
			"auth": "erfi7sYi89234xJUqaqxgmzcnQ2rRFWM5aJX0EC="
		},
		"quay.io": {
			"auth": "juQAqGmz5eR1ipzx8Evn6KGdw8fEa1w5MWczmgY="
		}
	}
}

این مثال نحوه استفاده از چندین مسیر را برای یک رجیستری واحد نشان می‌دهد، در حالی که یک مقدار رزرو (fallback) را برای my-registry.local حفظ می‌کند:

{
	"auths": {
		"my-registry.local/foo/bar/image": {
			"auth": "…"
		},
		"my-registry.local/foo": {
			"auth": "…"
		},
		"my-registry.local": {
			"auth": "…"
		},
	}
}

یک مدخل را می‌توان با استفاده از یک دستور logout از یک ابزار کانتینری مانند podman logout یا buildah logout حذف کرد.

علاوه بر این، می‌توان برنامه‌های کمکی اعتبار (credential helpers) را برای رجیستری‌های خاص پیکربندی کرد، و نرم‌افزار credential-helper را می‌توان برای مدیریت امن‌تر اعتبارها نسبت به ذخیره صرفاً اعتبارهای کدگذاری‌شده با base64 در auth.json به کار برد.

هنگامی که برنامه کمکی اعتبار در پلتفرم لینوکس مورد استفاده قرار می‌گیرد، فایل auth.json حاوی کلیدهایی خواهد بود که دامنه رجیستری را مشخص می‌کنند و مقادیری که پسوند برنامه مورد استفاده را تعیین می‌کنند (یعنی هر چیزی پس از docker-credential-). برای مثال:

{
    "auths": {
        "localhost:5001": {}
    },
    "credHelpers": {
		"registry.example.com": "secretservice"
	}
}

برای اطلاعات بیشتر درباره برنامه‌های کمکی اعتبار، لطفاً به پروژه GitHub docker-credential-helpers مراجعه کنید ⟨https://github.com/docker/docker-credential-helpers/releases⟩.

buildah-login(1), buildah-logout(1), podman-login(1), podman-logout(1), skopeo-login(1), skopeo-logout(1)

فوریه ۲۰۲۰، در ابتدا توسط Tom Sweeney tsweeney@redhat.com ⟨mailto:tsweeney@redhat.com⟩ گردآوری شد.